UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
GPUMessaging.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "HAL/Platform.h"
11
12class FRDGBufferUAV;
13class FRDGBuilder;
14
15#define GPU_MESSAGE_SCOPE(GraphBuilder) GPUMessage::FScope GPUMessageScope_(GraphBuilder);
16
17namespace GPUMessage
18{
19
20class FSocket;
21class FSystem;
22
24class FScope
25{
26public:
27 RENDERCORE_API FScope(FRDGBuilder& GraphBuilder);
29
30private:
31 FRDGBuilder& GraphBuilder;
32
33 static bool bRecursionCheck;
34};
35
37
40{
41public:
42 FSocket() = default;
43
45 {
46 *this = MoveTemp(Other);
47 }
48
50 {
51 Reset();
52 MessageId = Other.MessageId;
53 Other.MessageId = FMessageId::Null;
54 return *this;
55 }
56
58 {
59 Reset();
60 }
61
62 const FMessageId GetMessageId() const { return MessageId; }
63
64 RENDERCORE_API void Reset();
65
66private:
68 : MessageId(InMessageId)
69 {}
70
71 FMessageId MessageId;
72
73 friend FSystem;
74};
75
78{
79public:
81
82 template <typename DataType>
83 DataType Read(const DataType& DefaultValue = {})
84 {
85 if (ensure(ReadOffset < PayloadSize))
86 {
87 return PayloadData[ReadOffset++];
88 }
89 return DefaultValue;
90 }
91
92 // Read up to N elements
94 {
95 TConstArrayView<uint32> Payload(PayloadData, PayloadSize);
96 Payload.MidInline(ReadOffset, Count);
97 ReadOffset += Payload.Num();
98 return Payload;
99 }
100
101 uint32 GetPayloadSize() const { return PayloadSize; }
102
103private:
106 , PayloadSize(InPayloadSize)
107 , PayloadData(InPayloadData)
108 {}
109
110 const uint32 PayloadSize;
111 const uint32* PayloadData;
112
113 uint32 ReadOffset = 0;
114
115 friend FSystem;
116};
117
120{
121public:
122 FHandler(const TCHAR* InName)
123 : Name(InName)
124 {}
125
126 virtual ~FHandler() = default;
127
128 virtual void Execute(FReader Message) = 0;
129
130 const TCHAR* GetName() const { return Name; }
131
132private:
133 const TCHAR* Name;
134};
135
137template <typename LambdaType>
139{
140public:
145
146 virtual void Execute(FReader Message) override
147 {
148 Lambda(Message);
149 }
150
151private:
152 LambdaType Lambda;
153};
154
156
161
163template <typename LambdaType>
168
174
175
176extern RENDERCORE_API FParameters GetShaderParameters(FRDGBuilder& GraphBuilder);
177
179
180} // GPUMessage
#define ensure( InExpression)
Definition AssertionMacros.h:464
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define SHADER_PARAMETER_RDG_BUFFER_UAV(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1812
#define BEGIN_SHADER_PARAMETER_STRUCT(StructTypeName, DllStorage)
Definition ShaderParameterMacros.h:1482
#define END_SHADER_PARAMETER_STRUCT()
Definition ShaderParameterMacros.h:1485
#define SHADER_PARAMETER(MemberType, MemberName)
Definition ShaderParameterMacros.h:1684
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition RenderGraphResources.h:1452
Definition RenderGraphBuilder.h:49
Definition Sockets.h:19
Definition GPUMessaging.h:120
virtual void Execute(FReader Message)=0
virtual ~FHandler()=default
const TCHAR * GetName() const
Definition GPUMessaging.h:130
FHandler(const TCHAR *InName)
Definition GPUMessaging.h:122
Definition GPUMessaging.h:78
uint32 GetPayloadSize() const
Definition GPUMessaging.h:101
TConstArrayView< uint32 > ReadCount(int32 Count)
Definition GPUMessaging.h:93
DataType Read(const DataType &DefaultValue={})
Definition GPUMessaging.h:83
const FMessageId MessageId
Definition GPUMessaging.h:80
Definition GPUMessaging.h:25
RENDERCORE_API ~FScope()
Definition GPUMessaging.cpp:288
Definition GPUMessaging.h:40
FSocket & operator=(FSocket &&Other)
Definition GPUMessaging.h:49
FSocket(FSocket &&Other)
Definition GPUMessaging.h:44
~FSocket()
Definition GPUMessaging.h:57
const FMessageId GetMessageId() const
Definition GPUMessaging.h:62
RENDERCORE_API void Reset()
Definition GPUMessaging.cpp:268
Definition GPUMessaging.h:139
virtual void Execute(FReader Message) override
Definition GPUMessaging.h:146
TLambdaHandler(const TCHAR *InDebugId, LambdaType &&InLambda)
Definition GPUMessaging.h:141
static const TRDGHandle Null
Definition RenderGraphDefinitions.h:348
Definition SharedPointer.h:692
Definition GPUMessaging.cpp:27
FParameters GetShaderParameters(FRDGBuilder &GraphBuilder)
Definition GPUMessaging.cpp:299
FSocket RegisterHandler(const TSharedPtr< FHandler > &Handler)
Definition GPUMessaging.cpp:294
TRDGHandle< FSocket, uint32 > FMessageId
Definition GPUMessaging.h:36