diff options
author | Philip Rebohle <philip.rebohle@tu-dortmund.de> | 2022-09-05 08:27:00 +0300 |
---|---|---|
committer | Philip Rebohle <philip.rebohle@tu-dortmund.de> | 2022-09-05 08:27:00 +0300 |
commit | 02600706fe391526c02ece00a012dedce020c034 (patch) | |
tree | ff54ff6fb1c2313c8324f8f105d15def12bdf85f | |
parent | d14d70af05f83de54abb064c940b0f6b7dd242c7 (diff) |
[d3d11] Enable Conservative Rasterization Tier 3conservative-tier-3
Mostly to bring this in line with vkd3d-proton.
-rw-r--r-- | src/d3d11/d3d11_device.cpp | 4 | ||||
-rw-r--r-- | src/d3d11/d3d11_features.cpp | 6 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/d3d11/d3d11_device.cpp b/src/d3d11/d3d11_device.cpp index be7c275b..120a2bc3 100644 --- a/src/d3d11/d3d11_device.cpp +++ b/src/d3d11/d3d11_device.cpp @@ -1966,6 +1966,10 @@ namespace dxvk { || !m_dxvkDevice->features().vk12.shaderOutputLayer)) return E_INVALIDARG; + if (shader->flags().test(DxvkShaderFlag::UsesFragmentCoverage) + && !m_dxvkDevice->properties().extConservativeRasterization.fullyCoveredFragmentShaderInputVariable) + return E_INVALIDARG; + *pShaderModule = std::move(commonShader); return S_OK; } diff --git a/src/d3d11/d3d11_features.cpp b/src/d3d11/d3d11_features.cpp index 65b21b00..a3fe2cce 100644 --- a/src/d3d11/d3d11_features.cpp +++ b/src/d3d11/d3d11_features.cpp @@ -196,7 +196,11 @@ namespace dxvk { if (!m_properties.extConservativeRasterization.degenerateTrianglesRasterized) return D3D11_CONSERVATIVE_RASTERIZATION_TIER_1; - return D3D11_CONSERVATIVE_RASTERIZATION_TIER_2; + // Inner coverage is required for Tier 3 support + if (!m_properties.extConservativeRasterization.fullyCoveredFragmentShaderInputVariable) + return D3D11_CONSERVATIVE_RASTERIZATION_TIER_2; + + return D3D11_CONSERVATIVE_RASTERIZATION_TIER_3; } |