-bool QualifierConverter::supports_interface_block_location() const
-{
- if(features.target_api==VULKAN)
- return true;
- else if(features.target_api==OPENGL_ES)
- return check_version(Version(3, 20));
- else if(check_version(Version(4, 40)))
- return true;
- else
- return check_extension(&Features::arb_enhanced_layouts);
-}
-
-void QualifierConverter::visit(InterfaceBlock &iface)
-{
- if(iface.layout)
- {
- for(auto i=iface.layout->qualifiers.begin(); i!=iface.layout->qualifiers.end(); )
- {
- if(i->name=="location" && !supports_interface_block_location())
- i = iface.layout->qualifiers.erase(i);
- else if(i->name=="binding" && !supports_binding())
- {
- stage->uniform_block_bindings[iface.block_name] = i->value;
- i = iface.layout->qualifiers.erase(i);
- }
- else
- ++i;
- }
-
- if(iface.layout->qualifiers.empty())
- iface.layout = 0;
- }
-}
-