Commit e303e88a authored by Kenneth Graunke's avatar Kenneth Graunke

glsl: Reject illegal qualifiers on atomic counter uniforms.

This fixes

dEQP-GLES31.functional.uniform_location.negative.atomic_fragment
dEQP-GLES31.functional.uniform_location.negative.atomic_vertex

Both of which have lines like

layout(location = 3, binding = 0, offset = 0) uniform atomic_uint uni0;

The ARB_explicit_uniform_location spec makes a very tangential mention
regarding atomic counters, but location isn't something that makes sense
with them.
Signed-off-by: default avatarIlia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: default avatarKenneth Graunke <kenneth@whitecape.org>
Reviewed-by: default avatarTimothy Arceri <timothy.arceri@collabora.com>
parent 929e4409
......@@ -4300,6 +4300,17 @@ ast_declarator_list::hir(exec_list *instructions,
state->atomic_counter_offsets[qual_binding] = qual_offset;
}
}
ast_type_qualifier allowed_atomic_qual_mask;
allowed_atomic_qual_mask.flags.i = 0;
allowed_atomic_qual_mask.flags.q.explicit_binding = 1;
allowed_atomic_qual_mask.flags.q.explicit_offset = 1;
allowed_atomic_qual_mask.flags.q.uniform = 1;
type->qualifier.validate_flags(&loc, state,
"invalid layout qualifier for "
"atomic_uint",
allowed_atomic_qual_mask);
}
if (this->declarations.is_empty()) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment