From 2e7e9eac7ad6c5b86da4b312cf1929291c5d1e8d Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Thu, 30 Jun 2022 14:42:07 +0200 Subject: [PATCH] [dxvk] Require EXT_robustness2 and the null descriptor feature --- src/d3d11/d3d11_device.cpp | 1 - src/d3d9/d3d9_device.cpp | 3 --- src/dxvk/dxvk_adapter.cpp | 2 ++ src/dxvk/dxvk_context.cpp | 8 +------- src/dxvk/dxvk_context_state.h | 1 - src/dxvk/dxvk_extensions.h | 2 +- 6 files changed, 4 insertions(+), 13 deletions(-) diff --git a/src/d3d11/d3d11_device.cpp b/src/d3d11/d3d11_device.cpp index 09f3559ab7f..7b982cecde3 100644 --- a/src/d3d11/d3d11_device.cpp +++ b/src/d3d11/d3d11_device.cpp @@ -1931,7 +1931,6 @@ namespace dxvk { enabled.extRobustness2.robustBufferAccess2 = supported.extRobustness2.robustBufferAccess2; enabled.extRobustness2.robustImageAccess2 = supported.extRobustness2.robustImageAccess2; - enabled.extRobustness2.nullDescriptor = supported.extRobustness2.nullDescriptor; enabled.extShaderDemoteToHelperInvocation.shaderDemoteToHelperInvocation = supported.extShaderDemoteToHelperInvocation.shaderDemoteToHelperInvocation; diff --git a/src/d3d9/d3d9_device.cpp b/src/d3d9/d3d9_device.cpp index cdfdfea08b5..29b56c9e639 100644 --- a/src/d3d9/d3d9_device.cpp +++ b/src/d3d9/d3d9_device.cpp @@ -3903,9 +3903,6 @@ namespace dxvk { enabled.extVertexAttributeDivisor.vertexAttributeInstanceRateDivisor = supported.extVertexAttributeDivisor.vertexAttributeInstanceRateDivisor; enabled.extVertexAttributeDivisor.vertexAttributeInstanceRateZeroDivisor = supported.extVertexAttributeDivisor.vertexAttributeInstanceRateZeroDivisor; - // Null Descriptors - enabled.extRobustness2.nullDescriptor = supported.extRobustness2.nullDescriptor; - // ProcessVertices enabled.core.features.vertexPipelineStoresAndAtomics = supported.core.features.vertexPipelineStoresAndAtomics; diff --git a/src/dxvk/dxvk_adapter.cpp b/src/dxvk/dxvk_adapter.cpp index 33307e9b296..4af554fcaed 100644 --- a/src/dxvk/dxvk_adapter.cpp +++ b/src/dxvk/dxvk_adapter.cpp @@ -329,6 +329,8 @@ namespace dxvk { enabledFeatures.ext4444Formats.formatA4B4G4R4 = m_deviceFeatures.ext4444Formats.formatA4B4G4R4; enabledFeatures.ext4444Formats.formatA4R4G4B4 = m_deviceFeatures.ext4444Formats.formatA4R4G4B4; + enabledFeatures.extRobustness2.nullDescriptor = VK_TRUE; + Logger::info(str::format("Device properties:" "\n Device name: : ", m_deviceInfo.core.properties.deviceName, "\n Driver version : ", diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp index 897b5176e13..8211ba46ff2 100644 --- a/src/dxvk/dxvk_context.cpp +++ b/src/dxvk/dxvk_context.cpp @@ -19,8 +19,6 @@ namespace dxvk { m_gfxBarriers (DxvkCmdBuffer::ExecBuffer), m_queryManager(m_common->queryPool()), m_staging (device, StagingBufferSize) { - if (m_device->features().extRobustness2.nullDescriptor) - m_features.set(DxvkContextFeature::NullDescriptors); if (m_device->features().extExtendedDynamicState.extendedDynamicState) m_features.set(DxvkContextFeature::ExtendedDynamicState); @@ -4589,12 +4587,8 @@ namespace dxvk { if (m_vbTracked.set(binding)) m_cmd->trackResource(m_state.vi.vertexBuffers[binding].buffer()); - } else if (m_features.test(DxvkContextFeature::NullDescriptors)) { - buffers[i] = VK_NULL_HANDLE; - offsets[i] = 0; - lengths[i] = 0; } else { - buffers[i] = m_common->dummyResources().bufferHandle(); + buffers[i] = VK_NULL_HANDLE; offsets[i] = 0; lengths[i] = 0; } diff --git a/src/dxvk/dxvk_context_state.h b/src/dxvk/dxvk_context_state.h index 992e5dd132c..9eb68c11cfa 100644 --- a/src/dxvk/dxvk_context_state.h +++ b/src/dxvk/dxvk_context_state.h @@ -54,7 +54,6 @@ namespace dxvk { * \brief Context feature bits */ enum class DxvkContextFeature { - NullDescriptors, ExtendedDynamicState, }; diff --git a/src/dxvk/dxvk_extensions.h b/src/dxvk/dxvk_extensions.h index b2f60d55617..8a3912bfeec 100644 --- a/src/dxvk/dxvk_extensions.h +++ b/src/dxvk/dxvk_extensions.h @@ -287,7 +287,7 @@ namespace dxvk { 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 extRobustness2 = { VK_EXT_ROBUSTNESS_2_EXTENSION_NAME, DxvkExtMode::Optional }; + DxvkExt extRobustness2 = { VK_EXT_ROBUSTNESS_2_EXTENSION_NAME, DxvkExtMode::Required }; DxvkExt extShaderDemoteToHelperInvocation = { VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME, DxvkExtMode::Optional }; DxvkExt extShaderStencilExport = { VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME, DxvkExtMode::Optional }; DxvkExt extShaderViewportIndexLayer = { VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME, DxvkExtMode::Optional };