Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8514>
/* variables accessed inside a uniform block will get merged into a big
* memory blob and accessed by offset
*/
- if (var->data.location && !is_ubo_array)
+ if (var->data.location && !is_ubo_array && var->type != var->interface_type)
return;
uint32_t size = glsl_count_attribute_slots(var->interface_type, false);
if (var->data.mode == nir_var_mem_ubo) {
/* ignore variables being accessed if they aren't the base of the UBO */
bool ubo_array = glsl_type_is_array(var->type) && glsl_type_is_interface(glsl_without_array(var->type));
- if (var->data.location && !ubo_array)
+ if (var->data.location && !ubo_array && var->type != var->interface_type)
continue;
var->data.binding = cur_ubo;
/* if this is a ubo array, create a binding point for each array member: