diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp index 7e5789ac..cd4c5d48 100644 --- a/src/dxvk/dxvk_context.cpp +++ b/src/dxvk/dxvk_context.cpp @@ -3954,12 +3954,14 @@ namespace dxvk { void DxvkContext::updateShaderDescriptorSetBinding( VkDescriptorSet set, const DxvkPipelineLayout* layout) { - if (set != VK_NULL_HANDLE) { + if (set) { + std::array offsets; + for (uint32_t i = 0; i < layout->dynamicBindingCount(); i++) { const auto& binding = layout->dynamicBinding(i); const auto& res = m_rc[binding.slot]; - m_descOffsets[i] = res.bufferSlice.defined() + offsets[i] = res.bufferSlice.defined() ? res.bufferSlice.getDynamicOffset() : 0; } @@ -3967,7 +3969,7 @@ namespace dxvk { m_cmd->cmdBindDescriptorSet(BindPoint, layout->pipelineLayout(), set, layout->dynamicBindingCount(), - m_descOffsets.data()); + offsets.data()); } } diff --git a/src/dxvk/dxvk_context.h b/src/dxvk/dxvk_context.h index b591f802..5341849d 100644 --- a/src/dxvk/dxvk_context.h +++ b/src/dxvk/dxvk_context.h @@ -1029,7 +1029,6 @@ namespace dxvk { std::array m_rc; std::array m_descInfos; - std::array m_descOffsets; std::array m_gpLookupCache = { }; std::array m_cpLookupCache = { };