From 762a8c357f27ae6dc6b9cad8190d57fdc3e629b5 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Nov 19 2015 15:45:45 +0000 Subject: import mesa-10.6.5-3.20150824.el7 --- diff --git a/.gitignore b/.gitignore index b7e1e0e..9c4c77b 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/mesa-20140910.tar.xz +SOURCES/mesa-20150824.tar.xz diff --git a/.mesa.metadata b/.mesa.metadata index 47ed87e..1f1b7ab 100644 --- a/.mesa.metadata +++ b/.mesa.metadata @@ -1 +1 @@ -487e487decc60815209baf72467ac240f9ba0cf7 SOURCES/mesa-20140910.tar.xz +0c2905f0618a45791a1a7dadd52256631d3dee7a SOURCES/mesa-20150824.tar.xz diff --git a/SOURCES/0001-gallivm-Fix-Altivec-pack-intrinsics-for-little-endia.patch b/SOURCES/0001-gallivm-Fix-Altivec-pack-intrinsics-for-little-endia.patch deleted file mode 100644 index 814314e..0000000 --- a/SOURCES/0001-gallivm-Fix-Altivec-pack-intrinsics-for-little-endia.patch +++ /dev/null @@ -1,116 +0,0 @@ -From 0feb977bbfb0d6bb2c8d3178246acb035a739f37 Mon Sep 17 00:00:00 2001 -From: Ulrich Weigand -Date: Mon, 4 Aug 2014 18:41:00 +0200 -Subject: [PATCH] gallivm: Fix Altivec pack intrinsics for little-endian - -This patch fixes use of Altivec pack intrinsics on little-endian PowerPC -systems. Since little-endian operation only affects the load and store -instructions, the semantics of pack (and other) instructions that take -two input vectors implicitly change: the pack instructions still fill -a register placing values from the first operand into the "high" parts -of the register, and values from the second operand into the "low" parts -of the register, but since vector loads and stores perform an endian swap, -the high parts end up at high memory addresses. - -To still achieve the desired effect, we have to swap the two inputs to -the pack instruction on little-endian systems. This is done automatically -by the back-end for instructions generated by LLVM, but needs to be done -manually when emitting intrisincs (which still result in that instruction -being emitted directly). - -Signed-off-by: Ulrich Weigand -Signed-off-by: Maarten Lankhorst ---- - src/gallium/auxiliary/gallivm/lp_bld_pack.c | 26 +++++++++++++++++++++----- - 1 file changed, 21 insertions(+), 5 deletions(-) - -diff --git a/src/gallium/auxiliary/gallivm/lp_bld_pack.c b/src/gallium/auxiliary/gallivm/lp_bld_pack.c -index a48a922..cdf6d80 100644 ---- a/src/gallium/auxiliary/gallivm/lp_bld_pack.c -+++ b/src/gallium/auxiliary/gallivm/lp_bld_pack.c -@@ -464,6 +464,7 @@ lp_build_pack2(struct gallivm_state *gallivm, - if((util_cpu_caps.has_sse2 || util_cpu_caps.has_altivec) && - src_type.width * src_type.length >= 128) { - const char *intrinsic = NULL; -+ boolean swap_intrinsic_operands = FALSE; - - switch(src_type.width) { - case 32: -@@ -482,6 +483,9 @@ lp_build_pack2(struct gallivm_state *gallivm, - } else { - intrinsic = "llvm.ppc.altivec.vpkuwus"; - } -+#ifdef PIPE_ARCH_LITTLE_ENDIAN -+ swap_intrinsic_operands = TRUE; -+#endif - } - break; - case 16: -@@ -490,12 +494,18 @@ lp_build_pack2(struct gallivm_state *gallivm, - intrinsic = "llvm.x86.sse2.packsswb.128"; - } else if (util_cpu_caps.has_altivec) { - intrinsic = "llvm.ppc.altivec.vpkshss"; -+#ifdef PIPE_ARCH_LITTLE_ENDIAN -+ swap_intrinsic_operands = TRUE; -+#endif - } - } else { - if (util_cpu_caps.has_sse2) { - intrinsic = "llvm.x86.sse2.packuswb.128"; - } else if (util_cpu_caps.has_altivec) { - intrinsic = "llvm.ppc.altivec.vpkshus"; -+#ifdef PIPE_ARCH_LITTLE_ENDIAN -+ swap_intrinsic_operands = TRUE; -+#endif - } - } - break; -@@ -504,7 +514,11 @@ lp_build_pack2(struct gallivm_state *gallivm, - if (intrinsic) { - if (src_type.width * src_type.length == 128) { - LLVMTypeRef intr_vec_type = lp_build_vec_type(gallivm, intr_type); -- res = lp_build_intrinsic_binary(builder, intrinsic, intr_vec_type, lo, hi); -+ if (swap_intrinsic_operands) { -+ res = lp_build_intrinsic_binary(builder, intrinsic, intr_vec_type, hi, lo); -+ } else { -+ res = lp_build_intrinsic_binary(builder, intrinsic, intr_vec_type, lo, hi); -+ } - if (dst_vec_type != intr_vec_type) { - res = LLVMBuildBitCast(builder, res, dst_vec_type, ""); - } -@@ -513,6 +527,8 @@ lp_build_pack2(struct gallivm_state *gallivm, - int num_split = src_type.width * src_type.length / 128; - int i; - int nlen = 128 / src_type.width; -+ int lo_off = swap_intrinsic_operands ? nlen : 0; -+ int hi_off = swap_intrinsic_operands ? 0 : nlen; - struct lp_type ndst_type = lp_type_unorm(dst_type.width, 128); - struct lp_type nintr_type = lp_type_unorm(intr_type.width, 128); - LLVMValueRef tmpres[LP_MAX_VECTOR_WIDTH / 128]; -@@ -524,9 +540,9 @@ lp_build_pack2(struct gallivm_state *gallivm, - - for (i = 0; i < num_split / 2; i++) { - tmplo = lp_build_extract_range(gallivm, -- lo, i*nlen*2, nlen); -+ lo, i*nlen*2 + lo_off, nlen); - tmphi = lp_build_extract_range(gallivm, -- lo, i*nlen*2 + nlen, nlen); -+ lo, i*nlen*2 + hi_off, nlen); - tmpres[i] = lp_build_intrinsic_binary(builder, intrinsic, - nintr_vec_type, tmplo, tmphi); - if (ndst_vec_type != nintr_vec_type) { -@@ -535,9 +551,9 @@ lp_build_pack2(struct gallivm_state *gallivm, - } - for (i = 0; i < num_split / 2; i++) { - tmplo = lp_build_extract_range(gallivm, -- hi, i*nlen*2, nlen); -+ hi, i*nlen*2 + lo_off, nlen); - tmphi = lp_build_extract_range(gallivm, -- hi, i*nlen*2 + nlen, nlen); -+ hi, i*nlen*2 + hi_off, nlen); - tmpres[i+num_split/2] = lp_build_intrinsic_binary(builder, intrinsic, - nintr_vec_type, - tmplo, tmphi); --- -1.9.3 - diff --git a/SOURCES/make-git-snapshot.sh b/SOURCES/make-git-snapshot.sh index b5045fe..16777cc 100755 --- a/SOURCES/make-git-snapshot.sh +++ b/SOURCES/make-git-snapshot.sh @@ -15,11 +15,11 @@ DIRNAME=mesa-$( date +%Y%m%d ) echo REF ${REF:+--reference $REF} echo DIRNAME $DIRNAME -echo HEAD ${1:-10.2} +echo HEAD ${1:-10.6} rm -rf $DIRNAME -git clone --depth 1 ${REF:+--reference $REF} --branch 10.2 \ +git clone --depth 1 ${REF:+--reference $REF} --branch 10.6 \ git://git.freedesktop.org/git/mesa/mesa $DIRNAME GIT_DIR=$DIRNAME/.git git archive --format=tar --prefix=$DIRNAME/ ${1:-HEAD} \ diff --git a/SOURCES/mesa-10.6-fix-texcompress-big-endian.patch b/SOURCES/mesa-10.6-fix-texcompress-big-endian.patch new file mode 100644 index 0000000..c1befe1 --- /dev/null +++ b/SOURCES/mesa-10.6-fix-texcompress-big-endian.patch @@ -0,0 +1,115 @@ +From bd016a2601a741799bc76734deae0cb9ebcb2b8f Mon Sep 17 00:00:00 2001 +From: Ulrich Weigand +Date: Tue, 15 Sep 2015 15:23:26 +0200 +Subject: [PATCH] mesa: Fix texture compression on big-endian systems + +Various pieces of code to create compressed textures will first +generate an uncompressed RGBA texture into a temporary buffer, +and then read from that buffer while creating the final compressed +texture in the requested format. + +The code reading from the temporary buffer assumes the buffer is +formatted as an array of bytes in RGBA order. However, the buffer +is filled using a _mesa_texstore call with MESA_FORMAT_R8G8B8A8_UNORM +format -- this is defined as an array of *integers* holding the +RGBA values in packed format (least-significant to most-significant). +This means incorrect bytes are accessed on big-endian systems. + +This patch fixes this by using the MESA_FORMAT_A8B8G8R8_UNORM format +instead on big-endian systems when filling the buffer. This fixes +about 100 piglit test case failures on s390x for me. + +Signed-off-by: Ulrich Weigand +Tested-by: Oded Gabbay +Cc: "10.6" "11.0" +Signed-off-by: Dave Airlie +--- + src/mesa/main/texcompress_bptc.c | 3 ++- + src/mesa/main/texcompress_fxt1.c | 3 ++- + src/mesa/main/texcompress_rgtc.c | 6 ++++-- + src/mesa/main/texcompress_s3tc.c | 9 ++++++--- + 4 files changed, 14 insertions(+), 7 deletions(-) + +diff --git a/src/mesa/main/texcompress_bptc.c b/src/mesa/main/texcompress_bptc.c +index a600180..f0f6553 100644 +--- a/src/mesa/main/texcompress_bptc.c ++++ b/src/mesa/main/texcompress_bptc.c +@@ -1291,7 +1291,8 @@ _mesa_texstore_bptc_rgba_unorm(TEXSTORE_PARAMS) + tempImageSlices[0] = (GLubyte *) tempImage; + _mesa_texstore(ctx, dims, + baseInternalFormat, +- MESA_FORMAT_R8G8B8A8_UNORM, ++ _mesa_little_endian() ? MESA_FORMAT_R8G8B8A8_UNORM ++ : MESA_FORMAT_A8B8G8R8_UNORM, + rgbaRowStride, tempImageSlices, + srcWidth, srcHeight, srcDepth, + srcFormat, srcType, srcAddr, +diff --git a/src/mesa/main/texcompress_fxt1.c b/src/mesa/main/texcompress_fxt1.c +index d605e25..ae339e1 100644 +--- a/src/mesa/main/texcompress_fxt1.c ++++ b/src/mesa/main/texcompress_fxt1.c +@@ -130,7 +130,8 @@ _mesa_texstore_rgba_fxt1(TEXSTORE_PARAMS) + tempImageSlices[0] = (GLubyte *) tempImage; + _mesa_texstore(ctx, dims, + baseInternalFormat, +- MESA_FORMAT_R8G8B8A8_UNORM, ++ _mesa_little_endian() ? MESA_FORMAT_R8G8B8A8_UNORM ++ : MESA_FORMAT_A8B8G8R8_UNORM, + rgbaRowStride, tempImageSlices, + srcWidth, srcHeight, srcDepth, + srcFormat, srcType, srcAddr, +diff --git a/src/mesa/main/texcompress_rgtc.c b/src/mesa/main/texcompress_rgtc.c +index 66de1f1..8cab7a5 100644 +--- a/src/mesa/main/texcompress_rgtc.c ++++ b/src/mesa/main/texcompress_rgtc.c +@@ -196,9 +196,11 @@ _mesa_texstore_rg_rgtc2(TEXSTORE_PARAMS) + dstFormat == MESA_FORMAT_LA_LATC2_UNORM); + + if (baseInternalFormat == GL_RG) +- tempFormat = MESA_FORMAT_R8G8_UNORM; ++ tempFormat = _mesa_little_endian() ? MESA_FORMAT_R8G8_UNORM ++ : MESA_FORMAT_G8R8_UNORM; + else +- tempFormat = MESA_FORMAT_L8A8_UNORM; ++ tempFormat = _mesa_little_endian() ? MESA_FORMAT_L8A8_UNORM ++ : MESA_FORMAT_A8L8_UNORM; + + rgRowStride = 2 * srcWidth * sizeof(GLubyte); + tempImage = malloc(srcWidth * srcHeight * 2 * sizeof(GLubyte)); +diff --git a/src/mesa/main/texcompress_s3tc.c b/src/mesa/main/texcompress_s3tc.c +index 6cfe06a..7ddb0ed 100644 +--- a/src/mesa/main/texcompress_s3tc.c ++++ b/src/mesa/main/texcompress_s3tc.c +@@ -198,7 +198,8 @@ _mesa_texstore_rgba_dxt1(TEXSTORE_PARAMS) + tempImageSlices[0] = (GLubyte *) tempImage; + _mesa_texstore(ctx, dims, + baseInternalFormat, +- MESA_FORMAT_R8G8B8A8_UNORM, ++ _mesa_little_endian() ? MESA_FORMAT_R8G8B8A8_UNORM ++ : MESA_FORMAT_A8B8G8R8_UNORM, + rgbaRowStride, tempImageSlices, + srcWidth, srcHeight, srcDepth, + srcFormat, srcType, srcAddr, +@@ -255,7 +256,8 @@ _mesa_texstore_rgba_dxt3(TEXSTORE_PARAMS) + tempImageSlices[0] = (GLubyte *) tempImage; + _mesa_texstore(ctx, dims, + baseInternalFormat, +- MESA_FORMAT_R8G8B8A8_UNORM, ++ _mesa_little_endian() ? MESA_FORMAT_R8G8B8A8_UNORM ++ : MESA_FORMAT_A8B8G8R8_UNORM, + rgbaRowStride, tempImageSlices, + srcWidth, srcHeight, srcDepth, + srcFormat, srcType, srcAddr, +@@ -311,7 +313,8 @@ _mesa_texstore_rgba_dxt5(TEXSTORE_PARAMS) + tempImageSlices[0] = (GLubyte *) tempImage; + _mesa_texstore(ctx, dims, + baseInternalFormat, +- MESA_FORMAT_R8G8B8A8_UNORM, ++ _mesa_little_endian() ? MESA_FORMAT_R8G8B8A8_UNORM ++ : MESA_FORMAT_A8B8G8R8_UNORM, + rgbaRowStride, tempImageSlices, + srcWidth, srcHeight, srcDepth, + srcFormat, srcType, srcAddr, +-- +2.4.3 + diff --git a/SOURCES/mesa-10.6-llvmpipe-imm-fix-power.patch b/SOURCES/mesa-10.6-llvmpipe-imm-fix-power.patch new file mode 100644 index 0000000..ca8c514 --- /dev/null +++ b/SOURCES/mesa-10.6-llvmpipe-imm-fix-power.patch @@ -0,0 +1,41 @@ +From 8e45b5eecce4233389bb2a50a142d37e2676c71f Mon Sep 17 00:00:00 2001 +From: Oded Gabbay +Date: Thu, 3 Sep 2015 19:00:26 +0300 +Subject: [PATCH] llvmpipe: convert double to long long instead of unsigned + long long + +round(val*dscale) produces a double result, as val and dscale are double. +However, LLVMConstInt receives unsigned long long, so there is an +implicit conversion from double to unsigned long long. +This is an undefined behavior. Therefore, we need to first explicitly +convert the round result to long long, and then let the compiler handle +conversion from that to unsigned long long. + +This bug manifests itself in POWER, where all IMM values of -1 are being +converted to 0 implicitly, causing a wrong LLVM IR output. + +Signed-off-by: Oded Gabbay +CC: "10.6 11.0" +Reviewed-by: Tom Stellard +Reviewed-by: Roland Scheidegger +(cherry picked from commit 4f2290d1612569686284609059d29a85c9de67cf) +--- + src/gallium/auxiliary/gallivm/lp_bld_const.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/gallium/auxiliary/gallivm/lp_bld_const.c b/src/gallium/auxiliary/gallivm/lp_bld_const.c +index 0f5a8f8..9cd7c55 100644 +--- a/src/gallium/auxiliary/gallivm/lp_bld_const.c ++++ b/src/gallium/auxiliary/gallivm/lp_bld_const.c +@@ -311,7 +311,7 @@ lp_build_const_elem(struct gallivm_state *gallivm, + else { + double dscale = lp_const_scale(type); + +- elem = LLVMConstInt(elem_type, round(val*dscale), 0); ++ elem = LLVMConstInt(elem_type, (long long) round(val*dscale), 0); + } + + return elem; +-- +2.4.3 + diff --git a/SOURCES/mesa-big-endian-fixes.patch b/SOURCES/mesa-big-endian-fixes.patch deleted file mode 100644 index 243ef5d..0000000 --- a/SOURCES/mesa-big-endian-fixes.patch +++ /dev/null @@ -1,327 +0,0 @@ -diff --git a/src/gallium/auxiliary/gallivm/lp_bld_arit.c b/src/gallium/auxiliary/gallivm/lp_bld_arit.c -index e516ae8..a4237f5 100644 ---- a/src/gallium/auxiliary/gallivm/lp_bld_arit.c -+++ b/src/gallium/auxiliary/gallivm/lp_bld_arit.c -@@ -512,9 +512,20 @@ lp_build_add(struct lp_build_context *bld, - return lp_build_intrinsic_binary(builder, intrinsic, lp_build_vec_type(bld->gallivm, bld->type), a, b); - } - -- /* TODO: handle signed case */ -- if(type.norm && !type.floating && !type.fixed && !type.sign) -- a = lp_build_min_simple(bld, a, lp_build_comp(bld, b), GALLIVM_NAN_BEHAVIOR_UNDEFINED); -+ if(type.norm && !type.floating && !type.fixed) { -+ if (type.sign) { -+ uint64_t sign = (uint64_t)1 << (type.width - 1); -+ LLVMValueRef max_val = lp_build_const_int_vec(bld->gallivm, type, sign - 1); -+ LLVMValueRef min_val = lp_build_const_int_vec(bld->gallivm, type, sign); -+ /* a_clamp_max is the maximum a for positive b, -+ a_clamp_min is the minimum a for negative b. */ -+ LLVMValueRef a_clamp_max = lp_build_min_simple(bld, a, LLVMBuildSub(builder, max_val, b, ""), GALLIVM_NAN_BEHAVIOR_UNDEFINED); -+ LLVMValueRef a_clamp_min = lp_build_max_simple(bld, a, LLVMBuildSub(builder, min_val, b, ""), GALLIVM_NAN_BEHAVIOR_UNDEFINED); -+ a = lp_build_select(bld, lp_build_cmp(bld, PIPE_FUNC_GREATER, b, bld->zero), a_clamp_max, a_clamp_min); -+ } else { -+ a = lp_build_min_simple(bld, a, lp_build_comp(bld, b), GALLIVM_NAN_BEHAVIOR_UNDEFINED); -+ } -+ } - - if(LLVMIsConstant(a) && LLVMIsConstant(b)) - if (type.floating) -@@ -793,9 +804,20 @@ lp_build_sub(struct lp_build_context *bld, - return lp_build_intrinsic_binary(builder, intrinsic, lp_build_vec_type(bld->gallivm, bld->type), a, b); - } - -- /* TODO: handle signed case */ -- if(type.norm && !type.floating && !type.fixed && !type.sign) -- a = lp_build_max_simple(bld, a, b, GALLIVM_NAN_BEHAVIOR_UNDEFINED); -+ if(type.norm && !type.floating && !type.fixed) { -+ if (type.sign) { -+ uint64_t sign = (uint64_t)1 << (type.width - 1); -+ LLVMValueRef max_val = lp_build_const_int_vec(bld->gallivm, type, sign - 1); -+ LLVMValueRef min_val = lp_build_const_int_vec(bld->gallivm, type, sign); -+ /* a_clamp_max is the maximum a for negative b, -+ a_clamp_min is the minimum a for positive b. */ -+ LLVMValueRef a_clamp_max = lp_build_min_simple(bld, a, LLVMBuildAdd(builder, max_val, b, ""), GALLIVM_NAN_BEHAVIOR_UNDEFINED); -+ LLVMValueRef a_clamp_min = lp_build_max_simple(bld, a, LLVMBuildAdd(builder, min_val, b, ""), GALLIVM_NAN_BEHAVIOR_UNDEFINED); -+ a = lp_build_select(bld, lp_build_cmp(bld, PIPE_FUNC_GREATER, b, bld->zero), a_clamp_min, a_clamp_max); -+ } else { -+ a = lp_build_max_simple(bld, a, b, GALLIVM_NAN_BEHAVIOR_UNDEFINED); -+ } -+ } - - if(LLVMIsConstant(a) && LLVMIsConstant(b)) - if (type.floating) -@@ -1852,7 +1874,7 @@ lp_build_trunc(struct lp_build_context *bld, - const struct lp_type type = bld->type; - struct lp_type inttype; - struct lp_build_context intbld; -- LLVMValueRef cmpval = lp_build_const_vec(bld->gallivm, type, 2^24); -+ LLVMValueRef cmpval = lp_build_const_vec(bld->gallivm, type, 1<<24); - LLVMValueRef trunc, res, anosign, mask; - LLVMTypeRef int_vec_type = bld->int_vec_type; - LLVMTypeRef vec_type = bld->vec_type; -@@ -1907,7 +1929,7 @@ lp_build_round(struct lp_build_context *bld, - const struct lp_type type = bld->type; - struct lp_type inttype; - struct lp_build_context intbld; -- LLVMValueRef cmpval = lp_build_const_vec(bld->gallivm, type, 2^24); -+ LLVMValueRef cmpval = lp_build_const_vec(bld->gallivm, type, 1<<24); - LLVMValueRef res, anosign, mask; - LLVMTypeRef int_vec_type = bld->int_vec_type; - LLVMTypeRef vec_type = bld->vec_type; -@@ -1960,7 +1982,7 @@ lp_build_floor(struct lp_build_context *bld, - const struct lp_type type = bld->type; - struct lp_type inttype; - struct lp_build_context intbld; -- LLVMValueRef cmpval = lp_build_const_vec(bld->gallivm, type, 2^24); -+ LLVMValueRef cmpval = lp_build_const_vec(bld->gallivm, type, 1<<24); - LLVMValueRef trunc, res, anosign, mask; - LLVMTypeRef int_vec_type = bld->int_vec_type; - LLVMTypeRef vec_type = bld->vec_type; -@@ -2029,7 +2051,7 @@ lp_build_ceil(struct lp_build_context *bld, - const struct lp_type type = bld->type; - struct lp_type inttype; - struct lp_build_context intbld; -- LLVMValueRef cmpval = lp_build_const_vec(bld->gallivm, type, 2^24); -+ LLVMValueRef cmpval = lp_build_const_vec(bld->gallivm, type, 1<<24); - LLVMValueRef trunc, res, anosign, mask, tmp; - LLVMTypeRef int_vec_type = bld->int_vec_type; - LLVMTypeRef vec_type = bld->vec_type; -diff --git a/src/gallium/auxiliary/util/u_format.csv b/src/gallium/auxiliary/util/u_format.csv -index 8aa5c36..1cd4954 100644 ---- a/src/gallium/auxiliary/util/u_format.csv -+++ b/src/gallium/auxiliary/util/u_format.csv -@@ -46,6 +46,8 @@ - # - number of bits - # - channel swizzle - # - color space: rgb, yub, sz -+# - (optional) channel encoding for big-endian targets -+# - (optional) channel swizzle for big-endian targets - # - # See also: - # - http://msdn.microsoft.com/en-us/library/bb172558.aspx (D3D9) -@@ -70,20 +72,20 @@ PIPE_FORMAT_A8B8G8R8_UNORM , plain, 1, 1, un8 , un8 , un8 , un8 , wzyx, r - PIPE_FORMAT_X8B8G8R8_UNORM , plain, 1, 1, x8 , un8 , un8 , un8 , wzy1, rgb - # PIPE_FORMAT_R8G8B8A8_UNORM is below - PIPE_FORMAT_R8G8B8X8_UNORM , plain, 1, 1, un8 , un8 , un8 , x8 , xyz1, rgb --PIPE_FORMAT_B5G5R5X1_UNORM , plain, 1, 1, un5 , un5 , un5 , x1 , zyx1, rgb --PIPE_FORMAT_B5G5R5A1_UNORM , plain, 1, 1, un5 , un5 , un5 , un1 , zyxw, rgb --PIPE_FORMAT_B4G4R4A4_UNORM , plain, 1, 1, un4 , un4 , un4 , un4 , zyxw, rgb --PIPE_FORMAT_B4G4R4X4_UNORM , plain, 1, 1, un4 , un4 , un4 , x4 , zyx1, rgb --PIPE_FORMAT_B5G6R5_UNORM , plain, 1, 1, un5 , un6 , un5 , , zyx1, rgb --PIPE_FORMAT_R10G10B10A2_UNORM , plain, 1, 1, un10, un10, un10, un2 , xyzw, rgb --PIPE_FORMAT_B10G10R10A2_UNORM , plain, 1, 1, un10, un10, un10, un2 , zyxw, rgb --PIPE_FORMAT_B2G3R3_UNORM , plain, 1, 1, un2 , un3 , un3 , , zyx1, rgb -+PIPE_FORMAT_B5G5R5X1_UNORM , plain, 1, 1, un5 , un5 , un5 , x1 , zyx1, rgb, x1 , un5 , un5 , un5 , yzw1 -+PIPE_FORMAT_B5G5R5A1_UNORM , plain, 1, 1, un5 , un5 , un5 , un1 , zyxw, rgb, un1 , un5 , un5 , un5 , yzwx -+PIPE_FORMAT_B4G4R4A4_UNORM , plain, 1, 1, un4 , un4 , un4 , un4 , zyxw, rgb, un4 , un4 , un4 , un4 , yzwx -+PIPE_FORMAT_B4G4R4X4_UNORM , plain, 1, 1, un4 , un4 , un4 , x4 , zyx1, rgb, x4 , un4 , un4 , un4 , yzw1 -+PIPE_FORMAT_B5G6R5_UNORM , plain, 1, 1, un5 , un6 , un5 , , zyx1, rgb, un5 , un6 , un5 , , xyz1 -+PIPE_FORMAT_R10G10B10A2_UNORM , plain, 1, 1, un10, un10, un10, un2 , xyzw, rgb, un2 , un10, un10, un10, wzyx -+PIPE_FORMAT_B10G10R10A2_UNORM , plain, 1, 1, un10, un10, un10, un2 , zyxw, rgb, un2 , un10, un10, un10, yzwx -+PIPE_FORMAT_B2G3R3_UNORM , plain, 1, 1, un2 , un3 , un3 , , zyx1, rgb, un3 , un3 , un2 , , xyz1 - - # Luminance/Intensity/Alpha formats - PIPE_FORMAT_L8_UNORM , plain, 1, 1, un8 , , , , xxx1, rgb - PIPE_FORMAT_A8_UNORM , plain, 1, 1, un8 , , , , 000x, rgb - PIPE_FORMAT_I8_UNORM , plain, 1, 1, un8 , , , , xxxx, rgb --PIPE_FORMAT_L4A4_UNORM , plain, 1, 1, un4 , un4 , , , xxxy, rgb -+PIPE_FORMAT_L4A4_UNORM , plain, 1, 1, un4 , un4 , , , xxxy, rgb, un4 , un4 , , , yyyx - PIPE_FORMAT_L8A8_UNORM , plain, 1, 1, un8 , un8 , , , xxxy, rgb - PIPE_FORMAT_L16_UNORM , plain, 1, 1, un16, , , , xxx1, rgb - PIPE_FORMAT_A16_UNORM , plain, 1, 1, un16, , , , 000x, rgb -@@ -120,22 +122,22 @@ PIPE_FORMAT_X8R8G8B8_SRGB , plain, 1, 1, x8 , un8 , un8 , un8 , yzw1, s - - # Mixed-sign formats (typically used for bump map textures) - PIPE_FORMAT_R8SG8SB8UX8U_NORM , plain, 1, 1, sn8 , sn8 , un8 , x8 , xyz1, rgb --PIPE_FORMAT_R10SG10SB10SA2U_NORM , plain, 1, 1, sn10, sn10, sn10, un2 , xyzw, rgb --PIPE_FORMAT_R5SG5SB6U_NORM , plain, 1, 1, sn5 , sn5 , un6 , , xyz1, rgb -+PIPE_FORMAT_R10SG10SB10SA2U_NORM , plain, 1, 1, sn10, sn10, sn10, un2 , xyzw, rgb, un2 , sn10, sn10, sn10, wzyx -+PIPE_FORMAT_R5SG5SB6U_NORM , plain, 1, 1, sn5 , sn5 , un6 , , xyz1, rgb, un6 , sn5 , sn5 , , zyx1 - - # Depth-stencil formats - PIPE_FORMAT_S8_UINT , plain, 1, 1, up8 , , , , _x__, zs - PIPE_FORMAT_Z16_UNORM , plain, 1, 1, un16, , , , x___, zs - PIPE_FORMAT_Z32_UNORM , plain, 1, 1, un32, , , , x___, zs - PIPE_FORMAT_Z32_FLOAT , plain, 1, 1, f32 , , , , x___, zs --PIPE_FORMAT_Z24_UNORM_S8_UINT , plain, 1, 1, un24, up8 , , , xy__, zs --PIPE_FORMAT_S8_UINT_Z24_UNORM , plain, 1, 1, up8 , un24, , , yx__, zs --PIPE_FORMAT_X24S8_UINT , plain, 1, 1, x24 , up8 , , , _y__, zs --PIPE_FORMAT_S8X24_UINT , plain, 1, 1, up8 , x24 , , , _x__, zs --PIPE_FORMAT_Z24X8_UNORM , plain, 1, 1, un24, x8 , , , x___, zs --PIPE_FORMAT_X8Z24_UNORM , plain, 1, 1, x8 , un24, , , y___, zs --PIPE_FORMAT_Z32_FLOAT_S8X24_UINT , plain, 1, 1, f32 , up8 , x24, , xy__, zs --PIPE_FORMAT_X32_S8X24_UINT , plain, 1, 1, x32 , up8 , x24, , _y__, zs -+PIPE_FORMAT_Z24_UNORM_S8_UINT , plain, 1, 1, un24, up8 , , , xy__, zs, up8 , un24, , , yx__ -+PIPE_FORMAT_S8_UINT_Z24_UNORM , plain, 1, 1, up8 , un24, , , yx__, zs, un24, up8 , , , xy__ -+PIPE_FORMAT_X24S8_UINT , plain, 1, 1, x24 , up8 , , , _y__, zs, up8 , x24 , , , _x__ -+PIPE_FORMAT_S8X24_UINT , plain, 1, 1, up8 , x24 , , , _x__, zs, x24 , up8 , , , _y__ -+PIPE_FORMAT_Z24X8_UNORM , plain, 1, 1, un24, x8 , , , x___, zs, x8 , un24, , , y___ -+PIPE_FORMAT_X8Z24_UNORM , plain, 1, 1, x8 , un24, , , y___, zs, un24, x8 , , , x___ -+PIPE_FORMAT_Z32_FLOAT_S8X24_UINT , plain, 1, 1, f32 , up8 , x24, , xy__, zs, f32 , x24 , up8, , xz__ -+PIPE_FORMAT_X32_S8X24_UINT , plain, 1, 1, x32 , up8 , x24, , _y__, zs, x32 , x24 , up8, , _z__ - - # YUV formats - # http://www.fourcc.org/yuv.php#UYVY -@@ -261,9 +263,9 @@ PIPE_FORMAT_R32G32B32A32_FIXED , plain, 1, 1, h32 , h32 , h32 , h32 , xyzw, r - # See also: - # - http://msdn.microsoft.com/en-us/library/bb172533.aspx - # A.k.a. D3DDECLTYPE_UDEC3 --PIPE_FORMAT_R10G10B10X2_USCALED , plain, 1, 1, u10 , u10 , u10 , x2 , xyz1, rgb -+PIPE_FORMAT_R10G10B10X2_USCALED , plain, 1, 1, u10 , u10 , u10 , x2 , xyz1, rgb, x2 , u10 , u10 , u10 , wzy1 - # A.k.a. D3DDECLTYPE_DEC3N --PIPE_FORMAT_R10G10B10X2_SNORM , plain, 1, 1, sn10, sn10, sn10 , x2 , xyz1, rgb -+PIPE_FORMAT_R10G10B10X2_SNORM , plain, 1, 1, sn10, sn10, sn10 , x2 , xyz1, rgb, x2 , sn10, sn10, sn10, wzy1 - - PIPE_FORMAT_YV12 , other, 1, 1, x8 , x8 , x8 , x8 , xyzw, yuv - PIPE_FORMAT_YV16 , other, 1, 1, x8 , x8 , x8 , x8 , xyzw, yuv -@@ -272,18 +274,18 @@ PIPE_FORMAT_NV12 , other, 1, 1, x8 , x8 , x8 , x8 , xyzw, y - PIPE_FORMAT_NV21 , other, 1, 1, x8 , x8 , x8 , x8 , xyzw, yuv - - # Usually used to implement IA44 and AI44 formats in video decoding --PIPE_FORMAT_A4R4_UNORM , plain, 1, 1, un4 , un4 , , , y00x, rgb --PIPE_FORMAT_R4A4_UNORM , plain, 1, 1, un4 , un4 , , , x00y, rgb -+PIPE_FORMAT_A4R4_UNORM , plain, 1, 1, un4 , un4 , , , y00x, rgb, un4, un4 , , , x00y -+PIPE_FORMAT_R4A4_UNORM , plain, 1, 1, un4 , un4 , , , x00y, rgb, un4, un4 , , , y00x - PIPE_FORMAT_R8A8_UNORM , plain, 1, 1, un8 , un8 , , , x00y, rgb - PIPE_FORMAT_A8R8_UNORM , plain, 1, 1, un8 , un8 , , , y00x, rgb - - # ARB_vertex_type_10_10_10_2_REV --PIPE_FORMAT_R10G10B10A2_USCALED , plain, 1, 1, u10, u10, u10, u2, xyzw, rgb --PIPE_FORMAT_R10G10B10A2_SSCALED , plain, 1, 1, s10, s10, s10, s2, xyzw, rgb --PIPE_FORMAT_R10G10B10A2_SNORM , plain, 1, 1, sn10, sn10, sn10, sn2, xyzw, rgb --PIPE_FORMAT_B10G10R10A2_USCALED , plain, 1, 1, u10, u10, u10, u2, zyxw, rgb --PIPE_FORMAT_B10G10R10A2_SSCALED , plain, 1, 1, s10, s10, s10, s2, zyxw, rgb --PIPE_FORMAT_B10G10R10A2_SNORM , plain, 1, 1, sn10, sn10, sn10, sn2, zyxw, rgb -+PIPE_FORMAT_R10G10B10A2_USCALED , plain, 1, 1, u10 , u10 , u10 , u2 , xyzw, rgb, u2 , u10 , u10 , u10 , wzyx -+PIPE_FORMAT_R10G10B10A2_SSCALED , plain, 1, 1, s10 , s10 , s10 , s2 , xyzw, rgb, s2 , s10 , s10 , s10 , wzyx -+PIPE_FORMAT_R10G10B10A2_SNORM , plain, 1, 1, sn10, sn10, sn10, sn2 , xyzw, rgb, sn2 , sn10, sn10, sn10, wzyx -+PIPE_FORMAT_B10G10R10A2_USCALED , plain, 1, 1, u10 , u10 , u10 , u2 , zyxw, rgb, u2 , u10 , u10 , u10 , yzwx -+PIPE_FORMAT_B10G10R10A2_SSCALED , plain, 1, 1, s10 , s10 , s10 , s2 , zyxw, rgb, s2 , s10 , s10 , s10 , yzwx -+PIPE_FORMAT_B10G10R10A2_SNORM , plain, 1, 1, sn10, sn10, sn10, sn2 , zyxw, rgb, sn2 , sn10, sn10, sn10, yzwx - - PIPE_FORMAT_R8_UINT , plain, 1, 1, up8, , , , x001, rgb - PIPE_FORMAT_R8G8_UINT , plain, 1, 1, up8, up8, , , xy01, rgb -@@ -345,13 +347,13 @@ PIPE_FORMAT_I32_SINT , plain, 1, 1, sp32, , , , xxxx, rgb - PIPE_FORMAT_L32_SINT , plain, 1, 1, sp32, , , , xxx1, rgb - PIPE_FORMAT_L32A32_SINT , plain, 1, 1, sp32, sp32, , , xxxy, rgb - --PIPE_FORMAT_B10G10R10A2_UINT , plain, 1, 1, up10, up10, up10, up2, zyxw, rgb -+PIPE_FORMAT_B10G10R10A2_UINT , plain, 1, 1, up10, up10, up10, up2, zyxw, rgb, up2 , up10, up10, up10, yzwx - - PIPE_FORMAT_R8G8B8X8_SNORM , plain, 1, 1, sn8, sn8, sn8, x8, xyz1, rgb - PIPE_FORMAT_R8G8B8X8_SRGB , plain, 1, 1, un8, un8, un8, x8, xyz1, srgb - PIPE_FORMAT_R8G8B8X8_UINT , plain, 1, 1, up8, up8, up8, x8, xyz1, rgb - PIPE_FORMAT_R8G8B8X8_SINT , plain, 1, 1, sp8, sp8, sp8, x8, xyz1, rgb --PIPE_FORMAT_B10G10R10X2_UNORM , plain, 1, 1, un10, un10, un10, x2, zyx1, rgb -+PIPE_FORMAT_B10G10R10X2_UNORM , plain, 1, 1, un10, un10, un10, x2, zyx1, rgb, x2 , un10, un10, un10, yzw1 - PIPE_FORMAT_R16G16B16X16_UNORM , plain, 1, 1, un16, un16, un16, x16, xyz1, rgb - PIPE_FORMAT_R16G16B16X16_SNORM , plain, 1, 1, sn16, sn16, sn16, x16, xyz1, rgb - PIPE_FORMAT_R16G16B16X16_FLOAT , plain, 1, 1, f16, f16, f16, x16, xyz1, rgb -@@ -372,7 +374,7 @@ PIPE_FORMAT_R16A16_UINT , plain, 1, 1, up16 , up16 , , , x00 - PIPE_FORMAT_R16A16_SINT , plain, 1, 1, sp16 , sp16 , , , x00y, rgb - PIPE_FORMAT_R32A32_UINT , plain, 1, 1, up32 , up32 , , , x00y, rgb - PIPE_FORMAT_R32A32_SINT , plain, 1, 1, sp32 , sp32 , , , x00y, rgb --PIPE_FORMAT_R10G10B10A2_UINT , plain, 1, 1, up10 , up10 , up10, up2 , xyzw, rgb -+PIPE_FORMAT_R10G10B10A2_UINT , plain, 1, 1, up10 , up10 , up10, up2 , xyzw, rgb, up2 , up10, up10, up10, wzyx - --PIPE_FORMAT_B5G6R5_SRGB , plain, 1, 1, un5 , un6 , un5 , , zyx1, srgb -+PIPE_FORMAT_B5G6R5_SRGB , plain, 1, 1, un5 , un6 , un5 , , zyx1, srgb, un5 , un6 , un5 , , xyz1 - -diff --git a/src/gallium/auxiliary/util/u_format_parse.py b/src/gallium/auxiliary/util/u_format_parse.py -index 15cc6d4..929017a 100755 ---- a/src/gallium/auxiliary/util/u_format_parse.py -+++ b/src/gallium/auxiliary/util/u_format_parse.py -@@ -330,6 +330,9 @@ def parse(filename): - continue - - fields = [field.strip() for field in line.split(',')] -+ if len (fields) == 10: -+ fields += fields[4:9] -+ assert len (fields) == 15 - - name = fields[0] - layout = fields[1] -@@ -339,8 +342,8 @@ def parse(filename): - le_swizzles = [_swizzle_parse_map[swizzle] for swizzle in fields[8]] - le_channels = _parse_channels(fields[4:8], layout, colorspace, le_swizzles) - -- be_swizzles = [_swizzle_parse_map[swizzle] for swizzle in fields[8]] -- be_channels = _parse_channels(fields[4:8], layout, colorspace, be_swizzles) -+ be_swizzles = [_swizzle_parse_map[swizzle] for swizzle in fields[14]] -+ be_channels = _parse_channels(fields[10:14], layout, colorspace, be_swizzles) - - le_shift = 0 - for channel in le_channels: -@@ -353,6 +356,8 @@ def parse(filename): - be_shift += channel.size - - assert le_shift == be_shift -+ for i in range(4): -+ assert (le_swizzles[i] != SWIZZLE_NONE) == (be_swizzles[i] != SWIZZLE_NONE) - - format = Format(name, layout, block_width, block_height, le_channels, le_swizzles, be_channels, be_swizzles, colorspace) - formats.append(format) -diff --git a/src/gallium/drivers/llvmpipe/lp_bld_depth.c b/src/gallium/drivers/llvmpipe/lp_bld_depth.c -index 5c13ee5..b6c32ff 100644 ---- a/src/gallium/drivers/llvmpipe/lp_bld_depth.c -+++ b/src/gallium/drivers/llvmpipe/lp_bld_depth.c -@@ -363,7 +363,8 @@ get_z_shift_and_mask(const struct util_format_description *format_desc, - return FALSE; - - *width = format_desc->channel[z_swizzle].size; -- *shift = format_desc->channel[z_swizzle].shift; -+ /* & 31 is for the same reason as the 32-bit limit above */ -+ *shift = format_desc->channel[z_swizzle].shift & 31; - - if (*width == total_bits) { - *mask = 0xffffffff; -diff --git a/src/mesa/main/format_unpack.c b/src/mesa/main/format_unpack.c -index 9cc8f4d..239b61a 100644 ---- a/src/mesa/main/format_unpack.c -+++ b/src/mesa/main/format_unpack.c -@@ -2119,7 +2119,7 @@ unpack_XRGB1555_UNORM(const void *src, GLfloat dst[][4], GLuint n) - } - - static void --unpack_XBGR8888_SNORM(const void *src, GLfloat dst[][4], GLuint n) -+unpack_R8G8B8X8_SNORM(const void *src, GLfloat dst[][4], GLuint n) - { - const GLuint *s = ((const GLuint *) src); - GLuint i; -@@ -2140,7 +2140,7 @@ unpack_R8G8B8X8_SRGB(const void *src, GLfloat dst[][4], GLuint n) - dst[i][RCOMP] = _mesa_nonlinear_to_linear( (s[i] ) & 0xff ); - dst[i][GCOMP] = _mesa_nonlinear_to_linear( (s[i] >> 8) & 0xff ); - dst[i][BCOMP] = _mesa_nonlinear_to_linear( (s[i] >> 16) & 0xff ); -- dst[i][ACOMP] = UBYTE_TO_FLOAT( s[i] >> 24 ); /* linear! */ -+ dst[i][ACOMP] = 1.0f; - } - } - -@@ -2538,7 +2538,7 @@ get_unpack_rgba_function(mesa_format format) - - table[MESA_FORMAT_B4G4R4X4_UNORM] = unpack_XRGB4444_UNORM; - table[MESA_FORMAT_B5G5R5X1_UNORM] = unpack_XRGB1555_UNORM; -- table[MESA_FORMAT_R8G8B8X8_SNORM] = unpack_XBGR8888_SNORM; -+ table[MESA_FORMAT_R8G8B8X8_SNORM] = unpack_R8G8B8X8_SNORM; - table[MESA_FORMAT_R8G8B8X8_SRGB] = unpack_R8G8B8X8_SRGB; - table[MESA_FORMAT_RGBX_UINT8] = unpack_XBGR8888_UINT; - table[MESA_FORMAT_RGBX_SINT8] = unpack_XBGR8888_SINT; -diff --git a/src/mesa/swrast/s_texfetch_tmp.h b/src/mesa/swrast/s_texfetch_tmp.h -index d48e39b..e1ce179 100644 ---- a/src/mesa/swrast/s_texfetch_tmp.h -+++ b/src/mesa/swrast/s_texfetch_tmp.h -@@ -808,11 +808,11 @@ static void - FETCH(L8A8_SRGB)(const struct swrast_texture_image *texImage, - GLint i, GLint j, GLint k, GLfloat *texel) - { -- const GLubyte *src = TEXEL_ADDR(GLubyte, texImage, i, j, k, 2); -+ const GLushort s = *TEXEL_ADDR(GLushort, texImage, i, j, k, 1); - texel[RCOMP] = - texel[GCOMP] = -- texel[BCOMP] = nonlinear_to_linear(src[0]); -- texel[ACOMP] = UBYTE_TO_FLOAT(src[1]); /* linear */ -+ texel[BCOMP] = nonlinear_to_linear(s & 0xff); -+ texel[ACOMP] = UBYTE_TO_FLOAT(s >> 8); /* linear */ - } - - diff --git a/SOURCES/mesa-llvm-3.5-cpu-fix.patch b/SOURCES/mesa-llvm-3.5-cpu-fix.patch deleted file mode 100644 index ab52b58..0000000 --- a/SOURCES/mesa-llvm-3.5-cpu-fix.patch +++ /dev/null @@ -1,58 +0,0 @@ -diff -up mesa-20140910/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp.dma mesa-20140910/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp ---- mesa-20140910/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp.dma 2014-09-10 06:29:29.000000000 +1000 -+++ mesa-20140910/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp 2014-09-17 12:58:19.526487782 +1000 -@@ -59,6 +59,7 @@ - #include - #endif - #include -+#include - #include - - #if HAVE_LLVM >= 0x0300 -@@ -309,8 +310,8 @@ lp_build_create_jit_compiler_for_module( - /* - * AVX feature is not automatically detected from CPUID by the X86 target - * yet, because the old (yet default) JIT engine is not capable of -- * emitting the opcodes. But as we're using MCJIT here, it is safe to -- * add set this attribute. -+ * emitting the opcodes. On newer llvm versions it is and at least some -+ * versions (tested with 3.3) will emit avx opcodes without this anyway. - */ - MAttrs.push_back("+avx"); - if (util_cpu_caps.has_f16c) { -@@ -318,14 +319,33 @@ lp_build_create_jit_compiler_for_module( - } - builder.setMAttrs(MAttrs); - } -+ -+#if HAVE_LLVM >= 0x0305 -+ StringRef MCPU = llvm::sys::getHostCPUName(); -+ /* -+ * The cpu bits are no longer set automatically, so need to set mcpu manually. -+ * Note that the MAttrs set above will be sort of ignored (since we should -+ * not set any which would not be set by specifying the cpu anyway). -+ * It ought to be safe though since getHostCPUName() should include bits -+ * not only from the cpu but environment as well (for instance if it's safe -+ * to use avx instructions which need OS support). According to -+ * http://llvm.org/bugs/show_bug.cgi?id=19429 however if I understand this -+ * right it may be necessary to specify older cpu (or disable mattrs) though -+ * 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. -+ */ -+ builder.setMCPU(MCPU); -+#endif -+ - builder.setJITMemoryManager(JITMemoryManager::CreateDefaultMemManager()); - - ExecutionEngine *JIT; --#if 0 -+ -+#if HAVE_LLVM >= 0x0302 - JIT = builder.create(); - #else - /* -- * Workaround http://llvm.org/bugs/show_bug.cgi?id=12833 -+ * Workaround http://llvm.org/PR12833 - */ - StringRef MArch = ""; - StringRef MCPU = ""; diff --git a/SPECS/mesa.spec b/SPECS/mesa.spec index c629f95..7ad8c48 100644 --- a/SPECS/mesa.spec +++ b/SPECS/mesa.spec @@ -42,13 +42,13 @@ %define _default_patch_fuzz 2 -%define gitdate 20140910 +%define gitdate 20150824 #% define snapshot Summary: Mesa graphics libraries Name: mesa -Version: 10.2.7 -Release: 5.%{gitdate}%{?dist}.1 +Version: 10.6.5 +Release: 3.%{gitdate}%{?dist} License: MIT Group: System Environment/Libraries URL: http://www.mesa3d.org @@ -69,22 +69,15 @@ Patch9: mesa-8.0-llvmpipe-shmget.patch Patch12: mesa-8.0.1-fix-16bpp.patch Patch15: mesa-9.2-hardware-float.patch Patch20: mesa-10.2-evergreen-big-endian.patch - -# ppc64le enablement -Patch70: 0001-gallivm-Fix-Altivec-pack-intrinsics-for-little-endia.patch - -# 1112753 - backport some of the upstream format fixes. -Patch80: mesa-big-endian-fixes.patch - -# upstream backport to fix llvmpipe on older x86 -Patch81: mesa-llvm-3.5-cpu-fix.patch +Patch25: mesa-10.6-llvmpipe-imm-fix-power.patch +Patch26: mesa-10.6-fix-texcompress-big-endian.patch BuildRequires: pkgconfig autoconf automake libtool %if %{with_hardware} BuildRequires: kernel-headers BuildRequires: xorg-x11-server-devel %endif -BuildRequires: libdrm-devel >= 2.4.42 +BuildRequires: libdrm-devel >= 2.4.60 BuildRequires: libXxf86vm-devel BuildRequires: expat-devel BuildRequires: xorg-x11-proto-devel @@ -95,12 +88,14 @@ BuildRequires: libXfixes-devel BuildRequires: libXdamage-devel BuildRequires: libXi-devel BuildRequires: libXmu-devel +BuildRequires: libxshmfence-devel BuildRequires: elfutils BuildRequires: python +BuildRequires: python-mako BuildRequires: gettext %if 0%{?with_llvm} %if 0%{?with_private_llvm} -BuildRequires: mesa-private-llvm-devel >= 3.5 +BuildRequires: mesa-private-llvm-devel >= 3.6 %else BuildRequires: llvm-devel >= 3.0 %endif @@ -308,9 +303,8 @@ grep -q ^/ src/gallium/auxiliary/vl/vl_decoder.c && exit 1 %patch15 -p1 -b .hwfloat %patch20 -p1 -b .egbe -%patch70 -p1 -b .powerle -%patch80 -p1 -b .bigendian -%patch81 -p1 -b .cpu +%patch25 -p1 -b .llvmimm +%patch26 -p1 -b .texcmprs %if 0%{with_private_llvm} sed -i 's/\[llvm-config\]/\[mesa-private-llvm-config-%{__isa_bits}\]/g' configure.ac @@ -350,9 +344,7 @@ export CXXFLAGS="$RPM_OPT_FLAGS -fno-rtti -fno-exceptions" --enable-egl \ --disable-gles1 \ --enable-gles2 \ - --disable-gallium-egl \ --disable-xvmc \ - --disable-dri3 \ %{?with_vdpau:--enable-vdpau} \ --with-egl-platforms=x11,drm%{?with_wayland:,wayland} \ --enable-shared-glapi \ @@ -396,11 +388,7 @@ rm -f $RPM_BUILD_ROOT%{_libdir}/vdpau/*.so # strip out useless headers rm -f $RPM_BUILD_ROOT%{_includedir}/GL/w*.h -# we need to ship the vmwgfx pipe -rm -rf $RPM_BUILD_ROOT%{_libdir}/gallium-pipe/pipe_r*.so -rm -rf $RPM_BUILD_ROOT%{_libdir}/gallium-pipe/pipe_swrast.so -rm -rf $RPM_BUILD_ROOT%{_libdir}/gallium-pipe/pipe_nouveau.so - +rm -rf $RPM_BUILD_ROOT%{_libdir}/gallium-pipe/ # remove .la files find $RPM_BUILD_ROOT -name \*.la | xargs rm -f @@ -460,8 +448,7 @@ rm -rf $RPM_BUILD_ROOT %defattr(-,root,root,-) %doc docs/COPYING docs/Mesa-MLAA-License-Clarification-Email.txt %dir %{_libdir}/dri -%if 0%{?with_vmware} -%dir %{_libdir}/gallium-pipe +%if %{with_hardware} %if 0%{?with_vdpau} %dir %{_libdir}/vdpau %endif @@ -504,6 +491,9 @@ rm -rf $RPM_BUILD_ROOT # swrast is classic mesa. this seems like a bug? in that it probably # means the gallium drivers are linking dricore statically? fixme. %{_libdir}/dri/swrast_dri.so +%if 0%{?with_llvm} +%{_libdir}/dri/kms_swrast_dri.so +%endif %if %{with_hardware} %if 0%{?with_vdpau} @@ -520,6 +510,7 @@ rm -rf $RPM_BUILD_ROOT %files libGL-devel %defattr(-,root,root,-) %{_includedir}/GL/gl.h +%{_includedir}/GL/glcorearb.h %{_includedir}/GL/gl_mangle.h %{_includedir}/GL/glext.h %{_includedir}/GL/glx.h @@ -538,6 +529,7 @@ rm -rf $RPM_BUILD_ROOT %{_includedir}/EGL/eglext.h %{_includedir}/EGL/egl.h %{_includedir}/EGL/eglmesaext.h +%{_includedir}/EGL/eglextchromium.h %{_includedir}/EGL/eglplatform.h %dir %{_includedir}/KHR %{_includedir}/KHR/khrplatform.h @@ -601,7 +593,6 @@ rm -rf $RPM_BUILD_ROOT %if %{with_hardware} %{_libdir}/libxatracker.so.2 %{_libdir}/libxatracker.so.2.* -%{_libdir}/gallium-pipe/pipe_vmwgfx.so %endif %files libxatracker-devel @@ -616,8 +607,26 @@ rm -rf $RPM_BUILD_ROOT %endif %changelog -* Tue Jul 14 2015 Dave Airlie 10.2.7-5.20140910.1 -- ship missing vmwgfx pipe files +* Thu Sep 17 2015 Oded Gabbay 10.6.5-3.20150824 +- Fix texture compression for big-endian (#1250168) + +* Wed Sep 16 2015 Oded Gabbay 10.6.5-2.20150824 +- Fix llvmpipe implicit conversion for POWER (#1261988) + +* Mon Aug 24 2015 Oded Gabbay 10.6.5-1.20150824 +- mesa 10.6.5 release + +* Tue Jun 16 2015 Dave Airlie 10.6.0-1.20150616 +- mesa 10.6.0 release + +* Thu May 28 2015 Dave Airlie 10.6.0-0.3.20150528 +- mesa 10.6.0-rc2 + +* Fri May 22 2015 Dave Airlie 10.6.0-0.2.20150521 +- rebuild for ppc64le relro issue + +* Thu May 21 2015 Dave Airlie 10.6.0-0.1.20150521 +- mesa 10.6.0-rc1 * Wed Jan 28 2015 Adam Jackson 10.2.7-5.20140910 - Fix color clears and colorformat selection on big-endian evergreen