X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Fprogram.cpp;h=4707f4c0416e2be185441efebe847e65ed49fd7a;hb=f82ef71;hp=5c8257b2fc60de50bf0e767beb90a5f8da5784e2;hpb=271760e6099bf5f4ad90894697dab911c236a0a3;p=libs%2Fgl.git diff --git a/source/core/program.cpp b/source/core/program.cpp index 5c8257b2..4707f4c0 100644 --- a/source/core/program.cpp +++ b/source/core/program.cpp @@ -173,6 +173,20 @@ void Program::collect_attributes(const SpirVModule &mod) } } +void Program::collect_builtins(const SpirVModule &mod) +{ + for(const SpirVModule::Variable &v: mod.get_variables()) + if(v.storage==SpirVModule::OUTPUT && v.struct_type) + collect_builtins(*v.struct_type); +} + +void Program::collect_builtins(const SpirVModule::Structure &strct) +{ + for(const SpirVModule::StructMember &m: strct.members) + if(m.builtin==SpirVModule::CLIP_DISTANCE) + reflect_data.n_clip_distances = m.array_size; +} + const ReflectData::UniformBlockInfo &Program::get_uniform_block_info(const string &name) const { auto i = find_member(reflect_data.uniform_blocks, name, &ReflectData::UniformBlockInfo::name);