UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
VulkanDynamicRHI.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 VulkanDynamicRHI.h: Vulkan RHI definitions.
5=============================================================================*/
6
7#pragma once
8
9#include "IVulkanDynamicRHI.h"
10#include "VulkanConfiguration.h"
11#include "VulkanQueue.h"
12
14class FVulkanDevice;
16class FVulkanViewport;
17class FVulkanPayload;
19class FVulkanTexture;
21class FVulkanThread;
24
25
27{
28 union
29 {
30 struct
31 {
32 UE_DEPRECATED(5.3, "Vulkan 1.1 is now a requirement so there is no need to check these capabilities.")
34
37 };
39 };
40
42 {
43 static_assert(sizeof(Packed) == sizeof(FOptionalVulkanInstanceExtensions), "More bits needed!");
44 Packed = 0;
45 }
46};
47
48#if RHI_NEW_GPU_PROFILER
49// Encapsulates the state required for tracking GPU queue performance across a frame.
50class FVulkanTiming
51{
52public:
54
55 FVulkanQueue& Queue;
56
57 // Timer calibration data
58 uint64 GPUFrequency = 0, GPUTimestamp = 0;
59 uint64 CPUFrequency = 0, CPUTimestamp = 0;
60
62};
63#endif
64
66
69{
70public:
71
73
76
79
80 // IVulkanDynamicRHI interface
81 virtual uint32 RHIGetVulkanVersion() const final override;
82 virtual VkInstance RHIGetVkInstance() const final override;
83 virtual VkDevice RHIGetVkDevice() const final override;
84 virtual const uint8* RHIGetVulkanDeviceUUID() const final override;
85 virtual VkPhysicalDevice RHIGetVkPhysicalDevice() const final override;
86 virtual const VkAllocationCallbacks* RHIGetVkAllocationCallbacks() final override;
87 virtual VkQueue RHIGetGraphicsVkQueue() const final override;
88 virtual uint32 RHIGetGraphicsQueueIndex() const final override;
89 virtual uint32 RHIGetGraphicsQueueFamilyIndex() const final override;
90 virtual VkCommandBuffer RHIGetActiveVkCommandBuffer() final override;
91 virtual uint64 RHIGetGraphicsAdapterLUID(VkPhysicalDevice InPhysicalDevice) const final override;
92 virtual bool RHIDoesAdapterMatchDevice(const void* InAdapterId) const final override;
93 virtual void* RHIGetVkDeviceProcAddr(const char* InName) const final override;
94 virtual void* RHIGetVkInstanceProcAddr(const char* InName) const final override;
95 virtual void* RHIGetVkInstanceGlobalProcAddr(const char* InName) const final override;
96 virtual VkFormat RHIGetSwapChainVkFormat(EPixelFormat InFormat) const final override;
97 virtual bool RHISupportsEXTFragmentDensityMap2() const final override;
98 virtual TArray<VkExtensionProperties> RHIGetAllInstanceExtensions() const final override;
99 virtual TArray<VkExtensionProperties> RHIGetAllDeviceExtensions(VkPhysicalDevice InPhysicalDevice) const final override;
100 virtual TArray<FAnsiString> RHIGetLoadedDeviceExtensions() const final override;
101 virtual FTextureRHIRef RHICreateTexture2DFromResource(EPixelFormat Format, uint32 SizeX, uint32 SizeY, uint32 NumMips, uint32 NumSamples, VkImage Resource, ETextureCreateFlags Flags, const FClearValueBinding& ClearValueBinding = FClearValueBinding::Transparent, const FVulkanRHIExternalImageDeleteCallbackInfo& ExternalImageDeleteCallbackInfo = {}) final override;
102#if PLATFORM_ANDROID
104#endif
105 virtual FTextureRHIRef RHICreateTexture2DArrayFromResource(EPixelFormat Format, uint32 SizeX, uint32 SizeY, uint32 ArraySize, uint32 NumMips, uint32 NumSamples, VkImage Resource, ETextureCreateFlags Flags, const FClearValueBinding& ClearValueBinding = FClearValueBinding::Transparent) final override;
106 virtual FTextureRHIRef RHICreateTextureCubeFromResource(EPixelFormat Format, uint32 Size, bool bArray, uint32 ArraySize, uint32 NumMips, VkImage Resource, ETextureCreateFlags Flags, const FClearValueBinding& ClearValueBinding = FClearValueBinding::Transparent) final override;
107 virtual VkImage RHIGetVkImage(FRHITexture* InTexture) const final override;
108 virtual VkFormat RHIGetViewVkFormat(FRHITexture* InTexture) const final override;
109 virtual FVulkanRHIAllocationInfo RHIGetAllocationInfo(FRHITexture* InTexture) const final override;
110 virtual FVulkanRHIImageViewInfo RHIGetImageViewInfo(FRHITexture* InTexture) const final override;
111 virtual FVulkanRHIAllocationInfo RHIGetAllocationInfo(FRHIBuffer* InBuffer) const final override;
112 virtual void RHISetImageLayout(VkImage Image, VkImageLayout OldLayout, VkImageLayout NewLayout, const VkImageSubresourceRange& SubresourceRange) final override;
113 virtual void RHISetUploadImageLayout(VkImage Image, VkImageLayout OldLayout, VkImageLayout NewLayout, const VkImageSubresourceRange& SubresourceRange) final override;
114 virtual void RHIFinishExternalComputeWork(VkCommandBuffer InCommandBuffer) final override;
115 virtual void RHIRegisterWork(uint32 NumPrimitives) final override;
116 virtual void RHISubmitUploadCommandBuffer() final override;
117 virtual void RHIVerifyResult(VkResult Result, const ANSICHAR* VkFuntion, const ANSICHAR* Filename, uint32 Line) final override;
118
119 // FDynamicRHI interface.
120 virtual void Init() final override;
121 virtual void PostInit() final override;
122 virtual void Shutdown() final override;
123 virtual const TCHAR* GetName() final override { return TEXT("Vulkan"); }
124
125 void InitInstance();
126
127 virtual void RHIEndFrame_RenderThread(FRHICommandListImmediate& RHICmdList) final override;
128 virtual void RHIEndFrame(const FRHIEndFrameArgs& Args) final override;
129
141 virtual FGPUFenceRHIRef RHICreateGPUFence(const FName &Name) final override;
142 virtual void RHIWriteGPUFence_TopOfPipe(FRHICommandListBase& RHICmdList, FRHIGPUFence* FenceRHI) final override;
143 virtual void RHICreateTransition(FRHITransition* Transition, const FRHITransitionCreateInfo& CreateInfo) final override;
144 virtual void RHIReleaseTransition(FRHITransition* Transition) final override;
150 virtual void RHIUpdateUniformBuffer(FRHICommandListBase& RHICmdList, FRHIUniformBuffer* UniformBufferRHI, const void* Contents) final override;
151
152 [[nodiscard]] virtual FRHIBufferInitializer RHICreateBufferInitializer(FRHICommandListBase& RHICmdList, const FRHIBufferCreateDesc& CreateDesc) final override;
153
154 virtual void RHIReplaceResources(FRHICommandListBase& RHICmdList, TArray<FRHIResourceReplaceInfo>&& ReplaceInfos) final override;
155 virtual void* LockBuffer_BottomOfPipe(FRHICommandListBase& RHICmdList, FRHIBuffer* Buffer, uint32 Offset, uint32 Size, EResourceLockMode LockMode) final override;
156 virtual void UnlockBuffer_BottomOfPipe(FRHICommandListBase& RHICmdList, FRHIBuffer* Buffer) final override;
157 virtual void* RHILockBuffer(FRHICommandListBase& RHICmdList, FRHIBuffer* BufferRHI, uint32 Offset, uint32 Size, EResourceLockMode LockMode) final override;
158 virtual void RHIUnlockBuffer(FRHICommandListBase& RHICmdList, FRHIBuffer* Buffer) final override;
159
160#if ENABLE_LOW_LEVEL_MEM_TRACKER || UE_MEMORY_TRACE_ENABLED
161 virtual void RHIUpdateAllocationTags(FRHICommandListBase& RHICmdList, FRHIBuffer* Buffer) final override;
162#endif
163
166 virtual FRHICalcTextureSizeResult RHICalcTexturePlatformSize(FRHITextureDesc const& Desc, uint32 FirstMipIndex) final override;
167 virtual void RHIGetTextureMemoryStats(FTextureMemoryStats& OutStats) final override;
168 virtual bool RHIGetTextureMemoryVisualizeData(FColor* TextureData, int32 SizeX, int32 SizeY, int32 Pitch, int32 PixelSize) final override;
169
177
178 FCreateTextureResult BeginCreateTextureInternal(const FRHITextureCreateDesc& CreateDesc, const FRHITransientHeapAllocation* InTransientHeapAllocation);
179 FVulkanTexture* FinalizeCreateTextureInternal(FRHICommandListBase& RHICmdList, FCreateTextureResult CreateResult);
180
181 FVulkanTexture* CreateTextureInternal(FRHICommandListBase& RHICmdList, const FRHITextureCreateDesc& CreateDesc);
182 FVulkanTexture* CreateTextureInternal(const FRHITextureCreateDesc& CreateDesc, const FRHITransientHeapAllocation& InTransientHeapAllocation);
183
184 [[nodiscard]] virtual FRHITextureInitializer RHICreateTextureInitializer(FRHICommandListBase& RHICmdList, const FRHITextureCreateDesc& CreateDesc);
185
187 virtual uint32 RHIComputeMemorySize(FRHITexture* TextureRHI) final override;
189
190 virtual FRHILockTextureResult RHILockTexture(FRHICommandListImmediate& RHICmdList, const FRHILockTextureArgs& Arguments) final override;
191 virtual void RHIUnlockTexture(FRHICommandListImmediate& RHICmdList, const FRHILockTextureArgs& Arguments) final override;
192
193 virtual void RHIUpdateTexture2D(FRHICommandListBase& RHICmdList, FRHITexture* Texture, uint32 MipIndex, const struct FUpdateTextureRegion2D& UpdateRegion, uint32 SourcePitch, const uint8* SourceData) final override
194 {
195 InternalUpdateTexture2D(RHICmdList, Texture, MipIndex, UpdateRegion, SourcePitch, SourceData);
196 }
197 virtual void RHIUpdateTexture3D(FRHICommandListBase& RHICmdList, FRHITexture* Texture, uint32 MipIndex, const struct FUpdateTextureRegion3D& UpdateRegion, uint32 SourceRowPitch, uint32 SourceDepthPitch, const uint8* SourceData) final override
198 {
199 InternalUpdateTexture3D(RHICmdList, Texture, MipIndex, UpdateRegion, SourceRowPitch, SourceDepthPitch, SourceData);
200 }
201 virtual void RHIBindDebugLabelName(FRHICommandListBase& RHICmdList, FRHITexture* Texture, const TCHAR* Name) final override;
202 virtual void RHIReadSurfaceData(FRHITexture* Texture, FIntRect Rect, TArray<FColor>& OutData, FReadSurfaceDataFlags InFlags) final override;
203 virtual void RHIReadSurfaceData(FRHITexture* Texture, FIntRect Rect, TArray<FLinearColor>& OutData, FReadSurfaceDataFlags InFlags) final override;
204 virtual void RHIMapStagingSurface(FRHITexture* Texture, FRHIGPUFence* Fence, void*& OutData, int32& OutWidth, int32& OutHeight, uint32 GPUIndex = 0) final override;
205 virtual void RHIUnmapStagingSurface(FRHITexture* Texture, uint32 GPUIndex = 0) final override;
206
207 virtual void RHIReadSurfaceFloatData(FRHITexture* Texture, FIntRect Rect, TArray<FFloat16Color>& OutData, ECubeFace CubeFace, int32 ArrayIndex, int32 MipIndex) final override;
208 virtual void RHIRead3DSurfaceFloatData(FRHITexture* Texture, FIntRect Rect, FIntPoint ZMinMax, TArray<FFloat16Color>& OutData) final override;
210 virtual void RHIEndRenderQuery_TopOfPipe(FRHICommandListBase& RHICmdList, FRHIRenderQuery* RenderQuery) final override;
211 virtual void RHIBeginRenderQueryBatch_TopOfPipe(FRHICommandListBase& RHICmdList, ERenderQueryType QueryType) final override;
212 virtual void RHIEndRenderQueryBatch_TopOfPipe(FRHICommandListBase& RHICmdList, ERenderQueryType QueryType) final override;
215 virtual void RHIAliasTextureResources(FTextureRHIRef& DestTexture, FTextureRHIRef& SrcTexture) final override;
216 virtual FTextureRHIRef RHICreateAliasedTexture(FTextureRHIRef& SourceTexture) final override;
219 virtual FViewportRHIRef RHICreateViewport(void* WindowHandle, uint32 SizeX, uint32 SizeY, bool bIsFullscreen, EPixelFormat PreferredPixelFormat) final override;
220 virtual void RHIResizeViewport(FRHIViewport* Viewport, uint32 SizeX, uint32 SizeY, bool bIsFullscreen) final override;
221 virtual void RHIResizeViewport(FRHIViewport* Viewport, uint32 SizeX, uint32 SizeY, bool bIsFullscreen, EPixelFormat PreferredPixelFormat) final override;
222 virtual void RHITick(float DeltaTime) final override;
223 virtual void RHIBlockUntilGPUIdle() final override;
226 virtual bool RHIIsRenderingSuspended() final override;
228 virtual void RHIGetSupportedResolution(uint32& Width, uint32& Height) final override;
229 virtual void* RHIGetNativeDevice() final override;
235 virtual IRHIComputeContext* RHIGetCommandContext(ERHIPipeline Pipeline, FRHIGPUMask GPUMask) final override;
236 virtual IRHIUploadContext* RHIGetUploadContext() final override;
237 virtual void RHIFinalizeContext(FRHIFinalizeContextArgs&& Args, TRHIPipelineArray<IRHIPlatformCommandList*>& Output) final override;
238 virtual void RHISubmitCommandLists(FRHISubmitCommandListsArgs&& Args) final override;
240
241 virtual IRHIComputeContext* RHIGetParallelCommandContext(FRHIParallelRenderPassInfo const& ParallelRenderPass, FRHIGPUMask GPUMask) final override;
242 virtual IRHIPlatformCommandList* RHIFinalizeParallelContext(IRHIComputeContext* Context) final override;
243
244 // Transient Resource Functions and Helpers
246
247 // version of the RHIComputePrecachePSOHash
248 static uint32 GetPrecachePSOHashVersion();
252
253 virtual FTextureRHIRef AsyncReallocateTexture2D_RenderThread(class FRHICommandListImmediate& RHICmdList, FRHITexture* Texture2D, int32 NewMipCount, int32 NewSizeX, int32 NewSizeY, FThreadSafeCounter* RequestStatus) override final;
254
257
258 // SRV / UAV creation functions
259 virtual FShaderResourceViewRHIRef RHICreateShaderResourceView (class FRHICommandListBase& RHICmdList, FRHIViewableResource* Resource, FRHIViewDesc const& ViewDesc) final override;
260 virtual FUnorderedAccessViewRHIRef RHICreateUnorderedAccessView(class FRHICommandListBase& RHICmdList, FRHIViewableResource* Resource, FRHIViewDesc const& ViewDesc) final override;
261
262#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
263 virtual FRHIResourceCollectionRef RHICreateResourceCollection(FRHICommandListBase& RHICmdList, TConstArrayView<FRHIResourceCollectionMember> InMembers) final override;
265#endif
266
273
274 virtual FShaderBindingTableRHIRef RHICreateShaderBindingTable(FRHICommandListBase& RHICmdList, const FRayTracingShaderBindingTableInitializer& Initializer) final override;
275
276 // Historical number of times we've presented any and all viewports
277 uint32 TotalPresentCount = 0;
278
280 {
281 return InstanceExtensions;
282 }
283
285 {
286 return InstanceLayers;
287 }
288
290 {
291 return Instance;
292 }
293
295 {
296 return Device;
297 }
298
300 {
301 return (ActiveDebugLayerExtension == EActiveDebugLayerExtension::DebugUtilsExtension);
302 }
303
305 {
306 return OptionalInstanceExtensions;
307 }
308
310
311 virtual void* RHILockStagingBuffer(FRHIStagingBuffer* StagingBuffer, FRHIGPUFence* Fence, uint32 Offset, uint32 SizeRHI) final override;
312 virtual void RHIUnlockStagingBuffer(FRHIStagingBuffer* StagingBuffer) final override;
313
315 {
316 return Viewports;
317 }
318
320 {
321 return ApiVersion;
322 }
323
324 // Runs code on SubmissionThread with access to VkQueue. Useful for plugins.
325 virtual void RHIRunOnQueue(EVulkanRHIRunOnQueueType QueueType, TFunction<void(VkQueue)>&& CodeToRun, bool bWaitForSubmission) final override;
326
327 void DumpCrashMarkers();
328
329 static void SavePipelineCache();
330
331 void ProcessInterruptQueueUntil(FVulkanSyncPointRef SyncPoint);
332 void ProcessInterruptQueueUntil(FGraphEvent* GraphEvent);
333 void EnqueueEndOfPipeTask(TUniqueFunction<void()> TaskFunc, TUniqueFunction<void(FVulkanPayload&)> ModifyPayloadCallback = {});
334 void CompletePayload(FVulkanPayload* Payload);
335
337
338 // Returns true if the calling thread is the interrupt thread
339 // (or acting as the interrupt thread when USE_INTERRUPT_THREAD is zero).
340 bool IsInInterruptThread() const;
341
342 // Called when the GPU has crashed. This function will not return.
343 void ProcessInterruptQueueOnGPUCrash();
344 void TerminateOnGPUCrash(const TCHAR* Message);
345
347 {
348 return (InterruptThread != nullptr);
349 }
350
352 {
353 return (SubmissionThread != nullptr);
354 }
355
356 void KickSubmissionThread(bool bForce = false);
357
358protected:
359 void InitializeSubmissionPipe();
360 void ShutdownSubmissionPipe();
361 bool ProcessSubmissionQueue();
362 bool ProcessInterruptQueue();
363 bool WaitAndProcessInterruptQueue();
364 void KickInterruptThread();
365
366#if RHI_NEW_GPU_PROFILER
367 struct FVulkanTimingArray : public TArray<TUniquePtr<FVulkanTiming>, TInlineAllocator<(int32)EVulkanQueueType::Count>>
368 {
369 FVulkanTiming* CreateNew(FVulkanQueue& Queue)
370 {
371 return Emplace_GetRef(MakeUnique<FVulkanTiming>(Queue)).Get();
372 }
373 };
374 FVulkanTimingArray CurrentTimingPerQueue;
375#endif
376
378 FVulkanThread* SubmissionThread = nullptr;
380 FVulkanThread* InterruptThread = nullptr;
381 FVulkanSemaphore* CPUTimelineSemaphore = nullptr; // used to wake up interrupt thread from CPU
382 std::atomic<uint64> CPUTimelineSemaphoreValue = 1;
386
387 // Used when a dedicated interrupt thread is disabled (D3D12_USE_INTERRUPT_THREAD)
388 // Tracks the thread ID of the thread currently acting as the interrupt thread.
389 uint32 InterruptThreadID = 0;
390
391 uint32 ApiVersion = 0;
395
397
400
401 void CreateInstance();
402 void SelectDevice();
403
405
406 friend class FVulkanViewport;
407
408 /*
409 static void WriteEndFrameTimestamp(void*);
410 */
411
413
414 IConsoleObject* SavePipelineCacheCmd = nullptr;
415 IConsoleObject* RebuildPipelineCacheCmd = nullptr;
416#if VULKAN_SUPPORTS_VALIDATION_CACHE
418#endif
419
420 static void RebuildPipelineCache();
421#if VULKAN_SUPPORTS_VALIDATION_CACHE
422 static void SaveValidationCache();
423#endif
424
425#if UE_BUILD_DEBUG || UE_BUILD_DEVELOPMENT
426 IConsoleObject* DumpMemoryCmd = nullptr;
429 IConsoleObject* DumpLRUCmd = nullptr;
430 IConsoleObject* TrimLRUCmd = nullptr;
431public:
432 static void DumpMemory();
433 static void DumpMemoryFull();
434 static void DumpStagingMemory();
435 static void DumpLRU();
436 static void TrimLRU();
437#endif
438
439public:
441 {
442 None,
443 GfxReconstructLayer,
444 VkTraceLayer,
445 DebugUtilsExtension
446 };
447
448protected:
449 bool bIsStandaloneStereoDevice = false;
450
451 EActiveDebugLayerExtension ActiveDebugLayerExtension = EActiveDebugLayerExtension::None;
452
453#if VULKAN_HAS_DEBUGGING_ENABLED
455
458#endif
459
461
462 void InternalUpdateTexture2D(FRHICommandListBase& RHICmdList, FRHITexture* TextureRHI, uint32 MipIndex, const struct FUpdateTextureRegion2D& UpdateRegion, uint32 SourcePitch, const uint8* SourceData);
463 void InternalUpdateTexture3D(FRHICommandListBase& RHICmdList, FRHITexture* TextureRHI, uint32 MipIndex, const struct FUpdateTextureRegion3D& UpdateRegion, uint32 SourceRowPitch, uint32 SourceDepthPitch, const uint8* SourceData);
464
465 void UpdateUniformBuffer(FRHICommandListBase& RHICmdList, FVulkanUniformBuffer* UniformBuffer, const void* Contents);
466
467 static void SetupValidationRequests();
468
470
471public:
473};
474
476
479{
480public:
481 // IModuleInterface
482 virtual void StartupModule() override;
483
484 // IDynamicRHIModule
485 virtual bool IsSupported() override;
486 virtual bool IsSupported(ERHIFeatureLevel::Type RequestedFeatureLevel) override;
487
489};
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::ANSICHAR ANSICHAR
An ANSI character. Normally a signed type.
Definition Platform.h:1131
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
FRHITransition * RHICreateTransition(const FRHITransitionCreateInfo &CreateInfo)
Definition DynamicRHI.cpp:811
FBoundShaderStateRHIRef RHICreateBoundShaderState(FRHIVertexDeclaration *VertexDeclaration, FRHIVertexShader *VertexShader, FRHIPixelShader *PixelShader, FRHIGeometryShader *GeometryShader)
Definition DynamicRHI.h:1169
uint64 RHIGetMinimumAlignmentForBufferBackedSRV(EPixelFormat Format)
Definition DynamicRHI.h:1249
void RHIReleaseTransition(FRHITransition *Transition)
Definition DynamicRHI.h:1371
FRayTracingAccelerationStructureSize RHICalcRayTracingSceneSize(const FRayTracingSceneInitializer &Initializer)
Definition DynamicRHI.h:1401
FSamplerStateRHIRef RHICreateSamplerState(const FSamplerStateInitializerRHI &Initializer)
Definition DynamicRHI.h:1145
FUniformBufferRHIRef RHICreateUniformBuffer(const void *Contents, const FRHIUniformBufferLayout *Layout, EUniformBufferUsage Usage, EUniformBufferValidation Validation=EUniformBufferValidation::ValidateResources)
Definition DynamicRHI.h:1231
FRayTracingShaderRHIRef RHICreateRayTracingShader(TArrayView< const uint8 > Code, const FSHAHash &Hash, EShaderFrequency ShaderFrequency)
Definition DynamicRHI.h:1411
FRHICalcTextureSizeResult RHICalcTexturePlatformSize(FRHITextureDesc const &Desc, uint32 FirstMipIndex=0)
Definition DynamicRHI.h:1237
bool RHIGetRenderQueryResult(FRHIRenderQuery *RenderQuery, uint64 &OutResult, bool bWait, uint32 GPUIndex=INDEX_NONE)
Definition DynamicRHI.h:1264
FVertexShaderRHIRef RHICreateVertexShader(TArrayView< const uint8 > Code, const FSHAHash &Hash)
Definition DynamicRHI.h:1099
uint64 RHIComputeStatePrecachePSOHash(const FGraphicsPipelineStateInitializer &Initializer)
Definition DynamicRHI.h:1386
void RHIGetTextureMemoryStats(FTextureMemoryStats &OutStats)
Definition DynamicRHI.h:1254
FComputePipelineStateRHIRef RHICreateComputePipelineState(FRHIComputeShader *ComputeShader)
Definition DynamicRHI.h:1197
class IRHICommandContext * RHIGetDefaultContext()
Definition DynamicRHI.h:1362
void RHITick(float DeltaTime)
Definition DynamicRHI.h:1331
FViewportRHIRef RHICreateViewport(void *WindowHandle, uint32 SizeX, uint32 SizeY, bool bIsFullscreen, EPixelFormat PreferredPixelFormat)
Definition DynamicRHI.h:1303
FGeometryShaderRHIRef RHICreateGeometryShader(TArrayView< const uint8 > Code, const FSHAHash &Hash)
Definition DynamicRHI.h:1117
FRayTracingSceneRHIRef RHICreateRayTracingScene(FRayTracingSceneInitializer Initializer)
Definition DynamicRHI.h:1406
uint64 RHIComputePrecachePSOHash(const FGraphicsPipelineStateInitializer &Initializer)
Definition DynamicRHI.h:1391
FStagingBufferRHIRef RHICreateStagingBuffer()
Definition DynamicRHI.h:1140
FGPUFenceRHIRef RHICreateGPUFence(const FName &Name)
Definition DynamicRHI.h:1135
TRefCountPtr< FRHIRayTracingPipelineState > RHICreateRayTracingPipelineState(const FRayTracingPipelineStateInitializer &Initializer)
Definition DynamicRHI.h:1220
FPixelShaderRHIRef RHICreatePixelShader(TArrayView< const uint8 > Code, const FSHAHash &Hash)
Definition DynamicRHI.h:1093
FTextureRHIRef RHIGetViewportBackBuffer(FRHIViewport *Viewport)
Definition DynamicRHI.h:1274
FVertexDeclarationRHIRef RHICreateVertexDeclaration(const FVertexDeclarationElementList &Elements)
Definition DynamicRHI.h:1191
bool RHIGetAvailableResolutions(FScreenResolutionArray &Resolutions, bool bIgnoreRefreshRate)
Definition DynamicRHI.h:1352
FRenderQueryRHIRef RHICreateRenderQuery(ERenderQueryType QueryType)
Definition DynamicRHI.h:1215
FBlendStateRHIRef RHICreateBlendState(const FBlendStateInitializerRHI &Initializer)
Definition DynamicRHI.h:1163
bool RHIMatchPrecachePSOInitializers(const FGraphicsPipelineStateInitializer &LHS, const FGraphicsPipelineStateInitializer &RHS)
Definition DynamicRHI.h:1396
FDepthStencilStateRHIRef RHICreateDepthStencilState(const FDepthStencilStateInitializerRHI &Initializer)
Definition DynamicRHI.h:1157
uint32 RHIComputeMemorySize(FRHITexture *TextureRHI)
Definition DynamicRHI.h:1259
void RHIResumeRendering()
Definition DynamicRHI.h:1347
FAmplificationShaderRHIRef RHICreateAmplificationShader(TArrayView< const uint8 > Code, const FSHAHash &Hash)
Definition DynamicRHI.h:1111
void RHIResizeViewport(FRHIViewport *Viewport, uint32 SizeX, uint32 SizeY, bool bIsFullscreen, EPixelFormat PreferredPixelFormat)
Definition DynamicRHI.h:1309
FMeshShaderRHIRef RHICreateMeshShader(TArrayView< const uint8 > Code, const FSHAHash &Hash)
Definition DynamicRHI.h:1105
void RHIAdvanceFrameForGetViewportBackBuffer(FRHIViewport *Viewport)
Definition DynamicRHI.h:1296
FGraphicsPipelineStateRHIRef RHICreateGraphicsPipelineState(const FGraphicsPipelineStateInitializer &Initializer)
Definition DynamicRHI.h:1184
void RHISuspendRendering()
Definition DynamicRHI.h:1342
FComputeShaderRHIRef RHICreateComputeShader(TArrayView< const uint8 > Code, const FSHAHash &Hash)
Definition DynamicRHI.h:1123
IRHITransientResourceAllocator * RHICreateTransientResourceAllocator()
Definition DynamicRHI.h:1376
FRasterizerStateRHIRef RHICreateRasterizerState(const FRasterizerStateInitializerRHI &Initializer)
Definition DynamicRHI.h:1151
void RHIGetSupportedResolution(uint32 &Width, uint32 &Height)
Definition DynamicRHI.h:1357
#define PRAGMA_ENABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:12
#define PRAGMA_DISABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:8
EVulkanRHIRunOnQueueType
Definition IVulkanDynamicRHI.h:34
void Init()
Definition LockFreeList.h:4
EPixelFormat
Definition PixelFormat.h:16
ERHIAccess
Definition RHIAccess.h:11
FTextureReferenceRHIRef RHICreateTextureReference(FRHITexture *InReferencedTexture=nullptr)
Definition RHICommandList.h:5536
FRayTracingGeometryRHIRef RHICreateRayTracingGeometry(const FRayTracingGeometryInitializer &Initializer)
Definition RHICommandList.h:5708
void * RHILockStagingBuffer(FRHIStagingBuffer *StagingBuffer, uint32 Offset, uint32 Size)
Definition RHICommandList.h:5693
FTextureRHIRef RHIAsyncCreateTexture2D(uint32 SizeX, uint32 SizeY, uint8 Format, uint32 NumMips, ETextureCreateFlags Flags, ERHIAccess InResourceState, void **InitialMipData, uint32 NumInitialMips, const TCHAR *DebugName, FGraphEventRef &OutCompletionEvent)
Definition RHICommandList.h:5558
void RHIUpdateTextureReference(FRHITextureReference *TextureRef, FRHITexture *NewTexture)
Definition RHICommandList.h:5542
void * RHIGetNativeInstance()
Definition RHICommandList.h:5678
FTextureRHIRef RHIAsyncReallocateTexture2D(FRHITexture *Texture2D, int32 NewMipCount, int32 NewSizeX, int32 NewSizeY, FThreadSafeCounter *RequestStatus)
Definition RHICommandList.h:5565
void RHIUnlockStagingBuffer(FRHIStagingBuffer *StagingBuffer)
Definition RHICommandList.h:5703
void * RHIGetNativeComputeQueue()
Definition RHICommandList.h:5673
void * RHIGetNativeDevice()
Definition RHICommandList.h:5658
void RHIFlushResources()
Definition RHICommandList.h:5643
void * RHIGetNativePhysicalDevice()
Definition RHICommandList.h:5663
void RHIBindDebugLabelName(FRHITexture *Texture, const TCHAR *Name)
Definition RHICommandList.h:5729
FRayTracingAccelerationStructureSize RHICalcRayTracingGeometrySize(const FRayTracingGeometryInitializer &Initializer)
Definition RHICommandList.h:5713
void RHIEndUpdateTexture3D(FUpdateTexture3DData &UpdateData)
Definition RHICommandList.h:5628
void * RHIGetNativeGraphicsQueue()
Definition RHICommandList.h:5668
FUpdateTexture3DData RHIBeginUpdateTexture3D(FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion3D &UpdateRegion)
Definition RHICommandList.h:5623
EShaderFrequency
Definition RHIDefinitions.h:202
EUniformBufferUsage
Definition RHIDefinitions.h:536
ECubeFace
Definition RHIDefinitions.h:525
EResourceLockMode
Definition RHIDefinitions.h:785
EUniformBufferValidation
Definition RHIDefinitions.h:546
ETextureCreateFlags
Definition RHIDefinitions.h:1091
ERenderQueryType
Definition RHIDefinitions.h:258
ERHIPipeline
Definition RHIPipeline.h:13
void VulkanSetImageLayout(FVulkanCommandBuffer *CmdBuffer, VkImage Image, VkImageLayout OldLayout, VkImageLayout NewLayout, const VkImageSubresourceRange &SubresourceRange)
Definition VulkanBarriers.cpp:1817
uint32 Offset
Definition VulkanMemory.cpp:4033
uint32 Size
Definition VulkanMemory.cpp:4034
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition TaskGraphInterfaces.h:471
Definition RHI.h:403
Definition RHIResources.h:4820
Definition DynamicRHI.h:206
Definition Float16Color.h:13
Definition RHIResources.h:4572
Definition NameTypes.h:617
Definition RHIResources.h:1581
Definition RHICommandList.h:455
Definition RHICommandList.h:4626
Definition RHIResources.h:2387
Definition RHIResources.h:978
Definition RHIResources.h:972
Definition RHIResources.h:2444
Definition RHIResourceCollection.h:46
Definition RHIResourceReplace.h:12
Definition RHIResources.h:3981
Definition RHITextureReference.h:8
Definition RHIResources.h:2153
Definition RHIResources.h:1232
Definition RHIResources.h:725
Definition RHIResources.h:954
Definition RHIResources.h:1265
Definition RHIResources.h:2515
Definition RHIResources.h:5023
Definition RHITypes.h:16
Definition SecureHash.h:226
Definition ThreadSafeCounter.h:14
Definition VulkanContext.h:241
Definition VulkanDevice.h:279
Definition VulkanDynamicRHI.h:479
Definition VulkanDynamicRHI.h:69
TArray< const ANSICHAR * > InstanceExtensions
Definition VulkanDynamicRHI.h:393
FCriticalSection InterruptCS
Definition VulkanDynamicRHI.h:379
static FVulkanDynamicRHI & Get()
Definition VulkanDynamicRHI.h:72
FVulkanDevice * GetDevice() const
Definition VulkanDynamicRHI.h:294
bool HasInterruptThread() const
Definition VulkanDynamicRHI.h:346
FOptionalVulkanInstanceExtensions OptionalInstanceExtensions
Definition VulkanDynamicRHI.h:469
FCriticalSection LockBufferCS
Definition VulkanDynamicRHI.h:460
const TArray< const ANSICHAR * > & GetInstanceExtensions() const
Definition VulkanDynamicRHI.h:279
TQueue< FVulkanPlatformCommandList *, EQueueMode::Mpsc > PendingPayloadsForSubmission
Definition VulkanDynamicRHI.h:383
virtual void RHIUpdateTexture3D(FRHICommandListBase &RHICmdList, FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion3D &UpdateRegion, uint32 SourceRowPitch, uint32 SourceDepthPitch, const uint8 *SourceData) final override
Definition VulkanDynamicRHI.h:197
EActiveDebugLayerExtension
Definition VulkanDynamicRHI.h:441
TArray< FVulkanViewport * > Viewports
Definition VulkanDynamicRHI.h:399
static TSharedPtr< IHeadMountedDisplayVulkanExtensions, ESPMode::ThreadSafe > HMDVulkanExtensions
Definition VulkanDynamicRHI.h:472
const FOptionalVulkanInstanceExtensions & GetOptionalExtensions() const
Definition VulkanDynamicRHI.h:304
TMap< VkSemaphore, FBinarySemaphoreSignalInfo > SignaledSemaphores
Definition VulkanDynamicRHI.h:384
uint32 GetApiVersion() const
Definition VulkanDynamicRHI.h:319
const TArray< const ANSICHAR * > & GetInstanceLayers() const
Definition VulkanDynamicRHI.h:284
VkInstance GetInstance() const
Definition VulkanDynamicRHI.h:289
bool HasSubmissionThread() const
Definition VulkanDynamicRHI.h:351
TArray< const ANSICHAR * > InstanceLayers
Definition VulkanDynamicRHI.h:394
TOptional< uint64 > ExternalGPUTime
Definition VulkanDynamicRHI.h:336
VkInstance Instance
Definition VulkanDynamicRHI.h:392
virtual void RHIUpdateTexture2D(FRHICommandListBase &RHICmdList, FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion2D &UpdateRegion, uint32 SourcePitch, const uint8 *SourceData) final override
Definition VulkanDynamicRHI.h:193
FVulkanDevice * Device
Definition VulkanDynamicRHI.h:396
FGraphEventRef EopTask
Definition VulkanDynamicRHI.h:385
bool SupportsDebugUtilsExt() const
Definition VulkanDynamicRHI.h:299
TArray< FVulkanViewport * > & GetViewports()
Definition VulkanDynamicRHI.h:314
FCriticalSection SubmissionCS
Definition VulkanDynamicRHI.h:377
Definition VulkanFramebuffer.h:8
Definition VulkanSubmission.h:148
Definition VulkanQueue.h:53
Definition VulkanSynchronization.h:127
Definition VulkanResources.h:604
Definition VulkanSubmission.cpp:73
Definition VulkanResources.h:957
Definition VulkanViewport.h:44
Definition IConsoleManager.h:387
Definition DynamicRHI.h:1472
Definition IHeadMountedDisplayVulkanExtensions.h:13
Definition RHIContext.h:693
Definition RHIContext.h:257
Definition RHIContext.h:234
Definition RHITransientResourceAllocator.h:536
Definition RHIContext.h:573
Definition ArrayView.h:139
Definition Array.h:670
Definition AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
Definition Queue.h:48
Definition RHIPipeline.h:55
Definition FunctionFwd.h:19
Definition GPUProfiler.h:310
Type
Definition RHIFeatureLevel.h:20
@ Num
Definition RHIFeatureLevel.h:54
Definition RHIResources.h:246
static RHI_API const FClearValueBinding Transparent
Definition RHIResources.h:362
Definition Color.h:486
Definition VulkanDynamicRHI.h:27
uint32 Packed
Definition VulkanDynamicRHI.h:38
uint32 HasKHRExternalMemoryCapabilities
Definition VulkanDynamicRHI.h:33
uint32 HasKHRGetPhysicalDeviceProperties2
Definition VulkanDynamicRHI.h:36
Definition RHIResources.h:1417
Definition RHIBufferInitializer.h:12
Definition DynamicRHI.h:120
Definition MultiGPU.h:33
Definition DynamicRHI.h:149
Definition DynamicRHI.h:198
Definition RHIResources.h:5548
Definition RHIResources.h:1938
Definition RHIResources.h:1689
Definition RHITextureInitializer.h:50
Definition RHITransientResourceAllocator.h:161
Definition RHITransition.h:382
Definition RHITransition.h:475
Definition RHIResources.h:1150
Definition RHIResources.h:2648
Definition RHI.h:278
Definition RHIResources.h:3693
Definition RHIResources.h:3496
Definition RHIResources.h:3669
Definition RHIResources.h:3635
Definition RHI.h:232
Definition RHIStats.h:12
Definition RHICommandList.h:220
Definition RHITypes.h:127
Definition RHITypes.h:155
Definition VulkanDynamicRHI.h:171
VkImageLayout DefaultLayout
Definition VulkanDynamicRHI.h:173
bool bTransientResource
Definition VulkanDynamicRHI.h:174
FVulkanTexture * Texture
Definition VulkanDynamicRHI.h:172
bool bClear
Definition VulkanDynamicRHI.h:175
Definition VulkanSubmission.h:215
Definition IVulkanDynamicRHI.h:9
Definition IVulkanDynamicRHI.h:28
Definition IVulkanDynamicRHI.h:16
Definition IVulkanDynamicRHI.h:40
Definition LinuxPlatformSplash.cpp:43
Definition Optional.h:131
Definition IntPoint.h:25