From de523f7fcbbd7a4b60e9ab0474b239b02e20f0fb Mon Sep 17 00:00:00 2001 From: FakeMichau <49685661+FakeMichau@users.noreply.github.com> Date: Fri, 6 Sep 2024 00:46:49 +0200 Subject: [PATCH] Barebones antilag 2 support for dx12 --- OptiScaler/nvapi/fakenvapi/nvapi.cpp | 20 ++++++++++++++++++++ OptiScaler/nvapi/fakenvapi/nvapi.h | 4 +++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/OptiScaler/nvapi/fakenvapi/nvapi.cpp b/OptiScaler/nvapi/fakenvapi/nvapi.cpp index 593376d8..607cef2a 100755 --- a/OptiScaler/nvapi/fakenvapi/nvapi.cpp +++ b/OptiScaler/nvapi/fakenvapi/nvapi.cpp @@ -307,10 +307,30 @@ namespace nvd { } NvAPI_Status __cdecl NvAPI_D3D_SetLatencyMarker(IUnknown* pDev, NV_LATENCY_MARKER_PARAMS* pSetLatencyMarkerParams) { + if (!pDev) + return Error(); + if (!al2_context.m_pAntiLagAPI) { + ID3D12Device* device = nullptr; + HRESULT hr = pDev->QueryInterface(__uuidof(ID3D12Device), reinterpret_cast(&device)); + auto res = AMD::AntiLag2DX12::Initialize(&al2_context, device); + log(std::format("AL2 Init: {}", S_OK == res)); + } + if (pSetLatencyMarkerParams->markerType == SIMULATION_START) { + AMD::AntiLag2DX12::Update(&al2_context, true, 0); + } return Ok(); } NvAPI_Status __cdecl NvAPI_D3D_Sleep(IUnknown* pDevice) { + if (!pDevice) + return Error(); + if (!al2_context.m_pAntiLagAPI) { + ID3D12Device* device = nullptr; + HRESULT hr = pDevice->QueryInterface(__uuidof(ID3D12Device), reinterpret_cast(&device)); + auto res = AMD::AntiLag2DX12::Initialize(&al2_context, device); + log(std::format("AL2 Init: {}", S_OK == res)); + } + AMD::AntiLag2DX12::Update(&al2_context, true, 0); return Ok(); } diff --git a/OptiScaler/nvapi/fakenvapi/nvapi.h b/OptiScaler/nvapi/fakenvapi/nvapi.h index b7828dde..664d8c93 100755 --- a/OptiScaler/nvapi/fakenvapi/nvapi.h +++ b/OptiScaler/nvapi/fakenvapi/nvapi.h @@ -11,6 +11,7 @@ #endif #include +#include "../include/ffx_antilag2_dx12.h" #include "util.h" #include "spoofInfo.h" #include "log.h" @@ -20,13 +21,14 @@ namespace nvd { static auto drsSession = reinterpret_cast(&drs); static auto drsProfile = reinterpret_cast(&drs); - static LUID luid; static UINT deviceId; static UINT vendorId; static UINT subSysId; static UINT revisionId; + static AMD::AntiLag2DX12::Context al2_context = {}; + NvAPI_Status __cdecl NvAPI_Initialize(); NvAPI_Status __cdecl NvAPI_GetInterfaceVersionString(NvAPI_ShortString desc); NvAPI_Status __cdecl NvAPI_EnumPhysicalGPUs(NvPhysicalGpuHandle handles[NVAPI_MAX_PHYSICAL_GPUS], NvU32* count);