From 6e28ab956d7d399816eccfb4cbc12c8bf86f465e Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Sun, 15 Sep 2019 13:53:44 +0200 Subject: [PATCH] [d3d11] Implement D3D11.2 feature queries --- src/d3d11/d3d11_device.cpp | 43 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/src/d3d11/d3d11_device.cpp b/src/d3d11/d3d11_device.cpp index 93dd3f28..f77c0b53 100644 --- a/src/d3d11/d3d11_device.cpp +++ b/src/d3d11/d3d11_device.cpp @@ -1298,8 +1298,47 @@ namespace dxvk { auto info = static_cast(pFeatureSupportData); info->SupportsDepthAsTextureWithLessEqualComparisonFilter = TRUE; - return S_OK; - } break; + } return S_OK; + + case D3D11_FEATURE_D3D11_OPTIONS1: { + if (FeatureSupportDataSize != sizeof(D3D11_FEATURE_DATA_D3D11_OPTIONS1)) + return E_INVALIDARG; + + // Min/Max filtering requires Tiled Resources Tier 2 for some reason, + // so we cannot support it even though Vulkan exposes this feature + auto info = static_cast(pFeatureSupportData); + info->TiledResourcesTier = D3D11_TILED_RESOURCES_NOT_SUPPORTED; + info->MinMaxFiltering = FALSE; + info->ClearViewAlsoSupportsDepthOnlyFormats = TRUE; + info->MapOnDefaultBuffers = FALSE; + } return S_OK; + + case D3D11_FEATURE_D3D9_SIMPLE_INSTANCING_SUPPORT: { + if (FeatureSupportDataSize != sizeof(D3D11_FEATURE_DATA_D3D9_SIMPLE_INSTANCING_SUPPORT)) + return E_INVALIDARG; + + auto info = static_cast(pFeatureSupportData); + info->SimpleInstancingSupported = TRUE; + } return S_OK; + + case D3D11_FEATURE_MARKER_SUPPORT: { + if (FeatureSupportDataSize != sizeof(D3D11_FEATURE_DATA_MARKER_SUPPORT)) + return E_INVALIDARG; + + auto info = static_cast(pFeatureSupportData); + info->Profile = FALSE; + } return S_OK; + + case D3D11_FEATURE_D3D9_OPTIONS1: { + if (FeatureSupportDataSize != sizeof(D3D11_FEATURE_DATA_D3D9_OPTIONS1)) + return E_INVALIDARG; + + auto info = static_cast(pFeatureSupportData); + info->FullNonPow2TextureSupported = TRUE; + info->DepthAsTextureWithLessEqualComparisonFilterSupported = TRUE; + info->SimpleInstancingSupported = TRUE; + info->TextureCubeFaceRenderTargetWithNonCubeDepthStencilSupported = TRUE; + } return S_OK; default: Logger::err(str::format(