UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MetalPipeline.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"
8
13#if PLATFORM_IOS
14#define METAL_MAX_TEXTURES 31
16#elif PLATFORM_MAC
17#define METAL_MAX_TEXTURES 128
19#else
20#error "Unsupported Platform!"
21#endif
22
23#define METAL_MAX_BUFFERS 31
24
27
35
44
52
63
65{
76
89};
90
91class FMetalDevice;
93{
94public:
97
98private:
99 FDelegateHandle OnShaderPipelineCachePreOpenDelegate;
100 FDelegateHandle OnShaderPipelineCacheOpenedDelegate;
101 FDelegateHandle OnShaderPipelineCachePrecompilationCompleteDelegate;
102
104 void OnShaderPipelineCachePreOpen(FString const& Name, EShaderPlatform Platform, bool& bReady);
105 void OnShaderPipelineCacheOpened(FString const& Name, EShaderPlatform Platform, uint32 Count, const FGuid& VersionGuid, FShaderPipelineCache::FShaderCachePrecompileContext& ShaderCachePrecompileContext);
106 void OnShaderPipelineCachePrecompilationComplete(uint32 Count, double Seconds, const FShaderPipelineCache::FShaderCachePrecompileContext& ShaderCachePrecompileContext);
107};
108
143
145
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
void ShutdownPipelineCache()
Definition MetalPipeline.cpp:372
EMetalShaderFrequency
Definition MetalPipeline.h:37
@ EMetalShaderStagesNum
Definition MetalPipeline.h:42
@ EMetalShaderCompute
Definition MetalPipeline.h:40
@ EMetalShaderRenderNum
Definition MetalPipeline.h:41
@ EMetalShaderVertex
Definition MetalPipeline.h:38
@ EMetalShaderFragment
Definition MetalPipeline.h:39
#define METAL_MAX_BUFFERS
Definition MetalPipeline.h:23
EMetalPipelineHashOffsets
Definition MetalPipeline.h:65
@ Offset_RenderTargetFormat6
Definition MetalPipeline.h:83
@ Offset_BlendState3
Definition MetalPipeline.h:69
@ Offset_DepthFormat
Definition MetalPipeline.h:85
@ Offset_BlendState6
Definition MetalPipeline.h:72
@ Offset_RenderTargetFormat3
Definition MetalPipeline.h:80
@ Offset_AlphaToCoverage
Definition MetalPipeline.h:87
@ Offset_RenderTargetFormat5
Definition MetalPipeline.h:82
@ Offset_BlendState0
Definition MetalPipeline.h:66
@ Offset_BlendState2
Definition MetalPipeline.h:68
@ Offset_RenderTargetFormat4
Definition MetalPipeline.h:81
@ Offset_BlendState4
Definition MetalPipeline.h:70
@ Offset_RenderTargetFormat1
Definition MetalPipeline.h:78
@ Offset_End
Definition MetalPipeline.h:88
@ Offset_RenderTargetFormat0
Definition MetalPipeline.h:77
@ Offset_RenderTargetFormat7
Definition MetalPipeline.h:84
@ Offset_SampleCount
Definition MetalPipeline.h:86
@ Offset_RenderTargetFormat2
Definition MetalPipeline.h:79
@ Offset_PrimitiveTopology
Definition MetalPipeline.h:74
@ Offset_BlendState7
Definition MetalPipeline.h:73
@ Offset_RasterEnd
Definition MetalPipeline.h:75
@ Offset_BlendState5
Definition MetalPipeline.h:71
@ Offset_BlendState1
Definition MetalPipeline.h:67
EMetalLimits
Definition MetalPipeline.h:46
@ ML_MaxSamplers
Definition MetalPipeline.h:47
@ ML_MaxTextures
Definition MetalPipeline.h:49
@ ML_MaxViewports
Definition MetalPipeline.h:50
@ ML_MaxBuffers
Definition MetalPipeline.h:48
uint16 FMetalSamplerMask
Definition MetalPipeline.h:26
EMetalPipelineHashBits
Definition MetalPipeline.h:54
@ NumBits_RenderTargetFormat
Definition MetalPipeline.h:55
@ NumBits_AlphaToCoverage
Definition MetalPipeline.h:61
@ NumBits_PrimitiveTopology
Definition MetalPipeline.h:60
@ NumBits_BlendState
Definition MetalPipeline.h:59
@ NumBits_SampleCount
Definition MetalPipeline.h:57
@ NumBits_DepthFormat
Definition MetalPipeline.h:56
TSharedPtr< FMetalShaderPipeline, ESPMode::ThreadSafe > FMetalShaderPipelinePtr
Definition MetalPipeline.h:146
uint32 FMetalBufferMask
Definition MetalPipeline.h:25
EShaderPlatform
Definition RHIShaderPlatform.h:11
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 RHIResources.h:4820
Definition IDelegateInstance.h:14
Definition RHIResources.h:4572
Definition MetalDevice.h:102
Definition MetalPipeline.h:93
~FMetalPipelineStateCacheManager()
Definition MetalPipeline.cpp:1338
Definition MetalPipeline.h:110
MTLComputePipelineReflectionPtr ComputePipelineReflection
Definition MetalPipeline.h:128
FMetalShaderPipeline(FMetalDevice &MetalDevice)
Definition MetalPipeline.h:112
NS::String * VertexSource
Definition MetalPipeline.h:130
MTLMeshRenderPipelineDescriptorPtr MeshRenderDesc
Definition MetalPipeline.h:138
TMap< uint8, uint8 > TextureTypes[EMetalShaderStagesNum]
Definition MetalPipeline.h:125
TArray< uint32 > BufferDataSizes[EMetalShaderStagesNum]
Definition MetalPipeline.h:124
MTLComputePipelineDescriptorPtr ComputeDesc
Definition MetalPipeline.h:140
MTLRenderPipelineDescriptorPtr RenderDesc
Definition MetalPipeline.h:137
MTLRenderPipelineDescriptorPtr StreamDesc
Definition MetalPipeline.h:139
NS::String * FragmentSource
Definition MetalPipeline.h:131
MTLComputePipelineStatePtr ComputePipelineState
Definition MetalPipeline.h:123
FMetalDevice & Device
Definition MetalPipeline.h:121
void InitResourceMask(const FGraphicsPipelineStateInitializer &Init)
Definition MetalPipeline.cpp:402
MTLRenderPipelineReflectionPtr RenderPipelineReflection
Definition MetalPipeline.h:127
~FMetalShaderPipeline()
Definition MetalPipeline.cpp:378
MTLRenderPipelineStatePtr RenderPipelineState
Definition MetalPipeline.h:122
FMetalShaderResourceMask ResourceMask[EMetalShaderStagesNum]
Definition MetalPipeline.h:126
NS::String * ComputeSource
Definition MetalPipeline.h:132
Definition ShaderPipelineCache.h:162
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition Guid.h:109
Definition MetalPipeline.h:30
FMetalTextureMask TextureMask
Definition MetalPipeline.h:31
FMetalBufferMask BufferMask
Definition MetalPipeline.h:32
FMetalSamplerMask SamplerMask
Definition MetalPipeline.h:33