- if(u.block)
- u.used = self.shprog->uses_uniform_block_binding(u.binding);
- if(u.binding>=0)
- changed_sets |= 1<<(u.binding>>20);
- u.changed = false;
- }
- for(const PipelineState::BoundTexture &t: self.textures)
- if(t.changed || changed_sets==~0U)
- {
- if(t.texture && t.sampler)
- t.used = self.shprog->uses_texture_binding(t.binding);
- changed_sets |= 1<<(t.binding>>20);
- if(t.texture && t.level>=0)
- t.texture->refresh_mip_views();
- if(t.sampler)
- t.sampler->refresh();
- t.changed = false;
+ if(r.type==PipelineState::UNIFORM_BLOCK)
+ r.used = self.shprog->uses_uniform_block_binding(r.binding);
+ else if(r.type==PipelineState::TEXTURE)
+ {
+ r.used = self.shprog->uses_texture_binding(r.binding);
+ if(r.mip_level>=0)
+ r.texture->refresh_mip_views();
+ r.sampler->refresh();
+ }
+ if(r.binding>=0)
+ changed_sets |= 1<<(r.binding>>20);
+ r.changed = false;