[dxvk] Remove support for VK_AMD_rasterization_order

RADV will be doing this by default when it makes sense.
This commit is contained in:
Philip Rebohle 2018-04-04 15:09:24 +02:00
parent 492c7384bc
commit 4d28f765df
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99
5 changed files with 4 additions and 44 deletions

View File

@ -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 };

View File

@ -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 {

View File

@ -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;

View File

@ -5,7 +5,7 @@
namespace dxvk {
const static std::unordered_map<std::string, DxvkOptionSet> 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
}

View File

@ -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<DxvkOption>;