diff --git a/src/dawn/native/d3d12/ComputePipelineD3D12.cpp b/src/dawn/native/d3d12/ComputePipelineD3D12.cpp index 858594008a..9c6845ab5e 100644 --- a/src/dawn/native/d3d12/ComputePipelineD3D12.cpp +++ b/src/dawn/native/d3d12/ComputePipelineD3D12.cpp @@ -50,6 +50,10 @@ MaybeError ComputePipeline::Initialize() { // SPRIV-cross does matrix multiplication expecting row major matrices compileFlags |= D3DCOMPILE_PACK_MATRIX_ROW_MAJOR; + // FXC can miscompile code that depends on special float values (NaN, INF, etc) when IEEE + // strictness is not enabled. See crbug.com/tint/976. + compileFlags |= D3DCOMPILE_IEEE_STRICTNESS; + const ProgrammableStage& computeStage = GetStage(SingleShaderStage::Compute); ShaderModule* module = ToBackend(computeStage.module.Get());