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

Chris Forbes chrisf at ijw.co.nz
Tue Aug 12 01:00:04 PDT 2014


Landed patches 1 & 2 to avoid holding up the nouveau enabling of this
feature while waiting for review on the i965 bits.

On Sun, Aug 10, 2014 at 2:22 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> 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