glsl: Fix locations of variables in patch qualified interface blocks.
As of commit d82f8d9772
, we actually
parse and attempt to handle the 'patch' qualifier on interface blocks.
This patch fixes explicit locations for variables in such blocks.
Without it, many program interface query dEQP/CTS tests hit this
assertion in ir_set_program_inouts.cpp
if (is_patch_generic) {
assert(idx >= VARYING_SLOT_PATCH0 && idx < VARYING_SLOT_TESS_MAX);
bitfield = BITFIELD64_BIT(idx - VARYING_SLOT_PATCH0);
}
because the location was incorrectly based on VARYING_SLOT_VAR0.
Note that most of the tests affected currently fail before they hit
this, due to confusion about what the program interface query name
of those resources should be.
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
parent
096ad19a2b
commit
d0cd504046
|
@ -6819,7 +6819,8 @@ ast_process_struct_or_iface_block_members(exec_list *instructions,
|
||||||
unsigned qual_location;
|
unsigned qual_location;
|
||||||
if (process_qualifier_constant(state, &loc, "location",
|
if (process_qualifier_constant(state, &loc, "location",
|
||||||
qual->location, &qual_location)) {
|
qual->location, &qual_location)) {
|
||||||
fields[i].location = VARYING_SLOT_VAR0 + qual_location;
|
fields[i].location = qual_location +
|
||||||
|
(fields[i].patch ? VARYING_SLOT_PATCH0 : VARYING_SLOT_VAR0);
|
||||||
expl_location = fields[i].location +
|
expl_location = fields[i].location +
|
||||||
fields[i].type->count_attribute_slots(false);
|
fields[i].type->count_attribute_slots(false);
|
||||||
}
|
}
|
||||||
|
@ -7299,7 +7300,8 @@ ast_interface_block::hir(exec_list *instructions,
|
||||||
layout.location, &expl_location)) {
|
layout.location, &expl_location)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
} else {
|
} else {
|
||||||
expl_location = VARYING_SLOT_VAR0 + expl_location;
|
expl_location += this->layout.flags.q.patch ? VARYING_SLOT_PATCH0
|
||||||
|
: VARYING_SLOT_VAR0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue