diff options
author | Paul Berry <[email protected]> | 2013-09-27 17:35:27 -0700 |
---|---|---|
committer | Paul Berry <[email protected]> | 2013-10-10 14:27:10 -0700 |
commit | f2dd3a04ce3bef550eca7893a1e6907cf8e43bc2 (patch) | |
tree | 7ab309ad1c821104a2d245cb9a0d5f0c5805ea8b | |
parent | 9bb60a155fbbee70113c8742e3157a371ac8c586 (diff) |
glsl: Don't allow invalid identifiers as interface block names.
Note: we need to make an exception for the gl_PerVertex interface
block, since this is allowed to be redeclared. Future patches will
make redeclaration of gl_PerVertex work properly.
Fixes piglit test
spec/glsl-1.50/compiler/interface-block-name-uses-gl-prefix.vert.
Reviewed-by: Kenneth Graunke <[email protected]>
Reviewed-by: Ian Romanick <[email protected]>
-rw-r--r-- | src/glsl/ast_to_hir.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp index c06a2a9c69a..ab5a78dc9f1 100644 --- a/src/glsl/ast_to_hir.cpp +++ b/src/glsl/ast_to_hir.cpp @@ -4614,6 +4614,7 @@ ast_interface_block::hir(exec_list *instructions, packing = GLSL_INTERFACE_PACKING_STD140; } + bool redeclaring_per_vertex = strcmp(this->block_name, "gl_PerVertex") == 0; bool block_row_major = this->layout.flags.q.row_major; exec_list declared_variables; glsl_struct_field *fields; @@ -4643,6 +4644,9 @@ ast_interface_block::hir(exec_list *instructions, assert(!"interface block layout qualifier not found!"); } + if (!redeclaring_per_vertex) + validate_identifier(this->block_name, loc, state); + const glsl_type *block_type = glsl_type::get_interface_instance(fields, num_variables, |