We have a nir_deref_var, but it doesn't actually need that. Upcoming patches will make us call get_io_offset further down the dereference chain, so handling an arbitrary dereference will be nice.
Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> --- src/glsl/nir/nir_lower_io.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/glsl/nir/nir_lower_io.c b/src/glsl/nir/nir_lower_io.c index f027973..3b0a03a 100644 --- a/src/glsl/nir/nir_lower_io.c +++ b/src/glsl/nir/nir_lower_io.c @@ -78,7 +78,7 @@ deref_has_indirect(nir_deref_var *deref) } static unsigned -get_io_offset(nir_deref_var *deref, nir_instr *instr, nir_src *indirect, +get_io_offset(nir_deref *deref, nir_instr *instr, nir_src *indirect, struct lower_io_state *state) { bool found_indirect = false; @@ -87,7 +87,7 @@ get_io_offset(nir_deref_var *deref, nir_instr *instr, nir_src *indirect, nir_builder *b = &state->builder; b->cursor = nir_before_instr(instr); - nir_deref *tail = &deref->deref; + nir_deref *tail = deref; while (tail->child != NULL) { const struct glsl_type *parent_type = tail->type; tail = tail->child; @@ -187,7 +187,7 @@ nir_lower_io_block(nir_block *block, void *void_state) load->num_components = intrin->num_components; nir_src indirect; - unsigned offset = get_io_offset(intrin->variables[0], + unsigned offset = get_io_offset(&intrin->variables[0]->deref, &intrin->instr, &indirect, state); unsigned location = intrin->variables[0]->var->data.driver_location; @@ -233,7 +233,7 @@ nir_lower_io_block(nir_block *block, void *void_state) store->num_components = intrin->num_components; nir_src indirect; - unsigned offset = get_io_offset(intrin->variables[0], + unsigned offset = get_io_offset(&intrin->variables[0]->deref, &intrin->instr, &indirect, state); offset += intrin->variables[0]->var->data.driver_location; -- 2.5.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev