diff --git a/dxvk.conf b/dxvk.conf index e13b7e18..257f87a8 100644 --- a/dxvk.conf +++ b/dxvk.conf @@ -517,18 +517,6 @@ # d3d9.forceSwapchainMSAA = -1 -# Long Mad -# -# Should we make our Mads a FFma or do it the long way with an FMul and an FAdd? -# This solves some rendering bugs in games that have z-pass shaders which -# don't match entirely to the regular vertex shader in this way. -# -# Supported values: -# - True/False - -# d3d9.longMad = False - - # Device Local Constant Buffers # # Enables using device local, host accessible memory for constant buffers in D3D9. diff --git a/src/d3d9/d3d9_options.cpp b/src/d3d9/d3d9_options.cpp index 0f666a90..f16212ed 100644 --- a/src/d3d9/d3d9_options.cpp +++ b/src/d3d9/d3d9_options.cpp @@ -67,7 +67,6 @@ namespace dxvk { this->forceSampleRateShading = config.getOption ("d3d9.forceSampleRateShading", false); this->forceAspectRatio = config.getOption ("d3d9.forceAspectRatio", ""); this->enumerateByDisplays = config.getOption ("d3d9.enumerateByDisplays", true); - this->longMad = config.getOption ("d3d9.longMad", false); this->cachedDynamicBuffers = config.getOption ("d3d9.cachedDynamicBuffers", false); this->deviceLocalConstantBuffers = config.getOption ("d3d9.deviceLocalConstantBuffers", false); this->allowDirectBufferMapping = config.getOption ("d3d9.allowDirectBufferMapping", true); diff --git a/src/d3d9/d3d9_options.h b/src/d3d9/d3d9_options.h index 6ab697ed..db4bdba0 100644 --- a/src/d3d9/d3d9_options.h +++ b/src/d3d9/d3d9_options.h @@ -119,11 +119,6 @@ namespace dxvk { /// Enumerate adapters by displays bool enumerateByDisplays; - /// Should we make our Mads a FFma or do it the long way with an FMul and an FAdd? - /// This solves some rendering bugs in games that have z-pass shaders which - /// don't match entirely to the regular vertex shader in this way. - bool longMad; - /// Cached dynamic buffers: Maps all buffers in cached memory. bool cachedDynamicBuffers; diff --git a/src/dxso/dxso_compiler.cpp b/src/dxso/dxso_compiler.cpp index 669caa2a..769b21fa 100644 --- a/src/dxso/dxso_compiler.cpp +++ b/src/dxso/dxso_compiler.cpp @@ -1932,21 +1932,13 @@ namespace dxvk { emitRegisterLoad(src[1], mask).id); break; case DxsoOpcode::Mad: - if (!m_moduleInfo.options.longMad) { - result.id = emitFma( - emitRegisterLoad(src[0], mask), - emitRegisterLoad(src[1], mask), - emitRegisterLoad(src[2], mask)).id; - } - else { - result.id = emitMul( - emitRegisterLoad(src[0], mask), - emitRegisterLoad(src[1], mask)).id; + result.id = emitMul( + emitRegisterLoad(src[0], mask), + emitRegisterLoad(src[1], mask)).id; - result.id = m_module.opFAdd(typeId, - result.id, - emitRegisterLoad(src[2], mask).id); - } + result.id = m_module.opFAdd(typeId, + result.id, + emitRegisterLoad(src[2], mask).id); break; case DxsoOpcode::Mul: result.id = emitMul( diff --git a/src/dxso/dxso_options.cpp b/src/dxso/dxso_options.cpp index ffe62713..30ea3b33 100644 --- a/src/dxso/dxso_options.cpp +++ b/src/dxso/dxso_options.cpp @@ -29,7 +29,6 @@ namespace dxvk { vertexFloatConstantBufferAsSSBO = pDevice->GetVertexConstantLayout().floatSize() > devInfo.core.properties.limits.maxUniformBufferRange; - longMad = options.longMad; robustness2Supported = devFeatures.extRobustness2.robustBufferAccess2; drefScaling = options.drefScaling; diff --git a/src/dxso/dxso_options.h b/src/dxso/dxso_options.h index 04518412..3145e2c6 100644 --- a/src/dxso/dxso_options.h +++ b/src/dxso/dxso_options.h @@ -42,11 +42,6 @@ namespace dxvk { /// Should the SWVP float constant buffer be a SSBO (because of the size on NV) bool vertexFloatConstantBufferAsSSBO; - /// Should we make our Mads a FFma or do it the long way with an FMul and an FAdd? - /// This solves some rendering bugs in games that have z-pass shaders which - /// don't match entirely to the regular vertex shader in this way. - bool longMad; - /// Whether or not we can rely on robustness2 to handle oob constant access bool robustness2Supported; diff --git a/src/util/config/config.cpp b/src/util/config/config.cpp index 97845817..ac679c79 100644 --- a/src/util/config/config.cpp +++ b/src/util/config/config.cpp @@ -611,7 +611,6 @@ namespace dxvk { * like a game bug that d3d9 drivers work * * around. */ { R"(\\(BF2|BF2142)\.exe$)", {{ - { "d3d9.longMad", "True" }, { "d3d9.deviceLossOnFocusLoss", "True" }, { "d3d9.countLosableResources", "False"}, }} }, @@ -627,7 +626,6 @@ namespace dxvk { { R"(\\(trl|tra|tru)\.exe$)", {{ { "d3d9.cachedDynamicBuffers", "True" }, { "d3d9.maxFrameRate", "60" }, - { "d3d9.longMad", "True" }, }} }, /* Everquest */ { R"(\\eqgame\.exe$)", {{