Mesa (master): glsl: reject compute shaders with fixed and variable local size

Samuel Pitoiset hakzsam at kemper.freedesktop.org
Thu Oct 6 22:25:22 UTC 2016


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

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Wed Sep  7 21:37:53 2016 +0200

glsl: reject compute shaders with fixed and variable local size

The ARB_compute_variable_group_size specification explains that
when a compute shader includes both a fixed and a variable local
size, a compile-time error occurs.

v2: - update formatting spec quotations (Ian)

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

---

 src/compiler/glsl/ast_to_hir.cpp | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp
index 2ad97d9..8cdb917 100644
--- a/src/compiler/glsl/ast_to_hir.cpp
+++ b/src/compiler/glsl/ast_to_hir.cpp
@@ -8039,6 +8039,20 @@ ast_cs_input_layout::hir(exec_list *instructions,
       }
    }
 
+   /* The ARB_compute_variable_group_size spec says:
+    *
+    *     If a compute shader including a *local_size_variable* qualifier also
+    *     declares a fixed local group size using the *local_size_x*,
+    *     *local_size_y*, or *local_size_z* qualifiers, a compile-time error
+    *     results
+    */
+   if (state->cs_input_local_size_variable_specified) {
+      _mesa_glsl_error(&loc, state,
+                       "compute shader can't include both a variable and a "
+                       "fixed local group size");
+      return NULL;
+   }
+
    state->cs_input_local_size_specified = true;
    for (int i = 0; i < 3; i++)
       state->cs_input_local_size[i] = qual_local_size[i];




More information about the mesa-commit mailing list