diff --git a/OptiScaler.ini b/OptiScaler.ini index b68ffb17..dc7f5038 100644 --- a/OptiScaler.ini +++ b/OptiScaler.ini @@ -905,6 +905,10 @@ DisableFlipMetering=auto ; Default (auto) is local folder NvapiDllPath=auto +; Do not use fakenvapi for converting Reflex calls to XeLL calls on Nvidia GPUs +; Default (auto) is false +DontUseFakenvapiForXeLLOnNvidia=auto + ; ------------------------------------------------------- diff --git a/OptiScaler/Config.cpp b/OptiScaler/Config.cpp index 0bd5283d..0c99b197 100644 --- a/OptiScaler/Config.cpp +++ b/OptiScaler/Config.cpp @@ -576,6 +576,7 @@ bool Config::Reload(std::filesystem::path iniPath) // NvApi { OverrideNvapiDll.set_from_config(readBool("NvApi", "OverrideNvapiDll")); + DontUseFakenvapiForXeLLOnNvidia.set_from_config(readBool("NvApi", "DontUseFakenvapiForXeLLOnNvidia")); NvapiDllPath.set_from_config(readWString("NvApi", "NvapiDllPath", true)); DisableFlipMetering.set_from_config(readBool("NvApi", "DisableFlipMetering")); } @@ -1224,6 +1225,8 @@ bool Config::SaveIni() { ini.SetValue("NvApi", "OverrideNvapiDll", GetBoolValue(Instance()->OverrideNvapiDll.value_for_config()).c_str()); + ini.SetValue("NvApi", "DontUseFakenvapiForXeLLOnNvidia", + GetBoolValue(Instance()->DontUseFakenvapiForXeLLOnNvidia.value_for_config()).c_str()); ini.SetValue("NvApi", "NvapiDllPath", wstring_to_string(Instance()->NvapiDllPath.value_for_config_or(L"auto")).c_str()); ini.SetValue("NvApi", "DisableFlipMetering", diff --git a/OptiScaler/Config.h b/OptiScaler/Config.h index 14d53af5..5b274586 100644 --- a/OptiScaler/Config.h +++ b/OptiScaler/Config.h @@ -398,6 +398,7 @@ class Config // NVAPI Override CustomOptional OverrideNvapiDll { false }; + CustomOptional DontUseFakenvapiForXeLLOnNvidia { false }; CustomOptional NvapiDllPath; CustomOptional DisableFlipMetering { false }; diff --git a/OptiScaler/nvapi/fakenvapi.cpp b/OptiScaler/nvapi/fakenvapi.cpp index 2493e242..2282308d 100644 --- a/OptiScaler/nvapi/fakenvapi.cpp +++ b/OptiScaler/nvapi/fakenvapi.cpp @@ -91,7 +91,7 @@ void fakenvapi::reportFGPresent(IDXGISwapChain* pSwapChain, bool fg_state, bool bool fakenvapi::updateModeAndContext() { if (!isUsingFakenvapi() && State::Instance().activeFgOutput == FGOutput::XeFG && - (!Config::Instance()->OverrideNvapiDll.has_value() || Config::Instance()->OverrideNvapiDll.value())) + !Config::Instance()->DontUseFakenvapiForXeLLOnNvidia.value_or_default()) { auto loaded = fakenvapi::loadForNvidia(); } @@ -133,7 +133,7 @@ bool fakenvapi::updateModeAndContext() bool fakenvapi::setModeAndContext(void* context, Mode mode) { if (!isUsingFakenvapi() && State::Instance().activeFgOutput == FGOutput::XeFG && - (!Config::Instance()->OverrideNvapiDll.has_value() || Config::Instance()->OverrideNvapiDll.value())) + !Config::Instance()->DontUseFakenvapiForXeLLOnNvidia.value_or_default()) { auto loaded = fakenvapi::loadForNvidia(); }