|
@@ -1,8 +1,8 @@
|
|
|
|
|
|
/* pngpriv.h - private declarations for use inside libpng
|
|
/* pngpriv.h - private declarations for use inside libpng
|
|
*
|
|
*
|
|
- * Last changed in libpng 1.6.26 [October 20, 2016]
|
|
|
|
- * Copyright (c) 1998-2002,2004,2006-2016 Glenn Randers-Pehrson
|
|
|
|
|
|
+ * Last changed in libpng 1.6.29 [March 16, 2017]
|
|
|
|
+ * Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
|
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
|
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
|
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
|
*
|
|
*
|
|
@@ -190,6 +190,50 @@
|
|
# endif
|
|
# endif
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
+#ifndef PNG_POWERPC_VSX_OPT
|
|
|
|
+# if defined(__PPC64__) && defined(__ALTIVEC__) && defined(__VSX__)
|
|
|
|
+# define PNG_POWERPC_VSX_OPT 2
|
|
|
|
+# else
|
|
|
|
+# define PNG_POWERPC_VSX_OPT 0
|
|
|
|
+# endif
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+#ifndef PNG_INTEL_SSE_OPT
|
|
|
|
+# ifdef PNG_INTEL_SSE
|
|
|
|
+ /* Only check for SSE if the build configuration has been modified to
|
|
|
|
+ * enable SSE optimizations. This means that these optimizations will
|
|
|
|
+ * be off by default. See contrib/intel for more details.
|
|
|
|
+ */
|
|
|
|
+# if defined(__SSE4_1__) || defined(__AVX__) || defined(__SSSE3__) || \
|
|
|
|
+ defined(__SSE2__) || defined(_M_X64) || defined(_M_AMD64) || \
|
|
|
|
+ (defined(_M_IX86_FP) && _M_IX86_FP >= 2)
|
|
|
|
+# define PNG_INTEL_SSE_OPT 1
|
|
|
|
+# endif
|
|
|
|
+# endif
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+#if PNG_INTEL_SSE_OPT > 0
|
|
|
|
+# ifndef PNG_INTEL_SSE_IMPLEMENTATION
|
|
|
|
+# if defined(__SSE4_1__) || defined(__AVX__)
|
|
|
|
+ /* We are not actually using AVX, but checking for AVX is the best
|
|
|
|
+ way we can detect SSE4.1 and SSSE3 on MSVC.
|
|
|
|
+ */
|
|
|
|
+# define PNG_INTEL_SSE_IMPLEMENTATION 3
|
|
|
|
+# elif defined(__SSSE3__)
|
|
|
|
+# define PNG_INTEL_SSE_IMPLEMENTATION 2
|
|
|
|
+# elif defined(__SSE2__) || defined(_M_X64) || defined(_M_AMD64) || \
|
|
|
|
+ (defined(_M_IX86_FP) && _M_IX86_FP >= 2)
|
|
|
|
+# define PNG_INTEL_SSE_IMPLEMENTATION 1
|
|
|
|
+# else
|
|
|
|
+# define PNG_INTEL_SSE_IMPLEMENTATION 0
|
|
|
|
+# endif
|
|
|
|
+# endif
|
|
|
|
+
|
|
|
|
+# if PNG_INTEL_SSE_IMPLEMENTATION > 0
|
|
|
|
+# define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_sse2
|
|
|
|
+# endif
|
|
|
|
+#endif
|
|
|
|
+
|
|
#if PNG_MIPS_MSA_OPT > 0
|
|
#if PNG_MIPS_MSA_OPT > 0
|
|
# define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_msa
|
|
# define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_msa
|
|
# ifndef PNG_MIPS_MSA_IMPLEMENTATION
|
|
# ifndef PNG_MIPS_MSA_IMPLEMENTATION
|
|
@@ -210,6 +254,11 @@
|
|
# endif
|
|
# endif
|
|
#endif /* PNG_MIPS_MSA_OPT > 0 */
|
|
#endif /* PNG_MIPS_MSA_OPT > 0 */
|
|
|
|
|
|
|
|
+#if PNG_POWERPC_VSX_OPT > 0
|
|
|
|
+# define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_vsx
|
|
|
|
+# define PNG_POWERPC_VSX_IMPLEMENTATION 1
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
|
|
/* Is this a build of a DLL where compilation of the object modules requires
|
|
/* Is this a build of a DLL where compilation of the object modules requires
|
|
* different preprocessor settings to those required for a simple library? If
|
|
* different preprocessor settings to those required for a simple library? If
|
|
@@ -1256,6 +1305,38 @@ PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth4_msa,(png_row_infop
|
|
row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
|
|
row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
+#if PNG_POWERPC_VSX_OPT > 0
|
|
|
|
+PNG_INTERNAL_FUNCTION(void,png_read_filter_row_up_vsx,(png_row_infop row_info,
|
|
|
|
+ png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
|
|
|
|
+PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub3_vsx,(png_row_infop
|
|
|
|
+ row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
|
|
|
|
+PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub4_vsx,(png_row_infop
|
|
|
|
+ row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
|
|
|
|
+PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg3_vsx,(png_row_infop
|
|
|
|
+ row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
|
|
|
|
+PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg4_vsx,(png_row_infop
|
|
|
|
+ row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
|
|
|
|
+PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth3_vsx,(png_row_infop
|
|
|
|
+ row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
|
|
|
|
+PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth4_vsx,(png_row_infop
|
|
|
|
+ row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+#if PNG_INTEL_SSE_IMPLEMENTATION > 0
|
|
|
|
+PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub3_sse2,(png_row_infop
|
|
|
|
+ row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
|
|
|
|
+PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub4_sse2,(png_row_infop
|
|
|
|
+ row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
|
|
|
|
+PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg3_sse2,(png_row_infop
|
|
|
|
+ row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
|
|
|
|
+PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg4_sse2,(png_row_infop
|
|
|
|
+ row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
|
|
|
|
+PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth3_sse2,(png_row_infop
|
|
|
|
+ row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
|
|
|
|
+PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth4_sse2,(png_row_infop
|
|
|
|
+ row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
|
|
|
|
+#endif
|
|
|
|
+
|
|
/* Choose the best filter to use and filter the row data */
|
|
/* Choose the best filter to use and filter the row data */
|
|
PNG_INTERNAL_FUNCTION(void,png_write_find_filter,(png_structrp png_ptr,
|
|
PNG_INTERNAL_FUNCTION(void,png_write_find_filter,(png_structrp png_ptr,
|
|
png_row_infop row_info),PNG_EMPTY);
|
|
png_row_infop row_info),PNG_EMPTY);
|
|
@@ -1991,6 +2072,11 @@ PNG_INTERNAL_FUNCTION(void, png_init_filter_functions_neon,
|
|
PNG_INTERNAL_FUNCTION(void, png_init_filter_functions_msa,
|
|
PNG_INTERNAL_FUNCTION(void, png_init_filter_functions_msa,
|
|
(png_structp png_ptr, unsigned int bpp), PNG_EMPTY);
|
|
(png_structp png_ptr, unsigned int bpp), PNG_EMPTY);
|
|
#endif
|
|
#endif
|
|
|
|
+
|
|
|
|
+# if PNG_INTEL_SSE_IMPLEMENTATION > 0
|
|
|
|
+PNG_INTERNAL_FUNCTION(void, png_init_filter_functions_sse2,
|
|
|
|
+ (png_structp png_ptr, unsigned int bpp), PNG_EMPTY);
|
|
|
|
+# endif
|
|
#endif
|
|
#endif
|
|
|
|
|
|
PNG_INTERNAL_FUNCTION(png_uint_32, png_check_keyword, (png_structrp png_ptr,
|
|
PNG_INTERNAL_FUNCTION(png_uint_32, png_check_keyword, (png_structrp png_ptr,
|