X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fcore%2Fpipelinestate.cpp;h=8d59a31624eddc823e23cd7260ed444c4efc9129;hp=0769d441a83a3de178f932af44142bf2b81c1f73;hb=HEAD;hpb=9eb9f592d37e9a1e05c2ff70887a1c5f26b98864 diff --git a/source/core/pipelinestate.cpp b/source/core/pipelinestate.cpp index 0769d441..6078db5d 100644 --- a/source/core/pipelinestate.cpp +++ b/source/core/pipelinestate.cpp @@ -1,7 +1,9 @@ #include #include +#include #include "error.h" #include "pipelinestate.h" +#include "program.h" #include "uniformblock.h" using namespace std; @@ -137,5 +139,27 @@ void PipelineState::set_blend(const Blend &b) set(blend, b, BLEND); } +void PipelineState::check_bound_resources() const +{ + if(!shprog) + return; + + for(const ReflectData::UniformBlockInfo &b: shprog->get_uniform_blocks()) + if(b.bind_point!=ReflectData::DEFAULT_BLOCK) + { + auto i = lower_bound_member(resources, b.bind_point, &PipelineState::BoundResource::binding); + if(i==resources.end() || i->binding!=b.bind_point) + IO::print(IO::cerr, "Warning: No resource present for uniform block binding %d:%d (%s)\n", b.bind_point>>20, b.bind_point&0xFFFFF, b.name); + } + + for(const ReflectData::UniformInfo &u: shprog->get_uniforms()) + if(u.binding>=0 && is_image(u.type)) + { + auto i = lower_bound_member(resources, u.binding, &PipelineState::BoundResource::binding); + if(i==resources.end() || i->binding!=u.binding) + IO::print(IO::cerr, "Warning: No resource present for texture binding %d:%d (%s)\n", u.binding>>20, u.binding&0xFFFFF, u.name); + } +} + } // namespace GL } // namespace Msp