diff --git a/OptiScaler/hooks/Amdxc64_Hooks.cpp b/OptiScaler/hooks/Amdxc64_Hooks.cpp index 1af942c1..320d4d85 100644 --- a/OptiScaler/hooks/Amdxc64_Hooks.cpp +++ b/OptiScaler/hooks/Amdxc64_Hooks.cpp @@ -84,7 +84,17 @@ void Amdxc64Hooks::Init() moduleAmdxc64 = KernelBaseProxy::GetModuleHandleW_()(L"amdxc64.dll"); if (moduleAmdxc64 == nullptr && !Config::Instance()->Fsr4DoNotLoadAmdxc64.value_or_default()) - moduleAmdxc64 = NtdllProxy::LoadLibraryExW_Ldr(L"amdxc64.dll", NULL, 0); + { + HMODULE memModule = nullptr; + auto optiPath = Config::Instance()->MainDllPath.value(); + Util::LoadProxyLibrary(L"amdxc64.dll", L"", optiPath, &memModule, &moduleAmdxc64); + + if (moduleAmdxc64 == nullptr && memModule != nullptr) + moduleAmdxc64 = memModule; + + if (moduleAmdxc64 == nullptr) + moduleAmdxc64 = NtdllProxy::LoadLibraryExW_Ldr(L"amdxc64.dll", NULL, 0); + } if (moduleAmdxc64 != nullptr) { diff --git a/OptiScaler/hooks/LibraryLoad_Hooks.cpp b/OptiScaler/hooks/LibraryLoad_Hooks.cpp index f7c7553a..c2daeb02 100644 --- a/OptiScaler/hooks/LibraryLoad_Hooks.cpp +++ b/OptiScaler/hooks/LibraryLoad_Hooks.cpp @@ -472,12 +472,21 @@ HMODULE LibraryLoadHooks::LoadLibraryCheckW(std::wstring libName, LPCWSTR lpLibF if (CheckDllNameW(&libName, &amdxc64NamesW)) { - auto module = NtdllProxy::LoadLibraryExW_Ldr(libName.c_str(), NULL, 0); + HMODULE moduleAmdxc64 = nullptr; + HMODULE memModule = nullptr; + auto optiPath = Config::Instance()->MainDllPath.value(); + Util::LoadProxyLibrary(L"amdxc64.dll", L"", optiPath, &memModule, &moduleAmdxc64); - if (module != nullptr) + if (moduleAmdxc64 == nullptr && memModule != nullptr) + moduleAmdxc64 = memModule; + + if (moduleAmdxc64 == nullptr) + moduleAmdxc64 = NtdllProxy::LoadLibraryExW_Ldr(libName.c_str(), NULL, 0); + + if (moduleAmdxc64 != nullptr) Amdxc64Hooks::Init(); - return module; + return moduleAmdxc64; } if (CheckDllNameW(&libName, &ffxDx12NamesW))