From 0b47297b7d02aaefb8fa9079232a799f4be973dc Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Thu, 14 Jul 2022 19:54:14 +0200 Subject: [PATCH] [dxvk] Replace VK_EXT_host_query_reset with core feature And make it a hard requirement in the backend. We no longer support the old fallback path for queries anyway. --- src/d3d11/d3d11_device.cpp | 1 - src/d3d9/d3d9_device.cpp | 1 - src/dxvk/dxvk_adapter.cpp | 23 ++--------------------- src/dxvk/dxvk_cmdlist.h | 2 +- src/dxvk/dxvk_device_info.h | 1 - src/dxvk/dxvk_extensions.h | 1 - src/vulkan/vulkan_loader.h | 5 +---- 7 files changed, 4 insertions(+), 30 deletions(-) diff --git a/src/d3d11/d3d11_device.cpp b/src/d3d11/d3d11_device.cpp index 3f4e1ef73..29a7faf56 100644 --- a/src/d3d11/d3d11_device.cpp +++ b/src/d3d11/d3d11_device.cpp @@ -1952,7 +1952,6 @@ namespace dxvk { enabled.core.features.shaderCullDistance = VK_TRUE; enabled.core.features.textureCompressionBC = VK_TRUE; enabled.extDepthClipEnable.depthClipEnable = supported.extDepthClipEnable.depthClipEnable; - enabled.extHostQueryReset.hostQueryReset = VK_TRUE; } if (featureLevel >= D3D_FEATURE_LEVEL_9_2) { diff --git a/src/d3d9/d3d9_device.cpp b/src/d3d9/d3d9_device.cpp index 48952b387..9e1581c24 100644 --- a/src/d3d9/d3d9_device.cpp +++ b/src/d3d9/d3d9_device.cpp @@ -3931,7 +3931,6 @@ namespace dxvk { enabled.core.features.textureCompressionBC = VK_TRUE; enabled.extDepthClipEnable.depthClipEnable = supported.extDepthClipEnable.depthClipEnable; - enabled.extHostQueryReset.hostQueryReset = VK_TRUE; // SM2 level hardware enabled.core.features.occlusionQueryPrecise = VK_TRUE; diff --git a/src/dxvk/dxvk_adapter.cpp b/src/dxvk/dxvk_adapter.cpp index bdc4409bd..723c64baf 100644 --- a/src/dxvk/dxvk_adapter.cpp +++ b/src/dxvk/dxvk_adapter.cpp @@ -250,8 +250,6 @@ namespace dxvk { || !required.extExtendedDynamicState.extendedDynamicState) && (m_deviceFeatures.extGraphicsPipelineLibrary.graphicsPipelineLibrary || !required.extGraphicsPipelineLibrary.graphicsPipelineLibrary) - && (m_deviceFeatures.extHostQueryReset.hostQueryReset - || !required.extHostQueryReset.hostQueryReset) && (m_deviceFeatures.extMemoryPriority.memoryPriority || !required.extMemoryPriority.memoryPriority) && (m_deviceFeatures.extNonSeamlessCubeMap.nonSeamlessCubeMap @@ -285,7 +283,7 @@ namespace dxvk { DxvkDeviceFeatures enabledFeatures) { DxvkDeviceExtensions devExtensions; - std::array devExtensionList = {{ + std::array devExtensionList = {{ &devExtensions.amdMemoryOverallocationBehaviour, &devExtensions.amdShaderFragmentMask, &devExtensions.ext4444Formats, @@ -295,7 +293,6 @@ namespace dxvk { &devExtensions.extExtendedDynamicState, &devExtensions.extFullScreenExclusive, &devExtensions.extGraphicsPipelineLibrary, - &devExtensions.extHostQueryReset, &devExtensions.extMemoryBudget, &devExtensions.extMemoryPriority, &devExtensions.extNonSeamlessCubeMap, @@ -351,6 +348,7 @@ namespace dxvk { // Enable additional device features if supported enabledFeatures.vk12.drawIndirectCount = m_deviceFeatures.vk12.drawIndirectCount; + enabledFeatures.vk12.hostQueryReset = VK_TRUE; enabledFeatures.extExtendedDynamicState.extendedDynamicState = VK_TRUE; @@ -418,11 +416,6 @@ namespace dxvk { enabledFeatures.extGraphicsPipelineLibrary.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extGraphicsPipelineLibrary); } - if (devExtensions.extHostQueryReset) { - enabledFeatures.extHostQueryReset.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT; - enabledFeatures.extHostQueryReset.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extHostQueryReset); - } - if (devExtensions.extMemoryPriority) { enabledFeatures.extMemoryPriority.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT; enabledFeatures.extMemoryPriority.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extMemoryPriority); @@ -463,11 +456,6 @@ namespace dxvk { enabledFeatures.extVertexAttributeDivisor.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extVertexAttributeDivisor); } - if (devExtensions.khrBufferDeviceAddress) { - enabledFeatures.khrBufferDeviceAddress.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR; - enabledFeatures.khrBufferDeviceAddress.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.khrBufferDeviceAddress); - } - if (devExtensions.khrDynamicRendering) { enabledFeatures.khrDynamicRendering.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR; enabledFeatures.khrDynamicRendering.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.khrDynamicRendering); @@ -754,11 +742,6 @@ namespace dxvk { m_deviceFeatures.extGraphicsPipelineLibrary.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extGraphicsPipelineLibrary); } - 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); @@ -897,8 +880,6 @@ namespace dxvk { "\n extendedDynamicState : ", features.extExtendedDynamicState.extendedDynamicState ? "1" : "0", "\n", VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME, "\n graphicsPipelineLibrary : ", features.extGraphicsPipelineLibrary.graphicsPipelineLibrary ? "1" : "0", - "\n", VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME, - "\n hostQueryReset : ", features.extHostQueryReset.hostQueryReset ? "1" : "0", "\n", VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME, "\n memoryPriority : ", features.extMemoryPriority.memoryPriority ? "1" : "0", "\n", VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME, diff --git a/src/dxvk/dxvk_cmdlist.h b/src/dxvk/dxvk_cmdlist.h index 70948295a..4cdabb582 100644 --- a/src/dxvk/dxvk_cmdlist.h +++ b/src/dxvk/dxvk_cmdlist.h @@ -801,7 +801,7 @@ namespace dxvk { void resetQuery( VkQueryPool queryPool, uint32_t queryId) { - m_vkd->vkResetQueryPoolEXT( + m_vkd->vkResetQueryPool( m_vkd->device(), queryPool, queryId, 1); } diff --git a/src/dxvk/dxvk_device_info.h b/src/dxvk/dxvk_device_info.h index ffe5e5240..e9e54c667 100644 --- a/src/dxvk/dxvk_device_info.h +++ b/src/dxvk/dxvk_device_info.h @@ -44,7 +44,6 @@ namespace dxvk { VkPhysicalDeviceDepthClipEnableFeaturesEXT extDepthClipEnable; VkPhysicalDeviceExtendedDynamicStateFeaturesEXT extExtendedDynamicState; VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT extGraphicsPipelineLibrary; - VkPhysicalDeviceHostQueryResetFeaturesEXT extHostQueryReset; VkPhysicalDeviceMemoryPriorityFeaturesEXT extMemoryPriority; VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT extNonSeamlessCubeMap; VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT extPipelineCreationCacheControl; diff --git a/src/dxvk/dxvk_extensions.h b/src/dxvk/dxvk_extensions.h index c8a9e4d0c..965e275d1 100644 --- a/src/dxvk/dxvk_extensions.h +++ b/src/dxvk/dxvk_extensions.h @@ -285,7 +285,6 @@ namespace dxvk { DxvkExt extExtendedDynamicState = { VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME, DxvkExtMode::Required }; DxvkExt extFullScreenExclusive = { VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME, DxvkExtMode::Optional }; DxvkExt extGraphicsPipelineLibrary = { VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME, DxvkExtMode::Optional }; - DxvkExt extHostQueryReset = { VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME, DxvkExtMode::Optional }; DxvkExt extMemoryBudget = { VK_EXT_MEMORY_BUDGET_EXTENSION_NAME, DxvkExtMode::Passive }; DxvkExt extMemoryPriority = { VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME, DxvkExtMode::Optional }; DxvkExt extNonSeamlessCubeMap = { VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME, DxvkExtMode::Optional }; diff --git a/src/vulkan/vulkan_loader.h b/src/vulkan/vulkan_loader.h index 0802b2f51..89ccae446 100644 --- a/src/vulkan/vulkan_loader.h +++ b/src/vulkan/vulkan_loader.h @@ -244,6 +244,7 @@ namespace dxvk::vk { VULKAN_FN(vkCreateDescriptorUpdateTemplate); VULKAN_FN(vkDestroyDescriptorUpdateTemplate); VULKAN_FN(vkUpdateDescriptorSetWithTemplate); + VULKAN_FN(vkResetQueryPool); VULKAN_FN(vkCmdBindPipeline); VULKAN_FN(vkCmdSetViewport); VULKAN_FN(vkCmdSetScissor); @@ -332,10 +333,6 @@ namespace dxvk::vk { VULKAN_FN(vkGetDeviceGroupSurfacePresentModes2EXT); #endif - #ifdef VK_EXT_host_query_reset - VULKAN_FN(vkResetQueryPoolEXT); - #endif - #ifdef VK_EXT_shader_module_identifier VULKAN_FN(vkGetShaderModuleCreateInfoIdentifierEXT); VULKAN_FN(vkGetShaderModuleIdentifierEXT);