Hello community,

here is the log from the commit of package Mesa for openSUSE:Factory checked in 
at 2015-10-25 15:11:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/Mesa (Old)
 and      /work/SRC/openSUSE:Factory/.Mesa.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "Mesa"

Changes:
--------
--- /work/SRC/openSUSE:Factory/Mesa/Mesa.changes        2015-10-17 
16:36:07.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.Mesa.new/Mesa.changes   2015-10-25 
15:11:10.000000000 +0100
@@ -1,0 +2,12 @@
+Thu Oct 22 13:08:47 UTC 2015 - [email protected]
+
+- 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 - [email protected]
+
+- Update to 11.0.3
+  * bug fix release which fixes bugs found since the 11.0.2 release
+
+-------------------------------------------------------------------

Old:
----
  mesa-11.0.2.tar.xz
  mesa-11.0.2.tar.xz.sig

New:
----
  U_gallium-add-PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HI.patch
  mesa-11.0.3.tar.xz
  mesa-11.0.3.tar.xz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ Mesa.spec ++++++
--- /var/tmp/diff_new_pack.Yh1GmK/_old  2015-10-25 15:11:12.000000000 +0100
+++ /var/tmp/diff_new_pack.Yh1GmK/_new  2015-10-25 15:11:12.000000000 +0100
@@ -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
@@ -53,6 +53,7 @@
 # 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 @@
 # 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


++++++ U_gallium-add-PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HI.patch ++++++
>From 814f31457e9ae83d4f1e39236f704721b279b73d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= <[email protected]>
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 <[email protected]>
Reviewed-by: Brian Paul <[email protected]>
---
 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;
    }
++++++ mesa-11.0.2.tar.xz -> mesa-11.0.3.tar.xz ++++++
/work/SRC/openSUSE:Factory/Mesa/mesa-11.0.2.tar.xz 
/work/SRC/openSUSE:Factory/.Mesa.new/mesa-11.0.3.tar.xz differ: char 26, line 1


Reply via email to