UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MetalCommandQueue.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 "MetalSubmission.h"
7#include "RHI.h"
8#include "RHIFeatureLevel.h"
10
13class FMetalFence;
14class FMetalDevice;
17class FMetalEventNode;
18
19#if RHI_NEW_GPU_PROFILER
20class FMetalTiming
21{
22public:
23 FMetalCommandQueue& Queue;
24
25 // Timer calibration data
26 uint64 GPUFrequency = 0, GPUTimestamp = 0;
27 uint64 CPUFrequency = 0, CPUTimestamp = 0;
28
30
32};
33#endif
34
39{
40public:
41#pragma mark - Public C++ Boilerplate -
42
49
52
53#pragma mark - Public Command Buffer Mutators -
54
61
66 void CommitCommandBuffer(FMetalCommandBuffer* CommandBuffer);
67
69 FMetalFence* CreateFence(NS::String* Label) const;
70
71#pragma mark - Public Command Queue Accessors -
72
75
77 MTL::CommandQueue* GetQueue(void) { return CommandQueue; }
78
80 static MTL::ResourceOptions GetCompatibleResourceOptions(MTL::ResourceOptions Options);
81
88
90 static inline bool IsUMASystem() { return IsRHIDeviceApple(); }
91
92#pragma mark - Public Debug Support -
93
96
98 {
99 FMetalPayload* Peek()
100 {
101 if (FMetalPayload** Result = TQueue::Peek())
102 {
103 return *Result;
104 }
105
106 return nullptr;
107 }
109
111
113
114 // Batches the current payload's command lists, returning the latest fence value signaled for this queue.
116
118 {
119 return SignalEvent;
120 }
121
125
126#if RHI_NEW_GPU_PROFILER == 0
128#endif
129
130#if RHI_NEW_GPU_PROFILER
132 FMetalTiming* Timing = nullptr;
133#endif
134
135private:
136#pragma mark - Private Member Variables -
137 FMetalDevice& Device;
138 MTL::CommandQueue* CommandQueue;
139 int32 RuntimeDebuggingLevel;
140 static NS::UInteger PermittedOptions;
141
142 FMetalSignalEvent SignalEvent;
143};
#define PLATFORM_MAC
Definition Platform.h:15
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
ERHIFeatureLevel::Type GMaxRHIFeatureLevel
Definition RHI.cpp:1338
bool IsRHIDeviceApple()
Definition RHI.cpp:1366
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition MetalCommandBuffer.h:17
Definition MetalCommandList.h:19
Definition MetalCommandQueue.h:39
void CommitCommandBuffer(FMetalCommandBuffer *CommandBuffer)
Definition MetalCommandQueue.cpp:135
static MTL::ResourceOptions GetCompatibleResourceOptions(MTL::ResourceOptions Options)
Definition MetalCommandQueue.cpp:183
FMetalDevice & GetDevice(void)
Definition MetalCommandQueue.cpp:178
~FMetalCommandQueue(void)
Definition MetalCommandQueue.cpp:101
FMetalFence * CreateFence(NS::String *Label) const
Definition MetalCommandQueue.cpp:149
static bool SupportsSeparateMSAAAndResolveTarget()
Definition MetalCommandQueue.h:87
TArray< FMetalCounterSamplePtr > CounterSamples
Definition MetalCommandQueue.h:124
FMetalSignalEvent & GetSignalEvent()
Definition MetalCommandQueue.h:117
TArray< FMetalRHIRenderQuery * > TimestampQueries
Definition MetalCommandQueue.h:122
TMap< FMetalEventNode *, TArray< FMetalCounterSamplePtr > > EventSampleCounters
Definition MetalCommandQueue.h:127
FMetalCommandBuffer * CreateCommandBuffer(void)
Definition MetalCommandQueue.cpp:108
FMetalPayload * PayloadToSubmit
Definition MetalCommandQueue.h:110
MTL::CommandQueue * GetQueue(void)
Definition MetalCommandQueue.h:77
uint64 FinalizePayload(bool bRequiresSignal, FPayloadArray &PayloadsToHandDown)
Definition MetalSubmission.cpp:478
TArray< FMetalRHIRenderQuery * > OcclusionQueries
Definition MetalCommandQueue.h:123
void InsertDebugCaptureBoundary(void)
Definition MetalCommandQueue.cpp:201
static bool IsUMASystem()
Definition MetalCommandQueue.h:90
Definition MetalDevice.h:102
Definition MetalProfiler.h:131
Definition MetalFence.h:12
Definition UnrealString.h.inl:34
Definition Queue.h:48
FElementType * Peek()
Definition Queue.h:239
Definition GPUProfiler.h:310
@ SM5
Definition RHIFeatureLevel.h:42
Definition MetalCounterSampler.h:20
Definition MetalSubmission.h:155
Definition MetalSubmission.h:36
Definition GPUProfiler.h:25