13#if ENABLE_RHI_VALIDATION
52 State.BoundShader = ComputePipelineState->GetComputeShader();
55 Tracker->ResetUAVState(RHIValidation::EUAVMode::Compute);
57 State.StaticUniformBuffers.bInSetPipelineStateCall =
true;
58 RHIContext->RHISetComputePipelineState(ComputePipelineState);
59 State.StaticUniformBuffers.bInSetPipelineStateCall =
false;
65 FValidationRHI::ValidateThreadGroupCount(ThreadGroupCountX, ThreadGroupCountY, ThreadGroupCountZ);
66 RHIContext->RHIDispatchComputeShader(ThreadGroupCountX, ThreadGroupCountY, ThreadGroupCountZ);
73 FValidationRHI::ValidateDispatchIndirectArgsBuffer(ArgumentBuffer, ArgumentOffset);
75 RHIContext->RHIDispatchIndirectComputeShader(ArgumentBuffer, ArgumentOffset);
88 Tracker->AddOps(Transition->PendingAliases);
93 Tracker->AddOps(Transition->PendingOperationsBegin);
98 Tracker->AddOps(Transition->PendingSignals[GetPipeline()]);
108 Tracker->AddOps(Transition->PendingWaits[GetPipeline()]);
113 Tracker->AddOps(Transition->PendingOperationsEnd);
118 Tracker->AddOps(Transition->PendingAliasingOverlaps);
130 Tracker->SetTrackedAccess(
Info.Resource->GetValidationTrackerResource(),
Info.Access,
Info.Pipelines);
138 RHIContext->RHIClearUAVFloat(UnorderedAccessViewRHI, Values);
145 RHIContext->RHIClearUAVUint(UnorderedAccessViewRHI, Values);
150 RHIContext->RHISetShaderRootConstants(Constants);
165 FValidationRHI::ValidateDispatchIndirectArgsBuffer(ArgumentBuffer, ArgumentOffset);
196 Tracker->ResetUAVState(RHIValidation::EUAVMode::Compute);
204 FValidationRHI::ValidateDispatchIndirectArgsBuffer(
RecordArgBuffer, ArgumentOffset);
237 Tracker->ResetUAVState(RHIValidation::EUAVMode::Graphics);
263 Tracker->AllUAVsOverlap(
false);
271 Tracker->SpecificUAVOverlap(
UAV->GetViewIdentity(),
true);
280 Tracker->SpecificUAVOverlap(
UAV->GetViewIdentity(),
false);
287 if (
State.BoundShader ==
nullptr)
295 RHI_VALIDATION_CHECK(
false, *FString::Printf(
TEXT(
"Invalid attempt to set parameters for compute shader '%s' while the currently bound shader is '%s'"),
Shader->GetShaderName(),
State.BoundShader->GetShaderName()));
307 if (
State.BoundShader ==
nullptr)
327#if WITH_RHI_BREADCRUMBS
385 RHIContext->RHICrossGPUTransferWait(SyncPoints);
391 RHIContext->RHIExecuteMultiIndirectClusterOperation(Params);
426 if (
P.InstanceBuffer)
437 RHIContext->RHIBuildAccelerationStructures(Params);
458 RHIValidation::FStaticUniformBuffers StaticUniformBuffers;
459 RHIValidation::FStageBoundUniformBuffers BoundUniformBuffers;
467 friend class FValidationRHI;
495 State.bGfxPSOSet =
false;
498 State.BoundShaders[
SF_Compute] = ComputePipelineState->GetComputeShader();
501 Tracker->ResetUAVState(RHIValidation::EUAVMode::Compute);
503 State.StaticUniformBuffers.bInSetPipelineStateCall =
true;
504 RHIContext->RHISetComputePipelineState(ComputePipelineState);
505 State.StaticUniformBuffers.bInSetPipelineStateCall =
false;
511 FValidationRHI::ValidateThreadGroupCount(ThreadGroupCountX, ThreadGroupCountY, ThreadGroupCountZ);
512 RHIContext->RHIDispatchComputeShader(ThreadGroupCountX, ThreadGroupCountY, ThreadGroupCountZ);
519 FValidationRHI::ValidateDispatchIndirectArgsBuffer(ArgumentBuffer, ArgumentOffset);
521 RHIContext->RHIDispatchIndirectComputeShader(ArgumentBuffer, ArgumentOffset);
542 RHIContext->RHIClearUAVFloat(UnorderedAccessViewRHI, Values);
549 RHIContext->RHIClearUAVUint(UnorderedAccessViewRHI, Values);
554 RHIContext->RHISetShaderRootConstants(Constants);
570 RHIValidation::FStageBoundUniformBuffers& BoundUniformBuffers =
State.BoundUniformBuffers.Get(
SF_Compute);
582 Tracker->ResetUAVState(RHIValidation::EUAVMode::Compute);
590 FValidationRHI::ValidateDispatchIndirectArgsBuffer(
RecordArgBuffer, ArgumentOffset);
625 Tracker->ResetUAVState(RHIValidation::EUAVMode::Graphics);
650 Tracker->AllUAVsOverlap(
false);
658 Tracker->SpecificUAVOverlap(
UAV->GetViewIdentity(),
true);
667 Tracker->SpecificUAVOverlap(
UAV->GetViewIdentity(),
false);
675 RHIContext->RHIResummarizeHTile(DepthTexture);
680 return RHIContext->RHIGetNativeCommandBuffer();
687 if (Transition->AllowInRenderingPass() ==
false)
689 ensureMsgf(!
State.bInsideBeginRenderPass,
TEXT(
"Ending a transition within a renderpass is not supported!"));
692 Tracker->AddOps(Transition->PendingAliases);
697 Tracker->AddOps(Transition->PendingOperationsBegin);
702 Tracker->AddOps(Transition->PendingSignals[GetPipeline()]);
712 if (Transition->AllowInRenderingPass() ==
false)
714 ensureMsgf(!
State.bInsideBeginRenderPass,
TEXT(
"Ending a transition within a renderpass is not supported!"));
717 Tracker->AddOps(Transition->PendingWaits[GetPipeline()]);
722 Tracker->AddOps(Transition->PendingOperationsEnd);
727 Tracker->AddOps(Transition->PendingAliasingOverlaps);
738 Tracker->SetTrackedAccess(
Info.Resource->GetValidationTrackerResource(),
Info.Access,
Info.Pipelines);
753#if (RHI_NEW_GPU_PROFILER == 0)
774 checkf(
State.bInsideBeginRenderPass,
TEXT(
"A RenderPass has to be set to set-up the vertex streams!"));
785 virtual void RHISetViewport(
float MinX,
float MinY,
float MinZ,
float MaxX,
float MaxY,
float MaxZ)
override final
787 RHIContext->RHISetViewport(MinX, MinY, MinZ, MaxX, MaxY, MaxZ);
801 RHIContext->RHISetScissorRect(bEnable, MinX, MinY, MaxX, MaxY);
806 checkf(
State.bInsideBeginRenderPass,
TEXT(
"Graphics PSOs can only be set inside a RenderPass!"));
807 State.bGfxPSOSet =
true;
818 Tracker->ResetUAVState(RHIValidation::EUAVMode::Graphics);
820 State.StaticUniformBuffers.bInSetPipelineStateCall =
true;
822 State.StaticUniformBuffers.bInSetPipelineStateCall =
false;
825#if PLATFORM_USE_FALLBACK_PSO
828 checkf(
State.bInsideBeginRenderPass,
TEXT(
"Graphics PSOs can only be set inside a RenderPass!"));
829 State.bGfxPSOSet =
true;
841 Tracker->ResetUAVState(RHIValidation::EUAVMode::Graphics);
843 State.StaticUniformBuffers.bInSetPipelineStateCall =
true;
845 State.StaticUniformBuffers.bInSetPipelineStateCall =
false;
851 if (!
State.bGfxPSOSet)
857 RHIValidation::FStageBoundUniformBuffers& BoundUniformBuffers =
State.BoundUniformBuffers.Get(
Shader->GetFrequency());
877 RHI_VALIDATION_CHECK(
false, *FString::Printf(
TEXT(
"Invalid attempt to set parameters for compute shader '%s' while the currently bound shader is '%s'"),
Shader->GetShaderName(),
State.BoundShaders[
SF_Compute]->GetShaderName()));
881 RHIValidation::FStageBoundUniformBuffers& BoundUniformBuffers =
State.BoundUniformBuffers.Get(
SF_Compute);
891 if (!
State.bGfxPSOSet)
942 RHIContext->RHIDrawPrimitive(BaseVertexIndex, NumPrimitives, NumInstances);
951 RHIContext->RHIDrawPrimitiveIndirect(ArgumentBuffer, ArgumentOffset);
971 RHIContext->RHIDrawIndexedPrimitive(
IndexBuffer, BaseVertexIndex, FirstInstance, NumVertices, StartIndex, NumPrimitives, NumInstances);
1004 FValidationRHI::ValidateThreadGroupCount(ThreadGroupCountX, ThreadGroupCountY, ThreadGroupCountZ);
1005 RHIContext->RHIDispatchMeshShader(ThreadGroupCountX, ThreadGroupCountY, ThreadGroupCountZ);
1012 FValidationRHI::ValidateDispatchIndirectArgsBuffer(ArgumentBuffer, ArgumentOffset);
1014 RHIContext->RHIDispatchIndirectMeshShader(ArgumentBuffer, ArgumentOffset);
1026 checkf(MinDepth >= 0.f && MinDepth <= 1.f,
TEXT(
"Depth bounds min of %f is outside allowed range of [0, 1]"), MinDepth);
1027 checkf(MaxDepth >= 0.f && MaxDepth <= 1.f,
TEXT(
"Depth bounds max of %f is outside allowed range of [0, 1]"), MaxDepth);
1028 RHIContext->RHISetDepthBounds(MinDepth, MaxDepth);
1033 RHIContext->RHISetShadingRate(ShadingRate, Combiner);
1036#if WITH_RHI_BREADCRUMBS
1051 checkf(!
State.bInsideBeginRenderPass,
TEXT(
"Trying to begin RenderPass '%s', but already inside '%s'!"), *
State.RenderPassName, InName);
1052 checkf(InName!=
nullptr,
TEXT(
"RenderPass should have a name!"));
1053 State.bInsideBeginRenderPass =
true;
1055 State.RenderPassName = InName;
1063 if (
RTV.RenderTarget ==
nullptr)
1065 checkf(
RTV.ResolveTarget ==
nullptr,
TEXT(
"Render target is null, but resolve target is not."));
1075 uint32 NumArraySlices = 1;
1076 if (
RTV.ArraySlice < 0)
1084 if (
RTV.ResolveTarget)
1098 if (
DSV.DepthStencilTarget)
1105 if (
DSV.ResolveTarget)
1118 if (
DSV.ExclusiveDepthStencil.IsUsingDepth())
1124 checkf(
DSV.DepthStencilTarget,
TEXT(
"Depth read/write is enabled but no depth stencil texture is bound."));
1125 Tracker->Assert(
DSV.DepthStencilTarget->GetViewIdentity(0, 0, 0, 0,
uint32(RHIValidation::EResourcePlane::Common), 1),
DepthAccess);
1127 if (
DSV.ResolveTarget)
1134 if (
DSV.ExclusiveDepthStencil.IsUsingStencil())
1140 checkf(
DSV.DepthStencilTarget,
TEXT(
"Stencil read/write is enabled but no depth stencil texture is bound."));
1148 if (
DSV.ResolveTarget)
1156 if (
State.RenderPassInfo.ShadingRateTexture.IsValid())
1168 checkf(
State.bInsideBeginRenderPass,
TEXT(
"Trying to end a RenderPass but not inside one!"));
1170 State.bInsideBeginRenderPass =
false;
1171 State.PreviousRenderPassName =
State.RenderPassName;
1208 ensureMsgf(!
State.bInsideBeginRenderPass,
TEXT(
"Copying inside a RenderPass is not efficient!"));
1215 FValidationRHIUtils::ValidateCopyTexture(SourceTexture, DestTexture,
CopyInfo);
1223 RHIContext->RHICopyBufferRegion(DestBuffer, DstOffset, SourceBuffer, SrcOffset, NumBytes);
1244 RHIContext->RHIExecuteMultiIndirectClusterOperation(Params);
1276 if (
P.InstanceBuffer)
1281 if (
P.ScratchBuffer)
1287 RHIContext->RHIBuildAccelerationStructures(Params);
1307 FValidationRHI::ValidateDispatchIndirectArgsBuffer(ArgumentBuffer, ArgumentOffset);
1337 RHIValidation::FStaticUniformBuffers StaticUniformBuffers;
1338 RHIValidation::FBoundUniformBuffers BoundUniformBuffers;
1353 friend class FValidationRHI;
1361 if (
DSMode.IsUsingDepth())
1363 checkf(
DSV.ExclusiveDepthStencil.IsUsingDepth(),
TEXT(
"Graphics PSO is using depth but it's not enabled on the RenderPass."));
1364 checkf(
DSMode.IsDepthRead() ||
DSV.ExclusiveDepthStencil.IsDepthWrite(),
TEXT(
"Graphics PSO is writing to depth but RenderPass depth is ReadOnly."));
1368 if (
DSMode.IsUsingStencil())
1370 checkf(
DSV.ExclusiveDepthStencil.IsUsingStencil(),
TEXT(
"Graphics PSO is using stencil but it's not enabled on the RenderPass."));
1371 checkf(
DSMode.IsStencilRead() ||
DSV.ExclusiveDepthStencil.IsStencilWrite(),
TEXT(
"Graphics PSO is writing to stencil but RenderPass stencil is ReadOnly."));
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define check(expr)
Definition AssertionMacros.h:314
#define ensureMsgf( InExpression, InFormat,...)
Definition AssertionMacros.h:465
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
constexpr bool EnumHasAnyFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:35
FInt32Vector3 FIntVector
Definition MathFwd.h:115
ERHIAccess
Definition RHIAccess.h:11
ERayTracingBindingType
Definition RHICommandList.h:281
EShaderFrequency
Definition RHIDefinitions.h:202
@ SF_Compute
Definition RHIDefinitions.h:208
@ SF_NumFrequencies
Definition RHIDefinitions.h:216
@ SF_Amplification
Definition RHIDefinitions.h:205
@ SF_Vertex
Definition RHIDefinitions.h:203
@ SF_Mesh
Definition RHIDefinitions.h:204
@ SF_Geometry
Definition RHIDefinitions.h:207
@ SF_Pixel
Definition RHIDefinitions.h:206
@ MaxSimultaneousRenderTargets
Definition RHIDefinitions.h:287
uint8 FUniformBufferStaticSlot
Definition RHIDefinitions.h:722
EVRSRateCombiner
Definition RHIDefinitions.h:873
bool IsValidGraphicsFrequency(EShaderFrequency InShaderFrequency)
Definition RHIDefinitions.h:228
EAsyncComputeBudget
Definition RHIDefinitions.h:1317
EVRSShadingRate
Definition RHIDefinitions.h:860
FRHIGlobals GRHIGlobals
Definition RHIGlobals.cpp:6
#define GRHIVariableRateShadingImageFormat
Definition RHIGlobals.h:892
void ValidateShaderParameters(const TShaderRef< FShader > &Shader, const FShaderParametersMetadata *ParametersMetadata, const void *ParametersData)
Definition ShaderParameterStruct.h:125
uint32 Offset
Definition VulkanMemory.cpp:4033
Definition RHIResources.h:409
Definition RHIResources.h:4572
Definition RHIResources.h:1581
Definition RHICommandList.h:455
Definition RHIResources.h:1078
Definition RHIResources.h:1018
Definition RHIResources.h:2387
Definition RHIResources.h:1058
Definition RHIResources.h:947
Definition RHIResources.h:1115
Definition RHIResources.h:3755
Definition RHIResources.h:984
Definition RHIResources.h:2444
Definition RHIResources.h:3863
Definition RHIResources.h:3919
Definition RHIResources.h:854
Definition RHIResources.h:3981
Definition RHIResources.h:2153
EPixelFormat GetFormat() const
Definition RHIResources.h:2341
Definition RHIResources.h:3294
Definition RHIResources.h:2515
Definition RHIContext.h:693
virtual void RHIDrawIndexedIndirect(FRHIBuffer *IndexBufferRHI, FRHIBuffer *ArgumentsBufferRHI, int32 DrawArgumentsIndex, uint32 NumInstances)=0
virtual void RHINextSubpass()
Definition RHIContext.h:858
virtual void RHISetStereoViewport(float LeftMinX, float RightMinX, float LeftMinY, float RightMinY, float MinZ, float LeftMaxX, float RightMaxX, float LeftMaxY, float RightMaxY, float MaxZ)
Definition RHIContext.h:744
virtual void RHISetStreamSource(uint32 StreamIndex, FRHIBuffer *VertexBuffer, uint32 Offset)=0
virtual void RHIDrawIndexedPrimitive(FRHIBuffer *IndexBuffer, int32 BaseVertexIndex, uint32 FirstInstance, uint32 NumVertices, uint32 StartIndex, uint32 NumPrimitives, uint32 NumInstances)=0
virtual void RHIDrawPrimitiveIndirect(FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset)=0
virtual void RHICommitShaderBindingTable(FRHIShaderBindingTable *SBT, FRHIBuffer *InlineBindingDataBuffer)
Definition RHIContext.h:876
virtual void RHICopyBufferRegion(FRHIBuffer *DestBuffer, uint64 DstOffset, FRHIBuffer *SourceBuffer, uint64 SrcOffset, uint64 NumBytes)=0
virtual void RHISetBlendFactor(const FLinearColor &BlendFactor)
Definition RHIContext.h:788
virtual void RHIBeginRenderQuery(FRHIRenderQuery *RenderQuery)=0
virtual void RHISetShaderUnbinds(FRHIGraphicsShader *Shader, TConstArrayView< FRHIShaderParameterUnbind > InUnbinds)
Definition RHIContext.h:781
virtual void RHIResummarizeHTile(FRHITexture *DepthTexture)
Definition RHIContext.h:717
virtual void RHIDispatchIndirectMeshShader(FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset)
Definition RHIContext.h:821
virtual void RHIDispatchIndirectComputeShader(FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset)=0
virtual void RHIEndRenderQuery(FRHIRenderQuery *RenderQuery)=0
virtual void RHISetBindingsOnShaderBindingTable(FRHIShaderBindingTable *SBT, FRHIRayTracingPipelineState *Pipeline, uint32 NumBindings, const FRayTracingLocalShaderBindings *Bindings, ERayTracingBindingType BindingType)
Definition RHIContext.h:871
virtual void RHIBeginParallelRenderPass(TSharedPtr< FRHIParallelRenderPassInfo > InInfo, const TCHAR *InName)
Definition RHIContext.h:844
virtual void RHIEndDrawingViewport(FRHIViewport *Viewport, bool bPresent, bool bLockToVsync)=0
virtual void RHIDrawIndexedPrimitiveIndirect(FRHIBuffer *IndexBuffer, FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset)=0
virtual void RHISetDepthBounds(float MinDepth, float MaxDepth)=0
virtual void RHISetShadingRate(EVRSShadingRate ShadingRate, EVRSRateCombiner Combiner)
Definition RHIContext.h:839
virtual void RHIEndRenderPass()=0
virtual void RHIDispatchMeshShader(uint32 ThreadGroupCountX, uint32 ThreadGroupCountY, uint32 ThreadGroupCountZ)
Definition RHIContext.h:816
virtual void RHIEndParallelRenderPass()
Definition RHIContext.h:849
virtual void RHIClearShaderBindingTable(FRHIShaderBindingTable *SBT)
Definition RHIContext.h:866
virtual void RHIBeginRenderPass(const FRHIRenderPassInfo &InInfo, const TCHAR *InName)=0
virtual void RHISetGraphicsPipelineState(FRHIGraphicsPipelineState *GraphicsState, uint32 StencilRef, bool bApplyAdditionalState)=0
virtual void RHIDrawPrimitive(uint32 BaseVertexIndex, uint32 NumPrimitives, uint32 NumInstances)=0
virtual void RHISetViewport(float MinX, float MinY, float MinZ, float MaxX, float MaxY, float MaxZ)=0
virtual void RHIMultiDrawIndexedPrimitiveIndirect(FRHIBuffer *IndexBuffer, FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset, FRHIBuffer *CountBuffer, uint32 CountBuffeOffset, uint32 MaxDrawArguments)
Definition RHIContext.h:811
virtual void RHIDispatchComputeShader(uint32 ThreadGroupCountX, uint32 ThreadGroupCountY, uint32 ThreadGroupCountZ)=0
virtual void RHISetScissorRect(bool bEnable, uint32 MinX, uint32 MinY, uint32 MaxX, uint32 MaxY)=0
virtual void RHISetMultipleViewports(uint32 Count, const FViewportBounds *Data)=0
virtual void RHICopyTexture(FRHITexture *SourceTexture, FRHITexture *DestTexture, const FRHICopyTextureInfo &CopyInfo)=0
virtual void RHISetStencilRef(uint32 StencilRef)
Definition RHIContext.h:786
virtual void RHISetShaderParameters(FRHIGraphicsShader *Shader, TConstArrayView< uint8 > InParametersData, TConstArrayView< FRHIShaderParameter > InParameters, TConstArrayView< FRHIShaderParameterResource > InResourceParameters, TConstArrayView< FRHIShaderParameterResource > InBindlessParameters)=0
Definition RHIContext.h:257
virtual void RHISetStaticUniformBuffer(FUniformBufferStaticSlot Slot, FRHIUniformBuffer *UniformBuffer)=0
virtual void RHIDispatchComputeShaderBundle(FRHIShaderBundle *ShaderBundle, FRHIBuffer *RecordArgBuffer, TConstArrayView< FRHIShaderParameterResource > SharedBindlessParameters, TConstArrayView< FRHIShaderBundleComputeDispatch > Dispatches, bool bEmulated)
Definition RHIContext.h:322
virtual void RHIBeginUAVOverlap()
Definition RHIContext.h:337
virtual void RHISetStaticUniformBuffers(const FUniformBufferStaticBindings &InUniformBuffers)=0
IRHIComputeContext & GetLowestLevelContext()
Definition RHIContext.h:506
virtual void RHISetShaderUnbinds(FRHIComputeShader *ComputeShader, TConstArrayView< FRHIShaderParameterUnbind > InUnbinds)
Definition RHIContext.h:357
virtual void RHIClearUAVFloat(FRHIUnorderedAccessView *UnorderedAccessViewRHI, const FVector4f &Values)=0
virtual void RHIEndUAVOverlap()
Definition RHIContext.h:338
virtual void RHIBuildAccelerationStructures(TConstArrayView< FRayTracingGeometryBuildParams > Params, const FRHIBufferRange &ScratchBufferRange)
Definition RHIContext.h:476
void SetTrackedAccess(const FRHITrackedAccessInfo &Info)
Definition RHIContext.h:516
virtual void RHIEndTransitions(TArrayView< const FRHITransition * > Transitions)=0
virtual void RHISetUniformBufferDynamicOffset(FUniformBufferStaticSlot Slot, uint32 Offset)
Definition RHIContext.h:366
virtual FRHIGPUMask RHIGetGPUMask() const
Definition RHIContext.h:402
virtual void RHIBeginTransitions(TArrayView< const FRHITransition * > Transitions)=0
virtual void RHISetGPUMask(FRHIGPUMask GPUMask)
Definition RHIContext.h:397
virtual void RHISetShaderParameters(FRHIComputeShader *ComputeShader, TConstArrayView< uint8 > InParametersData, TConstArrayView< FRHIShaderParameter > InParameters, TConstArrayView< FRHIShaderParameterResource > InResourceParameters, TConstArrayView< FRHIShaderParameterResource > InBindlessParameters)=0
virtual void RHIBindAccelerationStructureMemory(FRHIRayTracingScene *Scene, FRHIBuffer *Buffer, uint32 BufferOffset)
Definition RHIContext.h:486
virtual void RHIDispatchGraphicsShaderBundle(FRHIShaderBundle *ShaderBundle, FRHIBuffer *RecordArgBuffer, const FRHIShaderBundleGraphicsState &BundleState, TConstArrayView< FRHIShaderParameterResource > SharedBindlessParameters, TConstArrayView< FRHIShaderBundleGraphicsDispatch > Dispatches, bool bEmulated)
Definition RHIContext.h:329
virtual void RHICopyToStagingBuffer(FRHIBuffer *SourceBufferRHI, FRHIStagingBuffer *DestinationStagingBufferRHI, uint32 InOffset, uint32 InNumBytes)
Definition RHIContext.h:383
virtual void RHIExecuteMultiIndirectClusterOperation(const FRayTracingClusterOperationParams &Params)
Definition RHIContext.h:471
virtual void RHIRayTraceDispatchIndirect(FRHIRayTracingPipelineState *RayTracingPipelineState, FRHIRayTracingShader *RayGenShader, FRHIShaderBindingTable *SBT, const FRayTracingShaderBindings &GlobalResourceBindings, FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset)
Definition RHIContext.h:279
virtual void RHISetAsyncComputeBudget(EAsyncComputeBudget Budget)
Definition RHIContext.h:288
virtual void SetExecutingCommandList(FRHICommandListBase *InCmdList)
Definition RHIContext.h:550
virtual void RHISetComputePipelineState(FRHIComputePipelineState *ComputePipelineState)=0
virtual void RHIWriteGPUFence(FRHIGPUFence *FenceRHI)
Definition RHIContext.h:392
virtual void RHIDispatchIndirectComputeShader(FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset)=0
virtual void RHIClearUAVUint(FRHIUnorderedAccessView *UnorderedAccessViewRHI, const FUintVector4 &Values)=0
virtual void RHIRayTraceDispatch(FRHIRayTracingPipelineState *RayTracingPipelineState, FRHIRayTracingShader *RayGenShader, FRHIShaderBindingTable *SBT, const FRayTracingShaderBindings &GlobalResourceBindings, uint32 Width, uint32 Height)
Definition RHIContext.h:272
virtual void RHISetShaderRootConstants(const FUint32Vector4 &Constants)
Definition RHIContext.h:317
virtual void RHIDispatchComputeShader(uint32 ThreadGroupCountX, uint32 ThreadGroupCountY, uint32 ThreadGroupCountZ)=0
virtual void * RHIGetNativeCommandBuffer()
Definition RHIContext.h:534
Definition ArrayView.h:139
Definition SharedPointer.h:692
Type
Definition PawnAction_Move.h:11
void Dispatch(FRHIComputeCommandList &RHICmdList, const TShaderRef< TShaderClass > &ComputeShader, const FShaderParametersMetadata *ParametersMetadata, const typename TShaderClass::FParameters &Parameters, FIntVector GroupCount)
Definition RenderGraphUtils.h:491
int32 P[512]
Definition FieldSystemNoiseAlgo.cpp:11
FUniformParams Params
Definition MeshPaintVirtualTexture.cpp:162
EType
Definition AccessDetection.h:11
State
Definition PacketHandler.h:88
static UE_FORCEINLINE_HINT void * Memset(void *Dest, uint8 Char, SIZE_T Count)
Definition UnrealMemory.h:119
Definition RHICommandList.h:212
Definition RHICommandList.h:183
bool RequiresSharedBindlessParameters
Definition RHIGlobals.h:630
struct FRHIGlobals::FShaderBundles ShaderBundles
Definition RHIResources.h:5250
Definition RHIResources.h:5260
Definition RHIResources.h:5248
Definition RHIShaderParameters.h:398
Definition RHIShaderParameters.h:428
Definition RHIShaderParameters.h:414
Definition RHIResources.h:1689
Definition RHITransition.h:450
Definition RHITransition.h:475
Definition RHIContext.h:643
Definition RHIContext.h:590
Definition RHIResources.h:3496
Definition RHIResources.h:3463
Definition RHICommandList.h:267
Definition RHIContext.h:600
Definition RHICommandList.h:248