if(var.interface=="uniform")
{
- const TypeDeclaration *type = var.type_declaration;
- while(const BasicTypeDeclaration *basic = dynamic_cast<const BasicTypeDeclaration *>(type))
- type = basic->base_type;
- if(dynamic_cast<const ImageTypeDeclaration *>(type) && !visit_uniform(var.name, var.layout))
+ const TypeDeclaration *base_type = get_ultimate_base_type(var.type_declaration);
+ if(dynamic_cast<const ImageTypeDeclaration *>(base_type) && !visit_uniform(var.name, var.layout))
unbound_textures.push_back(&var);
}
}
}
else if(i->name=="binding" && !supports_binding())
{
- const TypeDeclaration *type = var.type_declaration;
- while(const BasicTypeDeclaration *basic = dynamic_cast<const BasicTypeDeclaration *>(type))
- type = basic->base_type;
- if(dynamic_cast<const ImageTypeDeclaration *>(type))
+ if(dynamic_cast<const ImageTypeDeclaration *>(get_ultimate_base_type(var.type_declaration)))
stage->texture_bindings[var.name] = i->value;
i = var.layout->qualifiers.erase(i);