X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Ffinalize.cpp;h=fcf48c61cd0ae1fbce706cff7744384525be7d7c;hb=1a5dafe20e47c764f2914c341fb7b8f1fba59fb8;hp=fb136e33c7dbc79fd03706ba6ef3450d4906fe5c;hpb=acd7bb6e23e2aff9934ecf32852c62ba72c13574;p=libs%2Fgl.git diff --git a/source/glsl/finalize.cpp b/source/glsl/finalize.cpp index fb136e33..fcf48c61 100644 --- a/source/glsl/finalize.cpp +++ b/source/glsl/finalize.cpp @@ -168,12 +168,11 @@ void LocationAllocator::bind_uniform(RefPtr &layout, const string &name, bool LocationAllocator::visit_uniform(const string &name, RefPtr &layout) { - int desc_set = 0; + int desc_set = get_layout_value(layout.get(), "set"); int bind_point = get_layout_value(layout.get(), "binding"); if(features.target_api==VULKAN) { - desc_set = get_layout_value(layout.get(), "set"); if(desc_set<0 && bind_point>=0) { desc_set = 0; @@ -183,6 +182,11 @@ bool LocationAllocator::visit_uniform(const string &name, RefPtr &layout if(desc_set>=0) uniforms[name].desc_set = desc_set; } + else if(desc_set>=0 && bind_point<0) + { + auto i = find_member(layout->qualifiers, string("set"), &Layout::Qualifier::name); + layout->qualifiers.erase(i); + } if(bind_point>=0) { @@ -431,9 +435,7 @@ bool StructuralFeatureConverter::supports_stage(Stage::Type st) const { if(st==Stage::GEOMETRY) { - if(features.target_api==VULKAN) - return true; - else if(features.target_api==OPENGL_ES) + if(features.target_api==OPENGL_ES) return check_version(Version(3, 20)); else return check_version(Version(1, 50)); @@ -444,9 +446,7 @@ bool StructuralFeatureConverter::supports_stage(Stage::Type st) const bool StructuralFeatureConverter::supports_unified_interface_syntax() const { - if(features.target_api==VULKAN) - return true; - else if(features.target_api==OPENGL_ES) + if(features.target_api==OPENGL_ES) return check_version(Version(3, 0)); else return check_version(Version(1, 30)); @@ -484,9 +484,7 @@ void StructuralFeatureConverter::visit(Assignment &assign) bool StructuralFeatureConverter::supports_unified_sampling_functions() const { - if(features.target_api==VULKAN) - return true; - else if(features.target_api==OPENGL_ES) + if(features.target_api==OPENGL_ES) return check_version(Version(3, 0)); else return check_version(Version(1, 30)); @@ -531,9 +529,7 @@ void StructuralFeatureConverter::visit(FunctionCall &call) bool StructuralFeatureConverter::supports_interface_blocks(const string &iface) const { - if(features.target_api==VULKAN) - return true; - else if(features.target_api==OPENGL_ES) + if(features.target_api==OPENGL_ES) { if(iface=="uniform") return check_version(Version(3, 0)); @@ -587,9 +583,7 @@ void QualifierConverter::apply() bool QualifierConverter::supports_interface_layouts() const { - if(features.target_api==VULKAN) - return true; - else if(features.target_api==OPENGL_ES) + if(features.target_api==OPENGL_ES) return check_version(Version(3, 0)); else if(check_version(Version(3, 30))) return true; @@ -601,9 +595,7 @@ bool QualifierConverter::supports_interface_layouts() const bool QualifierConverter::supports_stage_interface_layouts() const { - if(features.target_api==VULKAN) - return true; - else if(features.target_api==OPENGL_ES) + if(features.target_api==OPENGL_ES) return check_version(Version(3, 10)); else if(check_version(Version(4, 10))) return true; @@ -613,9 +605,7 @@ bool QualifierConverter::supports_stage_interface_layouts() const bool QualifierConverter::supports_centroid_sampling() const { - if(features.target_api==VULKAN) - return true; - else if(features.target_api==OPENGL_ES) + if(features.target_api==OPENGL_ES) return check_version(Version(3, 0)); else if(check_version(Version(1, 20))) return true; @@ -625,9 +615,7 @@ bool QualifierConverter::supports_centroid_sampling() const bool QualifierConverter::supports_sample_sampling() const { - if(features.target_api==VULKAN) - return true; - else if(features.target_api==OPENGL_ES) + if(features.target_api==OPENGL_ES) return check_version(Version(3, 20)); else if(check_version(Version(4, 0))) return true; @@ -637,9 +625,7 @@ bool QualifierConverter::supports_sample_sampling() const bool QualifierConverter::supports_uniform_location() const { - if(features.target_api==VULKAN) - return false; - else if(features.target_api==OPENGL_ES) + if(features.target_api==OPENGL_ES) return check_version(Version(3, 10)); else if(check_version(Version(4, 30))) return true; @@ -649,9 +635,7 @@ bool QualifierConverter::supports_uniform_location() const bool QualifierConverter::supports_binding() const { - if(features.target_api==VULKAN) - return true; - else if(features.target_api==OPENGL_ES) + if(features.target_api==OPENGL_ES) return check_version(Version(3, 10)); else return check_version(Version(4, 20)); @@ -659,9 +643,7 @@ bool QualifierConverter::supports_binding() const bool QualifierConverter::supports_interface_block_location() const { - if(features.target_api==VULKAN) - return true; - else if(features.target_api==OPENGL_ES) + if(features.target_api==OPENGL_ES) return check_version(Version(3, 20)); else if(check_version(Version(4, 40))) return true;