Mesa (master): glsl: Treat an interface block specifier as a level of struct nesting
Chris Forbes
chrisf at kemper.freedesktop.org
Wed Jun 25 19:57:37 UTC 2014
Module: Mesa
Branch: master
Commit: b4ef7c596b31675aea131870ba4c07aaad1f1525
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b4ef7c596b31675aea131870ba4c07aaad1f1525
Author: Chris Forbes <chrisf at ijw.co.nz>
Date: Sun Jun 15 12:57:20 2014 +1200
glsl: Treat an interface block specifier as a level of struct nesting
Fixes the piglit test:
spec/glsl-1.50/compiler/interface-blocks-structs-defined-within-block-instanced.vert
Signed-off-by: Chris Forbes <chrisf at ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
---
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 92e0f90..7ba04a8 100644
--- a/src/glsl/ast_to_hir.cpp
+++ b/src/glsl/ast_to_hir.cpp
@@ -5287,6 +5287,12 @@ ast_interface_block::hir(exec_list *instructions,
bool block_row_major = this->layout.flags.q.row_major;
exec_list declared_variables;
glsl_struct_field *fields;
+
+ /* Treat an interface block as one level of nesting, so that embedded struct
+ * specifiers will be disallowed.
+ */
+ state->struct_specifier_depth++;
+
unsigned int num_variables =
ast_process_structure_or_interface_block(&declared_variables,
state,
@@ -5298,6 +5304,8 @@ ast_interface_block::hir(exec_list *instructions,
redeclaring_per_vertex,
var_mode);
+ state->struct_specifier_depth--;
+
if (!redeclaring_per_vertex)
validate_identifier(this->block_name, loc, state);
More information about the mesa-commit
mailing list