Mesa (master): glsl: interface blocks must be declared at global scope

Iago Toral Quiroga itoral at kemper.freedesktop.org
Tue Feb 3 12:24:23 UTC 2015


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

Author: Iago Toral Quiroga <itoral at igalia.com>
Date:   Mon Jan 19 12:32:10 2015 +0100

glsl: interface blocks must be declared at global scope

Fixes the following 2 dEQP tests:
dEQP-GLES3.functional.shaders.declarations.invalid_declarations.uniform_block_in_main_vertex
dEQP-GLES3.functional.shaders.declarations.invalid_declarations.uniform_block_in_main_fragment

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

---

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

diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
index 4d28069..c2c9f06 100644
--- a/src/glsl/ast_to_hir.cpp
+++ b/src/glsl/ast_to_hir.cpp
@@ -5381,6 +5381,14 @@ ast_interface_block::hir(exec_list *instructions,
 {
    YYLTYPE loc = this->get_location();
 
+   /* Interface blocks must be declared at global scope */
+   if (state->current_function != NULL) {
+      _mesa_glsl_error(&loc, state,
+                       "Interface block `%s' must be declared "
+                       "at global scope",
+                       this->block_name);
+   }
+
    /* The ast_interface_block has a list of ast_declarator_lists.  We
     * need to turn those into ir_variables with an association
     * with this uniform block.




More information about the mesa-commit mailing list