diff --git a/src/engine/sys_dll2.cpp b/src/engine/sys_dll2.cpp index 32cb51e8..b9937ada 100644 --- a/src/engine/sys_dll2.cpp +++ b/src/engine/sys_dll2.cpp @@ -179,6 +179,49 @@ void CEngineAPI::PumpMessages() #endif // !DEDICATED } +void CEngineAPI::UpdateLowLatencyParameters() +{ +#ifndef DEDICATED + const bool bUseLowLatencyMode = gfx_nvnUseLowLatency->GetBool(); + const bool bUseLowLatencyBoost = gfx_nvnUseLowLatencyBoost->GetBool(); + const bool bUseMarkersToOptimize = gfx_nvnUseMarkersToOptimize->GetBool(); + + float fpsMax = fps_max_gfx->GetFloat(); + + if (fpsMax == -1.0f) + { + const float globalFps = fps_max->GetFloat(); + + // Make sure the global fps limiter is 'unlimited' + // before we let the gfx frame limiter cap it to + // the desktop's refresh rate; not adhering to + // this will result in a major performance drop. + if (globalFps == 0.0f) + fpsMax = g_pGame->GetTVRefreshRate(); + else + fpsMax = 0.0f; // Don't let NVIDIA limit the frame rate. + } + + GFX_UpdateLowLatencyParameters(D3D11Device(), bUseLowLatencyMode, + bUseLowLatencyBoost, bUseMarkersToOptimize, fpsMax); +#endif // !DEDICATED +} + +void CEngineAPI::RunLowLatencyFrame() +{ +#ifndef DEDICATED + if (GFX_IsLowLatencySDKEnabled()) + { + if (GFX_HasPendingLowLatencyParameterUpdates()) + { + UpdateLowLatencyParameters(); + } + + GFX_RunLowLatencyFrame(D3D11Device()); + } +#endif // !DEDICATED +} + //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- @@ -197,37 +240,7 @@ bool CEngineAPI::MainLoop() } #ifndef DEDICATED - if (GFX_IsLowLatencySDKEnabled()) - { - if (GFX_HasPendingLowLatencyParameterUpdates()) - { - const bool bUseLowLatencyMode = gfx_nvnUseLowLatency->GetBool(); - const bool bUseLowLatencyBoost = gfx_nvnUseLowLatencyBoost->GetBool(); - const bool bUseMarkersToOptimize = gfx_nvnUseMarkersToOptimize->GetBool(); - - float fpsMax = fps_max_gfx->GetFloat(); - - if (fpsMax == -1.0f) - { - const float globalFps = fps_max->GetFloat(); - - // Make sure the global fps limiter is 'unlimited' - // before we let the gfx frame limiter cap it to - // the desktop's refresh rate; not adhering to - // this will result in a major performance drop. - if (globalFps == 0.0f) - fpsMax = g_pGame->GetTVRefreshRate(); - else - fpsMax = 0.0f; // Don't let NVIDIA limit the frame rate. - } - - GFX_UpdateLowLatencyParameters(D3D11Device(), bUseLowLatencyMode, - bUseLowLatencyBoost, bUseMarkersToOptimize, fpsMax); - } - - GFX_RunLowLatencyFrame(D3D11Device()); - } - + CEngineAPI::RunLowLatencyFrame(); CEngineAPI::PumpMessages(); #endif // !DEDICATED diff --git a/src/engine/sys_dll2.h b/src/engine/sys_dll2.h index bdf7b0b6..9153bcf5 100644 --- a/src/engine/sys_dll2.h +++ b/src/engine/sys_dll2.h @@ -35,6 +35,9 @@ public: static void VSetStartupInfo(CEngineAPI* pEngineAPI, StartupInfo_t* pStartupInfo); static void PumpMessages(); + static void RunLowLatencyFrame(); + static void UpdateLowLatencyParameters(); + static bool MainLoop(); //private: void* m_hEditorHWnd;