UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
VulkanResources.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 VulkanResources.h: Vulkan resource RHI definitions.
5=============================================================================*/
6
7#pragma once
8
9#include "CoreMinimal.h"
10#include "VulkanPlatform.h"
11#include "VulkanConfiguration.h"
12#include "VulkanState.h"
13#include "VulkanUtil.h"
16#include "VulkanMemory.h"
17#include "Misc/ScopeRWLock.h"
18#include "IVulkanDynamicRHI.h"
19
20class FVulkanDevice;
21class FVulkanQueue;
24class FVulkanTexture;
25class FVulkanBuffer;
26class FVulkanLayout;
30class FVulkanView;
37
40
41namespace VulkanRHI
42{
43 class FDeviceMemoryAllocation;
44}
45
46enum
47{
49
51};
52
53// Mirror GPixelFormats with format information for buffers
55
56// Converts the internal texture dimension to Vulkan view type
69
72{
73public:
77
79
80 virtual bool GetInitializer(FVertexDeclarationElementList& Out) final override
81 {
82 Out = Elements;
83 return true;
84 }
85
86 static void EmptyCache();
87
88 virtual uint32 GetPrecachePSOHash() const final override { return HashNoStrides; }
89};
90
91struct FGfxPipelineDesc;
92
94{
95 static FVulkanDevice* Device;
96 VkShaderModule ActualShaderModule;
97public:
99 {
100 check(DeviceIn && (Device == DeviceIn || !Device));
101 Device = DeviceIn;
102 }
103 virtual ~FVulkanShaderModule();
104 VkShaderModule& GetVkShaderModule() { return ActualShaderModule; }
105};
106
108{
109protected:
110
112
113public:
114 virtual ~FVulkanShader();
115
116 void PurgeShaderModules();
117
119
121 {
124 if (Found)
125 {
126 return *Found;
127 }
128
129 return CreateHandle(Layout, LayoutHash);
130 }
131
133 {
136 {
137 LayoutHash = HashCombine(LayoutHash, 1);
138 }
139
141 if (Found)
142 {
143 return *Found;
144 }
145
146 return CreateHandle(Desc, Layout, LayoutHash);
147 }
148
149 inline const FString& GetDebugName() const
150 {
151 return CodeHeader.DebugName;
152 }
153
154 // Name should be pointing to "main_"
155 void GetEntryPoint(ANSICHAR* Name, int32 NameLength) const
156 {
157 FCStringAnsi::Snprintf(Name, NameLength, "main_%0.8x_%0.8x", SpirvContainer.GetSizeBytes(), CodeHeader.SpirvCRC);
158 }
159
161 {
162 return CodeHeader;
163 }
164
165 inline uint64 GetShaderKey() const
166 {
167 return ShaderKey;
168 }
169
170 // This provides a view of the raw spirv bytecode.
171 // If it is stored compressed then the result of GetSpirvCode will contain the decompressed spirv.
173 {
174 friend class FVulkanShader;
176 {
177 CodeView = UncompressedCode;
178 }
180 TArrayView<uint32> CodeView;
181 TArray<uint32> UncompressedCode;
182 public:
183 TArrayView<uint32> GetCodeView() {return CodeView;}
184 };
185
187 {
189 }
190
191 FSpirvCode GetPatchedSpirvCode(const FGfxPipelineDesc& Desc, const FVulkanLayout* Layout);
192
194
195 void SetUsesBindless(bool bValue)
196 {
197 bUsesBindless = bValue;
198 }
199
200 bool UsesBindless() const
201 {
202 return bUsesBindless;
203 }
204
205protected:
206
207#if UE_BUILD_DEBUG || UE_BUILD_DEVELOPMENT
208 FString DebugEntryPoint;
209#endif
211
216 bool bUsesBindless = false;
217
219
220protected:
222 {
223 friend class FVulkanShader;
224 TArray<uint8> SpirvCode;
225 int32 UncompressedSizeBytes = -1;
226 public:
227 bool IsCompressed() const { return UncompressedSizeBytes != -1; }
228 int32 GetSizeBytes() const { return UncompressedSizeBytes >= 0 ? UncompressedSizeBytes : SpirvCode.Num(); }
231
233 static FSpirvCode PatchSpirvInputAttachments(FSpirvCode& SpirvCode);
234
235 static FSpirvCode GetSpirvCode(const FSpirvContainer& Container);
236
237protected:
239
242
244
246
252};
253
255template<typename BaseResourceType, EShaderFrequency ShaderType>
256class TVulkanBaseShader : public BaseResourceType, public FVulkanShader
257{
258private:
260 : BaseResourceType()
261 , FVulkanShader(InDevice, ShaderType, MoveTemp(InCodeHeader), MoveTemp(InSpirvContainer), InShaderKey, BaseResourceType::StaticSlots)
262 {
263 BaseResourceType::ShaderResourceTable = MoveTemp(InSRT);
264 }
266public:
267 enum { StaticFrequency = ShaderType };
268
269 // IRefCountedObject interface.
271 {
273 }
274 virtual uint32 Release() const override final
275 {
276 return FRHIResource::Release();
277 }
278 virtual uint32 GetRefCount() const override final
279 {
281 }
282};
283
290
328
330{
331public:
333
334 template <typename ShaderType>
335 ShaderType* CreateShader(TArrayView<const uint8> Code, FVulkanDevice* Device);
336
337 template <typename ShaderType>
338 ShaderType* LookupShader(uint64 ShaderKey) const
339 {
340 if (ShaderKey)
341 {
342 FRWScopeLock ScopedLock(RWLock[ShaderType::StaticFrequency], SLT_ReadOnly);
343 FVulkanShader* const * FoundShaderPtr = ShaderMap[ShaderType::StaticFrequency].Find(ShaderKey);
344 if (FoundShaderPtr)
345 {
346 return static_cast<ShaderType*>(*FoundShaderPtr);
347 }
348 }
349 return nullptr;
350 }
351
352 template <EShaderFrequency ShaderFrequency>
354
356
358
359private:
360 mutable FRWLock RWLock[SF_NumFrequencies];
362};
363
365{
366public:
372 );
373
374 virtual ~FVulkanBoundShaderState();
375
381
383 {
384 switch (Stage)
385 {
387 case ShaderStage::Pixel: return GetPixelShader();
388#if PLATFORM_SUPPORTS_MESH_SHADERS
389 case ShaderStage::Mesh: return GetMeshShader();
390 case ShaderStage::Task: return GetTaskShader();
391#endif
392#if VULKAN_SUPPORTS_GEOMETRY_SHADERS
394#endif
395 default: break;
396 }
397 checkf(0, TEXT("Invalid Shader Frequency %d"), (int32)Stage);
398 return nullptr;
399 }
400
401private:
403};
404
410
411
428
430
432{
433public:
434
436 {
437 bool bInitialized = false;
438 };
439
441 {
444 bool bVolatile = false; // Whether source buffer is volatile
445 };
446
454
459
466
467 typedef TVariant<
474
475 enum EType
476 {
477 Null = TStorage::IndexOfType<FInvalidatedState >(),
478 TypedBuffer = TStorage::IndexOfType<FTypedBufferView >(),
479 Texture = TStorage::IndexOfType<FTextureView >(),
480 StructuredBuffer = TStorage::IndexOfType<FStructuredBufferView >(),
481 AccelerationStructure = TStorage::IndexOfType<FAccelerationStructureView>(),
482 };
483
485
486 ~FVulkanView();
487
488 void Invalidate();
489
491 {
492 return EType(Storage.GetIndex());
493 }
494
495 bool IsInitialized() const
496 {
497 return (GetViewType() != Null) || Storage.Get<FInvalidatedState>().bInitialized;
498 }
499
500 FTypedBufferView const& GetTypedBufferView () const { return Storage.Get<FTypedBufferView >(); }
501 FTextureView const& GetTextureView () const { return Storage.Get<FTextureView >(); }
504
506 void UpdateTextureView(const FVulkanContextArray& Contexts, VkImage InImage, const FVulkanTextureViewDesc& ViewDesc);
507
508 // NOTE: The InOffset applies to the FVulkanBuffer (it does not include any internal Allocation offsets that may exist)
510
511 // NOTE: The InOffset applies to the FVulkanBuffer (it does not include any internal Allocation offsets that may exist)
514
515 // No moving or copying
517 FVulkanView(FVulkanView const&) = delete;
520
522 {
523 return BindlessHandle;
524 }
525
527 {
528 return DescriptorType;
529 }
530
531protected:
532 void InitAsTextureView(const FVulkanContextArray& Contexts, VkImage InImage, const FVulkanTextureViewDesc& ViewDesc);
533
534private:
535 FVulkanDevice& Device;
536 FRHIDescriptorHandle BindlessHandle;
537 const VkDescriptorType DescriptorType;
538 TStorage Storage;
539};
540
541class FVulkanLinkedView : public FVulkanView, public TIntrusiveLinkedList<FVulkanLinkedView>
542{
543protected:
545 : FVulkanView(Device, DescriptorType)
546 {}
547
549 {
550 Unlink();
551 }
552
553public:
554 virtual void UpdateView(const FVulkanContextArray& Contexts) = 0;
555};
556
558{
559public:
561 {
562 checkf(!HasLinkedViews(), TEXT("All linked views must have been removed before the underlying resource can be deleted."));
563 }
564
565 bool HasLinkedViews() const
566 {
567 return LinkedViews != nullptr;
568 }
569
570 // @todo convert views owned by the texture into proper
571 // FVulkanView instances, then remove 'virtual' from this class
572 virtual void UpdateLinkedViews(const FVulkanContextArray& Contexts);
573
574private:
577 FVulkanLinkedView* LinkedViews = nullptr;
578};
579
593
594
596{
597 None,
600 Aliased
601};
602
604{
605public:
606 // Constructor without command list: targets will not be cleared, cannot contain initial data, will be left in VK_IMAGE_LAYOUT_UNDEFINED.
607 // Layout changes and initial data upload should be handled by FinalizeCreateTextureInternal
609
610 // Construct from external resource.
612
613#if PLATFORM_ANDROID
614 // Construct from Android Hardware buffer. HardwareBuffer_Desc could be extracted from HardwareBuffer, but adding it here makes the function signature unambigious
616#endif
617
618 // Aliasing constructor.
620
621 virtual ~FVulkanTexture();
622
624
625 void UploadInitialData(FRHICommandListBase& RHICmdList, VulkanRHI::FStagingBuffer* UploadBuffer);
627
628 // View with all mips/layers
630
631 // View with all mips/layers, but if it's a Depth/Stencil, only the Depth view
633
635
637
638 template<typename T>
639 void DumpMemory(T Callback)
640 {
641 const FIntVector SizeXYZ = GetSizeXYZ();
642 Callback(TEXT("FVulkanTexture"), GetName(), this, static_cast<FRHIResource*>(this), SizeXYZ.X, SizeXYZ.Y, SizeXYZ.Z, StorageFormat);
643 }
644
645 // FVulkanEvictable interface.
646 bool CanMove() const override { return false; }
647 bool CanEvict() const override { return false; }
648 void Evict(FVulkanDevice& Device, const FVulkanContextArray& Contexts) override;
649 void Move(FVulkanDevice& Device, const FVulkanContextArray& Contexts, VulkanRHI::FVulkanAllocation& NewAllocation) override; //move to a full new allocation
650 FVulkanTexture* GetEvictableTexture() override { return CanEvict() ? this : nullptr; }
651
653
654 void* GetNativeResource() const override final { return (void*)Image; }
655 void* GetTextureBaseRHI() override final { return this; }
656
662
664 {
666 //only used when HasImageFormatListKHR is supported. Otherise VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT is used.
668 //used when TexCreate_External is given
670 // Array of formats used for mutable formats
674 };
675
676 // Separate method for creating VkImageCreateInfo
677 static void GenerateImageCreateInfo(
680 const FRHITextureDesc& InDesc,
681 VkFormat* OutStorageFormat = nullptr,
682 VkFormat* OutViewFormat = nullptr,
683 bool bForceLinearTexture = false);
684
685 void DestroySurface();
687 void* GetMappedPointer();
688
689 // FRHIResource overrides
690#if RHI_ENABLE_RESOURCE_INFO
692#endif
693
698 {
699 return MemoryRequirements.size;
700 }
701
705 void GetMipStride(uint32 MipIndex, uint32& Stride);
706
710 void GetMipSize(uint32 MipIndex, uint64& MipBytes);
711
716
718 {
719 return Tiling;
720 }
721
723 {
724 switch (GetViewType())
725 {
729 return 1;
731 return GetDesc().ArraySize;
733 return 6;
735 return 6 * GetDesc().ArraySize;
736 default:
738 return 1;
739 }
740 }
742
743 // Full includes Depth+Stencil
745 {
746 return FullAspectMask;
747 }
748
749 // Only Depth or Stencil
751 {
752 return PartialAspectMask;
753 }
754
756 {
757 return (FullAspectMask & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) != 0;
758 }
759
760 bool IsImageOwner() const
761 {
763 }
764
770
772 {
773 return DefaultLayout;
774 }
775
777 {
778 DefaultLayout = InDefaultLayout;
779 }
780
783
785
786 const FVulkanCpuReadbackBuffer* GetCpuReadbackBuffer() const { return CpuReadbackBuffer; }
787
788 virtual void UpdateLinkedViews(const FVulkanContextArray& Contexts) override;
789
793
794 // Removes SRGB if requested, used to upload data
796
797 // Format for SRVs, render targets
799
802
804
805 // Only used when HasSeparateDepthStencilLayouts == false.
807
809
811
812private:
814
815 static const VkImageUsageFlags DefaultImageUsageFlags = 0;
816 void InitViews(VkImageUsageFlags ViewUsageFlags, VkSamplerYcbcrConversion SamplerYcbcrConversion = VK_NULL_HANDLE);
817 void UpdateViews(const FVulkanContextArray& Contexts, VkImageUsageFlags ViewUsageFlags, VkSamplerYcbcrConversion SamplerYcbcrConversion = VK_NULL_HANDLE);
818
821 VkImageAspectFlags FullAspectMask = 0;
822 VkImageAspectFlags PartialAspectMask = 0;
823 FVulkanCpuReadbackBuffer* CpuReadbackBuffer = nullptr;
825
826 // Views with lifetime tied to this image
827 TMap<uint32, FVulkanView*> InternalViews;
828
829 TUniquePtr<FVulkanReservedResourceData> ReservedResourceData;
830
831protected:
833};
834
835
837{
838public:
840 virtual ~FVulkanBuffer();
841
843 {
845 }
846
847 inline VkBuffer GetHandle() const
848 {
850 }
851
852 inline bool IsVolatile() const
853 {
855 }
856
857 // Offset used for Binding a VkBuffer
858 inline uint32 GetOffset() const
859 {
861 }
862
863 // Remaining size from the current offset
864 inline uint64 GetCurrentSize() const
865 {
866 return GetCurrentAllocation().Size;
867 }
868
870 {
872 }
873
875 {
876 return BufferUsageFlags;
877 }
878
880 {
882 }
883
884 void* Lock(FRHICommandListBase& RHICmdList, EResourceLockMode LockMode, uint32 Size, uint32 Offset);
885 void Unlock(FRHICommandListBase& RHICmdList);
886
888 void ReleaseOwnership();
889
890 template<typename T>
891 void DumpMemory(T Callback)
892 {
893 Callback(TEXT("FVulkanBuffer"), FName(), this, 0, GetCurrentSize(), 1, 1, VK_FORMAT_UNDEFINED);
894 }
895
897
904
906 {
908 }
909
911 {
912 LockCounter++;
913 }
914
915 // FRHIResource overrides
916#if RHI_ENABLE_RESOURCE_INFO
918 {
921 OutResourceInfo.Type = GetType();
922 OutResourceInfo.VRamAllocation.AllocationSize = GetCurrentSize();
924
925 return true;
926 }
927#endif
928
930
931protected:
932
933 // Will return a new allocation that can be used for this buffer (proper memory type and size)
934 void AllocateMemory(FBufferAlloc& OutAlloc);
935
937
939
946
949
951
954};
955
1001
1003{
1004public:
1006
1008 void UpdateView(const FVulkanContextArray& Contexts) override;
1009
1011 {
1013 }
1014
1015 void Clear(TRHICommandList_RecursiveHazardous<FVulkanCommandListContext>& RHICmdList, const void* ClearValue, bool bFloat);
1016};
1017
1018
1032
1072
1073// This class holds the staging area for packed global uniform buffers for a given shader
1075{
1076public:
1077 // One buffer is a chunk of bytes
1079
1081 {
1082 if (InCodeHeader.PackedGlobalsSize > 0)
1083 {
1087 }
1088 else
1089 {
1091 }
1092 }
1093
1094 inline void SetPackedGlobalParameter(uint32 ByteOffset, uint32 NumBytes, const void* RESTRICT NewValue, uint32& InOutPackedUniformBufferStagingDirty)
1095 {
1096 check(ByteOffset + NumBytes <= (uint32)PackedUniformBuffers.Num());
1097 check((NumBytes & 3) == 0 && (ByteOffset & 3) == 0);
1099 uint32* RESTRICT RawSrc = (uint32*)NewValue;
1100 uint32* RESTRICT RawSrcEnd = RawSrc + (NumBytes >> 2);
1101
1102 bool bChanged = false;
1103 while (RawSrc != RawSrcEnd)
1104 {
1105 bChanged |= CopyAndReturnNotEqual(*RawDst++, *RawSrc++);
1106 }
1107
1108 if (bChanged)
1109 {
1111 }
1112 }
1113
1114 inline const FPackedBuffer& GetBuffer() const
1115 {
1116 return PackedUniformBuffers;
1117 }
1118
1119protected:
1121};
1122
1124{
1126public:
1129 {
1130 check(!bIsLocked);
1131 }
1132
1133 virtual ~FVulkanStagingBuffer();
1134
1135 virtual void* Lock(uint32 Offset, uint32 NumBytes) final override;
1136 virtual void Unlock() final override;
1137
1138 uint64 GetGPUSizeBytes() const override { return StagingBuffer ? StagingBuffer->GetSize() : 0; }
1139
1140private:
1141 VulkanRHI::FStagingBuffer* StagingBuffer = nullptr;
1142 uint32 QueuedNumBytes = 0;
1143 // The staging buffer was allocated from this device.
1144 FVulkanDevice* Device;
1145};
1146
1147class FVulkanGPUFence final : public FRHIGPUFence
1148{
1149public:
1151 virtual ~FVulkanGPUFence();
1152
1153 virtual void Clear() override;
1154 virtual bool Poll() const override;
1155 virtual void Wait(FRHICommandListImmediate& RHICmdList, FRHIGPUMask GPUMask) const override;
1156
1157protected:
1162
1163 friend class FVulkanDynamicRHI;
1164};
1165
1166template<class T>
1168{
1169};
1170template<>
1175template<>
1180template<>
1185template<>
1190template<>
1195template<>
1200template<>
1205template<>
1210template<>
1215template<>
1220template<>
1225template<>
1230
1231template<>
1236template<>
1241template<>
1246template<>
1251
1252template<>
1257
1258template<>
1263
1264template<>
1269
1270template<typename TRHIType>
1271static FORCEINLINE typename TVulkanResourceTraits<TRHIType>::TConcreteType* ResourceCast(TRHIType* Resource)
1272{
1273 return static_cast<typename TVulkanResourceTraits<TRHIType>::TConcreteType*>(Resource);
1274}
1275
1276template<typename TRHIType>
1277static FORCEINLINE const typename TVulkanResourceTraits<TRHIType>::TConcreteType* ResourceCast(const TRHIType* Resource)
1278{
1279 return static_cast<const typename TVulkanResourceTraits<TRHIType>::TConcreteType*>(Resource);
1280}
1281
1282static FORCEINLINE FVulkanTexture* ResourceCast(FRHITexture* Texture)
1283{
1284 return static_cast<FVulkanTexture*>(Texture->GetTextureBaseRHI());
1285}
1286
1291template<>
1296template<>
1301template<>
1306template<>
1311template<>
#define FORCEINLINE
Definition AndroidPlatform.h:140
#define check(expr)
Definition AssertionMacros.h:314
#define checkNoEntry()
Definition AssertionMacros.h:316
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
@ InPlace
Definition CoreMiscDefines.h:162
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define RESTRICT
Definition Platform.h:706
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
constexpr bool EnumHasAnyFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:35
constexpr bool EnumHasAllFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:28
FPixelFormatInfo GPixelFormats[PF_MAX]
Definition PixelFormat.cpp:31
EPixelFormat
Definition PixelFormat.h:16
@ PF_Unknown
Definition PixelFormat.h:17
@ PF_MAX
Definition PixelFormat.h:111
EShaderFrequency
Definition RHIDefinitions.h:202
@ SF_NumFrequencies
Definition RHIDefinitions.h:216
EBufferUsageFlags
Definition RHIDefinitions.h:892
EUniformBufferUsage
Definition RHIDefinitions.h:536
@ MaxVertexElementCount
Definition RHIDefinitions.h:276
ETextureDimension
Definition RHIDefinitions.h:1081
#define BUF_Volatile
Definition RHIDefinitions.h:982
EResourceLockMode
Definition RHIDefinitions.h:785
EUniformBufferValidation
Definition RHIDefinitions.h:546
@ MAX_TEXTURE_MIP_COUNT
Definition RHIDefinitions.h:268
@ SLT_ReadOnly
Definition ScopeRWLock.h:138
constexpr uint32 HashCombine(uint32 A, uint32 C)
Definition TypeHash.h:36
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
FRWLock Lock
Definition UnversionedPropertySerialization.cpp:921
uint32 Offset
Definition VulkanMemory.cpp:4033
uint32 Size
Definition VulkanMemory.cpp:4034
VkImageViewType UETextureDimensionToVkImageViewType(ETextureDimension Dimension)
Definition VulkanResources.h:57
@ NUM_OCCLUSION_QUERIES_PER_POOL
Definition VulkanResources.h:48
@ NUM_TIMESTAMP_QUERIES_PER_POOL
Definition VulkanResources.h:50
TVulkanBaseShader< FRHIMeshShader, SF_Mesh > FVulkanMeshShader
Definition VulkanResources.h:288
EImageOwnerType
Definition VulkanResources.h:596
TVulkanBaseShader< FRHIPixelShader, SF_Pixel > FVulkanPixelShader
Definition VulkanResources.h:285
VkFormat GVulkanBufferFormat[PF_MAX]
Definition VulkanDevice.cpp:88
TVulkanBaseShader< FRHIVertexShader, SF_Vertex > FVulkanVertexShader
Definition VulkanResources.h:284
TVulkanBaseShader< FRHIAmplificationShader, SF_Amplification > FVulkanTaskShader
Definition VulkanResources.h:289
TVulkanBaseShader< FRHIGeometryShader, SF_Geometry > FVulkanGeometryShader
Definition VulkanResources.h:287
TVulkanBaseShader< FRHIComputeShader, SF_Compute > FVulkanComputeShader
Definition VulkanResources.h:286
VkDescriptorType GetVkDescriptorTypeForViewDesc(const FRHIViewDesc &ViewDesc)
Definition VulkanView.cpp:26
bool CopyAndReturnNotEqual(T &A, T B)
Definition VulkanUtil.h:38
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
Definition NameTypes.h:617
Definition VulkanResources.h:1075
void Init(const FVulkanShaderHeader &InCodeHeader, uint32 &OutPackedUniformBufferStagingMask)
Definition VulkanResources.h:1080
void SetPackedGlobalParameter(uint32 ByteOffset, uint32 NumBytes, const void *RESTRICT NewValue, uint32 &InOutPackedUniformBufferStagingDirty)
Definition VulkanResources.h:1094
TArray< uint8 > FPackedBuffer
Definition VulkanResources.h:1078
FPackedBuffer PackedUniformBuffers
Definition VulkanResources.h:1120
const FPackedBuffer & GetBuffer() const
Definition VulkanResources.h:1114
Definition RHIResources.h:966
Definition RHIResources.h:696
Definition RHIResources.h:733
Definition RHIResources.h:1581
EBufferUsageFlags GetUsage() const
Definition RHIResources.h:1607
uint32 GetStride() const
Definition RHIResources.h:1601
Definition RHICommandList.h:455
Definition RHICommandList.h:4626
Definition RHIResources.h:1018
Definition RHIResources.h:686
Definition RHIResources.h:2387
Definition RHIResources.h:978
Definition RHIResources.h:960
Definition RHIResources.h:972
Definition RHIResources.h:679
Definition RHIResources.h:3729
Definition RHIResources.h:1115
Definition RHIResources.h:3755
Definition RHIResources.h:984
Definition RHIResources.h:2444
Definition RHIResources.h:54
uint32 GetRefCount() const
Definition RHIResources.h:93
uint32 Release() const
Definition RHIResources.h:80
ERHIResourceType GetType() const
Definition RHIResources.h:111
uint32 AddRef() const
Definition RHIResources.h:73
Definition RHIResources.h:671
Definition RHIResources.h:3863
FShaderResourceTable ShaderResourceTable
Definition RHIResources.h:845
TArray< FUniformBufferStaticSlot > StaticSlots
Definition RHIResources.h:846
Definition RHIResources.h:3304
Definition RHIResources.h:3981
bool bIsLocked
Definition RHIResources.h:3997
Definition RHIResources.h:2153
FIntVector GetSizeXYZ() const
Definition RHIResources.h:2227
virtual const FRHITextureDesc & GetDesc() const
Definition RHIResources.h:2170
Definition RHIResources.h:1232
TArray< TRefCountPtr< FRHIResource > > ResourceTable
Definition RHIResources.h:1255
Definition RHIResources.h:3294
Definition RHIResources.h:725
Definition RHIResources.h:954
Definition RHIResources.h:1265
FName GetName() const
Definition RHIResources.h:1272
Definition ScopeRWLock.h:199
Definition ScopeLock.h:141
Definition RefCounting.h:283
Definition VulkanState.h:77
Definition VulkanResources.h:365
FORCEINLINE FVulkanVertexShader * GetVertexShader() const
Definition VulkanResources.h:376
FORCEINLINE FVulkanTaskShader * GetTaskShader() const
Definition VulkanResources.h:379
const FVulkanShader * GetShader(ShaderStage::EStage Stage) const
Definition VulkanResources.h:382
FORCEINLINE FVulkanGeometryShader * GetGeometryShader() const
Definition VulkanResources.h:380
FORCEINLINE FVulkanMeshShader * GetMeshShader() const
Definition VulkanResources.h:378
FORCEINLINE FVulkanPixelShader * GetPixelShader() const
Definition VulkanResources.h:377
virtual ~FVulkanBoundShaderState()
Definition VulkanShaders.cpp:821
Definition VulkanResources.h:837
virtual ~FVulkanBuffer()
Definition VulkanBuffer.cpp:191
static VkBufferUsageFlags UEToVKBufferUsageFlags(FVulkanDevice &InDevice, EBufferUsageFlags InUEUsage, bool bZeroSize)
Definition VulkanBuffer.cpp:84
void * GetCurrentHostPointer()
Definition VulkanResources.h:905
void IncrementLockCounter()
Definition VulkanResources.h:910
uint32 LockCounter
Definition VulkanResources.h:948
VkBuffer GetHandle() const
Definition VulkanResources.h:847
const VulkanRHI::FVulkanAllocation & GetCurrentAllocation() const
Definition VulkanResources.h:842
void AllocateMemory(FBufferAlloc &OutAlloc)
Definition VulkanBuffer.cpp:204
enum FVulkanBuffer::ELockStatus LockStatus
uint32 GetOffset() const
Definition VulkanResources.h:858
uint64 GetCurrentSize() const
Definition VulkanResources.h:864
bool IsVolatile() const
Definition VulkanResources.h:852
void ReleaseOwnership()
Definition VulkanBuffer.cpp:543
void Unlock(FRHICommandListBase &RHICmdList)
Definition VulkanBuffer.cpp:457
VkIndexType GetIndexType() const
Definition VulkanResources.h:879
VkDeviceAddress GetDeviceAddress() const
Definition VulkanResources.h:869
TUniquePtr< FVulkanReservedResourceData > ReservedResourceData
Definition VulkanResources.h:950
friend struct FRHICommandMultiBufferUnlock
Definition VulkanResources.h:953
VkBufferUsageFlags BufferUsageFlags
Definition VulkanResources.h:938
VkBufferUsageFlags GetBufferUsageFlags() const
Definition VulkanResources.h:874
TArray< VkSparseMemoryBind > CommitReservedResource(uint64 RequiredCommitSizeInBytes)
Definition VulkanBuffer.cpp:235
void DumpMemory(T Callback)
Definition VulkanResources.h:891
FBufferAlloc CurrentBufferAlloc
Definition VulkanResources.h:947
ELockStatus
Definition VulkanResources.h:941
FVulkanDevice & Device
Definition VulkanResources.h:936
Definition VulkanCommandBuffer.h:43
Definition VulkanContext.h:241
Definition VulkanPipeline.h:705
Definition VulkanContext.h:55
Definition VulkanState.h:58
Definition VulkanDevice.h:279
Definition VulkanDynamicRHI.h:69
Definition VulkanMemory.h:104
Definition VulkanResources.h:1148
FVulkanSyncPointRef CompletedSyncPoint
Definition VulkanResources.h:1161
FVulkanDevice & Device
Definition VulkanResources.h:1158
virtual ~FVulkanGPUFence()
Definition VulkanUtil.cpp:638
VkEvent Event
Definition VulkanResources.h:1159
FGraphEventRef SubmittedSyncPoint
Definition VulkanResources.h:1160
virtual void Clear() override
Definition VulkanUtil.cpp:647
virtual void Wait(FRHICommandListImmediate &RHICmdList, FRHIGPUMask GPUMask) const override
Definition VulkanUtil.cpp:673
virtual bool Poll() const override
Definition VulkanUtil.cpp:658
Definition VulkanLayout.h:10
Definition VulkanResources.h:542
virtual void UpdateView(const FVulkanContextArray &Contexts)=0
~FVulkanLinkedView()
Definition VulkanResources.h:548
FVulkanLinkedView(FVulkanDevice &Device, VkDescriptorType DescriptorType)
Definition VulkanResources.h:544
Definition VulkanPendingState.h:121
Definition VulkanPipeline.h:492
Definition VulkanQueue.h:53
Definition VulkanState.h:36
Definition VulkanRayTracing.h:182
Definition VulkanRayTracing.h:270
Definition VulkanRayTracing.h:222
Definition VulkanRayTracing.h:69
Definition VulkanResources.h:292
virtual FReturnedRefCountValue AddRef() const override final
Definition VulkanResources.h:315
static const uint32 IntersectionModuleIdentifier
Definition VulkanResources.h:310
static const uint32 AnyHitModuleIdentifier
Definition VulkanResources.h:309
static const uint32 MainModuleIdentifier
Definition VulkanResources.h:307
static const uint32 ClosestHitModuleIdentifier
Definition VulkanResources.h:308
virtual uint32 Release() const override final
Definition VulkanResources.h:319
virtual uint32 GetRefCount() const override final
Definition VulkanResources.h:323
Definition VulkanQuery.h:114
Definition VulkanState.h:17
Definition VulkanResources.h:330
FVulkanRayTracingShader * CreateRayTracingShader(TArrayView< const uint8 > Code, FVulkanDevice *Device)
Definition VulkanShaders.cpp:272
ShaderType * LookupShader(uint64 ShaderKey) const
Definition VulkanResources.h:338
ShaderType * CreateShader(TArrayView< const uint8 > Code, FVulkanDevice *Device)
Definition VulkanShaders.cpp:212
void LookupGfxShaders(const uint64 InShaderKeys[ShaderStage::NumGraphicsStages], FVulkanShader *OutShaders[ShaderStage::NumGraphicsStages]) const
Definition VulkanShaders.cpp:353
~FVulkanShaderFactory()
Definition VulkanShaders.cpp:31
void OnDeleteShader(const FVulkanShader &Shader)
Definition VulkanShaders.cpp:371
Definition VulkanResources.h:94
VkShaderModule & GetVkShaderModule()
Definition VulkanResources.h:104
FVulkanShaderModule(FVulkanDevice *DeviceIn, VkShaderModule ShaderModuleIn)
Definition VulkanResources.h:98
virtual ~FVulkanShaderModule()
Definition VulkanShaders.cpp:420
Definition VulkanResources.h:1020
virtual FRHIDescriptorHandle GetBindlessHandle() const override
Definition VulkanResources.h:1027
FVulkanViewableResource * GetBaseResource() const
Definition VulkanSRV.cpp:36
void UpdateView(const FVulkanContextArray &Contexts) override
Definition VulkanSRV.cpp:46
Definition VulkanResources.h:173
TArrayView< uint32 > GetCodeView()
Definition VulkanResources.h:183
Definition VulkanResources.h:222
friend FArchive & operator<<(FArchive &Ar, class FVulkanShader::FSpirvContainer &SpirvContainer)
Definition VulkanShaders.cpp:378
int32 GetSizeBytes() const
Definition VulkanResources.h:228
bool IsCompressed() const
Definition VulkanResources.h:227
Definition VulkanResources.h:108
friend FArchive & operator<<(FArchive &Ar, class FVulkanShader::FSpirvContainer &SpirvContainer)
Definition VulkanShaders.cpp:378
void GetEntryPoint(ANSICHAR *Name, int32 NameLength) const
Definition VulkanResources.h:155
static FSpirvCode PatchSpirvInputAttachments(FSpirvCode &SpirvCode)
Definition VulkanShaders.cpp:522
TMap< uint32, TRefCountPtr< FVulkanShaderModule > > ShaderModules
Definition VulkanResources.h:214
void PurgeShaderModules()
Definition VulkanShaders.cpp:756
FSpirvCode GetPatchedSpirvCode(const FGfxPipelineDesc &Desc, const FVulkanLayout *Layout)
Definition VulkanShaders.cpp:612
TRefCountPtr< FVulkanShaderModule > GetOrCreateHandle(const FVulkanLayout *Layout, uint32 LayoutHash)
Definition VulkanResources.h:120
TRefCountPtr< FVulkanShaderModule > GetOrCreateHandle(const FGfxPipelineDesc &Desc, const FVulkanLayout *Layout, uint32 LayoutHash)
Definition VulkanResources.h:132
void SetUsesBindless(bool bValue)
Definition VulkanResources.h:195
TRefCountPtr< FVulkanShaderModule > CreateHandle(const FVulkanLayout *Layout, uint32 LayoutHash)
Definition VulkanShaders.cpp:717
TArray< FUniformBufferStaticSlot > & StaticSlots
Definition VulkanResources.h:193
friend class FVulkanComputeShaderState
Definition VulkanResources.h:249
const EShaderFrequency Frequency
Definition VulkanResources.h:215
uint64 GetShaderKey() const
Definition VulkanResources.h:165
class FVulkanShader::FSpirvContainer SpirvContainer
uint64 ShaderKey
Definition VulkanResources.h:210
bool UsesBindless() const
Definition VulkanResources.h:200
virtual ~FVulkanShader()
Definition VulkanShaders.cpp:731
bool bUsesBindless
Definition VulkanResources.h:216
TRefCountPtr< FVulkanShaderModule > GetOrCreateHandle()
Definition VulkanShaders.cpp:625
FORCEINLINE const FVulkanShaderHeader & GetCodeHeader() const
Definition VulkanResources.h:160
bool NeedsSpirvInputAttachmentPatching(const FGfxPipelineDesc &Desc) const
Definition VulkanShaders.cpp:597
static FCriticalSection VulkanShaderModulesMapCS
Definition VulkanResources.h:111
FSpirvCode GetSpirvCode() const
Definition VulkanResources.h:186
FVulkanShaderHeader CodeHeader
Definition VulkanResources.h:213
FVulkanDevice * Device
Definition VulkanResources.h:238
const FString & GetDebugName() const
Definition VulkanResources.h:149
VkPipeline PipelineLibrary
Definition VulkanResources.h:218
Definition VulkanResources.h:1124
virtual ~FVulkanStagingBuffer()
Definition VulkanUtil.cpp:579
uint64 GetGPUSizeBytes() const override
Definition VulkanResources.h:1138
virtual void Unlock() final override
Definition VulkanUtil.cpp:599
FVulkanStagingBuffer()
Definition VulkanResources.h:1127
Definition VulkanSubmission.h:54
Definition VulkanResources.h:604
VkFormat ViewFormat
Definition VulkanResources.h:798
VkImageLayout GetDefaultLayout() const
Definition VulkanResources.h:771
bool IsImageOwner() const
Definition VulkanResources.h:760
VULKANRHI_API void ErrorInvalidViewType() const
Definition VulkanTexture.cpp:161
TArray< VkSparseMemoryBind > CommitReservedResource(uint64 RequiredCommitSizeInBytes)
Definition VulkanTexture.cpp:919
VkImageViewType GetViewType() const
Definition VulkanResources.h:712
FTextureRHIRef AliasedTexture
Definition VulkanResources.h:636
VkImageTiling GetTiling() const
Definition VulkanResources.h:717
void Evict(FVulkanDevice &Device, const FVulkanContextArray &Contexts) override
Definition VulkanTexture.cpp:2546
void GetMipStride(uint32 MipIndex, uint32 &Stride)
Definition VulkanTexture.cpp:817
VkMemoryRequirements MemoryRequirements
Definition VulkanResources.h:801
VULKANRHI_API VkDeviceMemory GetAllocationHandle() const
Definition VulkanTexture.cpp:793
bool CanEvict() const override
Definition VulkanResources.h:647
VkFormat StorageFormat
Definition VulkanResources.h:795
void GetMipSize(uint32 MipIndex, uint64 &MipBytes)
Definition VulkanTexture.cpp:838
virtual FRHIDescriptorHandle GetDefaultBindlessHandle() const override final
Definition VulkanResources.h:657
FVulkanTexture * GetEvictableTexture() override
Definition VulkanResources.h:650
VkImageAspectFlags GetFullAspectMask() const
Definition VulkanResources.h:744
VkImage Image
Definition VulkanResources.h:791
VkImageUsageFlags ImageUsageFlags
Definition VulkanResources.h:792
void SetDefaultLayout(VkImageLayout InDefaultLayout)
Definition VulkanResources.h:776
bool GetTextureResourceInfo(FRHIResourceInfo &OutResourceInfo) const
Definition VulkanTexture.cpp:2593
void AliasTextureResources(FTextureRHIRef &SrcTextureRHI)
Definition VulkanTexture.cpp:2491
void * GetNativeResource() const override final
Definition VulkanResources.h:654
FVulkanDevice *const Device
Definition VulkanResources.h:790
virtual void UpdateLinkedViews(const FVulkanContextArray &Contexts) override
Definition VulkanTexture.cpp:2502
bool IsDepthOrStencilAspect() const
Definition VulkanResources.h:755
VkMemoryPropertyFlags MemProps
Definition VulkanResources.h:800
VULKANRHI_API uint64 GetAllocationOffset() const
Definition VulkanTexture.cpp:805
void * GetTextureBaseRHI() override final
Definition VulkanResources.h:655
void SetInitialImageState(FRHICommandListBase &RHICmdList, VkImageLayout InitialLayout, bool bClear, const FClearValueBinding &ClearValueBinding, bool bIsTransientResource)
Definition VulkanTexture.cpp:862
uint32 GetMemorySize() const
Definition VulkanResources.h:697
VkImageAspectFlags GetPartialAspectMask() const
Definition VulkanResources.h:750
virtual ~FVulkanTexture()
Definition VulkanTexture.cpp:2469
FVulkanView * DefaultView
Definition VulkanResources.h:629
FVulkanView * FindOrAddInternalView(const FVulkanTextureViewDesc &ViewDesc)
Definition VulkanTexture.cpp:2413
bool SupportsSampling() const
Definition VulkanResources.h:765
void UploadInitialData(FRHICommandListBase &RHICmdList, VulkanRHI::FStagingBuffer *UploadBuffer)
Definition VulkanTexture.cpp:1270
static void InternalLockWrite(FVulkanContextCommon &Context, FVulkanTexture *Surface, const VkBufferImageCopy &Region, VulkanRHI::FStagingBuffer *StagingBuffer)
Definition VulkanTexture.cpp:134
uint32 GetNumberOfArrayLevels() const
Definition VulkanResources.h:722
FVulkanView * PartialView
Definition VulkanResources.h:632
void InvalidateMappedMemory()
Definition VulkanTexture.cpp:770
const FVulkanCpuReadbackBuffer * GetCpuReadbackBuffer() const
Definition VulkanResources.h:786
EImageOwnerType ImageOwnerType
Definition VulkanResources.h:832
void DumpMemory(T Callback)
Definition VulkanResources.h:639
bool CanMove() const override
Definition VulkanResources.h:646
void HostUploadInitialData(FRHICommandListBase &RHICmdList, const uint8 *BulkData, uint32 BulkDataSize)
Definition VulkanTexture.cpp:1338
void DestroySurface()
Definition VulkanTexture.cpp:713
static void GenerateImageCreateInfo(FImageCreateInfo &OutImageCreateInfo, FVulkanDevice &InDevice, const FRHITextureDesc &InDesc, VkFormat *OutStorageFormat=nullptr, VkFormat *OutViewFormat=nullptr, bool bForceLinearTexture=false)
Definition VulkanTexture.cpp:228
void * GetMappedPointer()
Definition VulkanTexture.cpp:775
TStaticArray< ERHIAccess, 2 > AllPlanesTrackedAccess
Definition VulkanResources.h:806
void Move(FVulkanDevice &Device, const FVulkanContextArray &Contexts, VulkanRHI::FVulkanAllocation &NewAllocation) override
evict to system memory
Definition VulkanTexture.cpp:2521
FVulkanRHIExternalImageDeleteCallbackInfo ExternalImageDeleteCallbackInfo
Definition VulkanResources.h:803
Definition VulkanResources.h:957
FRHIDescriptorHandle BindlessHandle
Definition VulkanResources.h:997
void UpdateAllocation(VulkanRHI::FVulkanAllocation &NewAlloc)
Definition VulkanResources.h:977
VkDeviceAddress CachedDeviceAddress
Definition VulkanResources.h:998
FRHIDescriptorHandle GetBindlessHandle()
Definition VulkanUniformBuffer.cpp:238
void UpdateResourceTable(const FRHIUniformBufferLayout &InLayout, const void *Contents, int32 ResourceNum)
Definition VulkanUniformBuffer.cpp:217
FVulkanDevice * Device
Definition VulkanResources.h:993
VkDeviceAddress GetDeviceAddress() const
Definition VulkanUniformBuffer.cpp:257
const TArray< TRefCountPtr< FRHIResource > > & GetResourceTable() const
Definition VulkanResources.h:962
void SetupUniformBufferView()
Definition VulkanUniformBuffer.cpp:94
EUniformBufferUsage Usage
Definition VulkanResources.h:995
FRHIShaderResourceView * UniformViewSRV
Definition VulkanResources.h:999
virtual ~FVulkanUniformBuffer()
Definition VulkanUniformBuffer.cpp:207
VulkanRHI::FVulkanAllocation Allocation
Definition VulkanResources.h:994
VkBuffer GetBufferHandle() const
Definition VulkanResources.h:967
uint32 GetOffset() const
Definition VulkanResources.h:972
bool IsUniformView() const
Definition VulkanResources.h:982
Definition VulkanResources.h:1003
void UpdateView(const FVulkanContextArray &Contexts) override
Definition VulkanUAV.cpp:51
FVulkanViewableResource * GetBaseResource() const
Definition VulkanUAV.cpp:41
virtual FRHIDescriptorHandle GetBindlessHandle() const override
Definition VulkanResources.h:1010
Definition VulkanResources.h:72
FVertexDeclarationElementList Elements
Definition VulkanResources.h:74
uint32 Hash
Definition VulkanResources.h:75
virtual bool GetInitializer(FVertexDeclarationElementList &Out) final override
Definition VulkanResources.h:80
virtual uint32 GetPrecachePSOHash() const final override
Definition VulkanResources.h:88
uint32 HashNoStrides
Definition VulkanResources.h:76
static void EmptyCache()
Definition VulkanVertexDeclaration.cpp:55
Definition VulkanResources.h:1034
uint32 Hash
Definition VulkanResources.h:1056
~FVulkanVertexInputStateInfo()
Definition VulkanVertexDeclaration.cpp:78
VkPipelineVertexInputStateCreateInfo Info
Definition VulkanResources.h:1055
TMap< uint32, uint32 > StreamToBinding
Definition VulkanResources.h:1063
VkVertexInputAttributeDescription Attributes[MaxVertexElementCount]
Definition VulkanResources.h:1067
TMap< uint32, uint32 > BindingToStream
Definition VulkanResources.h:1062
VkVertexInputBindingDescription Bindings[MaxVertexElementCount]
Definition VulkanResources.h:1064
void Generate(FVulkanVertexDeclaration *VertexDeclaration, uint32 VertexHeaderInOutAttributeMask)
Definition VulkanVertexDeclaration.cpp:108
uint32 AttributesNum
Definition VulkanResources.h:1066
FVulkanVertexInputStateInfo()
Definition VulkanVertexDeclaration.cpp:81
const VkPipelineVertexInputStateCreateInfo & GetInfo() const
Definition VulkanResources.h:1047
uint32 GetHash() const
Definition VulkanResources.h:1041
bool operator==(const FVulkanVertexInputStateInfo &Other)
Definition VulkanVertexDeclaration.cpp:92
uint32 BindingsNum
Definition VulkanResources.h:1058
uint32 BindingsMask
Definition VulkanResources.h:1059
Definition VulkanResources.h:432
FVulkanView & operator=(FVulkanView &&)=delete
FVulkanView(FVulkanView &&)=delete
VkDescriptorType GetDescriptorType() const
Definition VulkanResources.h:526
FVulkanView(FVulkanView const &)=delete
TVariant< FInvalidatedState, FTypedBufferView, FTextureView, FStructuredBufferView, FAccelerationStructureView > TStorage
Definition VulkanResources.h:473
void Invalidate()
Definition VulkanView.cpp:106
~FVulkanView()
Definition VulkanView.cpp:95
void InitAsStructuredBufferView(const FVulkanContextArray &Contexts, FVulkanBuffer *Buffer, uint32 InOffset, uint32 InSize)
Definition VulkanView.cpp:294
FTypedBufferView const & GetTypedBufferView() const
Definition VulkanResources.h:500
void UpdateTextureView(const FVulkanContextArray &Contexts, VkImage InImage, const FVulkanTextureViewDesc &ViewDesc)
Definition VulkanView.cpp:289
EType GetViewType() const
Definition VulkanResources.h:490
void InitAsTypedBufferView(const FVulkanContextArray &Contexts, FVulkanBuffer *Buffer, EPixelFormat Format, uint32 InOffset, uint32 InSize)
Definition VulkanView.cpp:140
FTextureView const & GetTextureView() const
Definition VulkanResources.h:501
void InitAsAccelerationStructureView(const FVulkanContextArray &Contexts, FVulkanBuffer *Buffer, uint32 Offset, uint32 Size)
Definition VulkanView.cpp:320
bool IsInitialized() const
Definition VulkanResources.h:495
void InitAsTextureView(const FVulkanContextArray &Contexts, VkImage InImage, const FVulkanTextureViewDesc &ViewDesc)
Definition VulkanView.cpp:191
FStructuredBufferView const & GetStructuredBufferView() const
Definition VulkanResources.h:502
FAccelerationStructureView const & GetAccelerationStructureView() const
Definition VulkanResources.h:503
EType
Definition VulkanResources.h:476
@ Texture
Definition VulkanResources.h:479
@ AccelerationStructure
Definition VulkanResources.h:481
@ TypedBuffer
Definition VulkanResources.h:478
@ StructuredBuffer
Definition VulkanResources.h:480
@ Null
Definition VulkanResources.h:477
FRHIDescriptorHandle GetBindlessHandle() const
Definition VulkanResources.h:521
void CreateTextureView(VkImage InImage, const FVulkanTextureViewDesc &ViewDesc)
Definition VulkanView.cpp:284
Definition VulkanResources.h:558
bool HasLinkedViews() const
Definition VulkanResources.h:565
virtual void UpdateLinkedViews(const FVulkanContextArray &Contexts)
Definition VulkanView.cpp:341
virtual ~FVulkanViewableResource()
Definition VulkanResources.h:560
Definition RefCounting.h:196
Definition ArrayView.h:139
UE_FORCEINLINE_HINT SizeType AddUninitialized()
Definition Array.h:1664
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT ElementType * GetData() UE_LIFETIMEBOUND
Definition Array.h:1027
Definition List.h:349
void Unlink()
Definition List.h:132
Definition UnrealString.h.inl:34
Definition RHICommandList.h:5170
Definition StaticArray.h:26
Definition UniquePtr.h:107
Definition TVariant.h:48
U & Get() UE_LIFETIMEBOUND
Definition TVariant.h:146
SIZE_T GetIndex() const
Definition TVariant.h:231
Definition VulkanResources.h:257
@ StaticFrequency
Definition VulkanResources.h:267
virtual uint32 GetRefCount() const override final
Definition VulkanResources.h:278
virtual FReturnedRefCountValue AddRef() const override final
Definition VulkanResources.h:270
virtual uint32 Release() const override final
Definition VulkanResources.h:274
Definition CriticalSection.h:14
Definition VulkanMemory.h:877
uint32 GetSize() const
Definition VulkanMemory.cpp:4275
Definition VulkanMemory.h:418
VkBuffer GetBufferHandle() const
Definition VulkanMemory.cpp:3866
uint32 Size
Definition VulkanMemory.h:434
uint32 Offset
Definition VulkanMemory.h:435
uint64 VulkanHandle
Definition VulkanMemory.h:432
uint8 bTransient
Definition VulkanMemory.h:441
EStage
Definition VulkanCommon.h:35
@ Geometry
Definition VulkanCommon.h:38
@ NumGraphicsStages
Definition VulkanCommon.h:42
@ Mesh
Definition VulkanCommon.h:39
@ Pixel
Definition VulkanCommon.h:37
@ Vertex
Definition VulkanCommon.h:36
@ Task
Definition VulkanCommon.h:40
Definition VulkanCommandBuffer.h:22
Definition RHIResources.h:246
Definition VulkanPipeline.h:127
Definition RHIResources.h:1417
Definition RHIDefinitions.h:1401
Definition MultiGPU.h:33
Definition RHI.h:543
FName Name
Definition RHI.h:544
Definition RHIResources.h:1938
Definition RHIResources.h:1689
uint16 ArraySize
Definition RHIResources.h:1862
Definition RHITransientResourceAllocator.h:161
Definition RHIResources.h:1150
Definition RHIResources.h:2648
Definition RefCounting.h:29
Definition RHIResources.h:755
Definition VulkanResources.h:899
void * HostPtr
Definition VulkanResources.h:901
VkDeviceAddress DeviceAddress
Definition VulkanResources.h:902
VulkanRHI::FVulkanAllocation Alloc
Definition VulkanResources.h:900
Definition VulkanContext.h:517
Definition VulkanResources.h:406
VkBuffer Buffer
Definition VulkanResources.h:407
uint32 MipOffsets[MAX_TEXTURE_MIP_COUNT]
Definition VulkanResources.h:408
Definition VulkanBuffer.cpp:20
Definition IVulkanDynamicRHI.h:28
Definition VulkanResources.h:583
VulkanRHI::FVulkanAllocation Allocation
Definition VulkanResources.h:584
uint64 ResourceOffset
Definition VulkanResources.h:585
Definition VulkanResources.h:581
VkMemoryRequirements MemoryRequirements
Definition VulkanResources.h:588
uint64 LastBlockSize
Definition VulkanResources.h:589
uint32 BlockCount
Definition VulkanResources.h:590
TArray< FSparseAllocation > Allocations
Definition VulkanResources.h:587
uint32 NumCommittedTiles
Definition VulkanResources.h:591
Definition VulkanShaderResources.h:20
FString DebugName
Definition VulkanShaderResources.h:126
uint32 SpirvCRC
Definition VulkanShaderResources.h:106
Definition VulkanResources.h:413
uint32 ArraySliceIndex
Definition VulkanResources.h:420
VkSamplerYcbcrConversion SamplerYcbcrConversion
Definition VulkanResources.h:423
EPixelFormat UEFormat
Definition VulkanResources.h:416
bool bUseIdentitySwizzle
Definition VulkanResources.h:424
uint32 NumArraySlices
Definition VulkanResources.h:421
uint32 FirstMip
Definition VulkanResources.h:418
uint32 NumMips
Definition VulkanResources.h:419
VkFormat Format
Definition VulkanResources.h:417
VkImageAspectFlags AspectFlags
Definition VulkanResources.h:415
uint32 GetHash() const
Definition VulkanView.cpp:9
VkImageViewType ViewType
Definition VulkanResources.h:414
VkImageUsageFlags ImageUsageFlags
Definition VulkanResources.h:422
Definition VulkanResources.h:664
VkImageCompressionControlEXT CompressionControl
Definition VulkanResources.h:673
TArray< VkFormat, TInlineAllocator< 2 > > FormatsUsed
Definition VulkanResources.h:671
VkImageFormatListCreateInfoKHR ImageFormatListCreateInfo
Definition VulkanResources.h:667
VkExternalMemoryImageCreateInfoKHR ExternalMemImageCreateInfo
Definition VulkanResources.h:669
VkImageCreateInfo ImageCreateInfo
Definition VulkanResources.h:665
VkImageCompressionFixedRateFlagsEXT CompressionFixedRateFlags
Definition VulkanResources.h:672
Definition VulkanResources.h:456
VkAccelerationStructureKHR Handle
Definition VulkanResources.h:457
Definition VulkanResources.h:436
bool bInitialized
Definition VulkanResources.h:437
Definition VulkanResources.h:448
uint32 Size
Definition VulkanResources.h:452
uint32 HandleId
Definition VulkanResources.h:450
VkBuffer Buffer
Definition VulkanResources.h:449
uint32 Offset
Definition VulkanResources.h:451
Definition VulkanResources.h:461
VkImage Image
Definition VulkanResources.h:463
VkImageView View
Definition VulkanResources.h:462
uint32 ViewId
Definition VulkanResources.h:464
Definition VulkanResources.h:441
uint32 ViewId
Definition VulkanResources.h:443
bool bVolatile
Definition VulkanResources.h:444
VkBufferView View
Definition VulkanResources.h:442
static int32 Snprintf(CharType *Dest, int32 DestSize, const FmtType &Fmt, Types... Args)
Definition CString.h:581
FVulkanTaskShader TConcreteType
Definition VulkanResources.h:1188
FVulkanBlendState TConcreteType
Definition VulkanResources.h:1249
FVulkanBoundShaderState TConcreteType
Definition VulkanResources.h:1255
FVulkanBuffer TConcreteType
Definition VulkanResources.h:1218
FVulkanComputeShader TConcreteType
Definition VulkanResources.h:1203
FVulkanDepthStencilState TConcreteType
Definition VulkanResources.h:1244
FVulkanGPUFence TConcreteType
Definition VulkanResources.h:1267
FVulkanGeometryShader TConcreteType
Definition VulkanResources.h:1193
FVulkanMeshShader TConcreteType
Definition VulkanResources.h:1183
FVulkanPixelShader TConcreteType
Definition VulkanResources.h:1198
FVulkanRasterizerState TConcreteType
Definition VulkanResources.h:1239
FVulkanRayTracingGeometry TConcreteType
Definition VulkanResources.h:1299
FVulkanRayTracingPipelineState TConcreteType
Definition VulkanResources.h:1309
FVulkanRayTracingScene TConcreteType
Definition VulkanResources.h:1294
FVulkanRayTracingShader TConcreteType
Definition VulkanResources.h:1314
FVulkanRenderQuery TConcreteType
Definition VulkanResources.h:1208
FVulkanSamplerState TConcreteType
Definition VulkanResources.h:1234
FVulkanRayTracingShaderTable TConcreteType
Definition VulkanResources.h:1304
FVulkanShaderResourceView TConcreteType
Definition VulkanResources.h:1223
FVulkanStagingBuffer TConcreteType
Definition VulkanResources.h:1261
FVulkanUniformBuffer TConcreteType
Definition VulkanResources.h:1213
FVulkanUnorderedAccessView TConcreteType
Definition VulkanResources.h:1228
FVulkanVertexDeclaration TConcreteType
Definition VulkanResources.h:1173
FVulkanVertexShader TConcreteType
Definition VulkanResources.h:1178
Definition VulkanResources.h:1168