[Mesa-dev] [PATCH] st/mesa: handle const initialisers better
Dave Airlie
airlied at gmail.com
Mon Feb 8 04:32:29 UTC 2016
If we have constant initialisers up until
this point, collapse things and set the
array size to 1.
This fixes
tests/spec/arb_arrays_of_arrays/execution/sampler/fs-initializer-const-index.shader_test
Signed-off-by: Dave Airlie <airlied at redhat.com>
---
src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
index b4b9dae..f087220 100644
--- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
@@ -3498,8 +3498,9 @@ glsl_to_tgsi_visitor::calc_deref_offsets(ir_dereference *head,
*index += array_index->value.u[0] * *array_elements;
/* if this is just a constant 1D array deref - adjust base and return 1 array elements */
- if (array_index && deref_arr->array->ir_type == ir_type_dereference_variable && head == tail) {
+ if (array_index && deref_arr->array->ir_type == ir_type_dereference_variable && indirect->file == PROGRAM_UNDEFINED) {
*base = *index;
+ *array_elements = 1;
} else {
*array_elements *= deref_arr->array->type->length;
}
--
2.5.0
More information about the mesa-dev
mailing list