Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/doitsujin/dxvk.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Rebohle <philip.rebohle@tu-dortmund.de>2022-09-05 08:27:00 +0300
committerPhilip Rebohle <philip.rebohle@tu-dortmund.de>2022-09-05 08:27:00 +0300
commit02600706fe391526c02ece00a012dedce020c034 (patch)
treeff54ff6fb1c2313c8324f8f105d15def12bdf85f
parentd14d70af05f83de54abb064c940b0f6b7dd242c7 (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.cpp4
-rw-r--r--src/d3d11/d3d11_features.cpp6
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;
}