mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-03-15 07:29:17 +01:00
[d3d11] Introduce option to disable float controls
And disable for SotTR since it introduces rendering issues.
This commit is contained in:
parent
8de9dc9378
commit
307f43ff1e
@ -15,6 +15,7 @@ namespace dxvk {
|
|||||||
this->maxTessFactor = config.getOption<int32_t>("d3d11.maxTessFactor", 0);
|
this->maxTessFactor = config.getOption<int32_t>("d3d11.maxTessFactor", 0);
|
||||||
this->samplerAnisotropy = config.getOption<int32_t>("d3d11.samplerAnisotropy", -1);
|
this->samplerAnisotropy = config.getOption<int32_t>("d3d11.samplerAnisotropy", -1);
|
||||||
this->invariantPosition = config.getOption<bool>("d3d11.invariantPosition", true);
|
this->invariantPosition = config.getOption<bool>("d3d11.invariantPosition", true);
|
||||||
|
this->floatControls = config.getOption<bool>("d3d11.floatControls", true);
|
||||||
this->deferSurfaceCreation = config.getOption<bool>("dxgi.deferSurfaceCreation", false);
|
this->deferSurfaceCreation = config.getOption<bool>("dxgi.deferSurfaceCreation", false);
|
||||||
this->numBackBuffers = config.getOption<int32_t>("dxgi.numBackBuffers", 0);
|
this->numBackBuffers = config.getOption<int32_t>("dxgi.numBackBuffers", 0);
|
||||||
this->maxFrameLatency = config.getOption<int32_t>("dxgi.maxFrameLatency", 0);
|
this->maxFrameLatency = config.getOption<int32_t>("dxgi.maxFrameLatency", 0);
|
||||||
|
@ -64,6 +64,9 @@ namespace dxvk {
|
|||||||
/// Declare vertex positions in shaders as invariant
|
/// Declare vertex positions in shaders as invariant
|
||||||
bool invariantPosition;
|
bool invariantPosition;
|
||||||
|
|
||||||
|
/// Enable float control bits
|
||||||
|
bool floatControls;
|
||||||
|
|
||||||
/// Back buffer count for the Vulkan swap chain.
|
/// Back buffer count for the Vulkan swap chain.
|
||||||
/// Overrides DXGI_SWAP_CHAIN_DESC::BufferCount.
|
/// Overrides DXGI_SWAP_CHAIN_DESC::BufferCount.
|
||||||
int32_t numBackBuffers;
|
int32_t numBackBuffers;
|
||||||
|
@ -59,16 +59,18 @@ namespace dxvk {
|
|||||||
applyTristate(useSubgroupOpsForEarlyDiscard, device->config().useEarlyDiscard);
|
applyTristate(useSubgroupOpsForEarlyDiscard, device->config().useEarlyDiscard);
|
||||||
|
|
||||||
// Figure out float control flags to match D3D11 rules
|
// Figure out float control flags to match D3D11 rules
|
||||||
if (devInfo.khrShaderFloatControls.shaderSignedZeroInfNanPreserveFloat32)
|
if (options.floatControls) {
|
||||||
floatControl.set(DxbcFloatControlFlag::PreserveNan32);
|
if (devInfo.khrShaderFloatControls.shaderSignedZeroInfNanPreserveFloat32)
|
||||||
if (devInfo.khrShaderFloatControls.shaderSignedZeroInfNanPreserveFloat64)
|
floatControl.set(DxbcFloatControlFlag::PreserveNan32);
|
||||||
floatControl.set(DxbcFloatControlFlag::PreserveNan64);
|
if (devInfo.khrShaderFloatControls.shaderSignedZeroInfNanPreserveFloat64)
|
||||||
|
floatControl.set(DxbcFloatControlFlag::PreserveNan64);
|
||||||
|
|
||||||
if (devInfo.khrShaderFloatControls.denormBehaviorIndependence != VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE) {
|
if (devInfo.khrShaderFloatControls.denormBehaviorIndependence != VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE) {
|
||||||
if (devInfo.khrShaderFloatControls.shaderDenormFlushToZeroFloat32)
|
if (devInfo.khrShaderFloatControls.shaderDenormFlushToZeroFloat32)
|
||||||
floatControl.set(DxbcFloatControlFlag::DenormFlushToZero32);
|
floatControl.set(DxbcFloatControlFlag::DenormFlushToZero32);
|
||||||
if (devInfo.khrShaderFloatControls.shaderDenormPreserveFloat64)
|
if (devInfo.khrShaderFloatControls.shaderDenormPreserveFloat64)
|
||||||
floatControl.set(DxbcFloatControlFlag::DenormPreserve64);
|
floatControl.set(DxbcFloatControlFlag::DenormPreserve64);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!devInfo.khrShaderFloatControls.shaderSignedZeroInfNanPreserveFloat32
|
if (!devInfo.khrShaderFloatControls.shaderSignedZeroInfNanPreserveFloat32
|
||||||
|
@ -200,6 +200,7 @@ namespace dxvk {
|
|||||||
* position breaks character rendering on NV */
|
* position breaks character rendering on NV */
|
||||||
{ R"(\\SOTTR\.exe$)", {{
|
{ R"(\\SOTTR\.exe$)", {{
|
||||||
{ "d3d11.invariantPosition", "False" },
|
{ "d3d11.invariantPosition", "False" },
|
||||||
|
{ "d3d11.floatControls", "False" },
|
||||||
}} },
|
}} },
|
||||||
|
|
||||||
/**********************************************/
|
/**********************************************/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user