On Sat, Aug 9, 2014 at 10:14 PM, Chris Forbes <chr...@ijw.co.nz> wrote: > If the array index is not a constant expression, the existing support > will assume a zero offset (giving us the sampler index of the base of > the array). > > For dynamically uniform indexing of sampler arrays, we need both that > and the indexing expression. > > Signed-off-by: Chris Forbes <chr...@ijw.co.nz>
Patches 1-2 are Reviewed-by: Ilia Mirkin <imir...@alum.mit.edu> > --- > src/mesa/program/sampler.cpp | 11 +++++++++++ > src/mesa/program/sampler.h | 3 +++ > 2 files changed, 14 insertions(+) > > diff --git a/src/mesa/program/sampler.cpp b/src/mesa/program/sampler.cpp > index e6532be..29a5408 100644 > --- a/src/mesa/program/sampler.cpp > +++ b/src/mesa/program/sampler.cpp > @@ -134,3 +134,14 @@ _mesa_get_sampler_uniform_value(class ir_dereference > *sampler, > return shader_program->UniformStorage[location].sampler[shader].index + > getname.offset; > } > + > + > +extern "C" class ir_rvalue * > +_mesa_get_sampler_array_nonconst_index(class ir_dereference *sampler) > +{ > + ir_dereference_array *deref_arr = sampler->as_dereference_array(); > + if (!deref_arr || deref_arr->array_index->as_constant()) > + return NULL; > + > + return deref_arr->array_index; > +} > diff --git a/src/mesa/program/sampler.h b/src/mesa/program/sampler.h > index 22467e9..8b7c3b6 100644 > --- a/src/mesa/program/sampler.h > +++ b/src/mesa/program/sampler.h > @@ -27,3 +27,6 @@ int > _mesa_get_sampler_uniform_value(class ir_dereference *sampler, > struct gl_shader_program *shader_program, > const struct gl_program *prog); > + > +class ir_rvalue * > +_mesa_get_sampler_array_nonconst_index(class ir_dereference *sampler); > -- > 2.0.4 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev