- Simplified RDG transition logic to only use subresource transitions.
- Don't allow unmergeable states to be merged during pass setup.
#preflight 627ebfadca3b90fc14fb9b85
#fyi jeannoe.morissette
[CL 20224647 by zach bethel in ue5-main branch]
- Implemented common transient page allocator in RHICore.
- Implemented XBox specific GPU page table mapping allocator.
- Extended RDG insights to support viewing heap visualization or page pool visualization.
#preflight 61d356682e0e436c725818bf
[CL 18504626 by zach bethel in ue5-main branch]
Dumps improvements:
1) Bring up for consoles
2) Better out of memory resiliency during the dumping process
3) Dumps console variables in CSV
4) Dumps process' log after completion
5) Dumps mip chains through FDumpTextureCS compute shader
6) Dumps depth & stencil texture formats through the FDumpTextureCS compute shader
7) Dumps at draw granularity with FRDGBuilder::DumpDraw(); (experimental)
8) Dumps final png screenshot to the dump directory
9) Adds & Dumps the FRDGBufferDesc::Metadata for viewer to decode buffer binary automatically
10) Dumps the PassParameters with structure metadata to decode shader parameters automatically
11) Adds CTRL+SHIFT+/ shortcut
Viewer improvements:
1) Tips display onload to spread some knowledge to the user
2) Supports for opening any pass/resources in new web browser tab
3) Emulates 16 and 32 bits UINT texture visualization with multiple webgl 8bit UINT textures
4) Fixes the webpage's tab going out of memory after visualizing many large resources.
5) Fixes the webpage's tab going out of memory after loading large buffer.
6) Adds support for more texture format with RGB channel reswizzling
7) Implements UI color-sheme based on UE5's editor theme
8) Implements texel color picker capabable of decoding every pixel format.
9) Implements texture viewer zooming with the mouse wheel
10) Implements a r.DumpGPU.Viewer.Visualize to open a specific RDG output resource when opening the viewer
#rb juan.canada
#preflight 619bb638fa0b360c406c42c5
[FYI] juan.canada, zach.bethel
#ROBOMERGE-AUTHOR: guillaume.abadie
#ROBOMERGE-SOURCE: CL 18260079 via CL 18372399 via CL 18372914
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)
[CL 18373039 by guillaume abadie in ue5-release-engine-test branch]
(cherry pick of 17507631 including later followup fixes in 17526511 and 17542272)
- Disable RDG parallel execution on D3D11.
- Precreate ClearReplacement shaders
- Also add a check to catch other possible issues before it's too late.
#rb Chris.Waters (in Dev-EMT)
#jira UE-125050
#ushell-cherrypick of 17507631 by Arciel.Rekman
#ROBOMERGE-AUTHOR: arciel.rekman
#ROBOMERGE-SOURCE: CL 17586312 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v871-17566257)
[CL 17586354 by arciel rekman in ue5-release-engine-test branch]
- Added ERDGBuilderFlags::AllowParallelExecute to tag specific builders to attempt parallel execution. This avoids cases where small graphs fork tasks and end up causing contention. Only the main scene render graphs are tagged.
- Moved RHI transition creation to an async task.
- Moved parallel execute setup and dispatch to an async task.
- Fixed RDG draining asserts using a short-term workaround by tagging relevant scene textures as non-transient.
- Deprecated RDG AddPass utilities without names and fixed up last remnants.
- Enabled parallel RDG execution by default.
[FYI] christopher.waters
#ROBOMERGE-SOURCE: CL 16925941 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)
[CL 16925957 by zach bethel in ue5-release-engine-test branch]
- Refactored RDG to support free-threaded execution of passes.
- Refactored renderer to use specific RHI command list variants in pass lambda. Immediate command list passes are forced to stay on the render thread, while other variants can be parallelized.
#rb christopher.waters
#ROBOMERGE-SOURCE: CL 16838717 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)
[CL 16838724 by zach bethel in ue5-release-engine-test branch]
- New Drain() method on FRDGBuilder; will flush all pending work.
- Drained passes are not culled; resource lifetimes are extended; async compute fences are optimized as best as possible but fence joining may occur after the drain.
- Batch up and pre-build all resource transitions. This is a prerequisite for parallel command lists.
- Removed ServiceLocalQueue passes with built-in RDG AddDispatchHint().
#jira UE-114622
[CL 16393495 by zach bethel in ue5-main branch]
- Simplified texture subresource tracking.
- Removed map lookup for each resource in SetupPass.
- Improved Compile / CollectPassResources to reduce cache misses.
- Added some container reservations to reduce reallocation costs.
- Added snapping of buffers to page boundaries to improve re-use.
#rb none
[CL 16208311 by zach bethel in ue5-main branch]
- Views are cached on RHI transient resources; view renames are no longer necessary.
- RHI Transient resources utilize a single cache per heap keyed off of the descriptor + offset. Resource caches and heaps are garbage collected.
- CPU performance is effectively equivalent to the existing pooled resource method.
- Added common RHI transient resource allocator implementation in RHI core; significantly reduces the amount of platform code.
- Resource aliasing overlaps are tracked by the RHI and submitted through an acquire operation.
- Fixed D3D12 implementation to support multi-GPU.
- Removed condition that excluded small (<64k) buffers in the transient allocator.
- RHI validation now checks that resource overlaps are valid; i.e. if an overlap occurs between resource A and B during an acquire of B, validation checks that A has been discarded.
#rb graham.wihlidal, luke.thatcher, kenzo.terelst
[CL 16076280 by zach bethel in ue5-main branch]
- Replaced legacy transient support from RDG and replaced with new API.
- Reworked acquire / discard operations a bit and added RHI validation to track correctness.
- Reworked RDG barrier batching to include acquire / discard operations.
- Hardened render pass merging logic and expanded to support lifetime extension of transient resources.
- Added transient tag to RDG insights to track which resources are transient.
#rb luke.thatcher, kenzo.terelst
[CL 15726534 by zach bethel in ue5-main branch]