X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fcore%2Fprogram.cpp;h=91f215651b57df64b834315c13aa89b86d57d546;hp=a82ac1d227279be4edd1175428af8e6c0dfe6ffd;hb=cebf1330ef6773b7b4496dc279ec02a7ca4351bb;hpb=0d94309bc07629feea62bd03837b6e21ccc15b6f diff --git a/source/core/program.cpp b/source/core/program.cpp index a82ac1d2..91f21565 100644 --- a/source/core/program.cpp +++ b/source/core/program.cpp @@ -56,6 +56,10 @@ void Program::add_stages(const Module &mod, const map &spec_values) collect_uniforms(spirv_mod); collect_attributes(spirv_mod); collect_builtins(spirv_mod); + + for(const SpirVModule::EntryPoint &e: spirv_mod.get_entry_points()) + if(e.stage==SpirVModule::COMPUTE) + reflect_data.compute_wg_size = e.compute_local_size; } finalize_uniforms(); @@ -74,7 +78,6 @@ void Program::collect_uniforms(const SpirVModule &mod) reflect_data.uniform_blocks.emplace_back(); vector > block_uniform_names(1); - unsigned n_descriptor_sets = 0; for(const SpirVModule::Variable &v: mod.get_variables()) { if((v.storage==SpirVModule::UNIFORM || v.storage==SpirVModule::PUSH_CONSTANT) && v.struct_type) @@ -94,7 +97,7 @@ void Program::collect_uniforms(const SpirVModule &mod) info.bind_point = v.binding | (v.descriptor_set<<20); else info.bind_point = ReflectData::DEFAULT_BLOCK; - n_descriptor_sets = max(n_descriptor_sets, v.descriptor_set+1); + reflect_data.n_descriptor_sets = max(reflect_data.n_descriptor_sets, v.descriptor_set+1); } string prefix; @@ -113,7 +116,7 @@ void Program::collect_uniforms(const SpirVModule &mod) info.location = v.location; if(v.binding>=0) info.binding = v.binding | (v.descriptor_set<<20); - n_descriptor_sets = max(n_descriptor_sets, v.descriptor_set+1); + reflect_data.n_descriptor_sets = max(reflect_data.n_descriptor_sets, v.descriptor_set+1); info.array_size = max(v.array_size, 1U); info.type = v.type; } @@ -141,7 +144,6 @@ void Program::collect_uniforms(const SpirVModule &mod) block.update_layout_hash(); } - reflect_data.n_descriptor_sets = n_descriptor_sets; reflect_data.update_layout_hash(); }