diff --git a/OptiScaler/nvapi/fakenvapi/antilag.h b/OptiScaler/nvapi/fakenvapi/antilag.h old mode 100644 new mode 100755 index 6e1854fd..61098a66 --- a/OptiScaler/nvapi/fakenvapi/antilag.h +++ b/OptiScaler/nvapi/fakenvapi/antilag.h @@ -10,9 +10,12 @@ #include "../include/ffx_antilag2_dx12.h" #include "../include/ffx_antilag2_dx11.h" +#include "log.h" + class AntiLag { AMD::AntiLag2DX12::Context context_dx12 = {}; AMD::AntiLag2DX11::Context context_dx11 = {}; + unsigned int max_fps = 0; void init_dx12(ID3D12Device *pDevice) { auto res = AMD::AntiLag2DX12::Initialize(&context_dx12, pDevice); @@ -36,8 +39,23 @@ public: void update() { if (context_dx12.m_pAntiLagAPI) - AMD::AntiLag2DX12::Update(&context_dx12, true, 0); + AMD::AntiLag2DX12::Update(&context_dx12, true, max_fps); else - AMD::AntiLag2DX11::Update(&context_dx11, true, 0); + AMD::AntiLag2DX11::Update(&context_dx11, true, max_fps); + } + + void mark_end_of_rendering() { + if (context_dx12.m_pAntiLagAPI) + AMD::AntiLag2DX12::MarkEndOfFrameRendering(&context_dx12); + } + + void present_start(bool interpolated_frame) { + if (context_dx12.m_pAntiLagAPI) + AMD::AntiLag2DX12::SetFrameGenFrameType(&context_dx12, interpolated_frame); + } + + void set_fps_limit(unsigned int fps) { + log(std::format("Max fps: {}", fps)); + max_fps = fps; } }; \ No newline at end of file diff --git a/OptiScaler/nvapi/fakenvapi/log.h b/OptiScaler/nvapi/fakenvapi/log.h old mode 100644 new mode 100755 index 96465672..e447a4a8 --- a/OptiScaler/nvapi/fakenvapi/log.h +++ b/OptiScaler/nvapi/fakenvapi/log.h @@ -1,4 +1,5 @@ #pragma once +#define _CRT_SECURE_NO_WARNINGS 1 #include #include #include diff --git a/OptiScaler/nvapi/fakenvapi/main.cpp b/OptiScaler/nvapi/fakenvapi/main.cpp index db14ae16..e9eef93c 100755 --- a/OptiScaler/nvapi/fakenvapi/main.cpp +++ b/OptiScaler/nvapi/fakenvapi/main.cpp @@ -1,3 +1,4 @@ +#define _CRT_SECURE_NO_WARNINGS 1 #include #include #include diff --git a/OptiScaler/nvapi/fakenvapi/nvapi.cpp b/OptiScaler/nvapi/fakenvapi/nvapi.cpp index b6348713..febce021 100755 --- a/OptiScaler/nvapi/fakenvapi/nvapi.cpp +++ b/OptiScaler/nvapi/fakenvapi/nvapi.cpp @@ -303,16 +303,29 @@ namespace nvd { } NvAPI_Status __cdecl NvAPI_D3D_SetSleepMode(IUnknown* pDevice, NV_SET_SLEEP_MODE_PARAMS* pSetSleepModeParams) { +#if _MSC_VER + if (pSetSleepModeParams->minimumIntervalUs > 0) + antilag_ctx.set_fps_limit(1000000 / pSetSleepModeParams->minimumIntervalUs); +#endif return Ok(); } NvAPI_Status __cdecl NvAPI_D3D_SetLatencyMarker(IUnknown* pDev, NV_LATENCY_MARKER_PARAMS* pSetLatencyMarkerParams) { if (!pDev) return Error(); + log(std::format("markerType: {}", (unsigned int)pSetLatencyMarkerParams->markerType)); #if _MSC_VER antilag_ctx.init(pDev); - if (pSetLatencyMarkerParams->markerType == SIMULATION_START) { + switch (pSetLatencyMarkerParams->markerType) { + case SIMULATION_START: antilag_ctx.update(); + break; + case RENDERSUBMIT_END: + antilag_ctx.mark_end_of_rendering(); + break; + case PRESENT_START: + antilag_ctx.present_start(false); + break; } #endif return Ok(); diff --git a/OptiScaler/nvapi/fakenvapi/util.h b/OptiScaler/nvapi/fakenvapi/util.h old mode 100644 new mode 100755 index 3f4153ca..b884f538 --- a/OptiScaler/nvapi/fakenvapi/util.h +++ b/OptiScaler/nvapi/fakenvapi/util.h @@ -1,4 +1,5 @@ #pragma once +#define _CRT_SECURE_NO_WARNINGS 1 #include "../include/nvapi.h" #include #include