mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 18:18:06 +02:00
glsl: do not allow interface block to have name already taken
Fixes currently failing Piglit case interface-blocks-name-reused-globally.vert v2: combine var declaration with assignment (Ian) Signed-off-by: Tapani Pälli <tapani.palli@intel.com> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
parent
28b7c6b285
commit
adc8cdfa35
1 changed files with 15 additions and 1 deletions
|
|
@ -5443,9 +5443,23 @@ ast_interface_block::hir(exec_list *instructions,
|
|||
|
||||
state->struct_specifier_depth--;
|
||||
|
||||
if (!redeclaring_per_vertex)
|
||||
if (!redeclaring_per_vertex) {
|
||||
validate_identifier(this->block_name, loc, state);
|
||||
|
||||
/* From section 4.3.9 ("Interface Blocks") of the GLSL 4.50 spec:
|
||||
*
|
||||
* "Block names have no other use within a shader beyond interface
|
||||
* matching; it is a compile-time error to use a block name at global
|
||||
* scope for anything other than as a block name."
|
||||
*/
|
||||
ir_variable *var = state->symbols->get_variable(this->block_name);
|
||||
if (var && !var->type->is_interface()) {
|
||||
_mesa_glsl_error(&loc, state, "Block name `%s' is "
|
||||
"already used in the scope.",
|
||||
this->block_name);
|
||||
}
|
||||
}
|
||||
|
||||
const glsl_type *earlier_per_vertex = NULL;
|
||||
if (redeclaring_per_vertex) {
|
||||
/* Find the previous declaration of gl_PerVertex. If we're redeclaring
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue