UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FMetalStateCache Class Reference

#include <MetalStateCache.h>

Public Member Functions

 FMetalStateCache (FMetalDevice &Device)
 
 ~FMetalStateCache ()
 
void Reset ()
 
void ResetBindings ()
 
void SetScissorRect (bool const bEnable, MTL::ScissorRect const &Rect)
 
void SetBlendFactor (FLinearColor const &InBlendFactor)
 
void SetStencilRef (uint32 const InStencilRef)
 
void SetComputeShader (FMetalComputeShader *InComputeShader)
 
bool SetRenderPassInfo (FRHIRenderPassInfo const &InRenderTargets, FMetalQueryBufferRef QueryBuffer)
 
void InvalidateRenderTargets (void)
 
void SetRenderTargetsActive (bool const bActive)
 
void SetViewport (const MTL::Viewport &InViewport)
 
void SetViewports (const MTL::Viewport InViewport[], uint32 Count)
 
void SetVertexStream (uint32 const Index, FMetalBufferPtr Buffer, FMetalBufferData *Bytes, uint32 const Offset, uint32 const Length)
 
void SetGraphicsPipelineState (FMetalGraphicsPipelineState *State)
 
void BindUniformBuffer (EMetalShaderStages const Freq, uint32 const BufferIndex, FRHIUniformBuffer *BufferRHI)
 
void SetVisibilityResultMode (MTL::VisibilityResultMode const Mode, NS::UInteger const Offset)
 
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={})
 
void SetShaderTexture (EMetalShaderStages const Frequency, MTL::Texture *Texture, NS::UInteger const Index, MTL::ResourceUsage const Usage)
 
void SetShaderSamplerState (EMetalShaderStages const Frequency, FMetalSamplerState *const Sampler, NS::UInteger const Index)
 
void SetShaderResourceView (EMetalShaderStages ShaderStage, uint32 BindIndex, FMetalShaderResourceView *SRV)
 
void SetShaderUnorderedAccessView (EMetalShaderStages ShaderStage, uint32 BindIndex, FMetalUnorderedAccessView *UAV)
 
void SetStateDirty (void)
 
void SetShaderBufferDirty (EMetalShaderStages const Frequency, NS::UInteger const Index)
 
void SetRenderStoreActions (FMetalCommandEncoder &CommandEncoder, bool const bConditionalSwitch=false)
 
void SetRenderState (FMetalCommandEncoder &CommandEncoder)
 
void CommitRenderResources (FMetalCommandEncoder *Raster)
 
void CommitComputeResources (FMetalCommandEncoder *Compute)
 
void CommitResourceTable (EMetalShaderStages const Frequency, MTL::FunctionType const Type, FMetalCommandEncoder &CommandEncoder)
 
void StartRenderPass (const FRHIRenderPassInfo &Info, FMetalQueryBufferRef QueryBuffer, MTL::RenderPassDescriptor *InDesc, bool bInIsParallelContext)
 
void EndRenderPass ()
 
FMetalShaderParameterCacheGetShaderParameters (EMetalShaderStages const Stage)
 
FLinearColor const & GetBlendFactor () const
 
uint32 GetStencilRef () const
 
FMetalDepthStencilStateGetDepthStencilState () const
 
FMetalRasterizerStateGetRasterizerState () const
 
FMetalGraphicsPipelineStateGetGraphicsPSO () const
 
FMetalComputeShaderGetComputeShader () const
 
CGSize GetFrameBufferSize () const
 
FRHIRenderPassInfo const & GetRenderPassInfo () const
 
int32 GetNumRenderTargets ()
 
bool GetHasValidRenderTarget () const
 
bool GetHasValidColorTarget () const
 
const MTL::Viewport & GetViewport (uint32 const Index) const
 
uint32 GetVertexBufferSize (uint32 const Index)
 
uint32 GetRenderTargetArraySize () const
 
FMetalQueryBufferRef GetVisibilityResultsBuffer () const
 
bool NeedsToSetRenderTarget (const FRHIRenderPassInfo &RenderPassInfo)
 
bool HasValidDepthStencilSurface () const
 
MTL::RenderPassDescriptor * GetRenderPassDescriptor (void) const
 
uint32 GetSampleCount (void) const
 
FMetalShaderPipelineGetPipelineState () const
 
EPrimitiveType GetPrimitiveType ()
 
MTL::VisibilityResultMode GetVisibilityResultMode ()
 
uint32 GetVisibilityResultOffset ()
 
void SetRenderPipelineState (FMetalCommandEncoder &CommandEncoder)
 
void SetComputePipelineState (FMetalCommandEncoder &CommandEncoder)
 
void FlushVisibilityResults (FMetalCommandEncoder &CommandEncoder)
 
void ReleaseDescriptor (MTL::RenderPassDescriptor *Desc)
 
void ClearPreviousComputeState ()
 
void SetOverriddenDescriptorHeap (FMetalDescriptorHeap *InHeap)
 
void ConditionalUpdateBackBuffer (FMetalSurface &Surface)
 

Public Attributes

FMetalDescriptorHeapOverriddenDescriptorHeap = nullptr
 

Constructor & Destructor Documentation

◆ FMetalStateCache()

FMetalStateCache::FMetalStateCache ( FMetalDevice Device)

◆ ~FMetalStateCache()

FMetalStateCache::~FMetalStateCache ( )

Member Function Documentation

◆ BindUniformBuffer()

void FMetalStateCache::BindUniformBuffer ( EMetalShaderStages const  Freq,
uint32 const  BufferIndex,
FRHIUniformBuffer BufferRHI 
)

◆ ClearPreviousComputeState()

void FMetalStateCache::ClearPreviousComputeState ( )

◆ CommitComputeResources()

void FMetalStateCache::CommitComputeResources ( FMetalCommandEncoder Compute)

◆ CommitRenderResources()

void FMetalStateCache::CommitRenderResources ( FMetalCommandEncoder Raster)

◆ CommitResourceTable()

void FMetalStateCache::CommitResourceTable ( EMetalShaderStages const  Frequency,
MTL::FunctionType const  Type,
FMetalCommandEncoder CommandEncoder 
)

◆ ConditionalUpdateBackBuffer()

void FMetalStateCache::ConditionalUpdateBackBuffer ( FMetalSurface Surface)

◆ EndRenderPass()

void FMetalStateCache::EndRenderPass ( )

◆ FlushVisibilityResults()

void FMetalStateCache::FlushVisibilityResults ( FMetalCommandEncoder CommandEncoder)

◆ GetBlendFactor()

FLinearColor const & FMetalStateCache::GetBlendFactor ( ) const
inline

◆ GetComputeShader()

FMetalComputeShader * FMetalStateCache::GetComputeShader ( ) const
inline

◆ GetDepthStencilState()

FMetalDepthStencilState * FMetalStateCache::GetDepthStencilState ( ) const
inline

◆ GetFrameBufferSize()

CGSize FMetalStateCache::GetFrameBufferSize ( ) const
inline

◆ GetGraphicsPSO()

FMetalGraphicsPipelineState * FMetalStateCache::GetGraphicsPSO ( ) const
inline

◆ GetHasValidColorTarget()

bool FMetalStateCache::GetHasValidColorTarget ( ) const
inline

◆ GetHasValidRenderTarget()

bool FMetalStateCache::GetHasValidRenderTarget ( ) const
inline

◆ GetNumRenderTargets()

int32 FMetalStateCache::GetNumRenderTargets ( )
inline

◆ GetPipelineState()

FMetalShaderPipeline * FMetalStateCache::GetPipelineState ( ) const

◆ GetPrimitiveType()

EPrimitiveType FMetalStateCache::GetPrimitiveType ( )

◆ GetRasterizerState()

FMetalRasterizerState * FMetalStateCache::GetRasterizerState ( ) const
inline

◆ GetRenderPassDescriptor()

MTL::RenderPassDescriptor * FMetalStateCache::GetRenderPassDescriptor ( void  ) const
inline

◆ GetRenderPassInfo()

FRHIRenderPassInfo const & FMetalStateCache::GetRenderPassInfo ( ) const
inline

◆ GetRenderTargetArraySize()

uint32 FMetalStateCache::GetRenderTargetArraySize ( ) const
inline

◆ GetSampleCount()

uint32 FMetalStateCache::GetSampleCount ( void  ) const
inline

◆ GetShaderParameters()

FMetalShaderParameterCache & FMetalStateCache::GetShaderParameters ( EMetalShaderStages const  Stage)
inline

◆ GetStencilRef()

uint32 FMetalStateCache::GetStencilRef ( ) const
inline

◆ GetVertexBufferSize()

uint32 FMetalStateCache::GetVertexBufferSize ( uint32 const  Index)

◆ GetViewport()

const MTL::Viewport & FMetalStateCache::GetViewport ( uint32 const  Index) const
inline

◆ GetVisibilityResultMode()

MTL::VisibilityResultMode FMetalStateCache::GetVisibilityResultMode ( )
inline

◆ GetVisibilityResultOffset()

uint32 FMetalStateCache::GetVisibilityResultOffset ( )
inline

◆ GetVisibilityResultsBuffer()

FMetalQueryBufferRef FMetalStateCache::GetVisibilityResultsBuffer ( ) const
inline

◆ HasValidDepthStencilSurface()

bool FMetalStateCache::HasValidDepthStencilSurface ( ) const
inline

◆ InvalidateRenderTargets()

void FMetalStateCache::InvalidateRenderTargets ( void  )

◆ NeedsToSetRenderTarget()

bool FMetalStateCache::NeedsToSetRenderTarget ( const FRHIRenderPassInfo RenderPassInfo)

◆ ReleaseDescriptor()

void FMetalStateCache::ReleaseDescriptor ( MTL::RenderPassDescriptor *  Desc)

◆ Reset()

void FMetalStateCache::Reset ( )

Reset cached state for reuse

◆ ResetBindings()

void FMetalStateCache::ResetBindings ( )

Reset bindings between encoders

◆ SetBlendFactor()

void FMetalStateCache::SetBlendFactor ( FLinearColor const &  InBlendFactor)

◆ SetComputePipelineState()

void FMetalStateCache::SetComputePipelineState ( FMetalCommandEncoder CommandEncoder)

◆ SetComputeShader()

void FMetalStateCache::SetComputeShader ( FMetalComputeShader InComputeShader)

◆ SetGraphicsPipelineState()

void FMetalStateCache::SetGraphicsPipelineState ( FMetalGraphicsPipelineState State)

◆ SetOverriddenDescriptorHeap()

void FMetalStateCache::SetOverriddenDescriptorHeap ( FMetalDescriptorHeap InHeap)
inline

◆ SetRenderPassInfo()

bool FMetalStateCache::SetRenderPassInfo ( FRHIRenderPassInfo const &  InRenderTargets,
FMetalQueryBufferRef  QueryBuffer 
)

◆ SetRenderPipelineState()

void FMetalStateCache::SetRenderPipelineState ( FMetalCommandEncoder CommandEncoder)

◆ SetRenderState()

void FMetalStateCache::SetRenderState ( FMetalCommandEncoder CommandEncoder)

◆ SetRenderStoreActions()

void FMetalStateCache::SetRenderStoreActions ( FMetalCommandEncoder CommandEncoder,
bool const  bConditionalSwitch = false 
)

◆ SetRenderTargetsActive()

void FMetalStateCache::SetRenderTargetsActive ( bool const  bActive)

◆ SetScissorRect()

void FMetalStateCache::SetScissorRect ( bool const  bEnable,
MTL::ScissorRect const &  Rect 
)

◆ SetShaderBuffer()

void FMetalStateCache::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 = {} 
)

◆ SetShaderBufferDirty()

void FMetalStateCache::SetShaderBufferDirty ( EMetalShaderStages const  Frequency,
NS::UInteger const  Index 
)

◆ SetShaderResourceView()

void FMetalStateCache::SetShaderResourceView ( EMetalShaderStages  ShaderStage,
uint32  BindIndex,
FMetalShaderResourceView SRV 
)

◆ SetShaderSamplerState()

void FMetalStateCache::SetShaderSamplerState ( EMetalShaderStages const  Frequency,
FMetalSamplerState *const  Sampler,
NS::UInteger const  Index 
)

◆ SetShaderTexture()

void FMetalStateCache::SetShaderTexture ( EMetalShaderStages const  Frequency,
MTL::Texture *  Texture,
NS::UInteger const  Index,
MTL::ResourceUsage const  Usage 
)

◆ SetShaderUnorderedAccessView()

void FMetalStateCache::SetShaderUnorderedAccessView ( EMetalShaderStages  ShaderStage,
uint32  BindIndex,
FMetalUnorderedAccessView UAV 
)

◆ SetStateDirty()

void FMetalStateCache::SetStateDirty ( void  )

◆ SetStencilRef()

void FMetalStateCache::SetStencilRef ( uint32 const  InStencilRef)

◆ SetVertexStream()

void FMetalStateCache::SetVertexStream ( uint32 const  Index,
FMetalBufferPtr  Buffer,
FMetalBufferData Bytes,
uint32 const  Offset,
uint32 const  Length 
)

◆ SetViewport()

void FMetalStateCache::SetViewport ( const MTL::Viewport &  InViewport)

◆ SetViewports()

void FMetalStateCache::SetViewports ( const MTL::Viewport  InViewport[],
uint32  Count 
)

◆ SetVisibilityResultMode()

void FMetalStateCache::SetVisibilityResultMode ( MTL::VisibilityResultMode const  Mode,
NS::UInteger const  Offset 
)

◆ StartRenderPass()

void FMetalStateCache::StartRenderPass ( const FRHIRenderPassInfo Info,
FMetalQueryBufferRef  QueryBuffer,
MTL::RenderPassDescriptor *  InDesc,
bool  bInIsParallelContext 
)

Member Data Documentation

◆ OverriddenDescriptorHeap

FMetalDescriptorHeap* FMetalStateCache::OverriddenDescriptorHeap = nullptr

The documentation for this class was generated from the following files: