summaryrefslogtreecommitdiff
path: root/libre/mesa
diff options
context:
space:
mode:
Diffstat (limited to 'libre/mesa')
-rw-r--r--libre/mesa/PKGBUILD20
-rw-r--r--libre/mesa/glibc_dropped_xlocale.h.diff143
-rw-r--r--libre/mesa/swr-rast-do-not-crash-on-NULL-strings-returned-by-getenv.patch14
-rw-r--r--libre/mesa/swr-rast-remove-llvm-fence-atomics-from-generated-files.patch19
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