- 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]
This change is the copy-up of work from //UE5/Dev-ParallelRendering to unify the various RHI texture types
- The separate RHI texture types (FRHITexture2D, FRHITexture2DArray, FRHITexture3D, FRHITextureCube, FRHITextureCubeArray) have been replaced with a single type: FRHITexture.
- Includes the required refactoring / fixes for the various platform RHIs.
The old texture types are still supported via typedefs, but will soon be marked deprecated. Future rendering code should make use of the FRHITexture type instead.
#jira UE-139559
#rb Mihnea.Balta
#preflight 622f3af819287beb2c3047f6
#robomerge[FN_ENGINEMERGE] DEV-NC
[CL 19371962 by Luke Thatcher in ue5-main branch]
RHIs interface update.
Not implemented on Switch, Mac and OpenGL yet.
Tested with Strata on pc dx11/dx12, xb1 base, ps4 and ps5.
Tested wihtout Strata on pc and ps4.
ShooterGame test on PC
Mac preflight https://horde.devtools.epicgames.com/job/61b268709947f1ef980c602e
#preflight test https://horde.devtools.epicgames.com/job/61b26827b13fefb344312f11
#rb RHI, Console
#ROBOMERGE-AUTHOR: sebastien.hillaire
#ROBOMERGE-SOURCE: CL 18508188 in //UE5/Release-5.0/... via CL 18508208
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)
[CL 18508217 by sebastien hillaire in ue5-release-engine-test branch]
rhi.DumpResourceMemory dumps the memory usage of each RHI resource if the type is instrumented. Currently only fully implemented for Textures and Buffers in D3D11 and D3D12.
rhi.DumpResourceCounts dumps the counts of each resource type. Should work for all RHIs.
Repurposed FRHIResourceInfo to use for generic resource info. Removed older uses of it that didn't actually provide data.
Made ERHIResourceType required to construct an FRHIResource.
Adding Name to FRHIBuffer.
Removed the unused FVulkanBuffer.
Removed the unused FOpenGLTexture and FOpenGLBaseTexture.
#jira none
#rb kenzo.terelst
#preflight 60902efd7d9bf90001766572
[CL 16186890 by christopher waters in ue5-main branch]
Changed water to use typed buffers instead of StructuredBuffers, as MALI GPUs do not support access to StructuredBuffers in a vertex shaders
#jira UE-109527
#rb kevin.ortegren
#ROBOMERGE-SOURCE: CL 15623921 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v777-15581079)
[CL 15623927 by dmitriy dyomin in ue5-main branch]
- Filtered out a Niagara Ray tracing compute(was causing cooking problems cause of float3x4)
- Fixed GPU Scene
#jira UE-92314
#rb Jack.Porter, Dmitriy.Dyomin, Rolando.Caloca, Mihnea.Balta
#ROBOMERGE-OWNER: florin.pascu
#ROBOMERGE-AUTHOR: florin.pascu
#ROBOMERGE-SOURCE: CL 12984452 in //UE4/Release-4.25/... via CL 12984457 via CL 12984596
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v682-12900288)
[CL 12984603 by florin pascu in Main branch]
UE-91483
#rb none
#ROBOMERGE-SOURCE: CL 12658286 via CL 12658322 via CL 12658331
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v675-12543919)
[CL 12658338 by allan bentham in Main branch]
required to support mesh lod streaming.
#rb Jian.Ru
#ROBOMERGE-SOURCE: CL 12504946 via CL 12504948 via CL 12504949
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v673-12478461)
[CL 12504953 by allan bentham in Main branch]
[FYI] Lukas.Hermanns, Matt.Collins, Luke.Thatcher, Uriel.Doyon, Shaun.Kime, Rolando.Caloca
#jira
#RB
#ROBOMERGE-SOURCE: CL 11108521 via CL 11108527
#ROBOMERGE-BOT: (v640-11091645)
[CL 11108528 by arne schober in Main branch]