diff --git a/src/d3d11/d3d11_device.cpp b/src/d3d11/d3d11_device.cpp index d1c3c795c..eb6d9e679 100644 --- a/src/d3d11/d3d11_device.cpp +++ b/src/d3d11/d3d11_device.cpp @@ -299,7 +299,8 @@ namespace dxvk { if (FAILED(hr)) return hr; - if (desc.MiscFlags & D3D11_RESOURCE_MISC_TILED) + if ((desc.MiscFlags & D3D11_RESOURCE_MISC_TILED) + && (m_deviceFeatures.GetTiledResourcesTier() < D3D11_TILED_RESOURCES_TIER_3)) return E_INVALIDARG; if (!ppTexture3D) diff --git a/src/d3d11/d3d11_features.cpp b/src/d3d11/d3d11_features.cpp index 099435340..a3fe2cce0 100644 --- a/src/d3d11/d3d11_features.cpp +++ b/src/d3d11/d3d11_features.cpp @@ -231,7 +231,11 @@ namespace dxvk { || m_properties.core.properties.sparseProperties.residencyAlignedMipSize) return D3D11_TILED_RESOURCES_TIER_1; - return D3D11_TILED_RESOURCES_TIER_2; + if (!m_features.core.features.sparseResidencyImage3D + || !m_properties.core.properties.sparseProperties.residencyStandard3DBlockShape) + return D3D11_TILED_RESOURCES_TIER_2; + + return D3D11_TILED_RESOURCES_TIER_3; }