diff --git a/src/dxvk/dxvk_device.cpp b/src/dxvk/dxvk_device.cpp index bbee9403..7d6b395b 100644 --- a/src/dxvk/dxvk_device.cpp +++ b/src/dxvk/dxvk_device.cpp @@ -38,6 +38,14 @@ namespace dxvk { // executed before we destroy any resources. m_vkd->vkDeviceWaitIdle(m_vkd->device()); } + + + DxvkDeviceOptions DxvkDevice::options() const { + DxvkDeviceOptions options; + options.maxNumDynamicUniformBuffers = m_properties.limits.maxDescriptorSetUniformBuffersDynamic; + options.maxNumDynamicStorageBuffers = m_properties.limits.maxDescriptorSetStorageBuffersDynamic; + return options; + } Rc DxvkDevice::allocPhysicalBuffer( diff --git a/src/dxvk/dxvk_device.h b/src/dxvk/dxvk_device.h index 290b59d5..7da64143 100644 --- a/src/dxvk/dxvk_device.h +++ b/src/dxvk/dxvk_device.h @@ -26,6 +26,14 @@ namespace dxvk { class DxvkInstance; + + /** + * \brief Device options + */ + struct DxvkDeviceOptions { + uint32_t maxNumDynamicUniformBuffers = 0; + uint32_t maxNumDynamicStorageBuffers = 0; + }; /** * \brief Device queue @@ -98,7 +106,7 @@ namespace dxvk { Rc adapter() const { return m_adapter; } - + /** * \brief Enabled device extensions * \returns Enabled device extensions @@ -115,6 +123,12 @@ namespace dxvk { return m_features; } + /** + * \brief Retrieves device options + * \returns Device options + */ + DxvkDeviceOptions options() const; + /** * \brief Allocates a physical buffer *