UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MetalStateCache.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "MetalRHIPrivate.h"
6#include "MetalRHIPrivate.h"
7#include "MetalPipeline.h"
8#include "MetalResources.h"
9#include "MetalState.h"
10#include "MetalUniformBuffer.h"
12#include "MetalRHIRenderQuery.h"
13
16class FMetalDevice;
17
26
42
45{
46public:
49
51 void Reset();
52
54 void ResetBindings();
55
56 void SetScissorRect(bool const bEnable, MTL::ScissorRect const& Rect);
61 void InvalidateRenderTargets(void);
62 void SetRenderTargetsActive(bool const bActive);
63 void SetViewport(const MTL::Viewport& InViewport);
64 void SetViewports(const MTL::Viewport InViewport[], uint32 Count);
67 void BindUniformBuffer(EMetalShaderStages const Freq, uint32 const BufferIndex, FRHIUniformBuffer* BufferRHI);
68
69 /*
70 * Monitor if samples pass the depth and stencil tests.
71 * @param Mode Controls if the counter is disabled or moniters passing samples.
72 * @param Offset The offset relative to the occlusion query buffer provided when the command encoder was created. offset must be a multiple of 8.
73 */
74 void SetVisibilityResultMode(MTL::VisibilityResultMode const Mode, NS::UInteger const Offset);
75
76#pragma mark - Public Shader Resource Mutators -
77 /*
78 * Set a global buffer for the specified shader frequency at the given bind point index.
79 * @param Frequency The shader frequency to modify.
80 * @param Buffer The buffer to bind or nullptr to clear.
81 * @param Bytes The FMetalBufferData to bind or nullptr to clear.
82 * @param Offset The offset in the buffer or 0 when Buffer is nullptr.
83 * @param Offset The length of data (caller accounts for Offset) in the buffer or 0 when Buffer is nullptr.
84 * @param Index The index to modify.
85 * @param Usage The resource usage flags.
86 * @param Format The UAV pixel format.
87 * @param ReferencedResources The resources indirectly used by the bound buffer.
88 */
89 void SetShaderBuffer(
92 , FMetalBufferData* const Bytes
93 , NS::UInteger const Offset
94 , NS::UInteger const Length
95 , NS::UInteger const Index
96 , MTL::ResourceUsage const Usage
98 , NS::UInteger const ElementRowPitch = 0
99 , TArray<TTuple<MTL::Resource*, MTL::ResourceUsage>> ReferencedResources = {}
100 );
101
102#if METAL_RHI_RAYTRACING
103 /*
104 * Set a global acceleration structure for the specified shader frequency at the given bind point index.
105 * @param Frequency The shader frequency to modify.
106 * @param AccelerationStructure The acceleration structure to bind or nullptr to clear.
107 * @param Index The index to modify.
108 * @param BLAS The resources indirectly used by the bound buffer.
109 */
111#endif
112
113#if METAL_USE_METAL_SHADER_CONVERTER
114 void CacheOrSkipResourceResidencyUpdate(MTL::Resource* InResource, EMetalShaderStages const Frequency, bool bReadOnly, bool bForceUseResource = false);
115
119
122
123 /*
124 * Write GPU data to ring buffer on CPU, returns GPU address of data written
125 * @param Content Data to upload
126 * @param Size Size in bytes
127 */
129
130 template<class ShaderType, EMetalShaderStages Frequency, MTL::FunctionType FunctionType>
131 void IRBindResourcesToEncoder(ShaderType Shader, FMetalCommandEncoder* Encoder);
132
133 void IRMapVertexBuffers(MTL::RenderCommandEncoder* Encoder, bool bBindForMeshShaders = false);
134#endif
135
136 /*
137 * Set a global texture for the specified shader frequency at the given bind point index.
138 * @param Frequency The shader frequency to modify.
139 * @param Texture The texture to bind or nullptr to clear.
140 * @param Index The index to modify.
141 * @param Usage The resource usage flags.
142 */
143 void SetShaderTexture(EMetalShaderStages const Frequency, MTL::Texture* Texture, NS::UInteger const Index, MTL::ResourceUsage const Usage);
144
145 /*
146 * Set a global sampler for the specified shader frequency at the given bind point index.
147 * @param Frequency The shader frequency to modify.
148 * @param Sampler The sampler state to bind or nullptr to clear.
149 * @param Index The index to modify.
150 */
152
155 void SetStateDirty(void);
156 void SetShaderBufferDirty(EMetalShaderStages const Frequency, NS::UInteger const Index);
161 void CommitResourceTable(EMetalShaderStages const Frequency, MTL::FunctionType const Type, FMetalCommandEncoder& CommandEncoder);
162 void StartRenderPass(const FRHIRenderPassInfo& Info, FMetalQueryBufferRef QueryBuffer, MTL::RenderPassDescriptor* InDesc, bool bInIsParallelContext);
163 void EndRenderPass();
164
165 FMetalShaderParameterCache& GetShaderParameters(EMetalShaderStages const Stage) { return ShaderParameters[Stage]; }
166 FLinearColor const& GetBlendFactor() const { return BlendFactor; }
167 uint32 GetStencilRef() const { return StencilRef; }
168 FMetalDepthStencilState* GetDepthStencilState() const { return DepthStencilState; }
169 FMetalRasterizerState* GetRasterizerState() const { return RasterizerState; }
170 FMetalGraphicsPipelineState* GetGraphicsPSO() const { return GraphicsPSO; }
171 FMetalComputeShader* GetComputeShader() const { return ComputeShader; }
172 CGSize GetFrameBufferSize() const { return FrameBufferSize; }
173 FRHIRenderPassInfo const& GetRenderPassInfo() const { return RenderPassInfo; }
174 int32 GetNumRenderTargets() { return bHasValidColorTarget ? RenderPassInfo.GetNumColorRenderTargets() : -1; }
175 bool GetHasValidRenderTarget() const { return bHasValidRenderTarget; }
176 bool GetHasValidColorTarget() const { return bHasValidColorTarget; }
177 const MTL::Viewport& GetViewport(uint32 const Index) const { check(Index < ML_MaxViewports); return Viewport[Index]; }
179 uint32 GetRenderTargetArraySize() const { return RenderTargetArraySize; }
180 FMetalQueryBufferRef GetVisibilityResultsBuffer() const { return VisibilityResults; }
181 bool NeedsToSetRenderTarget(const FRHIRenderPassInfo& RenderPassInfo);
182 bool HasValidDepthStencilSurface() const { return IsValidRef(DepthStencilSurface); }
183
184 MTL::RenderPassDescriptor* GetRenderPassDescriptor(void) const { return RenderPassDesc; }
185
186 uint32 GetSampleCount(void) const { return SampleCount; }
189 MTL::VisibilityResultMode GetVisibilityResultMode() { return VisibilityMode; }
190 uint32 GetVisibilityResultOffset() { return VisibilityOffset; }
191
195
196 void ReleaseDescriptor(MTL::RenderPassDescriptor* Desc);
198
204
206private:
207 void SetDepthStencilState(FMetalDepthStencilState* InDepthStencilState);
208 void SetRasterizerState(FMetalRasterizerState* InRasterizerState);
209
210 template <class ShaderType>
211 void SetResourcesFromTables(ShaderType Shader, CrossCompiler::EShaderStage ShaderStage);
212
213 void SetViewport(uint32 Index, const MTL::Viewport& InViewport);
214 void SetScissorRect(uint32 Index, bool const bEnable, MTL::ScissorRect const& Rect);
215
216 void Validate();
218
219private:
220
221 void EnsureTextureAndType(EMetalShaderStages Stage, uint32 Index, const TMap<uint8, uint8>& TexTypes) const;
222
223private:
224#pragma mark - Private Type Declarations -
225 struct FMetalBufferBinding
226 {
227 FMetalBufferBinding() : Bytes(nullptr), Offset(0), Length(0), Usage((MTL::ResourceUsage)0), ReferencedResources{} {}
229 FMetalBufferPtr Buffer = nullptr;
231 FMetalBufferData* Bytes = nullptr;
233 NS::UInteger Offset;
235 NS::UInteger Length;
237 NS::UInteger ElementRowPitch;
239 MTL::ResourceUsage Usage;
240#if METAL_RHI_RAYTRACING
243#endif // METAL_RHI_RAYTRACING
245 TArray<TTuple<MTL::Resource*, MTL::ResourceUsage>> ReferencedResources;
246 };
247
249 struct FMetalBufferBindings
250 {
251 FMetalBufferBindings() : Bound(0) {}
253 FMetalBufferBinding Buffers[ML_MaxBuffers];
257 uint32 Bound;
258 };
259
261 struct FMetalTextureBindings
262 {
263 FMetalTextureBindings() : Bound(0) { FMemory::Memzero(Usage); }
265 MTL::Texture* Textures[ML_MaxTextures];
267 MTL::ResourceUsage Usage[ML_MaxTextures];
269 FMetalTextureMask Bound;
270 };
271
273 struct FMetalSamplerBindings
274 {
275 FMetalSamplerBindings() : Bound(0) {}
277 MTL::SamplerState* Samplers[ML_MaxSamplers];
279 uint16 Bound;
280 };
281
282private:
283 void InternalResetStageBindings();
284
285 FMetalDevice& Device;
286
288
289 uint32 SampleCount;
290
291 TSet<TRefCountPtr<FRHIUniformBuffer>> ActiveUniformBuffers;
293
295 uint32 DirtyUniformBuffers[EMetalShaderStages::Num];
296
298 FMetalBufferBinding VertexBuffers[MaxVertexElementCount];
299
301 FMetalBufferBindings ShaderBuffers[EMetalShaderStages::Num];
302 FMetalTextureBindings ShaderTextures[EMetalShaderStages::Num];
303 FMetalSamplerBindings ShaderSamplers[EMetalShaderStages::Num];
304
305 MTL::StoreAction ColorStore[MaxSimultaneousRenderTargets];
306 MTL::StoreAction DepthStore;
307 MTL::StoreAction StencilStore;
308
309#if METAL_USE_METAL_SHADER_CONVERTER
310 static constexpr uint32 TopLevelABNumEntry = 16;
312
314
318#endif
319
320 FMetalQueryBufferRef VisibilityResults;
321 MTL::VisibilityResultMode VisibilityMode;
322 NS::UInteger VisibilityOffset;
323 NS::UInteger VisibilityWritten;
324
329 TRefCountPtr<FMetalComputeShader> PreviousComputeShader;
330
331 uint32 StencilRef;
332
333 FLinearColor BlendFactor;
334 CGSize FrameBufferSize;
335
336 uint32 RenderTargetArraySize;
337
338 MTL::Viewport Viewport[ML_MaxViewports];
339 MTL::ScissorRect Scissor[ML_MaxViewports];
340
341 uint32 ActiveViewports;
342 uint32 ActiveScissors;
343
344 FRHIRenderPassInfo RenderPassInfo;
347 FTextureRHIRef DepthStencilSurface;
348 FTextureRHIRef DepthStencilResolve;
349
350 MTL::RenderPassDescriptor* RenderPassDesc;
351 uint32 RasterBits;
352 uint8 PipelineBits;
353 bool bIsRenderTargetActive;
354 bool bHasValidRenderTarget;
355 bool bHasValidColorTarget;
356 bool bIsParallelContext = false;
357};
358
360{
361public:
364
367
368 MTL::RenderPassDescriptor* CreateDescriptor()
369 {
370 MTL::RenderPassDescriptor* Desc = Cache.Pop();
371 if (!Desc)
372 {
373 Desc = MTL::RenderPassDescriptor::alloc()->init();
374 check(Desc);
375 }
376 return Desc;
377 }
378
379 void ReleaseDescriptor(MTL::RenderPassDescriptor* Desc)
380 {
381 MTL::RenderPassColorAttachmentDescriptorArray* Attachments = Desc->colorAttachments();
382 for (uint32 i = 0; i < MaxSimultaneousRenderTargets; i++)
383 {
384 MTL::RenderPassColorAttachmentDescriptor* Color = Attachments->object(i);
385 Color->setTexture(nullptr);
386 Color->setResolveTexture(nullptr);
387 Color->setStoreAction(MTL::StoreActionStore);
388 }
389
390 MTL::RenderPassDepthAttachmentDescriptor* Depth = Desc->depthAttachment();
391 Depth->setTexture(nullptr);
392 Depth->setResolveTexture(nullptr);
393 Depth->setStoreAction(MTL::StoreActionStore);
394
395 MTL::RenderPassStencilAttachmentDescriptor* Stencil = Desc->stencilAttachment();
396 Stencil->setTexture(nullptr);
397 Stencil->setResolveTexture(nullptr);
398 Stencil->setStoreAction(MTL::StoreActionStore);
399
400 Desc->setVisibilityResultBuffer(nullptr);
401
402#if PLATFORM_MAC
403 Desc->setRenderTargetArrayLength(1);
404#endif
405
406 Cache.Push(Desc);
407 }
408
410 {
412 return sSelf;
413 }
414
415private:
417};
#define check(expr)
Definition AssertionMacros.h:314
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
bool IsValidRef(const FVertexBufferAndSRV &Buffer)
Definition GPUSkinVertexFactory.h:92
EMetalShaderFrequency
Definition MetalPipeline.h:37
@ ML_MaxSamplers
Definition MetalPipeline.h:47
@ ML_MaxTextures
Definition MetalPipeline.h:49
@ ML_MaxViewports
Definition MetalPipeline.h:50
@ ML_MaxBuffers
Definition MetalPipeline.h:48
EMetalShaderStages
Definition MetalRHIPrivate.h:222
@ Num
Definition MetalRHIPrivate.h:234
@ Compute
Definition MetalRHIPrivate.h:232
EMetalPipelineFlags
Definition MetalStateCache.h:19
@ EMetalPipelineFlagRasterMask
Definition MetalStateCache.h:22
@ EMetalPipelineFlagComputeShader
Definition MetalStateCache.h:21
@ EMetalPipelineFlagMask
Definition MetalStateCache.h:24
@ EMetalPipelineFlagComputeMask
Definition MetalStateCache.h:23
@ EMetalPipelineFlagPipelineState
Definition MetalStateCache.h:20
EMetalRenderFlags
Definition MetalStateCache.h:28
@ EMetalRenderFlagBlendColor
Definition MetalStateCache.h:35
@ EMetalRenderFlagCullMode
Definition MetalStateCache.h:31
@ EMetalRenderFlagDepthClipMode
Definition MetalStateCache.h:39
@ EMetalRenderFlagDepthBias
Definition MetalStateCache.h:32
@ EMetalRenderFlagFrontFacingWinding
Definition MetalStateCache.h:30
@ EMetalRenderFlagDepthStencilState
Definition MetalStateCache.h:36
@ EMetalRenderFlagViewport
Definition MetalStateCache.h:29
@ EMetalRenderFlagVisibilityResultMode
Definition MetalStateCache.h:38
@ EMetalRenderFlagMask
Definition MetalStateCache.h:40
@ EMetalRenderFlagTriangleFillMode
Definition MetalStateCache.h:34
@ EMetalRenderFlagStencilReferenceValue
Definition MetalStateCache.h:37
@ EMetalRenderFlagScissorRect
Definition MetalStateCache.h:33
EPixelFormat
Definition PixelFormat.h:16
@ PF_Unknown
Definition PixelFormat.h:17
@ MaxSimultaneousRenderTargets
Definition RHIDefinitions.h:287
@ MaxVertexElementCount
Definition RHIDefinitions.h:276
EPrimitiveType
Definition RHIDefinitions.h:822
uint32 Offset
Definition VulkanMemory.cpp:4033
uint32 Size
Definition VulkanMemory.cpp:4034
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition MetalResources.h:355
Definition MetalCommandEncoder.h:149
Definition MetalComputeShader.h:19
Definition MetalState.h:53
Definition MetalDevice.h:102
Definition MetalGraphicsPipelineState.h:18
Definition MetalState.h:38
Definition MetalStateCache.h:360
~FMetalRenderPassDescriptorPool()
Definition MetalStateCache.h:365
FMetalRenderPassDescriptorPool()
Definition MetalStateCache.h:362
static FMetalRenderPassDescriptorPool & Get()
Definition MetalStateCache.h:409
void ReleaseDescriptor(MTL::RenderPassDescriptor *Desc)
Definition MetalStateCache.h:379
MTL::RenderPassDescriptor * CreateDescriptor()
Definition MetalStateCache.h:368
Definition MetalState.h:14
Definition MetalShaderParameterCache.h:16
Definition MetalPipeline.h:110
Definition MetalResources.h:574
Definition MetalStateCache.h:45
void CommitRenderResources(FMetalCommandEncoder *Raster)
Definition MetalStateCache.cpp:1954
void SetShaderBufferDirty(EMetalShaderStages const Frequency, NS::UInteger const Index)
Definition MetalStateCache.cpp:2133
void SetComputePipelineState(FMetalCommandEncoder &CommandEncoder)
Definition MetalStateCache.cpp:2610
FMetalQueryBufferRef GetVisibilityResultsBuffer() const
Definition MetalStateCache.h:180
void CommitResourceTable(EMetalShaderStages const Frequency, MTL::FunctionType const Type, FMetalCommandEncoder &CommandEncoder)
Definition MetalStateCache.cpp:2679
void FlushVisibilityResults(FMetalCommandEncoder &CommandEncoder)
Definition MetalStateCache.cpp:2166
MTL::RenderPassDescriptor * GetRenderPassDescriptor(void) const
Definition MetalStateCache.h:184
bool SetRenderPassInfo(FRHIRenderPassInfo const &InRenderTargets, FMetalQueryBufferRef QueryBuffer)
Definition MetalStateCache.cpp:443
MTL::VisibilityResultMode GetVisibilityResultMode()
Definition MetalStateCache.h:189
FMetalComputeShader * GetComputeShader() const
Definition MetalStateCache.h:171
FMetalGraphicsPipelineState * GetGraphicsPSO() const
Definition MetalStateCache.h:170
void Reset()
Definition MetalStateCache.cpp:234
~FMetalStateCache()
Definition MetalStateCache.cpp:174
bool NeedsToSetRenderTarget(const FRHIRenderPassInfo &RenderPassInfo)
Definition MetalStateCache.cpp:1262
void SetShaderTexture(EMetalShaderStages const Frequency, MTL::Texture *Texture, NS::UInteger const Index, MTL::ResourceUsage const Usage)
Definition MetalStateCache.cpp:1634
void SetViewport(const MTL::Viewport &InViewport)
Definition MetalStateCache.cpp:1001
void SetStencilRef(uint32 const InStencilRef)
Definition MetalStateCache.cpp:388
void SetComputeShader(FMetalComputeShader *InComputeShader)
Definition MetalStateCache.cpp:419
void EndRenderPass()
Definition MetalStateCache.cpp:2111
uint32 GetVertexBufferSize(uint32 const Index)
Definition MetalStateCache.cpp:1139
void ClearPreviousComputeState()
Definition MetalStateCache.cpp:2767
bool HasValidDepthStencilSurface() const
Definition MetalStateCache.h:182
bool GetHasValidColorTarget() const
Definition MetalStateCache.h:176
void InvalidateRenderTargets(void)
Definition MetalStateCache.cpp:979
uint32 GetSampleCount(void) const
Definition MetalStateCache.h:186
void BindUniformBuffer(EMetalShaderStages const Freq, uint32 const BufferIndex, FRHIUniformBuffer *BufferRHI)
Definition MetalStateCache.cpp:1223
void SetShaderBuffer(EMetalShaderStages const Frequency, FMetalBufferPtr Buffer, FMetalBufferData *const Bytes, NS::UInteger const Offset, NS::UInteger const Length, NS::UInteger const Index, MTL::ResourceUsage const Usage, EPixelFormat const Format=PF_Unknown, NS::UInteger const ElementRowPitch=0, TArray< TTuple< MTL::Resource *, MTL::ResourceUsage > > ReferencedResources={})
Definition MetalStateCache.cpp:1387
void SetViewports(const MTL::Viewport InViewport[], uint32 Count)
Definition MetalStateCache.cpp:1061
FMetalRasterizerState * GetRasterizerState() const
Definition MetalStateCache.h:169
void ReleaseDescriptor(MTL::RenderPassDescriptor *Desc)
Definition MetalStateCache.cpp:2762
uint32 GetVisibilityResultOffset()
Definition MetalStateCache.h:190
FMetalShaderParameterCache & GetShaderParameters(EMetalShaderStages const Stage)
Definition MetalStateCache.h:165
void SetRenderStoreActions(FMetalCommandEncoder &CommandEncoder, bool const bConditionalSwitch=false)
Definition MetalStateCache.cpp:2138
CGSize GetFrameBufferSize() const
Definition MetalStateCache.h:172
void SetShaderResourceView(EMetalShaderStages ShaderStage, uint32 BindIndex, FMetalShaderResourceView *SRV)
Definition MetalStateCache.cpp:1702
void SetOverriddenDescriptorHeap(FMetalDescriptorHeap *InHeap)
Definition MetalStateCache.h:200
bool GetHasValidRenderTarget() const
Definition MetalStateCache.h:175
void ConditionalUpdateBackBuffer(FMetalSurface &Surface)
Definition MetalStateCache.cpp:1245
void SetVertexStream(uint32 const Index, FMetalBufferPtr Buffer, FMetalBufferData *Bytes, uint32 const Offset, uint32 const Length)
Definition MetalStateCache.cpp:1080
void SetVisibilityResultMode(MTL::VisibilityResultMode const Mode, NS::UInteger const Offset)
Definition MetalStateCache.cpp:1234
void SetGraphicsPipelineState(FMetalGraphicsPipelineState *State)
Definition MetalStateCache.cpp:1146
const MTL::Viewport & GetViewport(uint32 const Index) const
Definition MetalStateCache.h:177
void CommitComputeResources(FMetalCommandEncoder *Compute)
Definition MetalStateCache.cpp:2025
void SetRenderPipelineState(FMetalCommandEncoder &CommandEncoder)
Definition MetalStateCache.cpp:2461
uint32 GetRenderTargetArraySize() const
Definition MetalStateCache.h:179
void SetShaderUnorderedAccessView(EMetalShaderStages ShaderStage, uint32 BindIndex, FMetalUnorderedAccessView *UAV)
Definition MetalStateCache.cpp:1736
FMetalShaderPipeline * GetPipelineState() const
Definition MetalStateCache.cpp:1212
uint32 GetStencilRef() const
Definition MetalStateCache.h:167
EPrimitiveType GetPrimitiveType()
Definition MetalStateCache.cpp:1217
void SetShaderSamplerState(EMetalShaderStages const Frequency, FMetalSamplerState *const Sampler, NS::UInteger const Index)
Definition MetalStateCache.cpp:1660
int32 GetNumRenderTargets()
Definition MetalStateCache.h:174
FRHIRenderPassInfo const & GetRenderPassInfo() const
Definition MetalStateCache.h:173
void SetScissorRect(bool const bEnable, MTL::ScissorRect const &Rect)
Definition MetalStateCache.cpp:349
void SetStateDirty(void)
Definition MetalStateCache.cpp:2121
void SetRenderState(FMetalCommandEncoder &CommandEncoder)
Definition MetalStateCache.cpp:2180
void StartRenderPass(const FRHIRenderPassInfo &Info, FMetalQueryBufferRef QueryBuffer, MTL::RenderPassDescriptor *InDesc, bool bInIsParallelContext)
Definition MetalStateCache.cpp:2043
void SetRenderTargetsActive(bool const bActive)
Definition MetalStateCache.cpp:986
void ResetBindings()
Definition MetalStateCache.cpp:320
FMetalDepthStencilState * GetDepthStencilState() const
Definition MetalStateCache.h:168
void SetBlendFactor(FLinearColor const &InBlendFactor)
Definition MetalStateCache.cpp:379
FMetalDescriptorHeap * OverriddenDescriptorHeap
Definition MetalStateCache.h:199
FLinearColor const & GetBlendFactor() const
Definition MetalStateCache.h:166
Definition MetalUniformBuffer.h:19
Definition MetalResources.h:206
Definition MetalResources.h:597
Definition RHIResources.h:1232
Definition Array.h:670
void Push(T *NewItem)
Definition LockFreeList.h:849
T * Pop()
Definition LockFreeList.h:858
Definition LockFreeList.h:898
Definition UnrealString.h.inl:34
Definition StaticArray.h:26
EShaderStage
Definition CrossCompilerCommon.h:16
@ Bytes
Definition PacketView.h:39
const FVector Offset(0, 0, 20)
Definition IOSView.cpp:31
Definition VulkanCommon.h:29
T Length(const UE::Math::TVector< T > &V)
Definition VectorTypes.h:148
U16 Index
Definition radfft.cpp:71
Definition Color.h:48
static UE_FORCEINLINE_HINT void * Memzero(void *Dest, SIZE_T Count)
Definition UnrealMemory.h:131
Definition RHIResources.h:5248
int32 GetNumColorRenderTargets() const
Definition RHIResources.h:5466
Definition LinuxPlatformSplash.cpp:43
Definition Tuple.h:652