]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/pipelinestate.cpp
Only set pipeline resources as used when the resource changes
[libs/gl.git] / source / core / pipelinestate.cpp
index fd474d28f3f106d0dcdf1226a28d42755877b09d..feb429a6eb126cc851f600c6e74144c698bcd5d9 100644 (file)
@@ -44,13 +44,13 @@ void PipelineState::set_uniform_block(int binding, const UniformBlock *block)
        auto i = lower_bound_member(uniform_blocks, binding, &BoundUniformBlock::binding);
        if(i==uniform_blocks.end() || i->binding!=binding)
                i = uniform_blocks.insert(i, BoundUniformBlock(binding));
-       i->used = block;
        const Buffer *buffer = (block ? block->get_buffer() : 0);
        if(block!=i->block || buffer!=i->buffer || binding<0)
        {
                i->block = block;
                i->buffer = buffer;
                i->changed = true;
+               i->used = block;
                changes |= UNIFORMS;
        }
 }
@@ -70,13 +70,13 @@ void PipelineState::set_texture(unsigned binding, const Texture *tex, int level,
        auto i = lower_bound_member(textures, binding, &BoundTexture::binding);
        if(i==textures.end() || i->binding!=binding)
                i = textures.insert(i, BoundTexture(binding));
-       i->used = (tex && samp);
        if(tex!=i->texture || level!=i->level || samp!=i->sampler)
        {
                i->texture = tex;
                i->sampler = samp;
                i->level = level;
                i->changed = true;
+               i->used = (tex && samp);
                changes |= TEXTURES;
        }
 }