UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AndroidPlatformFramePacer.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================================
4 AndroidPlatformFramePacer.h: Android platform frame pacer classes.
5==============================================================================================*/
6
7#pragma once
10
16{
17 virtual void Init() = 0;
19 virtual bool SwapBuffers(bool bLockToVsync) { return true; }
21};
22
24{
25 virtual void Init() override;
27 virtual bool SwapBuffers(bool bLockToVsync) override;
28 virtual bool SupportsFramePace(int32 QueryFramePace) override;
29
30private:
31 void InitSwappy();
32 bool SupportsFramePaceInternal(int32 QueryFramePace, int32& OutRefreshRate, int32& OutSyncInterval);
33
34 // swappy state
35 bool bSwappyInit = false;
36 int32 CachedFramePace = 60;
37 int32 CachedRefreshRate = 60;
38 int32 CachedSyncInterval = 1;
39 struct ANativeWindow* CachedNativeWindow = nullptr;
40
41 // legacy framepacer state
42 int32 DesiredSyncIntervalRelativeTo60Hz = -1;
43 int32 DesiredSyncIntervalRelativeToDevice = -1;
44 int32 DriverSyncIntervalRelativeToDevice = -1;
45 float DriverRefreshRate = 60.0f;
46 int64 DriverRefreshNanos = 16666666;
47 double LastTimeEmulatedSync = -1.0;
48 uint32 SwapBufferFailureCount = 0;
49};
50
52{
53 virtual void Init() override;
55 virtual bool SupportsFramePace(int32 QueryFramePace) override;
56private:
57 bool SupportsFramePaceInternal(int32 QueryFramePace, int32& OutRefreshRate, int32& OutSyncInterval);
59};
60
62{
63 // FGenericPlatformRHIFramePacer interface
64 static bool IsEnabled();
65 static void Destroy();
66 static int32 GetFramePace();
67 static int32 SetFramePace(int32 FramePace);
68 static bool SupportsFramePace(int32 QueryFramePace) { return (ensure(FramePacer)) ? FramePacer->SupportsFramePace(QueryFramePace) : false; }
69
70 // FAndroidPlatformRHIFramePacer interface
73 static void SwapBuffers(bool bLockToVsync) { if (ensure(FramePacer)) { FramePacer->SwapBuffers(bLockToVsync); } }
74
78
79 // Legacy pacer stuff
86
87private:
89 static IAndroidFramePacer* FramePacer;
92
93 /* Actual current frame pace */
94 static int32 InternalFramePace;
95};
96
FAndroidPlatformRHIFramePacer FPlatformRHIFramePacer
Definition AndroidPlatformFramePacer.h:97
#define ensure( InExpression)
Definition AssertionMacros.h:464
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
void Init()
Definition LockFreeList.h:4
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition VulkanAndroidPlatform.h:111
Definition IConsoleManager.h:1792
Definition AndroidPlatformFramePacer.h:24
virtual ~FAndroidOpenGLFramePacer()
virtual bool SwapBuffers(bool bLockToVsync) override
virtual void Init() override
virtual bool SupportsFramePace(int32 QueryFramePace) override
Definition AndroidPlatformFramePacer.h:62
static void Destroy()
Definition AndroidPlatformFramePacer.cpp:128
static TAutoConsoleVariable< int32 > CVarSwappyGPUFrameTimeFence
Definition AndroidPlatformFramePacer.h:76
static bool SupportsFramePace(int32 QueryFramePace)
Definition AndroidPlatformFramePacer.h:68
static TAutoConsoleVariable< int32 > CVarAllowFrameTimestamps
Definition AndroidPlatformFramePacer.h:80
static int32 GetFramePace()
Definition AndroidPlatformFramePacer.cpp:95
static TAutoConsoleVariable< int32 > CVarTimeStampErrorRetryCount
Definition AndroidPlatformFramePacer.h:81
static TAutoConsoleVariable< int32 > CVarSupportNonVSyncMultipleFrameRates
Definition AndroidPlatformFramePacer.h:77
static int32 SetFramePace(int32 FramePace)
Definition AndroidPlatformFramePacer.cpp:107
static void SwapBuffers(bool bLockToVsync)
Definition AndroidPlatformFramePacer.h:73
static bool IsEnabled()
Definition AndroidPlatformFramePacer.cpp:90
static TAutoConsoleVariable< int32 > CVarSpewGetFrameTimestamps
Definition AndroidPlatformFramePacer.h:83
static TAutoConsoleVariable< int32 > CVarUseGetFrameTimestamps
Definition AndroidPlatformFramePacer.h:82
static int32 GetLegacySyncInterval()
Definition AndroidPlatformFramePacer.cpp:123
static TAutoConsoleVariable< int32 > CVarDisableOpenGLGPUSync
Definition AndroidPlatformFramePacer.h:85
static TAutoConsoleVariable< int32 > CVarUseSwappyForFramePacing
Definition AndroidPlatformFramePacer.h:75
static TAutoConsoleVariable< float > CVarStallSwap
Definition AndroidPlatformFramePacer.h:84
Definition AndroidPlatformFramePacer.h:52
virtual void Init() override
Definition VulkanAndroidPlatform.cpp:1975
virtual bool SupportsFramePace(int32 QueryFramePace) override
Definition VulkanAndroidPlatform.cpp:1993
virtual ~FAndroidVulkanFramePacer()
Definition AndroidPlatformFramePacer.h:54
Definition GenericPlatformFramePacer.h:18
Definition AndroidPlatformFramePacer.h:16
virtual void Init()=0
virtual ~IAndroidFramePacer()
Definition AndroidPlatformFramePacer.h:18
virtual bool SupportsFramePace(int32 QueryFramePace)=0
virtual bool SwapBuffers(bool bLockToVsync)
Definition AndroidPlatformFramePacer.h:19