UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
RHITextureInitializer.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "RHIResources.h"
7
8// 'Minimal' description of an RHITexture, primarily used by FRHITextureInitializer to keep overhead low.
27
29{
30 void WriteData(const void* InSource, size_t InSize)
31 {
33 }
34
35 void WriteColor(FColor InColor)
36 {
37 WriteData(&InColor, sizeof(InColor));
38 }
39
40 void* Data;
43};
44
45// Structure used to allow optimal texture initialization at creation time.
46// Should only ever be obtained by calling RHICreateTextureInitializer().
47// Texture data writing has to be done on individual subresources via the GetSubresource accesors.
48// NO COPIES ALLOWED
50{
70
72 {
73 return Desc;
74 }
75
82
83 // Get a subresource for any texture type.
85 {
86 checkf(GetSubresourceCallback, TEXT("Attempting to call GetSubresourceCallback when it is null, make sure you set your InitAction to Initializer."));
88 }
89
90 // Get a subresource for a 2D texture. The only subresources are mip levels.
97
98 // Get a subresource for a 2D texture array. Subresources are individual array slice mip levels.
106
107 // Get a subresource for a 3D texture. The only subresources are mip levels.
114
115 // Get a subresource for a cube texture. Subresources are individual face mip levels.
123
124 // Get a subresource for a cube texture array. Subresources are individual array slice face mip levels.
133
134 // 'Finalizes' the initializer and returns the created FRHITexture. The initializer will be reset to an invalid state and should not be used after calling this.
136
137protected:
138 // @todo dev-pr switch to using IRHIUploadContext
140
141 // FaceIndex, ArrayIndex, MipIndex
143
144 // Should only be called by RHI derived types.
146
147 // Remove the texture from the command list. Has to be in cpp file to prevent circular header dependency.
149
150 // Allow copies only for RHI derived types.
154
155 void Reset()
156 {
157 FinalizeCallback = {};
159 CommandList = {};
160 Texture = {};
161 WritableData = {};
162 WritableSize = {};
164 }
165
166protected:
167 // RHI provided lambda to call when done writing data, returns the created Texture
168 // Only used by the RHI internals, should not be accessed outside of RHIs
170
171 // RHI provided lambda to provide pointers to and sizes of individual subresources for writing.
172 // Only used by the RHI internals, should not be accessed outside of RHIs
174
175 // Command list provided on construction, used in finalize.
177
178 // Current RHI Texture being initialized. Will only be used for command list validation since each RHI implementation will manage their own texture type.
180
181 // Pointer to the writable data provided by the RHI
182 void* WritableData = nullptr;
183
184 // Size of the writable data provided by the RHI
186
187 // Description of the texture being created.
189};
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
#define TEXT(x)
Definition Platform.h:1272
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
FInt32Point FIntPoint
Definition MathFwd.h:124
EPixelFormat
Definition PixelFormat.h:16
@ PF_Unknown
Definition PixelFormat.h:17
ETextureDimension
Definition RHIDefinitions.h:1081
TRefCountPtr< FRHITexture > FTextureRHIRef
Definition StereoRenderTargetManager.h:15
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint16_t uint16
Definition binka_ue_file_header.h:7
Definition RHICommandList.h:455
Definition RHIResources.h:2153
Definition Color.h:486
static UE_FORCEINLINE_HINT void * Memcpy(void *Dest, const void *Src, SIZE_T Count)
Definition UnrealMemory.h:160
Definition RHIResources.h:1689
Definition RHITextureInitializer.h:77
int32 MipIndex
Definition RHITextureInitializer.h:80
int32 ArrayIndex
Definition RHITextureInitializer.h:79
int32 FaceIndex
Definition RHITextureInitializer.h:78
Definition RHITextureInitializer.h:50
FRHITextureSubresourceInitializer GetTextureCubeSubresource(int32 FaceIndex, int32 MipIndex)
Definition RHITextureInitializer.h:116
FRHITexture * Texture
Definition RHITextureInitializer.h:179
uint64 WritableSize
Definition RHITextureInitializer.h:185
FFinalizeCallback FinalizeCallback
Definition RHITextureInitializer.h:169
FRHITextureSubresourceInitializer GetSubresource(FSubresourceIndex SubresourceIndex)
Definition RHITextureInitializer.h:84
~FRHITextureInitializer()
Definition RHITextureInitializer.h:63
FRHITextureInitializer & operator=(const FRHITextureInitializer &)=delete
FRHITextureSubresourceInitializer GetTexture3DSubresource(int32 MipIndex)
Definition RHITextureInitializer.h:108
FGetSubresourceCallback GetSubresourceCallback
Definition RHITextureInitializer.h:173
FRHITextureSubresourceInitializer GetTexture2DArraySubresource(int32 ArrayIndex, int32 MipIndex)
Definition RHITextureInitializer.h:99
const FRHITextureMinimalDesc & GetDesc() const
Definition RHITextureInitializer.h:71
FRHITextureInitializer(FRHITextureInitializer &&InOther)
Definition RHITextureInitializer.h:52
FRHITextureSubresourceInitializer GetTextureCubeArraySubresource(int32 FaceIndex, int32 ArrayIndex, int32 MipIndex)
Definition RHITextureInitializer.h:125
RHI_API FTextureRHIRef Finalize()
Definition RHITextureInitializer.cpp:21
void * WritableData
Definition RHITextureInitializer.h:182
FRHITextureSubresourceInitializer GetTexture2DSubresource(int32 MipIndex)
Definition RHITextureInitializer.h:91
FRHITextureInitializer(const FRHITextureInitializer &)=delete
FRHITextureInitializer & operator=(FRHITextureInitializer &&)=delete
FRHICommandListBase * CommandList
Definition RHITextureInitializer.h:176
FRHITextureMinimalDesc Desc
Definition RHITextureInitializer.h:188
void Reset()
Definition RHITextureInitializer.h:155
RHI_API void RemovePendingTextureUpload()
Definition RHITextureInitializer.cpp:44
FRHITextureInitializer()=default
Definition RHITextureInitializer.h:10
ETextureDimension Dimension
Definition RHITextureInitializer.h:14
uint16 ArraySize
Definition RHITextureInitializer.h:13
uint16 Depth
Definition RHITextureInitializer.h:12
EPixelFormat Format
Definition RHITextureInitializer.h:15
FRHITextureMinimalDesc()=default
FRHITextureMinimalDesc(const FRHITextureDesc &InDesc)
Definition RHITextureInitializer.h:18
FIntPoint Extent
Definition RHITextureInitializer.h:11
Definition RHITextureInitializer.h:29
void WriteData(const void *InSource, size_t InSize)
Definition RHITextureInitializer.h:30
uint64 Stride
Definition RHITextureInitializer.h:42
void WriteColor(FColor InColor)
Definition RHITextureInitializer.h:35
void * Data
Definition RHITextureInitializer.h:40
uint64 Size
Definition RHITextureInitializer.h:41
Definition IntPoint.h:25