]> git.tdb.fi Git - libs/gl.git/blobdiff - source/backends/vulkan/pipelinestate_backend.cpp
Track different kinds of bindings separately
[libs/gl.git] / source / backends / vulkan / pipelinestate_backend.cpp
index 892348214790573832989baa7ea6de790b418139..013e34c2636a9e995ab64d9815bc53e14dc80f41 100644 (file)
@@ -49,7 +49,7 @@ void VulkanPipelineState::update() const
                for(const PipelineState::BoundUniformBlock &u: self.uniform_blocks)
                        if(u.changed || changed_sets==~0U)
                        {
-                               u.used = self.shprog->uses_binding(u.binding);
+                               u.used = self.shprog->uses_uniform_block_binding(u.binding);
                                if(u.binding>=0)
                                        changed_sets |= 1<<(u.binding>>20);
                                u.changed = false;
@@ -57,7 +57,7 @@ void VulkanPipelineState::update() const
                for(const PipelineState::BoundTexture &t: self.textures)
                        if(t.changed || changed_sets==~0U)
                        {
-                               t.used = self.shprog->uses_binding(t.binding);
+                               t.used = self.shprog->uses_texture_binding(t.binding);
                                changed_sets |= 1<<(t.binding>>20);
                                if(t.sampler)
                                        t.sampler->refresh();
@@ -374,7 +374,8 @@ void VulkanPipelineState::apply(VkCommandBuffer command_buffer) const
                }
        }
 
-       vk.CmdBindDescriptorSets(command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS, self.shprog->layout_handle, 0, descriptor_set_handles.size(), descriptor_set_handles.data(), 0, 0);
+       if(!descriptor_set_handles.empty())
+               vk.CmdBindDescriptorSets(command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS, self.shprog->layout_handle, 0, descriptor_set_handles.size(), descriptor_set_handles.data(), 0, 0);
 
        VkViewport viewport = { };
        if(self.viewport)