gamescope/src/vblankmanager.hpp
Joshua Ashton 1bb7ef50ba layer: Implement VK_GOOGLE_display_timing + present wait/id for nested
Required a decent refactor of the protocol to be more swapchain based.

Tested with Dota 2 + `-vulkan -vulkan_enable_google_display_timing`

Should hopefully improve latency/pacing in nested a good amount too.
2023-09-25 22:20:43 -07:00

26 lines
758 B
C++

#pragma once
// Try to figure out when vblank is and notify steamcompmgr to render some time before it
struct VBlankTimeInfo_t
{
uint64_t target_vblank_time;
uint64_t pipe_write_time;
};
int vblank_init( void );
void vblank_mark_possible_vblank( uint64_t nanos );
uint64_t vblank_next_target( uint64_t offset = 0 );
extern std::atomic<uint64_t> g_uVblankDrawTimeNS;
const unsigned int g_uDefaultVBlankRedZone = 1'650'000;
const unsigned int g_uDefaultMinVBlankTime = 350'000; // min vblank time for fps limiter to care about
const unsigned int g_uDefaultVBlankRateOfDecayPercentage = 980;
extern uint64_t g_uVblankDrawBufferRedZoneNS;
extern uint64_t g_uVBlankRateOfDecayPercentage;
extern std::atomic<bool> g_bCurrentlyCompositing;