Mesa (master): st/mesa: do not init limits when compute shaders are not supported

Samuel Pitoiset hakzsam at kemper.freedesktop.org
Tue Feb 16 20:02:46 UTC 2016


Module: Mesa
Branch: master
Commit: 09446cf5f605d23102321d386a99a8c7d329e1e5
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=09446cf5f605d23102321d386a99a8c7d329e1e5

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Mon Feb 15 22:40:46 2016 +0100

st/mesa: do not init limits when compute shaders are not supported

When the number of uniform blocks is less than 12,
ARB_uniform_buffer_object can't be enabled and the maximum GL version
is not even 3.1...

This fixes a regression introduced in 7c79c1e (st/mesa: add compute
shader state) if the maximum number of uniform blocks allowed for
compute shaders is less than 12. This happens on Kepler but this might
also affect other Gallium drivers.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reported-by: Tobias Klausmann <tobias.johannes.klausmann at mni.thm.de>
Tested-by: Tobias Klausmann <tobias.johannes.klausmann at mni.thm.de>
Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>
Reviewed-by: Tobias Klausmann <tobias.johannes.klausmann at mni.thm.de>

---

 src/mesa/state_tracker/st_extensions.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
index 9077add..24c6444 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -75,6 +75,7 @@ static int _clamp(int a, int min, int max)
 void st_init_limits(struct pipe_screen *screen,
                     struct gl_constants *c, struct gl_extensions *extensions)
 {
+   int supported_irs;
    unsigned sh;
    boolean can_ubo = TRUE;
 
@@ -177,6 +178,13 @@ void st_init_limits(struct pipe_screen *screen,
       case PIPE_SHADER_COMPUTE:
          pc = &c->Program[MESA_SHADER_COMPUTE];
          options = &c->ShaderCompilerOptions[MESA_SHADER_COMPUTE];
+
+         if (!screen->get_param(screen, PIPE_CAP_COMPUTE))
+            continue;
+         supported_irs =
+            screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_SUPPORTED_IRS);
+         if (!(supported_irs & (1 << PIPE_SHADER_IR_TGSI)))
+            continue;
          break;
       default:
          assert(0);




More information about the mesa-commit mailing list