From 3d53f318fd9845109ae6b3a01f9274c8a285860f Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Thu, 14 Mar 2019 21:45:39 +0100 Subject: [PATCH] [dxvk] Enable hostQueryReset device feature if available --- src/d3d11/d3d11_device.cpp | 1 + src/dxvk/dxvk_adapter.cpp | 13 +++++++++++++ src/dxvk/dxvk_device_info.h | 1 + 3 files changed, 15 insertions(+) diff --git a/src/d3d11/d3d11_device.cpp b/src/d3d11/d3d11_device.cpp index fdac2f3c..a7a41717 100644 --- a/src/d3d11/d3d11_device.cpp +++ b/src/d3d11/d3d11_device.cpp @@ -1375,6 +1375,7 @@ namespace dxvk { enabled.core.features.shaderCullDistance = VK_TRUE; enabled.core.features.textureCompressionBC = VK_TRUE; enabled.extDepthClipEnable.depthClipEnable = supported.extDepthClipEnable.depthClipEnable; + enabled.extHostQueryReset.hostQueryReset = supported.extHostQueryReset.hostQueryReset; } if (featureLevel >= D3D_FEATURE_LEVEL_9_2) { diff --git a/src/dxvk/dxvk_adapter.cpp b/src/dxvk/dxvk_adapter.cpp index 732a3ae9..48301dfe 100644 --- a/src/dxvk/dxvk_adapter.cpp +++ b/src/dxvk/dxvk_adapter.cpp @@ -217,6 +217,8 @@ namespace dxvk { || !required.core.features.inheritedQueries) && (m_deviceFeatures.extDepthClipEnable.depthClipEnable || !required.extDepthClipEnable.depthClipEnable) + && (m_deviceFeatures.extHostQueryReset.hostQueryReset + || !required.extHostQueryReset.hostQueryReset) && (m_deviceFeatures.extMemoryPriority.memoryPriority || !required.extMemoryPriority.memoryPriority) && (m_deviceFeatures.extTransformFeedback.transformFeedback @@ -281,6 +283,12 @@ namespace dxvk { enabledFeatures.core.pNext = &enabledFeatures.extDepthClipEnable; } + if (devExtensions.extHostQueryReset) { + enabledFeatures.extHostQueryReset.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT; + enabledFeatures.extHostQueryReset.pNext = enabledFeatures.core.pNext; + enabledFeatures.core.pNext = &enabledFeatures.extHostQueryReset; + } + if (devExtensions.extMemoryPriority) { enabledFeatures.extMemoryPriority.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT; enabledFeatures.extMemoryPriority.pNext = enabledFeatures.core.pNext; @@ -484,6 +492,11 @@ namespace dxvk { m_deviceFeatures.extDepthClipEnable.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extDepthClipEnable); } + if (m_deviceExtensions.supports(VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME)) { + m_deviceFeatures.extHostQueryReset.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT; + m_deviceFeatures.extHostQueryReset.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extHostQueryReset); + } + if (m_deviceExtensions.supports(VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME)) { m_deviceFeatures.extMemoryPriority.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT; m_deviceFeatures.extMemoryPriority.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extMemoryPriority); diff --git a/src/dxvk/dxvk_device_info.h b/src/dxvk/dxvk_device_info.h index dfa97918..7c3b3e16 100644 --- a/src/dxvk/dxvk_device_info.h +++ b/src/dxvk/dxvk_device_info.h @@ -32,6 +32,7 @@ namespace dxvk { struct DxvkDeviceFeatures { VkPhysicalDeviceFeatures2KHR core; VkPhysicalDeviceDepthClipEnableFeaturesEXT extDepthClipEnable; + VkPhysicalDeviceHostQueryResetFeaturesEXT extHostQueryReset; VkPhysicalDeviceMemoryPriorityFeaturesEXT extMemoryPriority; VkPhysicalDeviceTransformFeedbackFeaturesEXT extTransformFeedback; VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT extVertexAttributeDivisor;