From 4d28f765df903d6bf6e4fb40ea21872ced691d57 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Wed, 4 Apr 2018 15:09:24 +0200 Subject: [PATCH] [dxvk] Remove support for VK_AMD_rasterization_order RADV will be doing this by default when it makes sense. --- src/dxvk/dxvk_extensions.h | 1 - src/dxvk/dxvk_graphics.cpp | 32 +------------------------------- src/dxvk/dxvk_graphics.h | 3 --- src/dxvk/dxvk_options.cpp | 6 ++---- src/dxvk/dxvk_options.h | 6 +----- 5 files changed, 4 insertions(+), 44 deletions(-) diff --git a/src/dxvk/dxvk_extensions.h b/src/dxvk/dxvk_extensions.h index d66379103..bb5136844 100644 --- a/src/dxvk/dxvk_extensions.h +++ b/src/dxvk/dxvk_extensions.h @@ -129,7 +129,6 @@ namespace dxvk { * used by DXVK if supported by the implementation. */ struct DxvkDeviceExtensions : public DxvkExtensionList { - DxvkExtension amdRasterizationOrder = { this, VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME, DxvkExtensionType::Optional }; DxvkExtension khrDescriptorUpdateTemplate = { this, VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME, DxvkExtensionType::Required }; DxvkExtension khrMaintenance1 = { this, VK_KHR_MAINTENANCE1_EXTENSION_NAME, DxvkExtensionType::Required }; DxvkExtension khrMaintenance2 = { this, VK_KHR_MAINTENANCE2_EXTENSION_NAME, DxvkExtensionType::Desired }; diff --git a/src/dxvk/dxvk_graphics.cpp b/src/dxvk/dxvk_graphics.cpp index c61cc8984..4d2b50981 100644 --- a/src/dxvk/dxvk_graphics.cpp +++ b/src/dxvk/dxvk_graphics.cpp @@ -163,14 +163,9 @@ namespace dxvk { vpInfo.scissorCount = state.rsViewportCount; vpInfo.pScissors = nullptr; - VkPipelineRasterizationStateRasterizationOrderAMD rsOrder; - rsOrder.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD; - rsOrder.pNext = nullptr; - rsOrder.rasterizationOrder = this->pickRasterizationOrder(state); - VkPipelineRasterizationStateCreateInfo rsInfo; rsInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO; - rsInfo.pNext = m_device->extensions().amdRasterizationOrder.enabled() ? &rsOrder : rsOrder.pNext; + rsInfo.pNext = nullptr; rsInfo.flags = 0; rsInfo.depthClampEnable = state.rsEnableDepthClamp; rsInfo.rasterizerDiscardEnable= state.rsEnableDiscard; @@ -309,31 +304,6 @@ namespace dxvk { } - VkRasterizationOrderAMD DxvkGraphicsPipeline::pickRasterizationOrder( - const DxvkGraphicsPipelineStateInfo& state) const { - // If blending is not enabled, we can enable out-of-order - // rasterization for certain depth-compare modes. - bool blendingEnabled = false; - - for (uint32_t i = 0; i < MaxNumRenderTargets; i++) { - if (m_fsOut & (1u << i)) - blendingEnabled |= state.omBlendAttachments[i].blendEnable; - } - - if (!blendingEnabled) { - if (m_device->hasOption(DxvkOption::AssumeNoZfight)) - return VK_RASTERIZATION_ORDER_RELAXED_AMD; - - if (state.dsEnableDepthTest && state.dsEnableDepthWrite - && (state.dsDepthCompareOp == VK_COMPARE_OP_LESS - || state.dsDepthCompareOp == VK_COMPARE_OP_GREATER)) - return VK_RASTERIZATION_ORDER_RELAXED_AMD; - } - - return VK_RASTERIZATION_ORDER_STRICT_AMD; - } - - void DxvkGraphicsPipeline::logPipelineState( LogLevel level, const DxvkGraphicsPipelineStateInfo& state) const { diff --git a/src/dxvk/dxvk_graphics.h b/src/dxvk/dxvk_graphics.h index 5bfa2bee0..283ec2b2f 100644 --- a/src/dxvk/dxvk_graphics.h +++ b/src/dxvk/dxvk_graphics.h @@ -160,9 +160,6 @@ namespace dxvk { bool validatePipelineState( const DxvkGraphicsPipelineStateInfo& state) const; - VkRasterizationOrderAMD pickRasterizationOrder( - const DxvkGraphicsPipelineStateInfo& state) const; - void logPipelineState( LogLevel level, const DxvkGraphicsPipelineStateInfo& state) const; diff --git a/src/dxvk/dxvk_options.cpp b/src/dxvk/dxvk_options.cpp index 609bae76b..3b7ec62bc 100644 --- a/src/dxvk/dxvk_options.cpp +++ b/src/dxvk/dxvk_options.cpp @@ -5,7 +5,7 @@ namespace dxvk { const static std::unordered_map g_appOptions = {{ - { "NieRAutomata.exe", DxvkOptionSet(DxvkOption::AssumeNoZfight) }, + }}; @@ -23,9 +23,7 @@ namespace dxvk { void DxvkOptions::logOptions() const { - #define LOG_OPTION(opt) this->logOption(DxvkOption::opt, #opt) - LOG_OPTION(AssumeNoZfight); - #undef LOG_OPTION + } diff --git a/src/dxvk/dxvk_options.h b/src/dxvk/dxvk_options.h index a92c74c4d..c544416d0 100644 --- a/src/dxvk/dxvk_options.h +++ b/src/dxvk/dxvk_options.h @@ -8,11 +8,7 @@ namespace dxvk { * \brief App- and driver-specific options */ enum class DxvkOption : uint64_t { - /// Assume that the application will not render - /// multiple polygons with the exact same depth - /// value. Allows out-of-order rasterization to - /// be enabled for more rendering modes. - AssumeNoZfight = 0, + }; using DxvkOptionSet = Flags;