diff --git a/src/dxvk/dxvk_compute.cpp b/src/dxvk/dxvk_compute.cpp index 7f45fe2359d..6e597ee7438 100644 --- a/src/dxvk/dxvk_compute.cpp +++ b/src/dxvk/dxvk_compute.cpp @@ -25,6 +25,10 @@ namespace dxvk { m_cache(cache) { DxvkDescriptorSlotMapping slotMapping; cs->defineResourceSlots(slotMapping); + + slotMapping.makeDescriptorsDynamic( + device->options().maxNumDynamicUniformBuffers, + device->options().maxNumDynamicStorageBuffers); m_layout = new DxvkPipelineLayout(m_vkd, slotMapping.bindingCount(), diff --git a/src/dxvk/dxvk_compute.h b/src/dxvk/dxvk_compute.h index 9a2101d310d..38049e748c1 100644 --- a/src/dxvk/dxvk_compute.h +++ b/src/dxvk/dxvk_compute.h @@ -50,8 +50,8 @@ namespace dxvk { * slots used by the pipeline. * \returns Pipeline layout */ - Rc layout() const { - return m_layout; + DxvkPipelineLayout* layout() const { + return m_layout.ptr(); } /** diff --git a/src/dxvk/dxvk_graphics.cpp b/src/dxvk/dxvk_graphics.cpp index 9dc98a16df1..015ba2549a5 100644 --- a/src/dxvk/dxvk_graphics.cpp +++ b/src/dxvk/dxvk_graphics.cpp @@ -73,6 +73,10 @@ namespace dxvk { if (gs != nullptr) gs ->defineResourceSlots(slotMapping); if (fs != nullptr) fs ->defineResourceSlots(slotMapping); + slotMapping.makeDescriptorsDynamic( + device->options().maxNumDynamicUniformBuffers, + device->options().maxNumDynamicStorageBuffers); + m_layout = new DxvkPipelineLayout(m_vkd, slotMapping.bindingCount(), slotMapping.bindingInfos(), diff --git a/src/dxvk/dxvk_graphics.h b/src/dxvk/dxvk_graphics.h index b5bef05ae3a..0dd8ed2bd66 100644 --- a/src/dxvk/dxvk_graphics.h +++ b/src/dxvk/dxvk_graphics.h @@ -188,8 +188,8 @@ namespace dxvk { * slots used by the pipeline. * \returns Pipeline layout */ - Rc layout() const { - return m_layout; + DxvkPipelineLayout* layout() const { + return m_layout.ptr(); } /**