X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fbackends%2Fvulkan%2Fpipelinestate_backend.cpp;h=02e7993c665fb52dd95e9ff3f92020cfb2584a68;hp=a6a548aff42b0bee36eb0ba751f7ad3419aad5f1;hb=b4afa01e74375446c12e4bd7472412df7f0d6e48;hpb=a741acd5c501c03de5181656498d2bcbe0df9157 diff --git a/source/backends/vulkan/pipelinestate_backend.cpp b/source/backends/vulkan/pipelinestate_backend.cpp index a6a548af..02e7993c 100644 --- a/source/backends/vulkan/pipelinestate_backend.cpp +++ b/source/backends/vulkan/pipelinestate_backend.cpp @@ -374,6 +374,7 @@ void VulkanPipelineState::apply(VkCommandBuffer command_buffer, const VulkanPipe const PipelineState &self = *static_cast(this); const VulkanFunctions &vk = device.get_functions(); + unsigned first_changed_desc_set = 0; if(!last) unapplied = ~0U; else if(last!=this) @@ -387,6 +388,7 @@ void VulkanPipelineState::apply(VkCommandBuffer command_buffer, const VulkanPipe if(descriptor_set_slots[i]!=last->descriptor_set_slots[i]) { unapplied |= PipelineState::UNIFORMS; + first_changed_desc_set = i; break; } if(self.viewport!=last_ps.viewport) @@ -420,12 +422,13 @@ void VulkanPipelineState::apply(VkCommandBuffer command_buffer, const VulkanPipe if((unapplied&PipelineState::UNIFORMS) && !descriptor_set_slots.empty()) { vector descriptor_set_handles; - descriptor_set_handles.reserve(self.descriptor_set_slots.size()); - for(unsigned i=0; ilayout_handle, - 0, descriptor_set_handles.size(), descriptor_set_handles.data(), 0, 0); + first_changed_desc_set, descriptor_set_handles.size(), descriptor_set_handles.data(), 0, 0); } if(unapplied&(PipelineState::VIEWPORT|PipelineState::SCISSOR))