// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Templates/RefCounting.h" // RHI_WANT_RESOURCE_INFO should be controlled by the RHI module. #ifndef RHI_WANT_RESOURCE_INFO #define RHI_WANT_RESOURCE_INFO 0 #endif // RHI_FORCE_DISABLE_RESOURCE_INFO can be defined anywhere else, like in GlobalDefinitions. #ifndef RHI_FORCE_DISABLE_RESOURCE_INFO #define RHI_FORCE_DISABLE_RESOURCE_INFO 0 #endif #define RHI_ENABLE_RESOURCE_INFO (RHI_WANT_RESOURCE_INFO && !RHI_FORCE_DISABLE_RESOURCE_INFO) // Basic Types namespace ERHIFeatureLevel { enum Type : int; } enum EShaderPlatform : uint16; enum ECubeFace : uint32; enum EPixelFormat : uint8; enum class EPixelFormatChannelFlags : uint8; enum class EBufferUsageFlags : uint32; enum class ETextureCreateFlags : uint64; // Command Lists class FRHICommandListBase; class FRHIComputeCommandList; class FRHICommandList; class FRHICommandListImmediate; class FRHISubCommandList; // Contexts class IRHIComputeContext; class IRHICommandContext; class IRHIUploadContext; class FRHIContextArray; class FRHIResourceReplaceInfo; class FRHIResourceReplaceBatcher; struct FSamplerStateInitializerRHI; struct FRasterizerStateInitializerRHI; struct FDepthStencilStateInitializerRHI; class FBlendStateInitializerRHI; // Resources class FRHIAmplificationShader; class FRHIBlendState; class FRHIBoundShaderState; class FRHIBuffer; class FRHIComputePipelineState; class FRHIComputeShader; class FRHICustomPresent; class FRHIDepthStencilState; class FRHIGeometryShader; class FRHIGPUFence; class FRHIGraphicsPipelineState; class FRHIMeshShader; class FRHIPixelShader; class FRHIRasterizerState; class FRHIRayTracingGeometry; class FRHIRayTracingPipelineState; class FRHIRayTracingScene; class FRHIShaderBindingTable; class FRHIRayTracingShader; class FRHIRenderQuery; class FRHIRenderQueryPool; class FRHIResource; class FRHIResourceCollection; class FRHISamplerState; class FRHIShader; class FRHIShaderData; class FRHIShaderLibrary; class FRHIShaderResourceView; class FRHIShaderBundle; class FRHIStagingBuffer; class FRHITexture; class FRHITextureReference; #if !defined(RHI_NEW_GPU_PROFILER) || (RHI_NEW_GPU_PROFILER == 0) class FRHITimestampCalibrationQuery; #endif class FRHIUniformBuffer; class FRHIUnorderedAccessView; class FRHIVertexDeclaration; class FRHIVertexShader; class FRHIViewableResource; class FRHIViewport; class FRHIWorkGraphPipelineState; class FRHIWorkGraphShader; class FRHIStreamSourceSlot; struct FRHIUniformBufferLayout; // Pointers using FAmplificationShaderRHIRef = TRefCountPtr; using FBlendStateRHIRef = TRefCountPtr; using FBoundShaderStateRHIRef = TRefCountPtr; using FBufferRHIRef = TRefCountPtr; using FComputePipelineStateRHIRef = TRefCountPtr; using FComputeShaderRHIRef = TRefCountPtr; using FCustomPresentRHIRef = TRefCountPtr; using FDepthStencilStateRHIRef = TRefCountPtr; using FGeometryShaderRHIRef = TRefCountPtr; using FGPUFenceRHIRef = TRefCountPtr; using FGraphicsPipelineStateRHIRef = TRefCountPtr; using FMeshShaderRHIRef = TRefCountPtr; using FPixelShaderRHIRef = TRefCountPtr; using FRasterizerStateRHIRef = TRefCountPtr; using FRayTracingGeometryRHIRef = TRefCountPtr; using FRayTracingPipelineStateRHIRef = TRefCountPtr; using FRayTracingSceneRHIRef = TRefCountPtr; using FRayTracingShaderRHIRef = TRefCountPtr; using FShaderBindingTableRHIRef = TRefCountPtr; using FRenderQueryPoolRHIRef = TRefCountPtr; using FRenderQueryRHIRef = TRefCountPtr; using FRHIResourceCollectionRef = TRefCountPtr; using FRHIShaderLibraryRef = TRefCountPtr; using FRHIShaderResourceViewRef = TRefCountPtr; using FSamplerStateRHIRef = TRefCountPtr; using FShaderResourceViewRHIRef = TRefCountPtr; using FShaderBundleRHIRef = TRefCountPtr; using FStagingBufferRHIRef = TRefCountPtr; using FTextureReferenceRHIRef = TRefCountPtr; using FTextureRHIRef = TRefCountPtr; #if !defined(RHI_NEW_GPU_PROFILER) || (RHI_NEW_GPU_PROFILER == 0) using FTimestampCalibrationQueryRHIRef = TRefCountPtr; #endif using FUniformBufferLayoutRHIRef = TRefCountPtr; using FUniformBufferRHIRef = TRefCountPtr; using FUnorderedAccessViewRHIRef = TRefCountPtr; using FVertexDeclarationRHIRef = TRefCountPtr; using FVertexShaderRHIRef = TRefCountPtr; using FViewportRHIRef = TRefCountPtr; using FWorkGraphPipelineStateRHIRef = TRefCountPtr; using FStreamSourceSlotRHIRef = TRefCountPtr; using FWorkGraphShaderRHIRef = TRefCountPtr;