glsl_to_nir: update interface type properly
Since 76ba225184 the member variable types were being redefined
but we assigned the old interface type to the variable.
In a following patch series we will use the types to check if we
are dealing with an interface instance when apply GLSL linking
rules.
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3468>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3468>
This commit is contained in:
committed by
Marge Bot
parent
d3a4d1775e
commit
bf830250a7
@@ -539,11 +539,15 @@ nir_visitor::visit(ir_variable *ir)
|
||||
if (ir->data.memory_restrict)
|
||||
mem_access |= ACCESS_RESTRICT;
|
||||
|
||||
var->interface_type = ir->get_interface_type();
|
||||
|
||||
/* For UBO and SSBO variables, we need explicit types */
|
||||
if (var->data.mode & (nir_var_mem_ubo | nir_var_mem_ssbo)) {
|
||||
const glsl_type *explicit_ifc_type =
|
||||
ir->get_interface_type()->get_explicit_interface_type(supports_std430);
|
||||
|
||||
var->interface_type = explicit_ifc_type;
|
||||
|
||||
if (ir->type->without_array()->is_interface()) {
|
||||
/* If the type contains the interface, wrap the explicit type in the
|
||||
* right number of arrays.
|
||||
@@ -636,8 +640,6 @@ nir_visitor::visit(ir_variable *ir)
|
||||
|
||||
var->constant_initializer = constant_copy(ir->constant_initializer, var);
|
||||
|
||||
var->interface_type = ir->get_interface_type();
|
||||
|
||||
if (var->data.mode == nir_var_function_temp)
|
||||
nir_function_impl_add_variable(impl, var);
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user