2023-09-12 00:08:46 +02:00
|
|
|
//===========================================================================//
|
|
|
|
//
|
|
|
|
// Purpose: NVIDIA Reflex utilities
|
|
|
|
//
|
|
|
|
//===========================================================================//
|
|
|
|
#include "reflex.h"
|
|
|
|
#include "mathlib/mathlib.h"
|
|
|
|
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
// Purpose: runs the low latency sdk
|
2023-09-12 00:19:47 +02:00
|
|
|
// Input : *device -
|
|
|
|
// useLowLatencyMode -
|
|
|
|
// useLowLatencyBoost -
|
|
|
|
// useMarkersToOptimize -
|
|
|
|
// maxFramesPerSecond -
|
2023-09-12 00:08:46 +02:00
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
void GFX_RunLowLatencySDK(IUnknown* device, const bool useLowLatencyMode,
|
2023-09-12 00:19:47 +02:00
|
|
|
const bool useLowLatencyBoost, const bool useMarkersToOptimize,
|
|
|
|
const float maxFramesPerSecond)
|
2023-09-12 00:08:46 +02:00
|
|
|
{
|
|
|
|
Assert(device);
|
|
|
|
Assert(IsFinite(maxFramesPerSecond));
|
|
|
|
|
|
|
|
NV_SET_SLEEP_MODE_PARAMS params = {};
|
|
|
|
params.version = NV_SET_SLEEP_MODE_PARAMS_VER1;
|
|
|
|
|
|
|
|
params.bLowLatencyMode = useLowLatencyMode;
|
|
|
|
params.bLowLatencyBoost = useLowLatencyMode && useLowLatencyBoost;
|
|
|
|
params.minimumIntervalUs = maxFramesPerSecond > 0
|
|
|
|
? (NvU32)((1000.0f / maxFramesPerSecond) * 1000.0f)
|
|
|
|
: 0;
|
2023-09-12 00:19:47 +02:00
|
|
|
params.bUseMarkersToOptimize = useMarkersToOptimize;
|
2023-09-12 00:08:46 +02:00
|
|
|
|
|
|
|
NvAPI_Status status = NvAPI_D3D_SetSleepMode(device, ¶ms);
|
|
|
|
|
|
|
|
if (status == NVAPI_OK)
|
|
|
|
NvAPI_D3D_Sleep(device);
|
|
|
|
}
|