UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MetalResources.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 MetalResources.h: Metal resource RHI definitions..
5=============================================================================*/
6
7#pragma once
8
9#include "MetalRHIPrivate.h"
12#include "MetalSubmission.h"
13#include "ShaderCodeArchive.h"
14#include "Templates/TypeHash.h"
15
16#define UE_METAL_RHI_SUPPORT_CLEAR_UAV_WITH_BLIT_ENCODER 1
17
19
20class FMetalContext;
23
24extern NS::String* DecodeMetalSourceCode(uint32 CodeSize, TArray<uint8> const& CompressedSource);
25
27{
29 {
30 return HashCombine(GetTypeHash(Hash.RasterBits), GetTypeHash(Hash.TargetBits));
31 }
32
34 {
35 return Left.RasterBits == Right.RasterBits && Left.TargetBits == Right.TargetBits;
36 }
37
40};
41
45class FMetalDevice;
46
47inline uint32 GetTypeHash(const MTL::Buffer* BufferPtr)
48{
49 return GetTypeHash((void*)BufferPtr);
50}
51
54{
55public:
56 enum class FreePolicy
57 {
58 Owner, // FMetalBuffer owns releasing memory
59 BufferAllocator, // Owned by allocator
60 Temporary, // Temporary buffer that does not need a release
61 };
62
63 FMetalBuffer(MTL::Buffer* Handle, FreePolicy Allocation);
64 FMetalBuffer(MTL::Buffer* Handle, NS::Range Range, IMetalBufferAllocator* InAllocator);
65
66 virtual ~FMetalBuffer();
67
69 {
70 return SubRange.location;
71 }
72
74 {
75 return SubRange.length;
76 }
77
78 const NS::Range& GetRange()
79 {
80 return SubRange;
81 }
82
84 {
85 return HashCombine(GetTypeHash(Hash.Buffer), GetTypeHash((uint64)Hash.SubRange.location));
86 }
87
88 void* Contents()
89 {
90 check(Buffer->length() >= GetOffset() + GetLength());
91 return ((uint8_t*)Buffer->contents()) + GetOffset();
92 }
93
95 {
96 return Buffer->gpuAddress() + GetOffset();
97 }
98
99 MTL::Buffer* GetMTLBuffer() {return Buffer;};
100
102 {
103 bMarkedDeleted = true;
104 }
105
106private:
107 void Release();
108
109 MTL::Buffer* Buffer;
110 IMetalBufferAllocator* Allocator;
111
112 NS::Range SubRange;
113 FreePolicy OnFreePolicy;
114 bool bMarkedDeleted = false;
115};
116
118
119#if METAL_RHI_RAYTRACING
121{
122public:
125 Size(InSize)
126 {
127 }
128
130
131 uint32_t GetSize() const
132 {
133 return Size;
134 }
135
136 void SetLabel(const FString& Label)
137 {
138 IndirectArgumentBuffer->GetMTLBuffer()->setLabel(FStringToNSString(Label));
140 }
141
143
145 {
147 }
148
150 {
152 }
153
154private:
157
159};
160#endif
161
173
177
179{
180public:
182 {
183 checkf(!HasLinkedViews(), TEXT("All linked views must have been removed before the underlying resource can be deleted."));
184 }
185
186 bool HasLinkedViews() const
187 {
188 return LinkedViews != nullptr;
189 }
190
192
193private:
196 FMetalResourceViewBase* LinkedViews = nullptr;
197};
198
200{
201 return GetTypeHash(TexturePtr.get());
202}
203
204// Metal RHI texture resource
206{
207public:
211 FMetalSurface(FMetalDevice& Device, FMetalTextureCreateDesc const& CreateDesc);
212
216 virtual ~FMetalSurface();
217
218protected:
223 : FRHITexture (CreateDesc)
224 , Device (MetalDevice)
225 , FormatKey (0)
227 , Viewport (nullptr)
228 , TotalTextureSize (0)
229 {}
230
231public:
232
233 void Initialize(FRHICommandListBase& RHICmdList);
234
236 MTL::Buffer* AllocSurface(const FRHILockTextureArgs& Arguments, uint32 MipBytes, uint32 DestStride);
237
241 void UpdateSurfaceAndDestroySourceBuffer(FMetalRHICommandContext* Context, MTL::Buffer* SourceBuffer, uint32 MipIndex, uint32 ArrayIndex);
242
249
253 void Unlock(const FRHILockTextureArgs& Arguments);
254
260 FRHILockTextureResult AsyncLock(FRHICommandListBase& RHICmdList, const FRHILockTextureArgs& Arguments);
261
265 uint32 GetMipSize(uint32 MipIndex, uint32* Stride, bool bSingleLayer);
266
270 uint32 GetMemorySize();
271
273 uint32 GetNumFaces();
274
276 MTLTexturePtr GetDrawableTexture();
277 void ReleaseDrawableTexture();
278
279 MTLTexturePtr GetCurrentTexture();
280
281 MTLTexturePtr Reallocate(MTLTexturePtr Texture, MTL::TextureUsage UsageModifier);
282 void MakeAliasable(void);
283
284 virtual void* GetTextureBaseRHI() override final
285 {
286 return this;
287 }
288
289 virtual void* GetNativeResource() const override final
290 {
291 return Texture.get();
292 }
293
294#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
296 {
297 return BindlessHandle;
298 }
299#endif // PLATFORM_SUPPORTS_BINDLESS_RENDERING
300
303
304 //texture used for store actions and binding to shader params
306 //if surface is MSAA, texture used to bind for RT
308
309 //texture used for a resolve target. Same as texture on iOS.
310 //Dummy target on Mac where RHISupportsSeparateMSAAAndResolveTextures is true. In this case we don't always want a resolve texture but we
311 //have to have one until renderpasses are implemented at a high level.
312 // Mac / RHISupportsSeparateMSAAAndResolveTextures == true
313 // iOS A9+ where depth resolve is available
314 // iOS < A9 where depth resolve is unavailable.
316
317 // Used for atomics
319
320 // For back-buffers, the owning viewport.
322
323private:
327 void SafeRelease(MTLTexturePtr Texture);
328
329 FCriticalSection DrawableMutex;
330
331protected:
332
333 // how much memory is allocated for this texture
335
336#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
337 FRHIDescriptorHandle BindlessHandle;
338#endif
339};
340
345{
346public:
349
350private:
351 TUniqueFunction<void()> OnDeleteFunction;
352};
353
355{
356public:
359
360 uint8* Data = nullptr;
362};
363
365{
366public:
368 virtual ~FMetalRHIBuffer();
369
371
372 void AllocateBuffer();
373 void ReleaseBuffer();
374 void SwitchBuffer(FRHICommandListBase& RHICmdList);
375
379 void* Lock(FRHICommandListBase& RHICmdList, EResourceLockMode LockMode, uint32 Offset, uint32 Size);
380
384 void Unlock(FRHICommandListBase& RHICmdList);
385
387
388 // We need to allocate here because buffer backed textures can be created without an Allocated buffer
390 {
391 if(!CurrentBuffer)
392 {
394 }
395 return CurrentBuffer;
396 }
397
399 {
400 return CurrentBuffer;
401 }
402
403 // 16- or 32-bit; used for index buffers only.
404 MTL::IndexType GetIndexType() const
405 {
406 return GetStride() == 2 ? MTL::IndexTypeUInt16 : MTL::IndexTypeUInt32;
407 }
408
409#if METAL_RHI_RAYTRACING
410 bool IsAccelerationStructure() const
411 {
412 return AccelerationStructure != nullptr;
413 }
415#endif // METAL_RHI_RAYTRACING
416
420 bool UsePrivateMemory() const;
421
423 void ReleaseOwnership();
424
426
427 // A temporary shared/CPU accessible buffer for upload/download
430
431 // Initial buffer size.
433
434 // offset into the buffer (for lock usage)
436
437 // Sizeof outstanding lock.
439
440 // Storage mode
441 MTL::StorageMode Mode;
442
443 // Current lock mode. RLM_Num indicates this buffer is not locked.
445
446 bool bIsFirstLock = true;
447
448#if ENABLE_LOW_LEVEL_MEM_TRACKER || UE_MEMORY_TRACE_ENABLED
449 void UpdateAllocationTags();
450#endif
451
452private:
453 // Allocate the CPU accessible buffer for data transfer.
454 void AllocTransferBuffer(bool bOnRHIThread, uint32 InSize, EResourceLockMode LockMode);
455};
456
457class FMetalResourceViewBase : public TIntrusiveLinkedList<FMetalResourceViewBase>
458{
459public:
472
491
494 , FBufferView
495 , FTextureBufferBacked
496#if METAL_RHI_RAYTRACING
498#endif
500
501 enum class EMetalType
502 {
503 Null = TStorage::IndexOfType<FEmptyVariantState>(),
504 TextureView = TStorage::IndexOfType<MTLTexturePtr>(),
505 BufferView = TStorage::IndexOfType<FBufferView>(),
506 TextureBufferBacked = TStorage::IndexOfType<FTextureBufferBacked>(),
507#if METAL_RHI_RAYTRACING
508 AccelerationStructure = TStorage::IndexOfType<FMetalAccelerationStructure*>()
509#endif
510 };
511
512protected:
515
516public:
517 virtual ~FMetalResourceViewBase();
518
520 {
521 return static_cast<EMetalType>(Storage.GetIndex());
522 }
523
525 {
527 return Storage.Get<MTLTexturePtr>();
528 }
529
531 {
533 return Storage.Get<FBufferView>();
534 }
535
541
542#if METAL_RHI_RAYTRACING
544 {
545 check(GetMetalType() == EMetalType::AccelerationStructure);
546 return Storage.Get<FMetalAccelerationStructure*>();
547 }
548#endif
549
550 // TODO: This is kinda awkward; should probably be refactored at some point.
552
554
555protected:
559
560#if METAL_RHI_RAYTRACING
562#endif
563
564 void Invalidate();
565
567 bool bOwnsResource = true;
568
569private:
570 TStorage Storage;
571};
572
574{
575public:
580
581 virtual void UpdateView(FMetalRHICommandContext* Context, const bool bConstructing) override;
582
583#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
584public:
585 FRHIDescriptorHandle BindlessHandle;
586
587 virtual FRHIDescriptorHandle GetBindlessHandle() const override
588 {
589 return BindlessHandle;
590 }
591
593#endif // PLATFORM_SUPPORTS_BINDLESS_RENDERING
594};
595
597{
598public:
603
604 virtual void UpdateView(FMetalRHICommandContext* Context, const bool bConstructing) override;
605
606 void ClearUAV(TRHICommandList_RecursiveHazardous<FMetalRHICommandContext>& RHICmdList, const void* ClearValue, bool bFloat);
607#if UE_METAL_RHI_SUPPORT_CLEAR_UAV_WITH_BLIT_ENCODER
609#endif
610
611#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
612private:
613 FRHIDescriptorHandle BindlessHandle;
614
615public:
616 virtual FRHIDescriptorHandle GetBindlessHandle() const override
617 {
618 return BindlessHandle;
619 }
620#endif // PLATFORM_SUPPORTS_BINDLESS_RENDERING
621};
622
623class FMetalGPUFence final : public FRHIGPUFence
624{
625public:
626 FMetalGPUFence(FName InName);
627
628 virtual void Clear() override;
629 virtual bool Poll() const override;
630 virtual void Wait(FRHICommandListImmediate& RHICmdList, FRHIGPUMask GPUMask) const override;
631
632private:
633 FMetalSyncPointRef SyncPoint;
634
635 friend class FMetalDynamicRHI;
636};
637
648#if METAL_RHI_RAYTRACING
652#endif // METAL_RHI_RAYTRACING
653#if PLATFORM_SUPPORTS_MESH_SHADERS
654class FMetalMeshShader;
656#endif
657
658
659template<>
664template<>
669template<>
674template<>
679template<>
684template<>
689#if PLATFORM_SUPPORTS_MESH_SHADERS
690template<>
692{
693 typedef FMetalMeshShader TConcreteType;
694};
695template<>
697{
698 typedef FMetalAmplificationShader TConcreteType;
699};
700#endif
701template<>
706template<>
711template<>
716template<>
721template<>
726
727template<>
732template<>
737template<>
742#if METAL_RHI_RAYTRACING
743template<>
745{
746 typedef FMetalRayTracingScene TConcreteType;
747};
748template<>
750{
751 typedef FMetalRayTracingGeometry TConcreteType;
752};
753template<>
755{
756 typedef FMetalRayTracingShaderBindingTable TConcreteType;
757};
758#endif // METAL_RHI_RAYTRACING
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
#define TEXT(x)
Definition Platform.h:1272
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
FORCEINLINE NS::String * FStringToNSString(const FString &InputString)
Definition MetalRHIPrivate.h:292
uint32 GetTypeHash(const MTL::Buffer *BufferPtr)
Definition MetalResources.h:47
NS::String * DecodeMetalSourceCode(uint32 CodeSize, TArray< uint8 > const &CompressedSource)
Definition MetalShaders.cpp:32
TSharedPtr< FMetalBuffer, ESPMode::ThreadSafe > FMetalBufferPtr
Definition MetalResources.h:117
EPixelFormat
Definition PixelFormat.h:16
EResourceLockMode
Definition RHIDefinitions.h:785
@ RLM_Num
Definition RHIDefinitions.h:789
constexpr uint32 HashCombine(uint32 A, uint32 C)
Definition TypeHash.h:36
FRWLock Lock
Definition UnversionedPropertySerialization.cpp:921
uint32 Offset
Definition VulkanMemory.cpp:4033
uint32 Size
Definition VulkanMemory.cpp:4034
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition MetalResources.h:355
uint8 * Data
Definition MetalResources.h:360
~FMetalBufferData()
Definition MetalRHIBuffer.cpp:28
uint32 Len
Definition MetalResources.h:361
void InitWithSize(uint32 Size)
Definition MetalRHIBuffer.cpp:38
Definition MetalResources.h:54
friend uint32 GetTypeHash(FMetalBuffer const &Hash)
Definition MetalResources.h:83
uint64_t GetGPUAddress()
Definition MetalResources.h:94
void MarkDeleted()
Definition MetalResources.h:101
void * Contents()
Definition MetalResources.h:88
uint32 GetLength()
Definition MetalResources.h:73
uint32 GetOffset()
Definition MetalResources.h:68
FreePolicy
Definition MetalResources.h:57
MTL::Buffer * GetMTLBuffer()
Definition MetalResources.h:99
virtual ~FMetalBuffer()
Definition MetalBuffer.cpp:50
const NS::Range & GetRange()
Definition MetalResources.h:78
Definition MetalCommandBuffer.h:17
Definition MetalComputeShader.h:19
Definition MetalDevice.h:102
Definition MetalDynamicRHI.h:74
Definition MetalResources.h:345
Definition MetalResources.h:624
virtual void Clear() override
Definition MetalUAV.cpp:766
virtual bool Poll() const override
Definition MetalUAV.cpp:771
virtual void Wait(FRHICommandListImmediate &RHICmdList, FRHIGPUMask GPUMask) const override
Definition MetalUAV.cpp:783
Definition MetalGeometryShader.h:19
Definition MetalGraphicsPipelineState.h:18
Definition MetalPixelShader.h:19
Definition MetalResources.h:365
virtual ~FMetalRHIBuffer()
Definition MetalRHIBuffer.cpp:173
void ReleaseBuffer()
Definition MetalRHIBuffer.cpp:290
const FMetalBufferPtr & GetCurrentBufferOrNull() const
Definition MetalResources.h:398
uint32 Size
Definition MetalResources.h:432
bool bIsFirstLock
Definition MetalResources.h:446
void SwitchBuffer(FRHICommandListBase &RHICmdList)
Definition MetalRHIBuffer.cpp:178
void Unlock(FRHICommandListBase &RHICmdList)
Definition MetalRHIBuffer.cpp:436
void UploadTransferBuffer(FRHICommandListBase &RHICmdList, FMetalBufferPtr &&InTransferBuffer, uint32 UploadSize)
Definition MetalRHIBuffer.cpp:495
bool UsePrivateMemory() const
Definition MetalRHIBuffer.cpp:75
MTL::IndexType GetIndexType() const
Definition MetalResources.h:404
uint32 LockOffset
Definition MetalResources.h:435
EResourceLockMode CurrentLockMode
Definition MetalResources.h:444
uint32 LockSize
Definition MetalResources.h:438
bool RequiresTransferBuffer()
Definition MetalRHIBuffer.cpp:311
MTL::StorageMode Mode
Definition MetalResources.h:441
void ReleaseOwnership()
Definition MetalRHIBuffer.cpp:549
const FMetalBufferPtr & GetCurrentBuffer()
Definition MetalResources.h:389
FMetalBufferPtr CurrentBuffer
Definition MetalResources.h:429
FMetalBufferPtr TransferBuffer
Definition MetalResources.h:428
FMetalDevice & Device
Definition MetalResources.h:425
void AllocateBuffer()
Definition MetalRHIBuffer.cpp:184
Definition MetalRHIContext.h:48
Definition MetalRHIRenderQuery.h:106
Definition MetalRHIStagingBuffer.h:16
Definition MetalResources.h:458
virtual ~FMetalResourceViewBase()
Definition MetalUAV.cpp:23
void Invalidate()
Definition MetalUAV.cpp:29
const MTLTexturePtr & GetTextureView() const
Definition MetalResources.h:524
const FTextureBufferBacked & GetTextureBufferBacked() const
Definition MetalResources.h:536
TArray< TTuple< MTL::Resource *, MTL::ResourceUsage > > ReferencedResources
Definition MetalResources.h:551
FMetalDevice & Device
Definition MetalResources.h:566
FMetalResourceViewBase(FMetalDevice &InDevice)
Definition MetalResources.h:513
EMetalType
Definition MetalResources.h:502
const FBufferView & GetBufferView() const
Definition MetalResources.h:530
TVariant< FEmptyVariantState, MTLTexturePtr, FBufferView, FTextureBufferBacked > TStorage
Definition MetalResources.h:499
bool bOwnsResource
Definition MetalResources.h:567
void InitAsTextureView(MTLTexturePtr)
Definition MetalUAV.cpp:64
EMetalType GetMetalType() const
Definition MetalResources.h:519
void InitAsBufferView(FMetalBufferPtr Buffer, uint32 Offset, uint32 Size)
Definition MetalUAV.cpp:70
virtual void UpdateView(FMetalRHICommandContext *Context, const bool bConstructing)=0
void InitAsTextureBufferBacked(MTLTexturePtr Texture, FMetalBufferPtr Buffer, uint32 Offset, uint32 Size, EPixelFormat Format, bool bIsBuffer)
Definition MetalUAV.cpp:77
Definition MetalShaderLibrary.h:18
Definition MetalPipeline.h:110
Definition MetalResources.h:574
FMetalViewableResource * GetBaseResource() const
Definition MetalUAV.cpp:130
virtual void UpdateView(FMetalRHICommandContext *Context, const bool bConstructing) override
Definition MetalUAV.cpp:208
~FMetalShaderResourceView()
Definition MetalUAV.cpp:117
Definition MetalBuffer.h:43
Definition MetalBuffer.h:92
Definition MetalBuffer.h:124
Definition MetalUniformBuffer.h:19
Definition MetalResources.h:206
virtual void * GetTextureBaseRHI() override final
Definition MetalResources.h:284
class FMetalViewport * Viewport
Definition MetalResources.h:321
MTLTexturePtr MSAATexture
Definition MetalResources.h:307
MTLTexturePtr Texture
Definition MetalResources.h:305
FMetalSurface(FMetalDevice &MetalDevice, MTLTexturePtr InTexture, FRHITextureCreateDesc const &CreateDesc)
Definition MetalResources.h:222
virtual void * GetNativeResource() const override final
Definition MetalResources.h:289
uint64 TotalTextureSize
Definition MetalResources.h:334
MTLTexturePtr MSAAResolveTexture
Definition MetalResources.h:315
uint8 FormatKey
Definition MetalResources.h:302
FMetalBufferPtr BackingBuffer
Definition MetalResources.h:318
FMetalDevice & Device
Definition MetalResources.h:301
Definition MetalResources.h:597
void ClearUAVWithBlitEncoder(TRHICommandList_RecursiveHazardous< FMetalRHICommandContext > &RHICmdList, uint32 Pattern)
void ClearUAV(TRHICommandList_RecursiveHazardous< FMetalRHICommandContext > &RHICmdList, const void *ClearValue, bool bFloat)
Definition MetalUAV.cpp:655
FMetalViewableResource * GetBaseResource() const
Definition MetalUAV.cpp:416
virtual void UpdateView(FMetalRHICommandContext *Context, const bool bConstructing) override
Definition MetalUAV.cpp:423
~FMetalUnorderedAccessView()
Definition MetalUAV.cpp:403
Definition MetalVertexDeclaration.h:24
Definition MetalVertexShader.h:19
Definition MetalResources.h:179
~FMetalViewableResource()
Definition MetalResources.h:181
void UpdateLinkedViews(FMetalRHICommandContext *Context)
Definition MetalUAV.cpp:14
bool HasLinkedViews() const
Definition MetalResources.h:186
Definition MetalViewport.h:49
Definition NameTypes.h:617
Definition RHIResources.h:966
Definition RHIResources.h:1581
uint32 GetStride() const
Definition RHIResources.h:1601
Definition RHICommandList.h:455
Definition RHICommandList.h:4626
Definition RHIResources.h:1018
Definition RHIResources.h:2387
Definition RHIResources.h:978
Definition RHIResources.h:1058
Definition RHIResources.h:960
Definition RHIResources.h:972
Definition RHIResources.h:3729
Definition RHIResources.h:3755
Definition RHIResources.h:2444
Definition RHIResources.h:3863
Definition RHIShaderLibrary.h:13
Definition RHIResources.h:3304
Definition RHIResources.h:3981
Definition RHIResources.h:2153
virtual FRHIDescriptorHandle GetDefaultBindlessHandle() const
Definition RHIResources.h:2177
Definition RHIResources.h:1232
Definition RHIResources.h:3294
Definition RHIResources.h:725
Definition RHIResources.h:954
virtual FRHIDescriptorHandle GetBindlessHandle() const
Definition RHIResources.h:3249
Definition RHIResources.h:1265
Definition MetalBuffer.h:37
Definition Array.h:670
Definition List.h:349
Definition RHICommandList.h:5170
Definition SharedPointer.h:692
Definition FunctionFwd.h:19
Definition TVariant.h:48
U & Get() UE_LIFETIMEBOUND
Definition TVariant.h:146
SIZE_T GetIndex() const
Definition TVariant.h:231
Definition TVariant.h:29
Definition MetalResources.h:27
uint64 TargetBits
Definition MetalResources.h:39
friend bool operator==(FMetalRenderPipelineHash const &Left, FMetalRenderPipelineHash const &Right)
Definition MetalResources.h:33
uint64 RasterBits
Definition MetalResources.h:38
friend uint32 GetTypeHash(FMetalRenderPipelineHash const &Hash)
Definition MetalResources.h:28
Definition MetalResources.h:461
uint32 Offset
Definition MetalResources.h:463
uint32 Size
Definition MetalResources.h:464
FBufferView(FMetalBufferPtr Buffer, uint32 Offset, uint32 Size)
Definition MetalResources.h:466
FMetalBufferPtr Buffer
Definition MetalResources.h:462
Definition MetalResources.h:474
uint32 Offset
Definition MetalResources.h:477
uint32 Size
Definition MetalResources.h:478
EPixelFormat Format
Definition MetalResources.h:479
MTLTexturePtr Texture
Definition MetalResources.h:475
bool bIsBuffer
Definition MetalResources.h:480
FTextureBufferBacked(MTLTexturePtr Texture, FMetalBufferPtr Buffer, uint32 Offset, uint32 Size, EPixelFormat Format, bool bIsBuffer)
Definition MetalResources.h:482
FMetalBufferPtr Buffer
Definition MetalResources.h:476
Definition MetalResources.h:163
FMetalTextureCreateDesc & operator=(const FMetalTextureCreateDesc &Other)
Definition MetalTexture.cpp:528
MTL::PixelFormat MTLFormat
Definition MetalResources.h:169
bool bIsRenderTarget
Definition MetalResources.h:170
MTLTextureDescriptorPtr Desc
Definition MetalResources.h:168
uint8 FormatKey
Definition MetalResources.h:171
Definition RHIResources.h:1417
Definition RHIDefinitions.h:1401
Definition MultiGPU.h:33
Definition DynamicRHI.h:149
Definition DynamicRHI.h:198
Definition RHIResources.h:1938
Definition RHIResources.h:2648
Definition ResourceArray.h:10
FMetalRHIBuffer TConcreteType
Definition MetalResources.h:714
FMetalComputeShader TConcreteType
Definition MetalResources.h:687
FMetalGPUFence TConcreteType
Definition MetalResources.h:735
FMetalGeometryShader TConcreteType
Definition MetalResources.h:677
FMetalGraphicsPipelineState TConcreteType
Definition MetalResources.h:730
FMetalPixelShader TConcreteType
Definition MetalResources.h:682
FMetalRHIRenderQuery TConcreteType
Definition MetalResources.h:704
FMetalShaderLibrary TConcreteType
Definition MetalResources.h:662
FMetalShaderResourceView TConcreteType
Definition MetalResources.h:719
FMetalRHIStagingBuffer TConcreteType
Definition MetalResources.h:740
FMetalSuballocatedUniformBuffer TConcreteType
Definition MetalResources.h:709
FMetalUnorderedAccessView TConcreteType
Definition MetalResources.h:724
FMetalVertexDeclaration TConcreteType
Definition MetalResources.h:667
FMetalVertexShader TConcreteType
Definition MetalResources.h:672
Definition MetalRHIPrivate.h:204