UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
VulkanViewport.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 VulkanViewport.h: Vulkan viewport RHI definitions.
5=============================================================================*/
6
7#pragma once
8
9#include "VulkanResources.h"
10#include "HAL/CriticalSection.h"
11
14class FVulkanQueue;
15class FVulkanViewport;
17
18namespace VulkanRHI
19{
20 class FSemaphore;
21}
22
24{
25public:
27 virtual ~FVulkanBackBuffer();
28
31
32 void ReleaseViewport();
34
35private:
36 void AcquireBackBufferImage(FVulkanCommandListContext& Context);
37
38private:
39 FVulkanViewport* Viewport;
40};
41
42
44{
45public:
46 enum { NUM_BUFFERS = 3 };
47
50
53
54 virtual void WaitForFrameEventCompletion() override;
55
56 virtual void IssueFrameEvent() override;
57
58 inline FIntPoint GetSizeXY() const
59 {
60 return FIntPoint(SizeX, SizeY);
61 }
62
67
69 {
70 return CustomPresent;
71 }
72
73 virtual void Tick(float DeltaTime) override final;
74
75 bool Present(FVulkanCommandListContext& Context, bool bLockToVsync);
76
77 inline uint32 GetPresentCount() const
78 {
79 return PresentCount;
80 }
81
82 inline bool IsFullscreen() const
83 {
84 return bIsFullscreen;
85 }
86
88 {
89 return (uint32)BackBufferImages.Num();
90 }
91
93 {
94 if (BackBufferImages.Num() > 0)
95 {
96 return BackBufferImages[Index]->Image;
97 }
98 else
99 {
100 return VK_NULL_HANDLE;
101 }
102 }
103
105 {
106 return SwapChain;
107 }
108
109 inline void* GetWindowHandle() { return WindowHandle; }
110
113
114protected:
116
117 // NUM_BUFFERS don't have to match exactly as the driver can require a minimum number larger than NUM_BUFFERS. Provide some slack
122
123 // 'Dummy' back buffer
125
128
138
140
141 // Just a pointer, not owned by this class
143
145
147
149 void OnSystemResolutionChanged(uint32 ResX, uint32 ResY);
150
154
161
166
167 friend class FVulkanDynamicRHI;
170 friend class FVulkanBackBuffer;
171};
172
173template<>
FPlatformTypes::int8 int8
An 8-bit signed integer.
Definition Platform.h:1121
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
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
EDeviceScreenOrientation
Definition GenericPlatformMisc.h:236
FInt32Point FIntPoint
Definition MathFwd.h:124
EPixelFormat
Definition PixelFormat.h:16
ETextureCreateFlags
Definition RHIDefinitions.h:1091
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition PThreadSemaphore.h:15
Definition RHICommandList.h:4626
Definition RHIResources.h:4294
Definition RHIResources.h:2515
Definition VulkanAndroidPlatform.h:52
Definition VulkanViewport.h:24
void ReleaseAcquiredImage()
Definition VulkanViewport.cpp:26
void OnAdvanceBackBufferFrame(FRHICommandListImmediate &RHICmdList)
Definition VulkanViewport.cpp:54
virtual ~FVulkanBackBuffer()
Definition VulkanViewport.cpp:94
void ReleaseViewport()
Definition VulkanViewport.cpp:38
void OnGetBackBufferImage(FRHICommandListImmediate &RHICmdList)
Definition VulkanViewport.cpp:44
Definition VulkanContext.h:241
Definition VulkanContext.h:55
Definition VulkanDevice.h:279
Definition VulkanDynamicRHI.h:69
Definition VulkanQueue.h:53
Definition VulkanSynchronization.h:127
Definition VulkanSwapChain.h:30
Definition VulkanResources.h:604
FVulkanDevice *const Device
Definition VulkanResources.h:790
Definition VulkanViewport.h:44
bool bRenderOffscreen
Definition VulkanViewport.h:137
bool RequiresRenderingBackBuffer()
Definition VulkanViewport.cpp:812
bool DoCheckedSwapChainJob(FVulkanCommandListContext &Context)
Definition VulkanViewport.cpp:182
void OnSystemResolutionChanged(uint32 ResX, uint32 ResY)
Definition VulkanViewport.cpp:830
uint32 SizeX
Definition VulkanViewport.h:129
FVulkanSwapChain * SwapChain
Definition VulkanViewport.h:134
void * WindowHandle
Definition VulkanViewport.h:135
EPixelFormat GetPixelFormatForNonDefaultSwapchain()
Definition VulkanViewport.cpp:817
bool TryAcquireImageIndex()
Definition VulkanViewport.cpp:232
bool bIsFullscreen
Definition VulkanViewport.h:131
FVulkanSemaphore * AcquiredSemaphore
Definition VulkanViewport.h:142
TArray< FVulkanSemaphore *, TInlineAllocator< NUM_BUFFERS *2 > > RenderingDoneSemaphores
Definition VulkanViewport.h:119
virtual void SetCustomPresent(FRHICustomPresent *InCustomPresent) override final
Definition VulkanViewport.h:63
EDeviceScreenOrientation CachedOrientation
Definition VulkanViewport.h:148
FIntPoint GetSizeXY() const
Definition VulkanViewport.h:58
uint32 GetPresentCount() const
Definition VulkanViewport.h:77
uint32 GetBackBufferImageCount()
Definition VulkanViewport.h:87
void Resize(FRHICommandListImmediate &RHICmdList, uint32 InSizeX, uint32 InSizeY, bool bIsFullscreen, EPixelFormat PreferredPixelFormat, FVulkanPlatformWindowContext &WindowContext)
Definition VulkanViewport.cpp:344
FVulkanSwapChain * GetSwapChain()
Definition VulkanViewport.h:104
void DestroySwapchain(struct FVulkanSwapChainRecreateInfo *RecreateInfo)
Definition VulkanViewport.cpp:526
void CreateSwapchain(FVulkanCommandListContext &Context, struct FVulkanSwapChainRecreateInfo *RecreateInfo, FVulkanPlatformWindowContext &WindowContext)
Definition VulkanViewport.cpp:425
virtual FRHICustomPresent * GetCustomPresent() const override final
Definition VulkanViewport.h:68
TRefCountPtr< FVulkanTexture > RenderingBackBuffer
Definition VulkanViewport.h:124
FTextureRHIRef GetBackBuffer(FRHICommandListImmediate &RHICmdList)
Definition VulkanViewport.cpp:246
void AdvanceBackBufferFrame(FRHICommandListImmediate &RHICmdList)
Definition VulkanViewport.cpp:269
VkImage GetBackBufferImage(uint32 Index)
Definition VulkanViewport.h:92
void * GetWindowHandle()
Definition VulkanViewport.h:109
FVulkanDevice & Device
Definition VulkanViewport.h:115
FCustomPresentRHIRef CustomPresent
Definition VulkanViewport.h:144
EPixelFormat PixelFormat
Definition VulkanViewport.h:132
virtual void WaitForFrameEventCompletion() override
Definition VulkanViewport.cpp:284
FCriticalSection RecreatingSwapchain
Definition VulkanViewport.h:127
~FVulkanViewport()
Definition VulkanViewport.cpp:146
void RecreateSwapchainFromRT(FRHICommandListImmediate &RHICmdList, FVulkanPlatformWindowContext &WindowContext)
Definition VulkanViewport.h:156
int32 AcquiredImageIndex
Definition VulkanViewport.h:133
virtual void IssueFrameEvent() override
Definition VulkanViewport.cpp:301
TRefCountPtr< FVulkanBackBuffer > RHIBackBuffer
Definition VulkanViewport.h:121
bool SupportsStandardSwapchain()
Definition VulkanViewport.cpp:807
bool IsFullscreen() const
Definition VulkanViewport.h:82
FVulkanSyncPointRef LastFrameSyncPoint
Definition VulkanViewport.h:146
void InitImages(FVulkanContextCommon &Context, TConstArrayView< VkImage > Images)
Definition VulkanViewport.cpp:375
uint32 PresentCount
Definition VulkanViewport.h:136
TArray< TRefCountPtr< FVulkanTexture >, TInlineAllocator< NUM_BUFFERS *2 > > BackBufferImages
Definition VulkanViewport.h:118
uint32 SizeY
Definition VulkanViewport.h:130
int8 LockToVsync
Definition VulkanViewport.h:139
void RecreateSwapchain(FVulkanCommandListContext &Context, FVulkanPlatformWindowContext &WindowContext)
Definition VulkanViewport.cpp:313
friend struct FRHICommandAcquireBackBuffer
Definition VulkanViewport.h:169
@ NUM_BUFFERS
Definition VulkanViewport.h:46
TIndirectArray< FVulkanView, TInlineAllocator< NUM_BUFFERS *2 > > TextureViews
Definition VulkanViewport.h:120
void RecreateSwapchainFromRT(FRHICommandListImmediate &RHICmdList, EPixelFormat PreferredPixelFormat, FVulkanPlatformWindowContext &WindowContext)
Definition VulkanViewport.cpp:358
Definition Array.h:670
Definition IndirectArray.h:20
Definition ContainerAllocationPolicies.h:894
Definition VulkanCommandBuffer.h:22
U16 Index
Definition radfft.cpp:71
Definition VulkanSwapChain.h:23
FVulkanViewport TConcreteType
Definition VulkanViewport.h:176
Definition VulkanResources.h:1168
Definition IntPoint.h:25