diff options
author | Eric Anholt <eric@anholt.net> | 2010-12-01 15:55:53 -0800 |
---|---|---|
committer | Ian Romanick <ian.d.romanick@intel.com> | 2010-12-16 17:11:50 -0800 |
commit | d347b90b94c79f99ed87c2cf293426d93cc0b345 (patch) | |
tree | b793193ee39e39780419e4a1a157ff22cbbbfe99 | |
parent | 23a868930ca27a721f57f848d2f14592ffa948a5 (diff) |
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.
(cherry picked from commit b4f585665c31b1f80d909e38b3b2a9fab0c03076)
-rw-r--r-- | src/glsl/ast_to_hir.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp index 9dcdab0de1..3bc9530b27 100644 --- a/src/glsl/ast_to_hir.cpp +++ b/src/glsl/ast_to_hir.cpp @@ -615,6 +615,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) { @@ -650,6 +660,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; } |