diff options
Diffstat (limited to 'libre/mesa')
-rw-r--r-- | libre/mesa/PKGBUILD | 20 | ||||
-rw-r--r-- | libre/mesa/glibc_dropped_xlocale.h.diff | 143 | ||||
-rw-r--r-- | libre/mesa/swr-rast-do-not-crash-on-NULL-strings-returned-by-getenv.patch | 14 | ||||
-rw-r--r-- | libre/mesa/swr-rast-remove-llvm-fence-atomics-from-generated-files.patch | 19 |
4 files changed, 44 insertions, 152 deletions
diff --git a/libre/mesa/PKGBUILD b/libre/mesa/PKGBUILD index c5b1db753..cd77d95d3 100644 --- a/libre/mesa/PKGBUILD +++ b/libre/mesa/PKGBUILD @@ -4,7 +4,7 @@ pkgbase=mesa pkgname=("${pkgbase}") -pkgver=17.2.0 +pkgver=17.2.1 pkgrel=3.parabola1 arch=('i686' 'x86_64' 'armv7h') makedepends=('python2-mako' 'libxml2' 'libx11' 'glproto' 'libdrm' 'dri2proto' 'dri3proto' 'presentproto' @@ -18,13 +18,15 @@ source=(https://mesa.freedesktop.org/archive/mesa-${pkgver}.tar.xz{,.sig} LICENSE drirc 0002-glvnd-fix-gl-dot-pc.patch - glibc_dropped_xlocale.h.diff) -sha256sums=('3123448f770eae58bc73e15480e78909defb892f10ab777e9116c9b218094943' + swr-rast-do-not-crash-on-NULL-strings-returned-by-getenv.patch + swr-rast-remove-llvm-fence-atomics-from-generated-files.patch) +sha256sums=('77385d17827cff24a3bae134342234f2efe7f7f990e778109682571dbbc9ba1e' 'SKIP' '7fdc119cf53c8ca65396ea73f6d10af641ba41ea1dd2bd44a824726e01c8b3f2' '2cc6f40076e07a2d4769557c1aa40e5b6fbbb59c38e551c1a1997ef0d3f3c5f2' '64a77944a28026b066c1682c7258d02289d257b24b6f173a9f7580c48beed966' - '6de2adc3dde36d098bfe9977f5052c13e1b2e80a913e4c83d520b2e5349ddbd0') + '2dcbd3b311b18e473000fb496a93a4a7a4ae9f9413aace209c0ea4aebbba715b' + 'a747e0046eab7bb9c73444549c9c63d078b11b756d2294ba9c7ee0612caf62db') validpgpkeys=('8703B6700E7EE06D7A39B8D6EDAE37B02CEB490D') # Emil Velikov <emil.l.velikov@gmail.com> validpgpkeys+=('946D09B5E4C9845E63075FF1D961C596A7203456') # "Andres Gomez <tanty@igalia.com>" validpgpkeys+=('E3E8F480C52ADD73B278EE78E1ECBE07D7D70895') # Juan Antonio Suárez Romero (Igalia, S.L.) <jasuarez@igalia.com>" @@ -36,9 +38,9 @@ prepare() { # non-upstreamed ones patch -Np1 -i ../0002-glvnd-fix-gl-dot-pc.patch - # glibc 2.26 dropped xlocale.h leading to corrupted video - # https://bugs.archlinux.org/task/55244 / https://bugs.freedesktop.org/show_bug.cgi?id=102454 - patch -Np1 -i ../glibc_dropped_xlocale.h.diff + # swr driver + patch -Np1 -i ../swr-rast-do-not-crash-on-NULL-strings-returned-by-getenv.patch + patch -Np1 -i ../swr-rast-remove-llvm-fence-atomics-from-generated-files.patch autoreconf -fiv } @@ -48,7 +50,7 @@ build() { case "$CARCH" in x86_64|i686) - GALLIUM=r300,r600,radeonsi,nouveau,svga,swrast,virgl + GALLIUM=r300,r600,radeonsi,nouveau,svga,swrast,virgl,swr DRI=i915,i965,r200,radeon,nouveau,swrast VULKAN=intel,radeon LIBUNWIND='--enable-libunwind' @@ -134,7 +136,7 @@ package_mesa() { if [ "$CARCH" != "armv7h" ]; then cp -rv ${srcdir}/fakeinstall/usr/lib/libxatracker.so* ${pkgdir}/usr/lib/ - #cp -rv ${srcdir}/fakeinstall/usr/lib/libswrAVX*.so* ${pkgdir}/usr/lib/ + cp -rv ${srcdir}/fakeinstall/usr/lib/libswrAVX*.so* ${pkgdir}/usr/lib/ fi cp -rv ${srcdir}/fakeinstall/usr/include ${pkgdir}/usr diff --git a/libre/mesa/glibc_dropped_xlocale.h.diff b/libre/mesa/glibc_dropped_xlocale.h.diff deleted file mode 100644 index 79ca3edd6..000000000 --- a/libre/mesa/glibc_dropped_xlocale.h.diff +++ /dev/null @@ -1,143 +0,0 @@ -From 49b428470e28ae6ab22083e43fa41abf622f3b0d Mon Sep 17 00:00:00 2001 -From: Eric Engestrom <eric.engestrom@imgtec.com> -Date: Thu, 31 Aug 2017 16:55:56 +0000 -Subject: util: improve compiler guard - -Glibc 2.26 has dropped xlocale.h, but the functions needed (strtod_l() -and strdof_l()) can be found in stdlib.h. -Improve the detection method to allow newer builds to still make use of -the locale-setting. - -Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102454 -Cc: Laurent Carlier <lordheavym@gmail.com> -Cc: Emil Velikov <emil.l.velikov@gmail.com> -Cc: Rob Herring <robh@kernel.org> -Signed-off-by: Eric Engestrom <eric.engestrom@imgtec.com> -Reviewed-by: Laurent Carlier <lordheavym@gmail.com> -Reviewed-by: Jose Fonseca <jfonseca@vmware.com> - -diff --git a/configure.ac b/configure.ac -index ac64a38..fb6037e 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -795,6 +795,27 @@ AC_CHECK_HEADER([sys/sysctl.h], [DEFINES="$DEFINES -DHAVE_SYS_SYSCTL_H"]) - AC_CHECK_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"]) - AC_CHECK_FUNC([mkostemp], [DEFINES="$DEFINES -DHAVE_MKOSTEMP"]) - -+AC_MSG_CHECKING([whether strtod has locale support]) -+AC_LINK_IFELSE([AC_LANG_SOURCE([[ -+ #define _GNU_SOURCE -+ #include <stdlib.h> -+ #include <locale.h> -+ #ifdef HAVE_XLOCALE_H -+ #include <xlocale.h> -+ #endif -+ int main() { -+ locale_t loc = newlocale(LC_CTYPE_MASK, "C", NULL); -+ const char *s = "1.0"; -+ char *end; -+ double d = strtod_l(s, end, loc); -+ float f = strtof_l(s, end, loc); -+ freelocale(loc); -+ return 0; -+ }]])], -+ [DEFINES="$DEFINES -DHAVE_STRTOD_L"]; -+ AC_MSG_RESULT([yes]), -+ AC_MSG_RESULT([no])) -+ - dnl Check to see if dlopen is in default libraries (like Solaris, which - dnl has it in libc), or if libdl is needed to get it. - AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"], -diff --git a/scons/gallium.py b/scons/gallium.py -index c8e47a3..1e35ef4 100755 ---- a/scons/gallium.py -+++ b/scons/gallium.py -@@ -157,6 +157,19 @@ def check_header(env, header): - env = conf.Finish() - return have_header - -+def check_functions(env, functions): -+ '''Check if all of the functions exist''' -+ -+ conf = SCons.Script.Configure(env) -+ have_functions = True -+ -+ for function in functions: -+ if not conf.CheckFunc(function): -+ have_functions = False -+ -+ env = conf.Finish() -+ return have_functions -+ - def check_prog(env, prog): - """Check whether this program exists.""" - -@@ -339,6 +352,9 @@ def generate(env): - if check_header(env, 'xlocale.h'): - cppdefines += ['HAVE_XLOCALE_H'] - -+ if check_functions(env, ['strtod_l', 'strtof_l']): -+ cppdefines += ['HAVE_STRTOD_L'] -+ - if platform == 'windows': - cppdefines += [ - 'WIN32', -diff --git a/src/util/strtod.c b/src/util/strtod.c -index ea7d395..de695d6 100644 ---- a/src/util/strtod.c -+++ b/src/util/strtod.c -@@ -26,12 +26,12 @@ - - #include <stdlib.h> - --#ifdef _GNU_SOURCE -+#if defined(_GNU_SOURCE) && defined(HAVE_STRTOD_L) - #include <locale.h> - #ifdef HAVE_XLOCALE_H - #include <xlocale.h> --static locale_t loc; - #endif -+static locale_t loc; - #endif - - #include "strtod.h" -@@ -40,7 +40,7 @@ static locale_t loc; - void - _mesa_locale_init(void) - { --#if defined(_GNU_SOURCE) && defined(HAVE_XLOCALE_H) -+#if defined(_GNU_SOURCE) && defined(HAVE_STRTOD_L) - loc = newlocale(LC_CTYPE_MASK, "C", NULL); - #endif - } -@@ -48,7 +48,7 @@ _mesa_locale_init(void) - void - _mesa_locale_fini(void) - { --#if defined(_GNU_SOURCE) && defined(HAVE_XLOCALE_H) -+#if defined(_GNU_SOURCE) && defined(HAVE_STRTOD_L) - freelocale(loc); - #endif - } -@@ -60,7 +60,7 @@ _mesa_locale_fini(void) - double - _mesa_strtod(const char *s, char **end) - { --#if defined(_GNU_SOURCE) && defined(HAVE_XLOCALE_H) -+#if defined(_GNU_SOURCE) && defined(HAVE_STRTOD_L) - return strtod_l(s, end, loc); - #else - return strtod(s, end); -@@ -75,7 +75,7 @@ _mesa_strtod(const char *s, char **end) - float - _mesa_strtof(const char *s, char **end) - { --#if defined(_GNU_SOURCE) && defined(HAVE_XLOCALE_H) -+#if defined(_GNU_SOURCE) && defined(HAVE_STRTOD_L) - return strtof_l(s, end, loc); - #elif defined(HAVE_STRTOF) - return strtof(s, end); --- -cgit v0.10.2 - - diff --git a/libre/mesa/swr-rast-do-not-crash-on-NULL-strings-returned-by-getenv.patch b/libre/mesa/swr-rast-do-not-crash-on-NULL-strings-returned-by-getenv.patch new file mode 100644 index 000000000..b9e81f9a3 --- /dev/null +++ b/libre/mesa/swr-rast-do-not-crash-on-NULL-strings-returned-by-getenv.patch @@ -0,0 +1,14 @@ +diff --git a/src/gallium/drivers/swr/rasterizer/core/utils.h b/src/gallium/drivers/swr/rasterizer/core/utils.h +index b096d2120cb..3c849e82d3b 100644 +--- a/src/gallium/drivers/swr/rasterizer/core/utils.h ++++ b/src/gallium/drivers/swr/rasterizer/core/utils.h +@@ -365,7 +365,8 @@ static INLINE std::string GetEnv(const std::string& variableName) + output.resize(valueSize - 1); // valueSize includes null, output.resize() does not + GetEnvironmentVariableA(variableName.c_str(), &output[0], valueSize); + #else +- output = getenv(variableName.c_str()); ++ char *o = getenv(variableName.c_str()); ++ output = o ? std::string(o) : std::string(); + #endif + + return output; diff --git a/libre/mesa/swr-rast-remove-llvm-fence-atomics-from-generated-files.patch b/libre/mesa/swr-rast-remove-llvm-fence-atomics-from-generated-files.patch new file mode 100644 index 000000000..02a2feecf --- /dev/null +++ b/libre/mesa/swr-rast-remove-llvm-fence-atomics-from-generated-files.patch @@ -0,0 +1,19 @@ +diff --git a/src/gallium/drivers/swr/rasterizer/codegen/gen_llvm_ir_macros.py b/src/gallium/drivers/swr/rasterizer/codegen/gen_llvm_ir_macros.py +index 025d38a..ce892a9 100644 +--- a/src/gallium/drivers/swr/rasterizer/codegen/gen_llvm_ir_macros.py ++++ b/src/gallium/drivers/swr/rasterizer/codegen/gen_llvm_ir_macros.py +@@ -140,6 +140,14 @@ def parse_ir_builder(input_file): + + ignore = False + ++ # The following functions need to be ignored in openswr. ++ # API change in llvm-5.0 breaks baked autogen files ++ if ( ++ (func_name == 'CreateFence' or ++ func_name == 'CreateAtomicCmpXchg' or ++ func_name == 'CreateAtomicRMW')): ++ ignore = True ++ + # The following functions need to be ignored. + if (func_name == 'CreateInsertNUWNSWBinOp' or + func_name == 'CreateMaskedIntrinsic' or |