From 7df3b409c36b7eb159d056c52eb7ed2eb44cbd06 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Thu, 10 Oct 2019 22:19:31 +0200 Subject: [PATCH] [dxvk] Move dynamic descriptor offset array to stack There's absolutely no reason to store it in the object. --- src/dxvk/dxvk_context.cpp | 8 +++++--- src/dxvk/dxvk_context.h | 1 - 2 files changed, 5 insertions(+), 4 deletions(-) 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 = { };