You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
- New RHI command list SetTrackedAccess method for the user to supply a current whole-resource state.
- New RHI command context GetTrackedAccess method for querying the tracked access in RHIBeginTransitions / RHIEndTransitions on the RHI thread.
- Hooked RHICmdList.Transition and FRHICommandListExecutor::Transition to assign tracked state automatically.
- Refactored RDG and resource pools to use new RHI tracking.
- FRDGPooledBuffer / FRDGPooledTexture no longer contain tracked state. RDG temp-allocates state through the graph allocator instead.
- All prologue transitions are 'Unknown', and all epilogue transitions coalesce into a whole resource state.
- Implemented platform support for patching the 'before' state with the tracked state.
- Implemented various RHI validation checks:
- Asserts that the user assigned tracked state matches RHI validation tracked state, for all subresources.
- Asserts that tracked state is not assigned or queried from a parallel translation context.
- Added FRHIViewableResource and FRHIView base classes to RHI. FRHIView contains a pointer to an FRHIViewableResource. This is currently a raw pointer, but should be extended to a full reference in a later CL.
NOTE on RHI thread constraint:
Transition evaluation is now restricted to the RHI thread (i.e. no parallel translation contexts). Transitions aren't performed in parallel translate contexts anyway, so this is not a problem. If, however, we decide to refactor parallel translation to be more general, this implementation could be extended to track the state per context and update from the 'dispatch' thread.
#preflight 6233b4396666d7e753a16aaf
#rb kenzo.terelst
[CL 19513316 by zach bethel in ue5-main branch]
34 lines
720 B
C++
34 lines
720 B
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "RenderGraphDefinitions.h"
|
|
#include "RHITransientResourceAllocator.h"
|
|
|
|
#if RDG_ENABLE_TRACE
|
|
|
|
UE_TRACE_CHANNEL_EXTERN(RDGChannel, RENDERCORE_API);
|
|
|
|
class RENDERCORE_API FRDGTrace
|
|
{
|
|
public:
|
|
FRDGTrace();
|
|
|
|
void OutputGraphBegin();
|
|
void OutputGraphEnd(const FRDGBuilder& GraphBuilder);
|
|
|
|
void AddResource(FRDGViewableResource* Resource);
|
|
void AddTexturePassDependency(FRDGTexture* Texture, FRDGPass* Pass);
|
|
void AddBufferPassDependency(FRDGBuffer* Buffer, FRDGPass* Pass);
|
|
|
|
FRHITransientAllocationStats TransientAllocationStats;
|
|
|
|
bool IsEnabled() const;
|
|
|
|
private:
|
|
uint64 GraphStartCycles{};
|
|
uint32 ResourceOrder{};
|
|
bool bEnabled;
|
|
};
|
|
|
|
#endif |