diff --git a/src/dxbc/dxbc_options.cpp b/src/dxbc/dxbc_options.cpp index 6ccfd565..4a1621b8 100644 --- a/src/dxbc/dxbc_options.cpp +++ b/src/dxbc/dxbc_options.cpp @@ -35,6 +35,7 @@ namespace dxvk { if (devFeatures.shaderStorageImageReadWithoutFormat) flags.set(DxbcOption::UseStorageImageReadWithoutFormat); + flags.set(DxbcOption::DeferKill); return flags; } diff --git a/src/dxbc/dxbc_options.h b/src/dxbc/dxbc_options.h index 1a8e575c..72bedd56 100644 --- a/src/dxbc/dxbc_options.h +++ b/src/dxbc/dxbc_options.h @@ -17,6 +17,11 @@ namespace dxvk { /// Use FMin/FMax/FClamp instead of NMin/NMax/NClamp. /// Workaround for bugs in older Nvidia drivers. UseSimpleMinMaxClamp, + + /// Defer kill operation to the end of the shader. + /// Fixes derivatives that are undefined due to + /// non-uniform control flow in fragment shaders. + DeferKill, }; using DxbcOptions = Flags;