D3D12: Don't use Shader Model 6.6 and above on Intel Gen11 GPUs
This patch enables the toggle "D3D12DontUseShaderModel66OrHigher"
by default on Intel Gen11 GPUs as a workaround against several
rendering issues.
Bug: chromium:374606634
Change-Id: Ied58f30a0cdead1e3b77e37464fed287de6361fd
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/211955
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Loko Kung <lokokung@google.com>
Reviewed-by: Ken Russell <kbr@google.com>
diff --git a/src/dawn/native/d3d12/PhysicalDeviceD3D12.cpp b/src/dawn/native/d3d12/PhysicalDeviceD3D12.cpp
index 85b3a0e..9146a69 100644
--- a/src/dawn/native/d3d12/PhysicalDeviceD3D12.cpp
+++ b/src/dawn/native/d3d12/PhysicalDeviceD3D12.cpp
@@ -572,9 +572,9 @@
}
// Workaround for textureDimensions() produces incorrect results with shader model 6.6 on Intel
- // D3D driver > 27.20.100.8935 and < 27.20.100.9684 on Intel Gen9, Gen9.5 and Gen11 GPUs.
+ // D3D driver > 27.20.100.8935 and < 27.20.100.9684 on Intel Gen9 and Gen9.5 GPUs.
// See https://crbug.com/dawn/2448 for more information.
- if (gpu_info::IsIntelGen9(vendorId, deviceId) || gpu_info::IsIntelGen11(vendorId, deviceId)) {
+ if (gpu_info::IsIntelGen9(vendorId, deviceId)) {
if (gpu_info::CompareWindowsDriverVersion(vendorId, GetDriverVersion(),
{27, 20, 100, 8935}) == 1 &&
gpu_info::CompareWindowsDriverVersion(vendorId, GetDriverVersion(),
@@ -582,6 +582,12 @@
adapterToggles->ForceSet(Toggle::D3D12DontUseShaderModel66OrHigher, true);
}
}
+
+ // On Intel Gen11 D3D12 GPUs using shader model 6.6 causes many unexpected issues.
+ // See https://crbug.com/374606634 for more information.
+ if (gpu_info::IsIntelGen11(vendorId, deviceId)) {
+ adapterToggles->ForceSet(Toggle::D3D12DontUseShaderModel66OrHigher, true);
+ }
}
void PhysicalDevice::SetupBackendDeviceToggles(dawn::platform::Platform* platform,