- u_llvmpipe-lp_build_gather_elem_vec-BE-fix-for-3x16-lo.patch
* Fix loading of a 3x16 vector as a single 48-bit load on big-endian systems (PPC64, S390). [fdo#100613] OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/Mesa?expand=0&rev=617
This commit is contained in:
parent
b357255f8e
commit
07667cc47b
@ -1,3 +1,10 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed May 31 07:42:39 UTC 2017 - sndirsch@suse.com
|
||||||
|
|
||||||
|
- u_llvmpipe-lp_build_gather_elem_vec-BE-fix-for-3x16-lo.patch
|
||||||
|
* Fix loading of a 3x16 vector as a single 48-bit load on
|
||||||
|
big-endian systems (PPC64, S390). [fdo#100613]
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu May 25 07:48:22 UTC 2017 - mimi.vx@gmail.com
|
Thu May 25 07:48:22 UTC 2017 - mimi.vx@gmail.com
|
||||||
|
|
||||||
|
@ -85,6 +85,7 @@ Patch21: n_Define-GLAPIVAR-separate-from-GLAPI.patch
|
|||||||
Patch31: archlinux_0001-Fix-linkage-against-shared-glapi.patch
|
Patch31: archlinux_0001-Fix-linkage-against-shared-glapi.patch
|
||||||
Patch32: archlinux_glvnd-fix-gl-dot-pc.patch
|
Patch32: archlinux_glvnd-fix-gl-dot-pc.patch
|
||||||
Patch40: u_gallivm-correct-channel-shift-logic-on-big-endian.patch
|
Patch40: u_gallivm-correct-channel-shift-logic-on-big-endian.patch
|
||||||
|
Patch41: u_llvmpipe-lp_build_gather_elem_vec-BE-fix-for-3x16-lo.patch
|
||||||
|
|
||||||
BuildRequires: autoconf >= 2.60
|
BuildRequires: autoconf >= 2.60
|
||||||
BuildRequires: automake
|
BuildRequires: automake
|
||||||
@ -656,6 +657,7 @@ rm -rf docs/README.{VMS,WIN32,OS2}
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%patch40 -p1
|
%patch40 -p1
|
||||||
|
%patch41 -p1
|
||||||
|
|
||||||
# Remove requires to libglvnd/libglvnd-devel from baselibs.conf when
|
# Remove requires to libglvnd/libglvnd-devel from baselibs.conf when
|
||||||
# disabling libglvnd build; ugly ...
|
# disabling libglvnd build; ugly ...
|
||||||
|
49
u_llvmpipe-lp_build_gather_elem_vec-BE-fix-for-3x16-lo.patch
Normal file
49
u_llvmpipe-lp_build_gather_elem_vec-BE-fix-for-3x16-lo.patch
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
From 3f993cdf6db5cf344179fcb4fbf899f6ef9a6b2b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ben Crocker <bcrocker@redhat.com>
|
||||||
|
Date: Tue, 30 May 2017 12:34:23 -0400
|
||||||
|
Subject: [PATCH] llvmpipe: lp_build_gather_elem_vec BE fix for 3x16 load
|
||||||
|
|
||||||
|
Fix loading of a 3x16 vector as a single 48-bit load
|
||||||
|
on big-endian systems (PPC64, S390).
|
||||||
|
|
||||||
|
Signed-off-by: Ben Crocker <bcrocker@redhat.com>
|
||||||
|
---
|
||||||
|
src/gallium/auxiliary/gallivm/lp_bld_gather.c | 17 +++++++++++++++--
|
||||||
|
1 file changed, 15 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_gather.c b/src/gallium/auxiliary/gallivm/lp_bld_gather.c
|
||||||
|
index ccd0376..8e56e42 100644
|
||||||
|
--- a/src/gallium/auxiliary/gallivm/lp_bld_gather.c
|
||||||
|
+++ b/src/gallium/auxiliary/gallivm/lp_bld_gather.c
|
||||||
|
@@ -234,13 +234,26 @@ lp_build_gather_elem_vec(struct gallivm_state *gallivm,
|
||||||
|
*/
|
||||||
|
res = LLVMBuildZExt(gallivm->builder, res, dst_elem_type, "");
|
||||||
|
|
||||||
|
- if (vector_justify) {
|
||||||
|
#ifdef PIPE_ARCH_BIG_ENDIAN
|
||||||
|
+ if (vector_justify) {
|
||||||
|
res = LLVMBuildShl(gallivm->builder, res,
|
||||||
|
LLVMConstInt(dst_elem_type,
|
||||||
|
dst_type.width - src_width, 0), "");
|
||||||
|
-#endif
|
||||||
|
}
|
||||||
|
+ if (src_width == 48) {
|
||||||
|
+ LLVMValueRef shuffles[4] = {
|
||||||
|
+ lp_build_const_int32(gallivm, 2),
|
||||||
|
+ lp_build_const_int32(gallivm, 1),
|
||||||
|
+ lp_build_const_int32(gallivm, 0),
|
||||||
|
+ lp_build_const_int32(gallivm, 3),
|
||||||
|
+ };
|
||||||
|
+ struct lp_type type16 = {FALSE, FALSE, TRUE, FALSE, 16, 4};
|
||||||
|
+ res = LLVMBuildBitCast(gallivm->builder, res,
|
||||||
|
+ lp_build_vec_type(gallivm, type16), "");
|
||||||
|
+ res = LLVMBuildShuffleVector(gallivm->builder, res, res, LLVMConstVector(shuffles, 4), "");
|
||||||
|
+ res = LLVMBuildBitCast(gallivm->builder, res, dst_elem_type, "");
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
--
|
||||||
|
2.7.4
|
||||||
|
|
Loading…
Reference in New Issue
Block a user