[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