UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
VulkanDevice.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved..
2
3/*=============================================================================
4 VulkanDevice.h: Private Vulkan RHI definitions.
5=============================================================================*/
6
7#pragma once
8
9#include "VulkanMemory.h"
11#include "VulkanResources.h"
12#include "VulkanQueue.h"
13#include "VulkanQuery.h"
14#include "GPUProfiler.h"
15
30
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__))
34#else
35#define VULKAN_SET_DEBUG_NAME(Device, Type, Handle, Format, ...) do{}while(0)
36#endif
37
39{
40 union
41 {
42 struct
43 {
44 // Optional Extensions
70
71 // Vendor specific
76
77 // Promoted to 1.1
81
82 // Promoted to 1.2
97
98 // Promoted to 1.3
110
111 // Promoted to 1.4
114 };
116 };
117
119 {
120 static_assert(sizeof(Packed) == sizeof(FOptionalVulkanDeviceExtensions), "More bits needed for Packed!");
121 Packed = 0;
122 }
123
128
140
148};
149
150// All the features and properties we need to keep around from extension initialization
177
179{
180public:
185
187
190private:
191 // Anything above Core 1.1 cannot be assumed, they should only be used by the device at init time
194
195 friend class FVulkanDevice;
196 friend FVulkanDynamicRHI;
197};
198
199
200namespace VulkanRHI
201{
202 class FDeferredDeletionQueue2
203 {
204
205 public:
206 FDeferredDeletionQueue2(FVulkanDevice& InDevice);
207 ~FDeferredDeletionQueue2();
208
209 enum class EType
210 {
211 RenderPass,
212 Buffer,
213 BufferView,
214 Image,
215 ImageView,
216 Pipeline,
217 PipelineLayout,
218 Framebuffer,
219 DescriptorSetLayout,
220 Sampler,
221 Semaphore,
222 ShaderModule,
223 Event,
224 ResourceAllocation,
225 DeviceMemoryAllocation,
226 BufferSuballocation,
228 BindlessHandle,
229 };
230
231 template <typename T>
232 inline void EnqueueResource(EType Type, T Handle)
233 {
234 static_assert(sizeof(T) <= sizeof(uint64), "Vulkan resource handle type size too large.");
235 EnqueueGenericResource(Type, (uint64)Handle);
236 }
237
238 inline void EnqueueBindlessHandle(FRHIDescriptorHandle DescriptorHandle)
239 {
240 if (DescriptorHandle.IsValid())
241 {
242 static_assert(sizeof(FRHIDescriptorHandle) <= sizeof(uint64), "FRHIDescriptorHandle is too large");
243 EnqueueResource(EType::BindlessHandle, *reinterpret_cast<uint64*>(&DescriptorHandle));
244 }
245 }
246
247 void EnqueueResourceAllocation(FVulkanAllocation& Allocation);
248 void EnqueueDeviceAllocation(FDeviceMemoryAllocation* DeviceMemoryAllocation);
249
250 void ReleaseResources(bool bDeleteImmediately = false);
251
252 inline void Clear()
253 {
254 ReleaseResources(true);
255 }
256
257 private:
258 void EnqueueGenericResource(EType Type, uint64 Handle);
259
260 struct FEntry
261 {
262 EType StructureType;
265 FVulkanAllocation Allocation;
266 FDeviceMemoryAllocation* DeviceMemoryAllocation;
267 };
268
269 void ReleaseResourcesImmediately(const TArray<FEntry>& InEntries);
270
271 FVulkanDevice& Device;
273 TArray<FEntry> Entries;
274 };
275}
276
277
279{
280public:
282
284
285 void InitGPU();
286
289
290 void PrepareForDestroy();
291 void Destroy();
292
293 void WaitUntilIdle();
294
296 {
297 return VendorId;
298 }
299
301 {
302 return Queues[(int32)EVulkanQueueType::AsyncCompute] != nullptr;
303 }
304
305 bool HasTransferQueue() const
306 {
307 return Queues[(int32)EVulkanQueueType::Transfer] != nullptr;
308 }
309
310 bool HasMultipleQueues() const
311 {
313 }
314
316 {
317 return bPresentOnComputeQueue;
318 }
319
321 {
323 {
325 }
327 {
329 }
330 checkNoEntry();
331 return nullptr;
332 }
333
335 {
336 return Queues[(int32)QueueType];
337 }
338
343
348
353
355 {
356 return PresentQueue;
357 }
358
359 void ForEachQueue(TFunctionRef<void(FVulkanQueue&)> Callback);
360
362 {
363 return Gpu;
364 }
365
367 {
368 return GpuProps;
369 }
370
372 {
373 return FragmentSizeMap[Rate];
374 }
375
377 {
378 return GpuProps.limits;
379 }
380
382 {
383 return GpuIdProps;
384 }
385
387 {
388 return GpuSubgroupProps;
389 }
390
392 {
393 return RayTracingCompactionRequestHandler;
394 }
395
397 {
398 return RayTracingPipelineLibraryCache;
399 }
400
402 void CleanUpRayTracing();
403
404#if VULKAN_SUPPORTS_VALIDATION_CACHE
406 {
407 return ValidationCache;
408 }
409#endif
410
412 {
413 return PhysicalDeviceFeatures;
414 }
415
416 bool HasUnifiedMemory() const
417 {
418 return DeviceMemoryManager.HasUnifiedMemory();
419 }
420
421 bool SupportsBindless() const;
422
424
426 {
427 return Device;
428 }
429
434
436
438 {
439 return DeviceMemoryManager;
440 }
441
443 {
444 return DeviceMemoryManager.GetMemoryProperties();
445 }
446
448 {
449 return MemoryManager;
450 }
451
452 VulkanRHI::FDeferredDeletionQueue2& GetDeferredDeletionQueue()
453 {
454 return DeferredDeletionQueue;
455 }
456
458 {
459 return StagingManager;
460 }
461
463 {
464 return FenceManager;
465 }
466
468 {
469 return *TempBlockAllocator;
470 }
471
473 {
474 return *RenderPassManager;
475 }
476
478 {
479 return *DescriptorSetCache;
480 }
481
483 {
484 return *DescriptorPoolsManager;
485 }
486
488 {
489 return BindlessDescriptorManager;
490 }
491
493 {
494 return SamplerMap;
495 }
496
498 {
499 return ShaderFactory;
500 }
501
503 {
504 return *ImmediateContext;
505 }
506
507 void NotifyDeletedImage(VkImage Image, bool bRenderTarget);
508
509#if VULKAN_ENABLE_DRAW_MARKERS
511 {
512 return DebugMarkers.CmdBeginDebugLabel;
513 }
514
516 {
517 return DebugMarkers.CmdEndDebugLabel;
518 }
519
521 {
522 return DebugMarkers.SetDebugName;
523 }
524#endif
525
530
535
538
541 {
542 return OptionalDeviceExtensions;
543 }
544
546 {
547 return OptionalDeviceExtensionProperties;
548 }
549
550 bool NeedsAllPlanes() const
551 {
553 }
554
556 {
557 return OptionalDeviceExtensions.HasSeparateDepthStencilLayouts && OptionalDeviceExtensions.HasKHRSynchronization2 && OptionalDeviceExtensions.HasKHRRenderPass2;
558 }
559
561 {
562 return OptionalDeviceExtensions.HasEXTGraphicsPipelineLibrary &&
563 // Extended dynamic states make it possible to create the pipeline library at shader creation,
564 // and they allow for a single library for vertex_input and fragment_output_state
565 OptionalDeviceExtensions.HasEXTExtendedDynamicState1 &&
566 OptionalDeviceExtensions.HasEXTExtendedDynamicState2 &&
567 OptionalDeviceExtensions.HasEXTExtendedDynamicState3 &&
568 // use a single vertex input stage for all pipelines
569 OptionalDeviceExtensions.HasEXTVertexInputDynamicState &&
570 // dynamic rendering removes need for renderpass at pipeline creation
571 OptionalDeviceExtensions.HasKHRDynamicRendering &&
572 // in bindless a single pipeline layout is needed
574
575 }
576
578
580 {
581 return QueueFamilyProps;
582 }
583
585
586 const TArray<const ANSICHAR*>& GetDeviceExtensions() { return DeviceExtensions; }
587
588#if RHI_NEW_GPU_PROFILER
590#else
591 // Performs a GPU and CPU timestamp at nearly the same time.
592 // This allows aligning GPU and CPU events on the same timeline in profile visualization.
594#endif
595
597 {
598 return *GlobalSamplers[(uint32)Type];
599 }
600
603
605
607 {
608 return ActiveQueueFamilies;
609 }
610
611 bool UseMinimalSubmits() const;
612
613private:
614 void MapBufferFormatSupport(FPixelFormatInfo& PixelFormatInfo, EPixelFormat UEFormat, VkFormat VulkanFormat);
616 void MapFormatSupport(EPixelFormat UEFormat, std::initializer_list<VkFormat> PrioritizedFormats, const VkComponentMapping& ComponentMapping, EPixelFormatCapabilities RequiredCapabilities, int32 BlockBytes);
617 void MapFormatSupport(EPixelFormat UEFormat, std::initializer_list<VkFormat> PrioritizedFormats, const VkComponentMapping& ComponentMapping);
618 void MapFormatSupport(EPixelFormat UEFormat, std::initializer_list<VkFormat> PrioritizedFormats, const VkComponentMapping& ComponentMapping, int32 BlockBytes);
619 void MapFormatSupport(EPixelFormat UEFormat, std::initializer_list<VkFormat> PrioritizedFormats, const VkComponentMapping& ComponentMapping, EPixelFormatCapabilities RequiredCapabilities);
620
621 void InitGlobalSamplers();
623
624 VkDevice Device;
625
626 VulkanRHI::FDeviceMemoryManager DeviceMemoryManager;
627
628 VulkanRHI::FMemoryManager MemoryManager;
629
630 VulkanRHI::FDeferredDeletionQueue2 DeferredDeletionQueue;
631
632 VulkanRHI::FStagingManager StagingManager;
633
634 FVulkanFenceManager FenceManager;
635
636 VulkanRHI::FTempBlockAllocator* TempBlockAllocator = nullptr;
637
638 FVulkanRenderPassManager* RenderPassManager;
639
640 FVulkanTransientHeapCache* TransientHeapCache = nullptr;
641
642 // Active on ES3.1
643 FVulkanDescriptorSetCache* DescriptorSetCache = nullptr;
644 // Active on >= SM4
645 FVulkanDescriptorPoolsManager* DescriptorPoolsManager = nullptr;
646
647 FVulkanBindlessDescriptorManager* BindlessDescriptorManager = nullptr;
648
649 FVulkanShaderFactory ShaderFactory;
650
653
656
657 // Extension specific properties
659 VkPhysicalDeviceSubgroupProperties GpuSubgroupProps;
660
661 FVulkanRayTracingCompactionRequestHandler* RayTracingCompactionRequestHandler = nullptr;
662 FVulkanRayTracingPipelineLibraryCache* RayTracingPipelineLibraryCache = nullptr;
663
664 FVulkanPhysicalDeviceFeatures PhysicalDeviceFeatures;
665
666 TArray<VkQueueFamilyProperties> QueueFamilyProps;
668 // Info for formats that are not in the core Vulkan spec (i.e. extensions)
669 mutable TMap<VkFormat, VkFormatProperties> ExtensionFormatProperties;
670
671 // Reusable query pools
672 FCriticalSection QueryPoolLock;
673 uint32 OcclusionQueryPoolSize = 256;
675
676 // Reusable gpu-only barrier events
677 FCriticalSection BarrierEventLock;
678 TArray<VkEvent> BarrierEvents;
679
681 FVulkanQueue* PresentQueue = nullptr; // points to an existing queue
682 bool bPresentOnComputeQueue = false;
683 TArray<uint32> ActiveQueueFamilies;
684
686
687 VkComponentMapping PixelFormatComponentMapping[PF_MAX];
688
690
691 FVulkanCommandListContextImmediate* ImmediateContext;
692
693 FVulkanDynamicRHI* RHI = nullptr;
694
696
697 FOptionalVulkanDeviceExtensions OptionalDeviceExtensions;
698 FOptionalVulkanDeviceExtensionProperties OptionalDeviceExtensionProperties;
699 TArray<const ANSICHAR*> DeviceExtensions;
700
701 void SetupFormats();
702
703#if VULKAN_SUPPORTS_VALIDATION_CACHE
705#endif
706
707#if VULKAN_ENABLE_DRAW_MARKERS
708 bool bUseLegacyDebugMarkerExt = false;
709 struct
710 {
711 PFN_vkSetDebugUtilsObjectNameEXT SetDebugName = nullptr;
714 } DebugMarkers;
715 friend class FVulkanCommandListContext;
716#endif
717 void SetupDrawMarkers();
718
720 friend class FVulkanDynamicRHI;
722};
#define checkNoEntry()
Definition AssertionMacros.h:316
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::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
EPixelFormatCapabilities
Definition PixelFormat.h:225
EPixelFormat
Definition PixelFormat.h:16
@ PF_MAX
Definition PixelFormat.h:111
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
uint32_t uint32
Definition binka_ue_file_header.h:6
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 Array.h:670
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 PixelFormat.h:453
Definition RHIDefinitions.h:1401
Definition VulkanContext.h:46
EGlobalSamplerType
Definition VulkanShaderResources.h:69