Differential D22184 Diff 64134 www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_libpng_powerpc_powerpc__init.c
Changeset View
Changeset View
Standalone View
Standalone View
www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_libpng_powerpc_powerpc__init.c
- This file was added.
Property | Old Value | New Value |
---|---|---|
fbsd:nokeywords | null | yes \ No newline at end of property |
svn:eol-style | null | native \ No newline at end of property |
svn:mime-type | null | text/plain \ No newline at end of property |
--- src/3rdparty/chromium/third_party/libpng/powerpc/powerpc_init.c.orig 2019-10-27 17:23:52 UTC | |||||
+++ src/3rdparty/chromium/third_party/libpng/powerpc/powerpc_init.c | |||||
@@ -0,0 +1,125 @@ | |||||
+ | |||||
+/* powerpc_init.c - POWERPC optimised filter functions | |||||
+ * | |||||
+ * Copyright (c) 2017 Glenn Randers-Pehrson | |||||
+ * Written by Vadim Barkov, 2017. | |||||
+ * Last changed in libpng 1.6.29 [March 16, 2017] | |||||
+ * | |||||
+ * This code is released under the libpng license. | |||||
+ * For conditions of distribution and use, see the disclaimer | |||||
+ * and license in png.h | |||||
+ */ | |||||
+/* Below, after checking __linux__, various non-C90 POSIX 1003.1 functions are | |||||
+ * called. | |||||
+ */ | |||||
+#define _POSIX_SOURCE 1 | |||||
+ | |||||
+#include <stdio.h> | |||||
+#include "../pngpriv.h" | |||||
+ | |||||
+#ifdef PNG_READ_SUPPORTED | |||||
+ | |||||
+#if PNG_POWERPC_VSX_OPT > 0 | |||||
+#ifdef PNG_POWERPC_VSX_CHECK_SUPPORTED /* Do run-time checks */ | |||||
+/* WARNING: it is strongly recommended that you do not build libpng with | |||||
+ * run-time checks for CPU features if at all possible. In the case of the PowerPC | |||||
+ * VSX instructions there is no processor-specific way of detecting the | |||||
+ * presence of the required support, therefore run-time detection is extremely | |||||
+ * OS specific. | |||||
+ * | |||||
+ * You may set the macro PNG_POWERPC_VSX_FILE to the file name of file containing | |||||
+ * a fragment of C source code which defines the png_have_vsx function. There | |||||
+ * are a number of implementations in contrib/powerpc-vsx, but the only one that | |||||
+ * has partial support is contrib/powerpc-vsx/linux.c - a generic Linux | |||||
+ * implementation which reads /proc/cpufino. | |||||
+ */ | |||||
+#ifndef PNG_POWERPC_VSX_FILE | |||||
+# ifdef __linux__ | |||||
+# define PNG_POWERPC_VSX_FILE "contrib/powerpc-vsx/linux_aux.c" | |||||
+# endif | |||||
+#endif | |||||
+ | |||||
+#ifdef PNG_POWERPC_VSX_FILE | |||||
+ | |||||
+#include <signal.h> /* for sig_atomic_t */ | |||||
+static int png_have_vsx(png_structp png_ptr); | |||||
+#include PNG_POWERPC_VSX_FILE | |||||
+ | |||||
+#else /* PNG_POWERPC_VSX_FILE */ | |||||
+# error "PNG_POWERPC_VSX_FILE undefined: no support for run-time POWERPC VSX checks" | |||||
+#endif /* PNG_POWERPC_VSX_FILE */ | |||||
+#endif /* PNG_POWERPC_VSX_CHECK_SUPPORTED */ | |||||
+ | |||||
+void | |||||
+png_init_filter_functions_vsx(png_structp pp, unsigned int bpp) | |||||
+{ | |||||
+ /* The switch statement is compiled in for POWERPC_VSX_API, the call to | |||||
+ * png_have_vsx is compiled in for POWERPC_VSX_CHECK. If both are defined | |||||
+ * the check is only performed if the API has not set the PowerPC option on | |||||
+ * or off explicitly. In this case the check controls what happens. | |||||
+ */ | |||||
+ | |||||
+#ifdef PNG_POWERPC_VSX_API_SUPPORTED | |||||
+ switch ((pp->options >> PNG_POWERPC_VSX) & 3) | |||||
+ { | |||||
+ case PNG_OPTION_UNSET: | |||||
+ /* Allow the run-time check to execute if it has been enabled - | |||||
+ * thus both API and CHECK can be turned on. If it isn't supported | |||||
+ * this case will fall through to the 'default' below, which just | |||||
+ * returns. | |||||
+ */ | |||||
+#endif /* PNG_POWERPC_VSX_API_SUPPORTED */ | |||||
+#ifdef PNG_POWERPC_VSX_CHECK_SUPPORTED | |||||
+ { | |||||
+ static volatile sig_atomic_t no_vsx = -1; /* not checked */ | |||||
+ | |||||
+ if (no_vsx < 0) | |||||
+ no_vsx = !png_have_vsx(pp); | |||||
+ | |||||
+ if (no_vsx) | |||||
+ return; | |||||
+ } | |||||
+#ifdef PNG_POWERPC_VSX_API_SUPPORTED | |||||
+ break; | |||||
+#endif | |||||
+#endif /* PNG_POWERPC_VSX_CHECK_SUPPORTED */ | |||||
+ | |||||
+#ifdef PNG_POWERPC_VSX_API_SUPPORTED | |||||
+ default: /* OFF or INVALID */ | |||||
+ return; | |||||
+ | |||||
+ case PNG_OPTION_ON: | |||||
+ /* Option turned on */ | |||||
+ break; | |||||
+ } | |||||
+#endif | |||||
+ | |||||
+ /* IMPORTANT: any new internal functions used here must be declared using | |||||
+ * PNG_INTERNAL_FUNCTION in ../pngpriv.h. This is required so that the | |||||
+ * 'prefix' option to configure works: | |||||
+ * | |||||
+ * ./configure --with-libpng-prefix=foobar_ | |||||
+ * | |||||
+ * Verify you have got this right by running the above command, doing a build | |||||
+ * and examining pngprefix.h; it must contain a #define for every external | |||||
+ * function you add. (Notice that this happens automatically for the | |||||
+ * initialization function.) | |||||
+ */ | |||||
+ pp->read_filter[PNG_FILTER_VALUE_UP-1] = png_read_filter_row_up_vsx; | |||||
+ | |||||
+ if (bpp == 3) | |||||
+ { | |||||
+ pp->read_filter[PNG_FILTER_VALUE_SUB-1] = png_read_filter_row_sub3_vsx; | |||||
+ pp->read_filter[PNG_FILTER_VALUE_AVG-1] = png_read_filter_row_avg3_vsx; | |||||
+ pp->read_filter[PNG_FILTER_VALUE_PAETH-1] = png_read_filter_row_paeth3_vsx; | |||||
+ } | |||||
+ | |||||
+ else if (bpp == 4) | |||||
+ { | |||||
+ pp->read_filter[PNG_FILTER_VALUE_SUB-1] = png_read_filter_row_sub4_vsx; | |||||
+ pp->read_filter[PNG_FILTER_VALUE_AVG-1] = png_read_filter_row_avg4_vsx; | |||||
+ pp->read_filter[PNG_FILTER_VALUE_PAETH-1] = png_read_filter_row_paeth4_vsx; | |||||
+ } | |||||
+} | |||||
+#endif /* PNG_POWERPC_VSX_OPT > 0 */ | |||||
+#endif /* READ */ |