From bfd0da0d84285eeb41e976209c0dd3b32e043f36fbacd50dc59e410e74f20a6b Mon Sep 17 00:00:00 2001 From: Stefan Dirsch Date: Tue, 20 Oct 2015 12:39:10 +0000 Subject: [PATCH 1/2] - Update to 11.0.3 * bug fix release which fixes bugs found since the 11.0.2 release OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/Mesa?expand=0&rev=478 --- Mesa.changes | 6 ++++++ Mesa.spec | 4 ++-- mesa-11.0.2.tar.xz | 3 --- mesa-11.0.2.tar.xz.sig | Bin 543 -> 0 bytes mesa-11.0.3.tar.xz | 3 +++ mesa-11.0.3.tar.xz.sig | Bin 0 -> 543 bytes 6 files changed, 11 insertions(+), 5 deletions(-) delete mode 100644 mesa-11.0.2.tar.xz delete mode 100644 mesa-11.0.2.tar.xz.sig create mode 100644 mesa-11.0.3.tar.xz create mode 100644 mesa-11.0.3.tar.xz.sig diff --git a/Mesa.changes b/Mesa.changes index c2ea2e5..ca85494 100644 --- a/Mesa.changes +++ b/Mesa.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Tue Oct 20 12:27:16 UTC 2015 - sndirsch@suse.com + +- Update to 11.0.3 + * bug fix release which fixes bugs found since the 11.0.2 release + ------------------------------------------------------------------- Thu Oct 1 12:47:05 UTC 2015 - sndirsch@suse.com diff --git a/Mesa.spec b/Mesa.spec index 8ddea7d..49336fb 100644 --- a/Mesa.spec +++ b/Mesa.spec @@ -18,7 +18,7 @@ %define glamor 1 %define _name_archive mesa -%define _version 11.0.2 +%define _version 11.0.3 %ifarch %ix86 x86_64 %arm ppc ppc64 ppc64le s390x %define gallium_loader 1 %else @@ -37,7 +37,7 @@ %define with_nine 1 %endif Name: Mesa -Version: 11.0.2 +Version: 11.0.3 Release: 0 Summary: System for rendering interactive 3-D graphics License: MIT diff --git a/mesa-11.0.2.tar.xz b/mesa-11.0.2.tar.xz deleted file mode 100644 index 7335853..0000000 --- a/mesa-11.0.2.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fce11fb27eb87adf1e620a76455d635c6136dfa49ae58c53b34ef8d0c7b7eae4 -size 7263112 diff --git a/mesa-11.0.2.tar.xz.sig b/mesa-11.0.2.tar.xz.sig deleted file mode 100644 index 18a0c9e98ef47c0ea4dcb8fe2fd68f6ea527ec8c37bd8865912e5d666f5bdf98..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 543 zcmV+)0^t3L0vrSY0SEvF1p-zH%Buhh2@vhBH?S=0Ne%M&5CF0fJq~Wj6Y00dc)2MI zY#uf>+ITohc*^>90~kH(}pV4rCW)7m>*ZWt81VurtHB(Vd_i0 zrrgII^c!lB1|Pg^0)g0@PBJ6^!-bP;qYSmJ?qjISKhfNrq*wxDRpd{+grbtL+RCrb zc%S(!LKAlt`l>(>lLV5c`CX>u;+DuBHM0n-WFbesTS1PMmdZ09ax}YR>U@kL`A;U7 zVW0aeZn1MVYjO8&G(qdG3n)z<@`pv-aV1*C%f_1y zk{zapER@ibLX@rr1f-z;la$7*BW zg{q2<$#?W$U0+O`J#BC&p7O8J31TZ49b2qdL_CFKWA;wa@wCo`dvWj%PUbo9>!~?m zh+FRM+lGdxWckn$>(XO%kL2u6mesqa(8d9gyfC;Ajd_L_E7wcH-c4SW@bD7-evKRj zd>ug{Q=)ud$LjvgWrW`$gjX|Vpk8*HQk{+q`N=QM)3I9Wc9(EMTV#+G~Q z%=E0FgCp&y4;{`pmnN+|Dblt*ZIpYeSGLX4n>)3J+pHt&kY{aS$Y5M5anrt)Vp@CB zGP!}azYi1efYMK&!1A*DQoy52IhR9^4G&9mVl|6_mytA=GYS5m)dra92?=UGFY4ED_`Kb>JT(X+<6l+gqDNyJ1$O`d literal 0 HcmV?d00001 From 0145cd261059b3b077c103c130166bd5eaace36b0635666fce59069c37a05ac0 Mon Sep 17 00:00:00 2001 From: Stefan Dirsch Date: Thu, 22 Oct 2015 13:32:31 +0000 Subject: [PATCH 2/2] - U_gallium-add-PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HI.patch * This avoids a serious r600g bug leading to a GPU hang (bnc#951298) OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/Mesa?expand=0&rev=479 --- Mesa.changes | 6 + Mesa.spec | 2 + ..._SHADER_CAP_MAX_UNROLL_ITERATIONS_HI.patch | 278 ++++++++++++++++++ 3 files changed, 286 insertions(+) create mode 100644 U_gallium-add-PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HI.patch diff --git a/Mesa.changes b/Mesa.changes index ca85494..a21f361 100644 --- a/Mesa.changes +++ b/Mesa.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Thu Oct 22 13:08:47 UTC 2015 - sndirsch@suse.com + +- U_gallium-add-PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HI.patch + * This avoids a serious r600g bug leading to a GPU hang (bnc#951298) + ------------------------------------------------------------------- Tue Oct 20 12:27:16 UTC 2015 - sndirsch@suse.com diff --git a/Mesa.spec b/Mesa.spec index 49336fb..36074f5 100644 --- a/Mesa.spec +++ b/Mesa.spec @@ -53,6 +53,7 @@ Source7: Mesa.keyring # required for building against wayland of openSUSE 13.1 Patch0: n_Fixed-build-against-wayland-1.2.1.patch # merged, should be in the next release +Patch1: U_gallium-add-PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HI.patch Patch10: U_i965-Remove-early-release-of-DRI2-miptree.patch # to be upstreamed Patch11: u_Fix-crash-in-swrast-when-setting-a-texture-for-a-pix.patch @@ -520,6 +521,7 @@ rm -rf docs/README.{VMS,WIN32,OS2} # required for building against wayland of openSUSE 13.1 %patch0 -p1 %endif +%patch1 -p1 %patch10 -p1 ### disabled, but not dropped yet; these still need investigation in ### order to figure out whether the issue is still reproducable and diff --git a/U_gallium-add-PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HI.patch b/U_gallium-add-PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HI.patch new file mode 100644 index 0000000..1db879b --- /dev/null +++ b/U_gallium-add-PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HI.patch @@ -0,0 +1,278 @@ +From 814f31457e9ae83d4f1e39236f704721b279b73d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= +Date: Tue, 20 Oct 2015 18:26:02 +0200 +Subject: [PATCH] gallium: add PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT + +This avoids a serious r600g bug leading to a GPU hang. +The chances this bug will get fixed are pretty low now. + +I deeply regret listening to others and not pushing this patch, leaving +other users with a GPU-crashing driver. Yes, it should be fixed +in the compiler and it's ugly, but users couldn't care less about that. + +Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=86720 + +Cc: 11.0 10.6 +Reviewed-by: Brian Paul +--- + src/gallium/auxiliary/gallivm/lp_bld_limits.h | 2 ++ + src/gallium/auxiliary/tgsi/tgsi_exec.h | 2 ++ + src/gallium/docs/source/screen.rst | 4 ++++ + src/gallium/drivers/freedreno/freedreno_screen.c | 2 ++ + src/gallium/drivers/i915/i915_screen.c | 2 ++ + src/gallium/drivers/ilo/ilo_screen.c | 2 ++ + src/gallium/drivers/nouveau/nv30/nv30_screen.c | 4 ++++ + src/gallium/drivers/nouveau/nv50/nv50_screen.c | 2 ++ + src/gallium/drivers/nouveau/nvc0/nvc0_screen.c | 2 ++ + src/gallium/drivers/r300/r300_screen.c | 4 ++++ + src/gallium/drivers/r600/r600_pipe.c | 6 ++++++ + src/gallium/drivers/radeonsi/si_pipe.c | 2 ++ + src/gallium/drivers/svga/svga_screen.c | 4 ++++ + src/gallium/drivers/vc4/vc4_screen.c | 2 ++ + src/gallium/include/pipe/p_defines.h | 3 ++- + src/mesa/state_tracker/st_extensions.c | 3 +++ + 16 files changed, 45 insertions(+), 1 deletion(-) + +Index: mesa-11.0.3/src/gallium/auxiliary/gallivm/lp_bld_limits.h +=================================================================== +--- mesa-11.0.3.orig/src/gallium/auxiliary/gallivm/lp_bld_limits.h ++++ mesa-11.0.3/src/gallium/auxiliary/gallivm/lp_bld_limits.h +@@ -137,6 +137,8 @@ gallivm_get_shader_param(enum pipe_shade + case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED: + case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: + return 0; ++ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: ++ return 32; + } + /* if we get here, we missed a shader cap above (and should have seen + * a compiler warning.) +Index: mesa-11.0.3/src/gallium/auxiliary/tgsi/tgsi_exec.h +=================================================================== +--- mesa-11.0.3.orig/src/gallium/auxiliary/tgsi/tgsi_exec.h ++++ mesa-11.0.3/src/gallium/auxiliary/tgsi/tgsi_exec.h +@@ -463,6 +463,8 @@ tgsi_exec_get_shader_param(enum pipe_sha + case PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED: + case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: + return 0; ++ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: ++ return 32; + } + /* if we get here, we missed a shader cap above (and should have seen + * a compiler warning.) +Index: mesa-11.0.3/src/gallium/docs/source/screen.rst +=================================================================== +--- mesa-11.0.3.orig/src/gallium/docs/source/screen.rst ++++ mesa-11.0.3/src/gallium/docs/source/screen.rst +@@ -355,6 +355,10 @@ to be 0. + are supported. + * ``PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE``: Whether the driver doesn't + ignore tgsi_declaration_range::Last for shader inputs and outputs. ++* ``PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT``: This is the maximum number ++ of iterations that loops are allowed to have to be unrolled. It is only ++ a hint to state trackers. Whether any loops will be unrolled is not ++ guaranteed. + + + .. _pipe_compute_cap: +Index: mesa-11.0.3/src/gallium/drivers/freedreno/freedreno_screen.c +=================================================================== +--- mesa-11.0.3.orig/src/gallium/drivers/freedreno/freedreno_screen.c ++++ mesa-11.0.3/src/gallium/drivers/freedreno/freedreno_screen.c +@@ -407,6 +407,8 @@ fd_screen_get_shader_param(struct pipe_s + return 16; + case PIPE_SHADER_CAP_PREFERRED_IR: + return PIPE_SHADER_IR_TGSI; ++ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: ++ return 32; + } + debug_printf("unknown shader param %d\n", param); + return 0; +Index: mesa-11.0.3/src/gallium/drivers/i915/i915_screen.c +=================================================================== +--- mesa-11.0.3.orig/src/gallium/drivers/i915/i915_screen.c ++++ mesa-11.0.3/src/gallium/drivers/i915/i915_screen.c +@@ -167,6 +167,8 @@ i915_get_shader_param(struct pipe_screen + case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: + case PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE: + return 0; ++ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: ++ return 32; + default: + debug_printf("%s: Unknown cap %u.\n", __FUNCTION__, cap); + return 0; +Index: mesa-11.0.3/src/gallium/drivers/ilo/ilo_screen.c +=================================================================== +--- mesa-11.0.3.orig/src/gallium/drivers/ilo/ilo_screen.c ++++ mesa-11.0.3/src/gallium/drivers/ilo/ilo_screen.c +@@ -138,6 +138,8 @@ ilo_get_shader_param(struct pipe_screen + return PIPE_SHADER_IR_TGSI; + case PIPE_SHADER_CAP_TGSI_SQRT_SUPPORTED: + return 1; ++ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: ++ return 32; + + default: + return 0; +Index: mesa-11.0.3/src/gallium/drivers/nouveau/nv30/nv30_screen.c +=================================================================== +--- mesa-11.0.3.orig/src/gallium/drivers/nouveau/nv30/nv30_screen.c ++++ mesa-11.0.3/src/gallium/drivers/nouveau/nv30/nv30_screen.c +@@ -261,6 +261,8 @@ nv30_screen_get_shader_param(struct pipe + case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: + case PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE: + return 0; ++ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: ++ return 32; + default: + debug_printf("unknown vertex shader param %d\n", param); + return 0; +@@ -302,6 +304,8 @@ nv30_screen_get_shader_param(struct pipe + case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: + case PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE: + return 0; ++ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: ++ return 32; + default: + debug_printf("unknown fragment shader param %d\n", param); + return 0; +Index: mesa-11.0.3/src/gallium/drivers/nouveau/nv50/nv50_screen.c +=================================================================== +--- mesa-11.0.3.orig/src/gallium/drivers/nouveau/nv50/nv50_screen.c ++++ mesa-11.0.3/src/gallium/drivers/nouveau/nv50/nv50_screen.c +@@ -297,6 +297,8 @@ nv50_screen_get_shader_param(struct pipe + case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: + case PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE: + return 0; ++ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: ++ return 32; + default: + NOUVEAU_ERR("unknown PIPE_SHADER_CAP %d\n", param); + return 0; +Index: mesa-11.0.3/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c +=================================================================== +--- mesa-11.0.3.orig/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c ++++ mesa-11.0.3/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c +@@ -310,6 +310,8 @@ nvc0_screen_get_shader_param(struct pipe + return 16; /* would be 32 in linked (OpenGL-style) mode */ + case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS: + return 16; /* XXX not sure if more are really safe */ ++ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: ++ return 32; + default: + NOUVEAU_ERR("unknown PIPE_SHADER_CAP %d\n", param); + return 0; +Index: mesa-11.0.3/src/gallium/drivers/r300/r300_screen.c +=================================================================== +--- mesa-11.0.3.orig/src/gallium/drivers/r300/r300_screen.c ++++ mesa-11.0.3/src/gallium/drivers/r300/r300_screen.c +@@ -300,6 +300,8 @@ static int r300_get_shader_param(struct + case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED: + case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: + return 0; ++ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: ++ return 32; + case PIPE_SHADER_CAP_PREFERRED_IR: + return PIPE_SHADER_IR_TGSI; + } +@@ -356,6 +358,8 @@ static int r300_get_shader_param(struct + case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED: + case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: + return 0; ++ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: ++ return 32; + case PIPE_SHADER_CAP_PREFERRED_IR: + return PIPE_SHADER_IR_TGSI; + } +Index: mesa-11.0.3/src/gallium/drivers/r600/r600_pipe.c +=================================================================== +--- mesa-11.0.3.orig/src/gallium/drivers/r600/r600_pipe.c ++++ mesa-11.0.3/src/gallium/drivers/r600/r600_pipe.c +@@ -504,6 +504,12 @@ static int r600_get_shader_param(struct + case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED: + case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: + return 0; ++ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: ++ /* due to a bug in the shader compiler, some loops hang ++ * if they are not unrolled, see: ++ * https://bugs.freedesktop.org/show_bug.cgi?id=86720 ++ */ ++ return 255; + } + return 0; + } +Index: mesa-11.0.3/src/gallium/drivers/radeonsi/si_pipe.c +=================================================================== +--- mesa-11.0.3.orig/src/gallium/drivers/radeonsi/si_pipe.c ++++ mesa-11.0.3/src/gallium/drivers/radeonsi/si_pipe.c +@@ -489,6 +489,8 @@ static int si_get_shader_param(struct pi + case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: + case PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE: + return 1; ++ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: ++ return 32; + } + return 0; + } +Index: mesa-11.0.3/src/gallium/drivers/svga/svga_screen.c +=================================================================== +--- mesa-11.0.3.orig/src/gallium/drivers/svga/svga_screen.c ++++ mesa-11.0.3/src/gallium/drivers/svga/svga_screen.c +@@ -383,6 +383,8 @@ static int svga_get_shader_param(struct + case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: + case PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE: + return 0; ++ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: ++ return 32; + } + /* If we get here, we failed to handle a cap above */ + debug_printf("Unexpected fragment shader query %u\n", param); +@@ -441,6 +443,8 @@ static int svga_get_shader_param(struct + case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: + case PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE: + return 0; ++ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: ++ return 32; + } + /* If we get here, we failed to handle a cap above */ + debug_printf("Unexpected vertex shader query %u\n", param); +Index: mesa-11.0.3/src/gallium/drivers/vc4/vc4_screen.c +=================================================================== +--- mesa-11.0.3.orig/src/gallium/drivers/vc4/vc4_screen.c ++++ mesa-11.0.3/src/gallium/drivers/vc4/vc4_screen.c +@@ -334,6 +334,8 @@ vc4_screen_get_shader_param(struct pipe_ + return VC4_MAX_TEXTURE_SAMPLERS; + case PIPE_SHADER_CAP_PREFERRED_IR: + return PIPE_SHADER_IR_TGSI; ++ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: ++ return 32; + default: + fprintf(stderr, "unknown shader param %d\n", param); + return 0; +Index: mesa-11.0.3/src/gallium/include/pipe/p_defines.h +=================================================================== +--- mesa-11.0.3.orig/src/gallium/include/pipe/p_defines.h ++++ mesa-11.0.3/src/gallium/include/pipe/p_defines.h +@@ -674,7 +674,8 @@ enum pipe_shader_cap + PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED, /* all rounding modes */ + PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED, + PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED, +- PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE ++ PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE, ++ PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT, + }; + + /** +Index: mesa-11.0.3/src/mesa/state_tracker/st_extensions.c +=================================================================== +--- mesa-11.0.3.orig/src/mesa/state_tracker/st_extensions.c ++++ mesa-11.0.3/src/mesa/state_tracker/st_extensions.c +@@ -249,6 +249,9 @@ void st_init_limits(struct pipe_screen * + + if (options->EmitNoLoops) + options->MaxUnrollIterations = MIN2(screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_INSTRUCTIONS), 65536); ++ else ++ options->MaxUnrollIterations = screen->get_shader_param(screen, sh, ++ PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT); + + options->LowerClipDistance = true; + }