[Mesa-dev] [PATCH 02/11] mesa: Add a new function for getting the nonconst sampler array index

Ilia Mirkin imirkin at alum.mit.edu
Sat Aug 9 19:22:47 PDT 2014


On Sat, Aug 9, 2014 at 10:14 PM, Chris Forbes <chrisf at 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 <chrisf at ijw.co.nz>

Patches 1-2 are

Reviewed-by: Ilia Mirkin <imirkin at 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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list