diff --git a/OptiScaler/fsr4/FSR4Upgrade.cpp b/OptiScaler/fsr4/FSR4Upgrade.cpp index 0d3165f2..8a8c5776 100644 --- a/OptiScaler/fsr4/FSR4Upgrade.cpp +++ b/OptiScaler/fsr4/FSR4Upgrade.cpp @@ -28,6 +28,8 @@ #undef FFX_API_CONFIGURE_FG_SWAPCHAIN_KEY_WAITCALLBACK #undef FFX_API_CONFIGURE_FG_SWAPCHAIN_KEY_FRAMEPACINGTUNING +#pragma intrinsic(_ReturnAddress) + static HMODULE moduleAmdxc64 = nullptr; static HMODULE moduleAmdxcffx64 = nullptr; @@ -158,6 +160,15 @@ struct AmdExtFfxApi : public IAmdExtFfxApi HRESULT STDMETHODCALLTYPE UpdateFfxApiProvider(void* pData, uint32_t dataSizeInBytes) override { + auto returnAddress = _ReturnAddress(); + auto callerModule = Util::GetCallerModule(returnAddress); + + if (callerModule == exeModule) + { + LOG_WARN("Called from game module, returning E_NOINTERFACE"); + return E_NOINTERFACE; + } + auto effectType = FfxApiProxy::GetType(reinterpret_cast(pData)->descType); auto effect = magic_enum::enum_name(effectType);