UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
RHIValidationUtils.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Misc/Build.h"
6
7#if ENABLE_RHI_VALIDATION
8
9#include "RHIResources.h"
10#include "RHICommandList.h"
11
13{
14public:
15 static void ValidateCopyTexture(FRHITexture* SourceTexture, FRHITexture* DestTexture, const FRHICopyTextureInfo& CopyInfo)
16 {
17 check(SourceTexture);
18 check(DestTexture);
19
20 const EPixelFormat SrcFormat = SourceTexture->GetFormat();
21 const EPixelFormat DstFormat = DestTexture->GetFormat();
27
28 checkf(bValidCopyFormats, TEXT("Some RHIs do not support this format conversion by the GPU for transfer operations!"));
29
30 FIntVector SrcSize = SourceTexture->GetMipDimensions(CopyInfo.SourceMipIndex);
31 FIntVector DestSize = DestTexture->GetMipDimensions(CopyInfo.DestMipIndex);
32 FIntVector CopySize = CopyInfo.Size;
33 if (CopySize == FIntVector::ZeroValue)
34 {
35 CopySize = SrcSize;
36 }
37
38 checkf(CopySize.X <= DestSize.X && CopySize.Y <= DestSize.Y, TEXT("Some RHIs can't perform scaling operations [%dx%d to %dx%d] during copies!"), SrcSize.X, SrcSize.Y, DestSize.X, DestSize.Y);
39
40 check(CopyInfo.SourcePosition.X >= 0 && CopyInfo.SourcePosition.Y >= 0 && CopyInfo.SourcePosition.Z >= 0);
41 check(CopyInfo.SourcePosition.X + CopySize.X <= SrcSize.X && CopyInfo.SourcePosition.Y + CopySize.Y <= SrcSize.Y);
42
43 check(CopyInfo.DestPosition.X >= 0 && CopyInfo.DestPosition.Y >= 0 && CopyInfo.DestPosition.Z >= 0);
44 check(CopyInfo.DestPosition.X + CopySize.X <= DestSize.X && CopyInfo.DestPosition.Y + CopySize.Y <= DestSize.Y);
45
46 if (SourceTexture->GetTexture3D() && DestTexture->GetTexture3D())
47 {
48 check(CopyInfo.SourcePosition.Z + CopySize.Z <= SrcSize.Z);
49 check(CopyInfo.DestPosition.Z + CopySize.Z <= DestSize.Z);
50 }
51 }
52};
53
54#endif // ENABLE_RHI_VALIDATION
#define check(expr)
Definition AssertionMacros.h:314
#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
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
FPixelFormatInfo GPixelFormats[PF_MAX]
Definition PixelFormat.cpp:31
EPixelFormat
Definition PixelFormat.h:16
Definition RHIResources.h:2153
EPixelFormat GetFormat() const
Definition RHIResources.h:2341
FIntVector GetMipDimensions(uint8 MipIndex) const
Definition RHIResources.h:2246
FRHITexture * GetTexture3D()
Definition RHIResources.h:2321
int32 BlockSizeX
Definition PixelFormat.h:467
int32 BlockBytes
Definition PixelFormat.h:470
Definition RHICommandList.h:183
IntType Y
Definition IntVector.h:34
IntType Size() const
Definition IntVector.h:508
IntType X
Definition IntVector.h:31
static const TIntVector3 ZeroValue
Definition IntVector.h:45
IntType Z
Definition IntVector.h:37