mirror of
https://github.com/optiscaler/OptiScaler.git
synced 2026-08-27 00:26:53 +00:00
Fix Windows builds, add FPS limiter and mark extra points
This commit is contained in:
Regular → Executable
+20
-2
@@ -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
@@ -1,4 +1,5 @@
|
||||
#pragma once
|
||||
#define _CRT_SECURE_NO_WARNINGS 1
|
||||
#include <iostream>
|
||||
#include <chrono>
|
||||
#include <cstdint>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#define _CRT_SECURE_NO_WARNINGS 1
|
||||
#include <algorithm>
|
||||
#include <unordered_map>
|
||||
#include <format>
|
||||
|
||||
@@ -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();
|
||||
|
||||
Regular → Executable
+1
@@ -1,4 +1,5 @@
|
||||
#pragma once
|
||||
#define _CRT_SECURE_NO_WARNINGS 1
|
||||
#include "../include/nvapi.h"
|
||||
#include <string>
|
||||
#include <string.h>
|
||||
|
||||
Reference in New Issue
Block a user