mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-04 09:10:12 +01:00
glsl: fix subroutine uniform .length().
This fixes .length() on subroutine uniform arrays, if we don't find the identifier normally, we look up the corresponding subroutine identifier instead. Fixes: GL45-CTS.shader_subroutine.arrays_of_arrays_of_uniforms GL45-CTS.shader_subroutine.arrayed_subroutine_uniforms Reviewed-by: Chris Forbes <chrisforbes@google.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
432ac19c1a
commit
c714731653
1 changed files with 8 additions and 0 deletions
|
|
@ -1917,6 +1917,14 @@ ast_expression::do_hir(exec_list *instructions,
|
|||
ir_variable *var =
|
||||
state->symbols->get_variable(this->primary_expression.identifier);
|
||||
|
||||
if (var == NULL) {
|
||||
/* the identifier might be a subroutine name */
|
||||
char *sub_name;
|
||||
sub_name = ralloc_asprintf(ctx, "%s_%s", _mesa_shader_stage_to_subroutine_prefix(state->stage), this->primary_expression.identifier);
|
||||
var = state->symbols->get_variable(sub_name);
|
||||
ralloc_free(sub_name);
|
||||
}
|
||||
|
||||
if (var != NULL) {
|
||||
var->data.used = true;
|
||||
result = new(ctx) ir_dereference_variable(var);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue