Fix Windows builds, add FPS limiter and mark extra points

This commit is contained in:
FakeMichau
2024-09-06 13:10:42 +02:00
parent 93af3c19e4
commit 359a261c01
5 changed files with 37 additions and 3 deletions
+20 -2
View File
@@ -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;
}
};
Regular → Executable
+1
View File
@@ -1,4 +1,5 @@
#pragma once
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <chrono>
#include <cstdint>
+1
View File
@@ -1,3 +1,4 @@
#define _CRT_SECURE_NO_WARNINGS 1
#include <algorithm>
#include <unordered_map>
#include <format>
+14 -1
View File
@@ -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();
+1
View File
@@ -1,4 +1,5 @@
#pragma once
#define _CRT_SECURE_NO_WARNINGS 1
#include "../include/nvapi.h"
#include <string>
#include <string.h>