From a833b47ecd5bf91a979a30d0898f768a14cf5067 Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Sun, 10 Oct 2021 11:48:24 +0300 Subject: [PATCH] Determine the default uniform block size regardless of module format --- source/backends/opengl/program_backend.cpp | 5 ----- source/core/program.cpp | 7 +++++++ 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/source/backends/opengl/program_backend.cpp b/source/backends/opengl/program_backend.cpp index 4dbf38a7..86235ebe 100644 --- a/source/backends/opengl/program_backend.cpp +++ b/source/backends/opengl/program_backend.cpp @@ -334,11 +334,6 @@ void OpenGLProgram::query_uniforms() } default_block.sort_uniforms(); - if(!default_block.uniforms.empty()) - { - const ReflectData::UniformInfo &uni = *default_block.uniforms.back(); - default_block.data_size = uni.location*16+uni.array_size*get_type_size(uni.type); - } default_block.update_layout_hash(); rd.update_layout_hash(); } diff --git a/source/core/program.cpp b/source/core/program.cpp index 6458b477..5c8257b2 100644 --- a/source/core/program.cpp +++ b/source/core/program.cpp @@ -46,6 +46,13 @@ void Program::add_stages(const Module &mod, const map &spec_values) collect_attributes(static_cast(mod)); } + for(ReflectData::UniformBlockInfo &b: reflect_data.uniform_blocks) + if(!b.data_size && !b.uniforms.empty()) + { + const ReflectData::UniformInfo &uni = *b.uniforms.back(); + b.data_size = uni.location*16+uni.array_size*get_type_size(uni.type); + } + for(const ReflectData::UniformInfo &u: reflect_data.uniforms) require_type(u.type); for(const ReflectData::AttributeInfo &a: reflect_data.attributes) -- 2.43.0