Browse Source

mesa package update

Signed-off-by: guibuilder_pel7x64builder0 <guibuilder@powerel.org>
master
guibuilder_pel7x64builder0 4 years ago
parent
commit
9243bf0560
  1. 71
      SOURCES/0001-llvmpipe-use-ppc64le-ppc64-Large-code-model-for-JIT-.patch
  2. 16
      SOURCES/make-git-snapshot.sh
  3. 1741
      SPECS/mesa.spec

71
SOURCES/0001-llvmpipe-use-ppc64le-ppc64-Large-code-model-for-JIT-.patch

@ -0,0 +1,71 @@ @@ -0,0 +1,71 @@
From d0ff02e567541468309923fed2320da6cbd81779 Mon Sep 17 00:00:00 2001
From: Ben Crocker <bcrocker@redhat.com>
Date: Thu, 21 Nov 2019 17:33:31 -0500
Subject: [PATCH] llvmpipe: use ppc64le/ppc64 Large code model for JIT-compiled
shaders

Large programs, e.g. gnome-shell and firefox, may tax the
addressability of the Medium code model once a (potentially unbounded)
number of dynamically generated JIT-compiled shader programs are
linked in and relocated. Yet the default code model as of LLVM 8 is
Medium or even Small.

The cost of changing from Medium to Large is negligible:
- an additional 8-byte pointer stored immediately before the shader entrypoint;
- change an add-immediate (addis) instruction to a load (ld).

Testing with WebGL Conformance
(https://www.khronos.org/registry/webgl/sdk/tests/webgl-conformance-tests.html)
yields clean runs with this change (and crashes without it).

Testing with glxgears shows no detectable performance difference.

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1753327, 1543572, 1747110, and 1582226

Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/223

Co-authored by: Nemanja Ivanovic <nemanjai@ca.ibm.com>, Tom Stellard <tstellar@redhat.com>

CC: mesa-stable@lists.freedesktop.org

Signed-off-by: Ben Crocker <bcrocker@redhat.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
---
src/gallium/auxiliary/gallivm/lp_bld_misc.cpp | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
--- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
+++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
@@ -686,7 +686,19 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
* when not using MCJIT so no instructions are generated which the old JIT
* can't handle. Not entirely sure if we really need to do anything yet.
*/
-#if defined(PIPE_ARCH_LITTLE_ENDIAN) && defined(PIPE_ARCH_PPC_64)
+#ifdef PIPE_ARCH_PPC_64
+ /*
+ * Large programs, e.g. gnome-shell and firefox, may tax the addressability
+ * of the Medium code model once dynamically generated JIT-compiled shader
+ * programs are linked in and relocated. Yet the default code model as of
+ * LLVM 8 is Medium or even Small.
+ * The cost of changing from Medium to Large is negligible:
+ * - an additional 8-byte pointer stored immediately before the shader entrypoint;
+ * - change an add-immediate (addis) instruction to a load (ld).
+ */
+ builder.setCodeModel(CodeModel::Large);
+
+#ifdef PIPE_ARCH_LITTLE_ENDIAN
/*
* Versions of LLVM prior to 4.0 lacked a table entry for "POWER8NVL",
* resulting in (big-endian) "generic" being returned on
@@ -698,6 +710,7 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
*/
if (MCPU == "generic")
MCPU = "pwr8";
+#endif
#endif
builder.setMCPU(MCPU);
if (gallivm_debug & (GALLIVM_DEBUG_IR | GALLIVM_DEBUG_ASM | GALLIVM_DEBUG_DUMP_BC)) {
--
2.21.0

16
SOURCES/make-git-snapshot.sh

@ -5,18 +5,24 @@ @@ -5,18 +5,24 @@
# to make a snapshot of the given tag/branch. Defaults to HEAD.
# Point env var REF to a local mesa repo to reduce clone time.

DIRNAME=libdrm-$( date +%Y%m%d )
if [ -e /usr/bin/pxz ]; then
XZ=/usr/bin/pxz
else
XZ=/usr/bin/xz
fi

DIRNAME=mesa-$( date +%Y%m%d )

echo REF ${REF:+--reference $REF}
echo DIRNAME $DIRNAME
echo HEAD ${1:-HEAD}
echo HEAD ${1:-18.0}

rm -rf $DIRNAME

git clone ${REF:+--reference $REF} \
git://git.freedesktop.org/git/mesa/drm $DIRNAME
git clone --depth 1 ${REF:+--reference $REF} --branch 18.0 \
git://git.freedesktop.org/git/mesa/mesa $DIRNAME

GIT_DIR=$DIRNAME/.git git archive --format=tar --prefix=$DIRNAME/ ${1:-HEAD} \
| bzip2 > $DIRNAME.tar.bz2
| $XZ > $DIRNAME.tar.xz

# rm -rf $DIRNAME

1741
SPECS/mesa.spec

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save