Reviewed-by: Ilia Mirkin <[email protected]>
On Sat, Sep 3, 2016 at 7:53 PM, Kenneth Graunke <[email protected]> wrote: > As of commit d82f8d9772813949d0f5455cd0edad9003be0fb0, 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 <[email protected]> > --- > src/compiler/glsl/ast_to_hir.cpp | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/src/compiler/glsl/ast_to_hir.cpp > b/src/compiler/glsl/ast_to_hir.cpp > index a7f297e..4fc4c5c 100644 > --- a/src/compiler/glsl/ast_to_hir.cpp > +++ b/src/compiler/glsl/ast_to_hir.cpp > @@ -6819,7 +6819,8 @@ ast_process_struct_or_iface_block_members(exec_list > *instructions, > unsigned qual_location; > if (process_qualifier_constant(state, &loc, "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 + > fields[i].type->count_attribute_slots(false); > } > @@ -7299,7 +7300,8 @@ ast_interface_block::hir(exec_list *instructions, > layout.location, &expl_location)) { > return NULL; > } else { > - expl_location = VARYING_SLOT_VAR0 + expl_location; > + expl_location += this->layout.flags.q.patch ? VARYING_SLOT_PATCH0 > + : VARYING_SLOT_VAR0; > } > } > > -- > 2.9.3 > > _______________________________________________ > mesa-dev mailing list > [email protected] > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
