]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/program.cpp
Sort shader program input attributes by name
[libs/gl.git] / source / core / program.cpp
index e4250b6c05739b52d8f1e339db7c188ffac35aad..a82ac1d227279be4edd1175428af8e6c0dfe6ffd 100644 (file)
@@ -82,8 +82,12 @@ void Program::collect_uniforms(const SpirVModule &mod)
                        reflect_data.uniform_blocks.emplace_back();
                        ReflectData::UniformBlockInfo &info = reflect_data.uniform_blocks.back();
                        info.name = v.struct_type->name;
+                       info.data_size = v.struct_type->size;
                        if(v.storage==SpirVModule::PUSH_CONSTANT)
+                       {
                                info.bind_point = ReflectData::PUSH_CONSTANT;
+                               reflect_data.push_constants_size = info.data_size;
+                       }
                        else
                        {
                                if(v.binding>=0)
@@ -92,7 +96,6 @@ void Program::collect_uniforms(const SpirVModule &mod)
                                        info.bind_point = ReflectData::DEFAULT_BLOCK;
                                n_descriptor_sets = max(n_descriptor_sets, v.descriptor_set+1);
                        }
-                       info.data_size = v.struct_type->size;
 
                        string prefix;
                        if(!v.name.empty())
@@ -190,6 +193,8 @@ void Program::collect_attributes(const SpirVModule &mod)
                                        info.type = v->type;
                                }
                }
+
+       sort_member(reflect_data.attributes, &ReflectData::AttributeInfo::name);
 }
 
 void Program::collect_builtins(const SpirVModule &mod)