glsl: Mark the array access for whole-array comparisons.
By not doing so, the uniform contents of glsl-uniform-non-uniform-array-compare.shader_test was getting thrown out since nobody was recorded as dereferencing the array.
This commit is contained in:
@@ -745,6 +745,16 @@ ast_node::hir(exec_list *instructions,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
mark_whole_array_access(ir_rvalue *access)
|
||||
{
|
||||
ir_dereference_variable *deref = access->as_dereference_variable();
|
||||
|
||||
if (deref) {
|
||||
deref->var->max_array_access = deref->type->length - 1;
|
||||
}
|
||||
}
|
||||
|
||||
static ir_rvalue *
|
||||
do_comparison(void *mem_ctx, int operation, ir_rvalue *op0, ir_rvalue *op1)
|
||||
{
|
||||
@@ -780,6 +790,10 @@ do_comparison(void *mem_ctx, int operation, ir_rvalue *op0, ir_rvalue *op1)
|
||||
last = result;
|
||||
}
|
||||
}
|
||||
|
||||
mark_whole_array_access(op0);
|
||||
mark_whole_array_access(op1);
|
||||
|
||||
return last;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user