32 UE_DEPRECATED(5.3,
"Vulkan 1.1 is now a requirement so there is no need to check these capabilities.")
48#if RHI_NEW_GPU_PROFILER
58 uint64 GPUFrequency = 0, GPUTimestamp = 0;
59 uint64 CPUFrequency = 0, CPUTimestamp = 0;
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;
115 virtual void RHIRegisterWork(
uint32 NumPrimitives)
final override;
116 virtual void RHISubmitUploadCommandBuffer() final
override;
128 virtual void RHIEndFrame(
const FRHIEndFrameArgs& Args)
final override;
160#if ENABLE_LOW_LEVEL_MEM_TRACKER || UE_MEMORY_TRACE_ENABLED
195 InternalUpdateTexture2D(RHICmdList,
Texture, MipIndex, UpdateRegion,
SourcePitch, SourceData);
238 virtual void RHISubmitCommandLists(FRHISubmitCommandListsArgs&& Args) final
override;
262#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
281 return InstanceExtensions;
286 return InstanceLayers;
301 return (ActiveDebugLayerExtension == EActiveDebugLayerExtension::DebugUtilsExtension);
306 return OptionalInstanceExtensions;
327 void DumpCrashMarkers();
329 static void SavePipelineCache();
332 void ProcessInterruptQueueUntil(
FGraphEvent* GraphEvent);
340 bool IsInInterruptThread()
const;
343 void ProcessInterruptQueueOnGPUCrash();
344 void TerminateOnGPUCrash(
const TCHAR* Message);
348 return (InterruptThread !=
nullptr);
353 return (SubmissionThread !=
nullptr);
356 void KickSubmissionThread(
bool bForce =
false);
359 void InitializeSubmissionPipe();
360 void ShutdownSubmissionPipe();
361 bool ProcessSubmissionQueue();
362 bool ProcessInterruptQueue();
363 bool WaitAndProcessInterruptQueue();
364 void KickInterruptThread();
366#if RHI_NEW_GPU_PROFILER
367 struct FVulkanTimingArray :
public TArray<TUniquePtr<FVulkanTiming>, TInlineAllocator<(int32)EVulkanQueueType::Count>>
382 std::atomic<uint64> CPUTimelineSemaphoreValue = 1;
401 void CreateInstance();
416#if VULKAN_SUPPORTS_VALIDATION_CACHE
420 static void RebuildPipelineCache();
421#if VULKAN_SUPPORTS_VALIDATION_CACHE
425#if UE_BUILD_DEBUG || UE_BUILD_DEVELOPMENT
432 static void DumpMemory();
449 bool bIsStandaloneStereoDevice =
false;
453#if VULKAN_HAS_DEBUGGING_ENABLED
467 static void SetupValidationRequests();
482 virtual void StartupModule()
override;
485 virtual bool IsSupported()
override;
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
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
EVulkanRHIRunOnQueueType
Definition IVulkanDynamicRHI.h:34
void Init()
Definition LockFreeList.h:4
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
Definition TaskGraphInterfaces.h:471
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 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:725
Definition RHIResources.h:954
Definition RHIResources.h:1265
Definition RHIResources.h:2515
Definition RHIResources.h:5023
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 VulkanViewport.h:44
Definition IConsoleManager.h:387
Definition DynamicRHI.h:1472
Definition IHeadMountedDisplayVulkanExtensions.h:13
Definition RHIContext.h:693
Definition RHIContext.h:257
Definition RHITransientResourceAllocator.h:536
Definition RHIContext.h:573
Definition ArrayView.h:139
Definition AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
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 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 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:2648
Definition RHIResources.h:3693
Definition RHIResources.h:3496
Definition RHIResources.h:3669
Definition RHIResources.h:3635
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 IVulkanDynamicRHI.h:9
Definition IVulkanDynamicRHI.h:28
Definition IVulkanDynamicRHI.h:16
Definition IVulkanDynamicRHI.h:40
Definition LinuxPlatformSplash.cpp:43
Definition Optional.h:131