[Mesa-dev] [PATCH v3 31/32] glsl: teach lower_ubo_reference about samplers inside structures
Samuel Pitoiset
samuel.pitoiset at gmail.com
Thu May 4 13:06:10 UTC 2017
On 05/04/2017 02:45 PM, Nicolai Hähnle wrote:
> On 02.05.2017 22:53, Samuel Pitoiset wrote:
>> In a situation like:
>>
>> (tex vec4 (record_ref (var_ref f) tex) (constant vec2 (0.000000
>> 0.000000)) 0 1 () )
>>
>> The sampler needs to be lowered, otherwise this ends up with
>> "ir_dereference_variable @ 0x229a100 specifies undeclared variable
>> `ubo_load_temp' @ 0x2290440"
>>
>> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
>
> I think this loses image format / memory qualifiers. That's
> unfortunately not very easy to test for, but can you make sure the
> qualifiers survive to the TGSI?
This is for samplers, not images.
About images, the qualifiers survive to the TGSI. I have two follow-up
patches that I will submit after this series (to avoid too much
confusion), but it's working fine.
>
> Thanks,
> Nicolai
>
>
>> ---
>> src/compiler/glsl/lower_ubo_reference.cpp | 15 +++++++++++++++
>> 1 file changed, 15 insertions(+)
>>
>> diff --git a/src/compiler/glsl/lower_ubo_reference.cpp
>> b/src/compiler/glsl/lower_ubo_reference.cpp
>> index bfaddac3ad..72f0fcf432 100644
>> --- a/src/compiler/glsl/lower_ubo_reference.cpp
>> +++ b/src/compiler/glsl/lower_ubo_reference.cpp
>> @@ -104,6 +104,7 @@ public:
>> ir_call *lower_ssbo_atomic_intrinsic(ir_call *ir);
>> ir_call *check_for_ssbo_atomic_intrinsic(ir_call *ir);
>> ir_visitor_status visit_enter(ir_call *ir);
>> + ir_visitor_status visit_enter(ir_texture *ir);
>>
>> struct gl_linked_shader *shader;
>> bool clamp_block_indices;
>> @@ -1090,6 +1091,20 @@
>> lower_ubo_reference_visitor::visit_enter(ir_call *ir)
>> }
>>
>>
>> +ir_visitor_status
>> +lower_ubo_reference_visitor::visit_enter(ir_texture *ir)
>> +{
>> + ir_dereference *sampler = ir->sampler;
>> +
>> + if (sampler->ir_type == ir_type_dereference_record) {
>> + handle_rvalue((ir_rvalue **)&ir->sampler);
>> + return visit_continue_with_parent;
>> + }
>> +
>> + return rvalue_visit(ir);
>> +}
>> +
>> +
>> } /* unnamed namespace */
>>
>> void
>>
>
>
More information about the mesa-dev
mailing list