Module: Mesa Branch: master Commit: b4f585665c31b1f80d909e38b3b2a9fab0c03076 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b4f585665c31b1f80d909e38b3b2a9fab0c03076
Author: Eric Anholt <e...@anholt.net> Date: Wed Dec 1 15:55:53 2010 -0800 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. --- 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 04b221e..f5b1120 100644 --- a/src/glsl/ast_to_hir.cpp +++ b/src/glsl/ast_to_hir.cpp @@ -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; } _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit