32#define VERIFYVULKANRESULT(VkFunction) { const VkResult ScopedResult = VkFunction; if (ScopedResult != VK_SUCCESS) { VulkanRHI::VerifyVulkanResult(ScopedResult, #VkFunction, __FILE__, __LINE__); }}
33#define VERIFYVULKANRESULT_EXPANDED(VkFunction) { const VkResult ScopedResult = VkFunction; if (ScopedResult < VK_SUCCESS) { VulkanRHI::VerifyVulkanResult(ScopedResult, #VkFunction, __FILE__, __LINE__); }}
52 template <
class DataReceiver>
73 template <
class DataReceiver>
91 Result.Data = Result.DataStorage.Get();
114 void EnsureDataStorage()
119 Data = DataStorage.Get();
137 return ((Data->Num() ==
Other.Data->Num()) &&
142template <
class Derived,
bool AlwaysCompareData = false>
146 template <
class ArchiveWriter>
160 template <
class ObjectType>
180 Result.Hash = this->
Hash;
181 this->CopyDataDeep(Result);
188 Result.Hash = this->
Hash;
189 this->CopyDataShallow(Result);
200 return ((
A.Hash ==
B.Hash) &&
A.IsDataEquals(
B));
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
auto GetData(const TStringConversion< Converter, DefaultConversionSize > &Conversion) -> decltype(Conversion.Get())
Definition StringConv.h:802
uint32 Size
Definition VulkanMemory.cpp:4034
void SetVulkanResourceName(FVulkanDevice *Device, FVulkanTexture *Texture, const TCHAR *Name)
Definition VulkanUtil.cpp:34
bool CopyAndReturnNotEqual(T &A, T B)
Definition VulkanUtil.h:38
Definition MemoryWriter.h:101
Definition VulkanDevice.h:279
Definition VulkanResources.h:604
UE_NODEBUG UE_FORCEINLINE_HINT ElementType * GetData() UE_LIFETIMEBOUND
Definition Array.h:1027
bool IsDataEquals(const TDataKeyBase &Other) const
Definition VulkanUtil.h:63
void CopyDataShallow(TDataKeyBase &Result) const
Definition VulkanUtil.h:62
void SetData(const void *InData, uint32 InSize)
Definition VulkanUtil.h:59
void GetData(DataReceiver &&ReceiveData)
Definition VulkanUtil.h:53
void CopyDataDeep(TDataKeyBase &Result) const
Definition VulkanUtil.h:61
void CopyDataShallow(TDataKeyBase &Result) const
Definition VulkanUtil.h:94
void GetData(DataReceiver &&ReceiveData)
Definition VulkanUtil.h:74
void SetData(const void *InData, uint32 InSize)
Definition VulkanUtil.h:80
bool IsDataEquals(const TDataKeyBase &Other) const
Definition VulkanUtil.h:100
TArray< uint8 > & GetDataRef()
Definition VulkanUtil.h:108
void CopyDataDeep(TDataKeyBase &Result) const
Definition VulkanUtil.h:87
bool IsDataEquals(const TDataKeyBase &Other) const
Definition VulkanUtil.h:134
Definition VulkanUtil.h:46
Definition VulkanUtil.h:144
friend uint32 GetTypeHash(const Derived &Key)
Definition VulkanUtil.h:193
void GenerateFromObject(const ObjectType &Object)
Definition VulkanUtil.h:161
void GenerateFromData(const void *InData, uint32 InSize)
Definition VulkanUtil.h:166
void GenerateFromArchive(ArchiveWriter &&WriteToArchive, int32 DataReserve=0)
Definition VulkanUtil.h:147
Derived CopyDeep() const
Definition VulkanUtil.h:177
uint32 GetHash() const
Definition VulkanUtil.h:172
friend bool operator==(const Derived &A, const Derived &B)
Definition VulkanUtil.h:198
Derived CopyShallow() const
Definition VulkanUtil.h:185
Definition UniquePtr.h:107
Definition VulkanCommandBuffer.h:22
VkBuffer CreateBuffer(FVulkanDevice *InDevice, VkDeviceSize Size, VkBufferUsageFlags BufferUsageFlags, VkMemoryRequirements &OutMemoryRequirements)
Definition VulkanUtil.cpp:725
void VerifyVulkanResult(VkResult Result, const ANSICHAR *VkFunction, const ANSICHAR *Filename, uint32 Line)
Definition VulkanUtil.cpp:749
static UE_FORCEINLINE_HINT uint32 MemCrc32(const void *Data, int32 Length, uint32 CRC=0)
Definition Crc.h:31
static UE_FORCEINLINE_HINT int32 Memcmp(const void *Buf1, const void *Buf2, SIZE_T Count)
Definition UnrealMemory.h:114
static UE_FORCEINLINE_HINT void * Memcpy(void *Dest, const void *Src, SIZE_T Count)
Definition UnrealMemory.h:160