mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-05 04:40:11 +01:00
glsl: fix duplicated layout qualifier detection for GS
This patch fixes the duplicated layout qualifier detection for geometry shader's layout qualifiers. Also it makes the detection code more legible by defining allowed_duplicates_mask variable. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=80778 Signed-off-by: Samuel Iglesias Gonsalvez <siglesias@igalia.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
parent
986adb9057
commit
7f0420700c
1 changed files with 16 additions and 6 deletions
|
|
@ -122,18 +122,28 @@ ast_type_qualifier::merge_qualifier(YYLTYPE *loc,
|
|||
ubo_binding_mask.flags.q.explicit_binding = 1;
|
||||
ubo_binding_mask.flags.q.explicit_offset = 1;
|
||||
|
||||
ast_type_qualifier stream_layout_mask;
|
||||
stream_layout_mask.flags.i = 0;
|
||||
stream_layout_mask.flags.q.stream = 1;
|
||||
|
||||
/* Uniform block layout qualifiers get to overwrite each
|
||||
* other (rightmost having priority), while all other
|
||||
* qualifiers currently don't allow duplicates.
|
||||
*
|
||||
* Geometry shaders can have several layout qualifiers
|
||||
*/
|
||||
ast_type_qualifier allowed_duplicates_mask;
|
||||
allowed_duplicates_mask.flags.i =
|
||||
ubo_mat_mask.flags.i |
|
||||
ubo_layout_mask.flags.i |
|
||||
ubo_binding_mask.flags.i;
|
||||
|
||||
/* Geometry shaders can have several layout qualifiers
|
||||
* assigning different stream values.
|
||||
*/
|
||||
if (state->stage == MESA_SHADER_GEOMETRY)
|
||||
allowed_duplicates_mask.flags.i |=
|
||||
stream_layout_mask.flags.i;
|
||||
|
||||
if ((state->stage != MESA_SHADER_GEOMETRY) &&
|
||||
(this->flags.i & q.flags.i & ~(ubo_mat_mask.flags.i |
|
||||
ubo_layout_mask.flags.i |
|
||||
ubo_binding_mask.flags.i)) != 0) {
|
||||
if ((this->flags.i & q.flags.i & ~allowed_duplicates_mask.flags.i) != 0) {
|
||||
_mesa_glsl_error(loc, state,
|
||||
"duplicate layout qualifiers used");
|
||||
return false;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue