mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 15:20:10 +01:00
glsl: teach lower_ubo_reference about samplers inside structures
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@gmail.com> Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com> Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
This commit is contained in:
parent
d550024a7e
commit
d04b0f31d3
1 changed files with 15 additions and 0 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue