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

Author: Paul Berry <stereotype...@gmail.com>
Date:   Mon Aug 12 06:39:23 2013 -0700

glsl/ast: Check that geometry shader interface block inputs are arrays.

Reviewed-by: Kenneth Graunke <kenn...@whitecape.org>

---

 src/glsl/ast_to_hir.cpp |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
index 49804b7..3610014 100644
--- a/src/glsl/ast_to_hir.cpp
+++ b/src/glsl/ast_to_hir.cpp
@@ -4528,6 +4528,19 @@ ast_interface_block::hir(exec_list *instructions,
     */
    assert(declared_variables.is_empty());
 
+   /* From section 4.3.4 (Inputs) of the GLSL 1.50 spec:
+    *
+    *     Geometry shader input variables get the per-vertex values written
+    *     out by vertex shader output variables of the same names. Since a
+    *     geometry shader operates on a set of vertices, each input varying
+    *     variable (or input block, see interface blocks below) needs to be
+    *     declared as an array.
+    */
+   if (state->target == geometry_shader && !this->is_array &&
+       var_mode == ir_var_shader_in) {
+      _mesa_glsl_error(&loc, state, "geometry shader inputs must be arrays");
+   }
+
    /* Page 39 (page 45 of the PDF) of section 4.3.7 in the GLSL ES 3.00 spec
     * says:
     *

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to