31#define VULKAN_USE_DEBUG_NAMES 1
32#if VULKAN_USE_DEBUG_NAMES
33#define VULKAN_SET_DEBUG_NAME(Device, Type, Handle, Format, ...) (Device).VulkanSetObjectName(Type, (uint64)Handle, *FString::Printf(Format, __VA_ARGS__))
35#define VULKAN_SET_DEBUG_NAME(Device, Type, Handle, Format, ...) do{}while(0)
202 class FDeferredDeletionQueue2
207 ~FDeferredDeletionQueue2();
225 DeviceMemoryAllocation,
231 template <
typename T>
232 inline void EnqueueResource(EType Type, T
Handle)
234 static_assert(
sizeof(T) <=
sizeof(
uint64),
"Vulkan resource handle type size too large.");
247 void EnqueueResourceAllocation(FVulkanAllocation& Allocation);
248 void EnqueueDeviceAllocation(FDeviceMemoryAllocation* DeviceMemoryAllocation);
254 ReleaseResources(
true);
265 FVulkanAllocation Allocation;
266 FDeviceMemoryAllocation* DeviceMemoryAllocation;
317 return bPresentOnComputeQueue;
336 return Queues[(
int32)QueueType];
373 return FragmentSizeMap[Rate];
378 return GpuProps.limits;
388 return GpuSubgroupProps;
393 return RayTracingCompactionRequestHandler;
398 return RayTracingPipelineLibraryCache;
404#if VULKAN_SUPPORTS_VALIDATION_CACHE
413 return PhysicalDeviceFeatures;
439 return DeviceMemoryManager;
449 return MemoryManager;
454 return DeferredDeletionQueue;
459 return StagingManager;
469 return *TempBlockAllocator;
474 return *RenderPassManager;
479 return *DescriptorSetCache;
484 return *DescriptorPoolsManager;
489 return BindlessDescriptorManager;
499 return ShaderFactory;
504 return *ImmediateContext;
509#if VULKAN_ENABLE_DRAW_MARKERS
542 return OptionalDeviceExtensions;
547 return OptionalDeviceExtensionProperties;
581 return QueueFamilyProps;
588#if RHI_NEW_GPU_PROFILER
598 return *GlobalSamplers[(
uint32)Type];
608 return ActiveQueueFamilies;
621 void InitGlobalSamplers();
630 VulkanRHI::FDeferredDeletionQueue2 DeferredDeletionQueue;
673 uint32 OcclusionQueryPoolSize = 256;
682 bool bPresentOnComputeQueue =
false;
703#if VULKAN_SUPPORTS_VALIDATION_CACHE
707#if VULKAN_ENABLE_DRAW_MARKERS
717 void SetupDrawMarkers();
#define checkNoEntry()
Definition AssertionMacros.h:316
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
EGpuVendorId
Definition RHIDefinitions.h:1006
EVRSShadingRate
Definition RHIDefinitions.h:860
@ VRSSR_Last
Definition RHIDefinitions.h:869
ERHIPipeline
Definition RHIPipeline.h:13
EVulkanQueueType
Definition VulkanQueue.h:27
Definition VulkanBindlessDescriptorManager.h:17
Definition VulkanContext.h:483
Definition VulkanContext.h:241
Definition VulkanPipeline.h:705
Definition VulkanDescriptorSets.h:282
Definition VulkanDescriptorSets.h:404
Definition VulkanDescriptorSets.h:866
Definition VulkanExtensions.h:102
Definition VulkanDevice.h:279
FVulkanQueue * GetQueue(ERHIPipeline Pipeline)
Definition VulkanDevice.h:320
void ForEachQueue(TFunctionRef< void(FVulkanQueue &)> Callback)
Definition VulkanDevice.cpp:1679
FVulkanRayTracingPipelineLibraryCache * GetRayTracingPipelineLibraryCache()
Definition VulkanDevice.h:396
EGpuVendorId GetVendorId() const
Definition VulkanDevice.h:295
FVulkanRayTracingCompactionRequestHandler * GetRayTracingCompactionRequestHandler()
Definition VulkanDevice.h:391
const FVulkanPhysicalDeviceFeatures & GetPhysicalDeviceFeatures() const
Definition VulkanDevice.h:411
FVulkanDescriptorSetCache & GetDescriptorSetCache()
Definition VulkanDevice.h:477
void CreateDevice(TArray< const ANSICHAR * > &DeviceLayers, FVulkanDeviceExtensionArray &UEExtensions)
Definition VulkanDevice.cpp:309
FVulkanQueue * GetGraphicsQueue()
Definition VulkanDevice.h:339
void CleanUpRayTracing()
Definition VulkanRayTracing.cpp:1546
bool HasAsyncComputeQueue() const
Definition VulkanDevice.h:300
const FOptionalVulkanDeviceExtensionProperties & GetOptionalExtensionProperties() const
Definition VulkanDevice.h:545
void InitializeRayTracing()
Definition VulkanRayTracing.cpp:1500
FVulkanDescriptorPoolsManager & GetDescriptorPoolsManager()
Definition VulkanDevice.h:482
const VkPhysicalDeviceProperties & GetDeviceProperties() const
Definition VulkanDevice.h:366
const FVulkanSamplerState & GetDefaultSampler() const
Definition VulkanDevice.h:430
FVulkanFenceManager & GetFenceManager()
Definition VulkanDevice.h:462
void InitGPU()
Definition VulkanDevice.cpp:1284
FVulkanQueryPool * AcquireTimingQueryPool()
Definition VulkanQuery.cpp:155
void NotifyDeletedComputePipeline(class FVulkanComputePipeline *Pipeline)
Definition VulkanDevice.cpp:1559
class FVulkanPipelineStateCacheManager * GetPipelineStateCache()
Definition VulkanDevice.h:531
VkEvent GetBarrierEvent()
Definition VulkanDevice.cpp:1751
TMap< uint32, FSamplerStateRHIRef > & GetSamplerMap()
Definition VulkanDevice.h:492
FVulkanQueue * GetTransferQueue()
Definition VulkanDevice.h:349
void RemoveStaleQueryPools()
Definition VulkanQuery.cpp:175
FVulkanQueue * GetQueue(EVulkanQueueType QueueType)
Definition VulkanDevice.h:334
void PrepareForDestroy()
Definition VulkanDevice.cpp:1438
FVulkanQueue * GetPresentQueue()
Definition VulkanDevice.h:354
const VkPhysicalDeviceSubgroupProperties & GetDeviceSubgroupProperties() const
Definition VulkanDevice.h:386
VkBuffer CreateBuffer(VkDeviceSize BufferSize, VkBufferUsageFlags BufferUsageFlags, VkBufferCreateFlags BufferCreateFlags=0) const
Definition VulkanDevice.cpp:1718
bool HasTransferQueue() const
Definition VulkanDevice.h:305
const TArray< VkQueueFamilyProperties > & GetQueueFamilyProps()
Definition VulkanDevice.h:579
~FVulkanDevice()
Definition VulkanDevice.cpp:277
bool SupportsBindless() const
Definition VulkanDevice.cpp:1203
void VulkanSetObjectName(VkObjectType Type, uint64_t Handle, const TCHAR *Name)
Definition VulkanDevice.cpp:1573
void ReleaseQueryPool(FVulkanQueryPool *Pool)
Definition VulkanQuery.cpp:169
const VkComponentMapping & GetFormatComponentMapping(EPixelFormat UEFormat) const
Definition VulkanDevice.cpp:1533
const TArray< uint32 > & GetActiveQueueFamilies() const
Definition VulkanDevice.h:606
VkDevice GetHandle() const
Definition VulkanDevice.h:425
bool NeedsAllPlanes() const
Definition VulkanDevice.h:550
void NotifyDeletedGfxPipeline(class FVulkanGraphicsPipelineState *Pipeline)
Definition VulkanDevice.cpp:1550
VulkanRHI::FDeviceMemoryManager & GetDeviceMemoryManager()
Definition VulkanDevice.h:437
FVulkanRenderPassManager & GetRenderPassManager()
Definition VulkanDevice.h:472
const FVulkanSamplerState & GetGlobalSamplers(FVulkanShaderHeader::EGlobalSamplerType Type) const
Definition VulkanDevice.h:596
const TArray< const ANSICHAR * > & GetDeviceExtensions()
Definition VulkanDevice.h:586
bool UseMinimalSubmits() const
Definition VulkanDevice.cpp:503
const VkPhysicalDeviceLimits & GetLimits() const
Definition VulkanDevice.h:376
FVulkanShaderFactory & GetShaderFactory()
Definition VulkanDevice.h:497
void ChooseVariableRateShadingMethod()
Definition VulkanDevice.cpp:1209
FVulkanTransientHeapCache & GetOrCreateTransientHeapCache()
Definition VulkanDevice.cpp:1589
FVulkanBindlessDescriptorManager * GetBindlessDescriptorManager()
Definition VulkanDevice.h:487
VulkanRHI::FTempBlockAllocator & GetTempBlockAllocator()
Definition VulkanDevice.h:467
void WaitUntilIdle()
Definition VulkanDevice.cpp:1526
bool HasMultipleQueues() const
Definition VulkanDevice.h:310
void NotifyDeletedImage(VkImage Image, bool bRenderTarget)
Definition VulkanDevice.cpp:1539
FVulkanCommandListContextImmediate & GetImmediateContext()
Definition VulkanDevice.h:502
FGPUTimingCalibrationTimestamp GetCalibrationTimestamp()
Definition VulkanDevice.cpp:1651
VulkanRHI::FDeferredDeletionQueue2 & GetDeferredDeletionQueue()
Definition VulkanDevice.h:452
VulkanRHI::FStagingManager & GetStagingManager()
Definition VulkanDevice.h:457
FVulkanQueryPool * AcquireOcclusionQueryPool(uint32 NumQueries)
Definition VulkanQuery.cpp:122
void Destroy()
Definition VulkanDevice.cpp:1443
void ReleaseBarrierEvent(VkEvent Handle)
Definition VulkanDevice.cpp:1779
VulkanRHI::FMemoryManager & GetMemoryManager()
Definition VulkanDevice.h:447
FVulkanQueue * GetComputeQueue()
Definition VulkanDevice.h:344
const VkPhysicalDeviceMemoryProperties & GetDeviceMemoryProperties() const
Definition VulkanDevice.h:442
bool SupportsParallelRendering() const
Definition VulkanDevice.h:555
VkExtent2D GetBestMatchedFragmentSize(EVRSShadingRate Rate) const
Definition VulkanDevice.h:371
bool SupportsGraphicPipelineLibraries() const
Definition VulkanDevice.h:560
void SetupPresentQueue(VkSurfaceKHR Surface)
Definition VulkanSwapChain.cpp:917
const VkFormatProperties & GetFormatProperties(VkFormat InFormat) const
Definition VulkanDevice.cpp:995
VkPhysicalDevice GetPhysicalHandle() const
Definition VulkanDevice.h:361
const FOptionalVulkanDeviceExtensions & GetOptionalExtensions() const
Definition VulkanDevice.h:540
bool HasUnifiedMemory() const
Definition VulkanDevice.h:416
const VkPhysicalDeviceIDPropertiesKHR & GetDeviceIdProperties() const
Definition VulkanDevice.h:381
bool CanPresentOnComputeQueue() const
Definition VulkanDevice.h:315
Definition VulkanDynamicRHI.h:69
Definition VulkanSynchronization.h:58
Definition VulkanPipeline.h:735
Definition VulkanDevice.h:179
VkPhysicalDeviceFeatures Core_1_0
Definition VulkanDevice.h:188
VkPhysicalDeviceVulkan11Features Core_1_1
Definition VulkanDevice.h:189
FVulkanPhysicalDeviceFeatures()
Definition VulkanDevice.h:181
Definition VulkanPipeline.h:492
Definition VulkanQuery.h:49
Definition VulkanQueue.h:53
Definition VulkanRayTracing.h:334
Definition VulkanRayTracing.cpp:1323
Definition VulkanRenderpass.h:906
Definition VulkanState.h:17
Definition VulkanResources.h:330
Definition VulkanTransientResourceAllocator.h:31
Definition RHI.Build.cs:8
Definition ArrayView.h:139
Definition AssetRegistryState.h:50
Definition UnrealString.h.inl:34
Definition StaticArray.h:26
Definition VulkanMemory.h:288
const VkPhysicalDeviceMemoryProperties & GetMemoryProperties() const
Definition VulkanMemory.cpp:5037
bool HasUnifiedMemory() const
Definition VulkanMemory.h:301
Definition VulkanMemory.h:717
Definition VulkanMemory.h:909
Definition VulkanMemory.h:955
Definition PipelineStateCache.cpp:26
EType
Definition AccessDetection.h:11
Definition VulkanCommandBuffer.h:22
static UE_FORCEINLINE_HINT void * Memzero(void *Dest, SIZE_T Count)
Definition UnrealMemory.h:131
Definition VulkanDevice.h:152
VkPhysicalDeviceAccelerationStructurePropertiesKHR AccelerationStructureProps
Definition VulkanDevice.h:164
VkPhysicalDeviceFragmentDensityMap2FeaturesEXT FragmentDensityMap2Features
Definition VulkanDevice.h:169
VkPhysicalDeviceDescriptorBufferPropertiesEXT DescriptorBufferProps
Definition VulkanDevice.h:161
VkPhysicalDeviceFragmentDensityMapFeaturesEXT FragmentDensityMapFeatures
Definition VulkanDevice.h:168
FOptionalVulkanDeviceExtensionProperties()
Definition VulkanDevice.h:153
VkPhysicalDeviceMaintenance7PropertiesKHR PhysicalDeviceMaintenance7Properties
Definition VulkanDevice.h:159
VkPhysicalDeviceFragmentShadingRateFeaturesKHR FragmentShadingRateFeatures
Definition VulkanDevice.h:167
VkPhysicalDeviceRayTracingPipelinePropertiesKHR RayTracingPipelineProps
Definition VulkanDevice.h:165
VkPhysicalDeviceSubgroupSizeControlPropertiesEXT SubgroupSizeControlProperties
Definition VulkanDevice.h:162
VkPhysicalDeviceDriverPropertiesKHR PhysicalDeviceDriverProperties
Definition VulkanDevice.h:158
VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR ComputeShaderDerivativesFeatures
Definition VulkanDevice.h:172
VkPhysicalDeviceMeshShaderPropertiesEXT MeshShaderProperties
Definition VulkanDevice.h:175
VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT GraphicsPipelineLibraryProperties
Definition VulkanDevice.h:173
VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR FragmentShaderBarycentricProps
Definition VulkanDevice.h:171
Definition VulkanDevice.h:39
uint64 HasMemoryBudget
Definition VulkanDevice.h:47
uint64 HasMemoryPriority
Definition VulkanDevice.h:46
bool HasAnyExtendedDynamicState() const
Definition VulkanDevice.h:141
uint64 HasANDROIDExternalMemoryHardwareBuffer
Definition VulkanDevice.h:75
uint64 HasEXTDescriptorBuffer
Definition VulkanDevice.h:61
uint64 HasKHRMaintenance4
Definition VulkanDevice.h:100
uint64 HasEXTScalarBlockLayout
Definition VulkanDevice.h:86
uint64 HasBufferDeviceAddress
Definition VulkanDevice.h:87
uint64 HasEXTSubgroupSizeControl
Definition VulkanDevice.h:104
uint64 HasShaderFloatControls
Definition VulkanDevice.h:89
uint64 Packed
Definition VulkanDevice.h:115
uint64 HasKHRMaintenance5
Definition VulkanDevice.h:101
uint64 HasEXTValidationCache
Definition VulkanDevice.h:45
uint64 HasEXTTextureCompressionASTCHDR
Definition VulkanDevice.h:99
uint64 HasAMDBufferMarker
Definition VulkanDevice.h:72
uint64 HasDeferredHostOperations
Definition VulkanDevice.h:59
uint64 HasEXTCalibratedTimestamps
Definition VulkanDevice.h:60
uint64 HasKHRFragmentShaderBarycentric
Definition VulkanDevice.h:52
uint64 HasKHRShaderAtomicInt64
Definition VulkanDevice.h:85
uint64 HasEXTExtendedDynamicState1
Definition VulkanDevice.h:106
uint64 HasEXTToolingInfo
Definition VulkanDevice.h:64
bool HasGPUCrashDumpExtensions() const
Definition VulkanDevice.h:124
uint64 HasKHRSynchronization2
Definition VulkanDevice.h:102
uint64 HasKHRMultiview
Definition VulkanDevice.h:78
uint64 HasEXTDeviceFault
Definition VulkanDevice.h:62
uint64 HasKHRSamplerYcbcrConversion
Definition VulkanDevice.h:80
uint64 HasKHRTimelineSemaphore
Definition VulkanDevice.h:96
uint64 HasEXTExtendedDynamicState2
Definition VulkanDevice.h:107
uint64 HasEXTExtendedDynamicState3
Definition VulkanDevice.h:108
uint64 HasEXTMutableDescriptorType
Definition VulkanDevice.h:66
uint64 HasEXTPipelineCreationCacheControl
Definition VulkanDevice.h:105
uint64 HasKHRDepthStencilResolve
Definition VulkanDevice.h:95
uint64 HasKHRRenderPass2
Definition VulkanDevice.h:83
uint64 HasKHRPipelineLibrary
Definition VulkanDevice.h:58
uint64 HasEXTLoadStoreOpNone
Definition VulkanDevice.h:112
uint64 HasQcomRenderPassShaderResolve
Definition VulkanDevice.h:94
uint64 HasEXTGraphicsPipelineLibrary
Definition VulkanDevice.h:69
uint64 HasKHRShaderFloat16
Definition VulkanDevice.h:90
uint64 HasEXTDescriptorIndexing
Definition VulkanDevice.h:91
uint64 HasEXTASTCDecodeMode
Definition VulkanDevice.h:48
uint64 HasSeparateDepthStencilLayouts
Definition VulkanDevice.h:92
uint64 HasNVDeviceDiagnosticConfig
Definition VulkanDevice.h:74
uint64 HasEXTFullscreenExclusive
Definition VulkanDevice.h:53
uint64 HasRayTracingPipeline
Definition VulkanDevice.h:56
FOptionalVulkanDeviceExtensions()
Definition VulkanDevice.h:118
uint64 HasEXTFragmentDensityMap2
Definition VulkanDevice.h:50
uint64 HasEXTShaderObject
Definition VulkanDevice.h:68
uint64 HasNVDiagnosticCheckpoints
Definition VulkanDevice.h:73
uint64 HasEXTMeshShader
Definition VulkanDevice.h:63
uint64 HasEXTImageCompressionControl
Definition VulkanDevice.h:65
uint64 HasImageAtomicInt64
Definition VulkanDevice.h:54
uint64 HasKHR16bitStorage
Definition VulkanDevice.h:79
uint64 HasEXTHostImageCopy
Definition VulkanDevice.h:113
uint64 HasKHRMaintenance7
Definition VulkanDevice.h:67
uint64 HasRayQuery
Definition VulkanDevice.h:57
uint64 HasSPIRV_14
Definition VulkanDevice.h:88
uint64 HasAccelerationStructure
Definition VulkanDevice.h:55
uint64 HasEXTVertexInputDynamicState
Definition VulkanDevice.h:109
uint64 HasEXTHostQueryReset
Definition VulkanDevice.h:93
uint64 HasKHRFragmentShadingRate
Definition VulkanDevice.h:51
uint64 HasEXTFragmentDensityMap
Definition VulkanDevice.h:49
uint64 HasKHRDynamicRendering
Definition VulkanDevice.h:103
bool HasRaytracingExtensions() const
Definition VulkanDevice.h:129
uint64 HasKHRImageFormatList
Definition VulkanDevice.h:84
Definition RHIDefinitions.h:1401
Definition VulkanContext.h:46