Commit Graph

24 Commits

Author SHA1 Message Date
zach bethel
f311bbc7a1 RDG Parallel Execution (disabled by default)
- 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

[CL 16838717 by zach bethel in ue5-main branch]
2021-07-13 12:38:27 -04:00
zach bethel
db4d19f641 Fix for culled RDG uniform buffer being created.
#rb andrew.lauritzen

[CL 16523561 by zach bethel in ue5-main branch]
2021-06-01 17:25:18 -04:00
zach bethel
b843dabf06 Minor RDG fixes and support for read-only system textures.
[CL 16456650 by zach bethel in ue5-main branch]
2021-05-25 17:11:34 -04:00
zach bethel
90bc2efada RDG refactor to enable draining of work after issuing occlusion queries.
- 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]
2021-05-19 17:54:58 -04:00
zach bethel
804d775535 Minor RDG optimizations.
- 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]
2021-05-05 11:58:15 -04:00
zach bethel
8c1793ad5a Integration of RHI transient allocator into RDG.
- 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]
2021-03-17 12:44:59 -04:00
zach bethel
26dddad59e Fixed clang build break.
#rb trivial

[CL 15466212 by zach bethel in ue5-main branch]
2021-02-18 20:28:08 -04:00
zach bethel
3054b6c388 Added tag tracking whether a pass uses the immediate command list to RDG insights.
#rnx
#rb none

[CL 15465640 by zach bethel in ue5-main branch]
2021-02-18 19:44:41 -04:00
zach bethel
50d368cbf4 Improved sorting and coloration of resources in RDG insights.
#rb none
#rnx

[CL 15338594 by zach bethel in ue5-main branch]
2021-02-05 12:11:16 -04:00
zach bethel
274c3b2ba7 RDG Insights Plugin
#jira none
#rb catalin.dragoiupruna

[CL 15296346 by zach bethel in ue5-main branch]
2021-02-03 13:17:04 -04:00
zach bethel
0a145b23fe Improved RDG state merging to better handle subresources. Subresource tracking is used for the rest of the graph if subresource states are encountered. Improved error reporting for edge case where transitions are inserted out of order. Added explicit merge check for depth read / write to make sure that it doesn't merge with anything else.
#rb none

[CL 14874576 by zach bethel in ue5-main branch]
2020-12-07 18:45:31 -04:00
zach bethel
7ae3cdb31f Implemented support for multi-pipe UAV access. Implemented command list stats on RDG builder to avoid helper passes. Added {Begin, End}UAVOverlap to RDG UAVs.
#rb none

[CL 14821597 by zach bethel in ue5-main branch]
2020-11-30 13:27:08 -04:00
zach bethel
4e959189a6 Reworking RDG allocator to include container memory. This removes the dependency on the thread local memstack, and MemMark can no longer release RDG memory. All RDG memory is now released after execution.
#rb christopher.waters

[CL 14783232 by zach bethel in ue5-main branch]
2020-11-18 18:25:03 -04:00
zach bethel
5630bcfd89 Added Multi-pipeline Transition Support to platforms and RDG. Fixed uniform buffer hack in composition lighting.
#rb luke.thatcher, kenzo.terelst
#jira none

[CL 14727873 by zach bethel in ue5-main branch]
2020-11-11 19:22:36 -04:00
Zabir Hoque
ad7cd632a5 Copied shader pipeline and changes to RDG/Shader system to support dynamic param binding struct creation. Actual dynmaic param binding generation is stubbed. Parsing SRVs UAVs and Params from shaders.
#codereview: Juan.Canada; Carlos.Gonzalez; Halfdan.Ingvarsson; Zach.Bethel; Ben.Ingram; Arciel.Rekman

[CL 14639123 by Zabir Hoque in ue5-main branch]
2020-11-02 21:40:25 -04:00
zach bethel
cf37aaf0bc Fix for ConvertToExternalX causing passes to be culled in RDG.
- This function calls FRDGBuilder::PreallocateX, which sets bExternal to true.
 - Culling relies on bUntrackedOutputs to mark passes with external resources as root nodes in the culling traversal.
 - bUntrackedOutputs was being assigned during AddPass instead of during Compile.

#rb krzysztof.narkowicz
#jira none

[CL 14412855 by zach bethel in ue5-main branch]
2020-09-30 14:23:56 -04:00
Marcus Wassmer
3b81cf8201 Merging using //UE5/Main_to_//UE5/Release-Engine-Staging @14384769
autoresolved files
#rb none

[CL 14384911 by Marcus Wassmer in ue5-main branch]
2020-09-24 00:43:27 -04:00
Michal Valient
95d19f95b1 [REVERB] Merging //UE4/Private-Reverb-Development@13832732
#rb graham.wihlidal, rune.stubbe, brian.karis, andrew.lauritzen, jeff.farris

[CL 13834854 by Michal Valient in ue5-main branch]
2020-07-06 18:58:26 -04:00
Rolando Caloca
bbb9564388 Copying //UE4/Dev-RenderPlat-Staging@11110326 to //UE4/Main
#rb none
#rnx

[CL 11110369 by Rolando Caloca in Main branch]
2020-01-24 18:07:01 -05:00
ryan durand
0f0464a30e Updating copyright for Engine Runtime.
#rnx
#rb none


#ROBOMERGE-OWNER: ryan.durand
#ROBOMERGE-AUTHOR: ryan.durand
#ROBOMERGE-SOURCE: CL 10869210 via CL 10869511 via CL 10869900
#ROBOMERGE-BOT: (v613-10869866)

[CL 10870549 by ryan durand in Main branch]
2019-12-26 14:45:42 -05:00
Marcus Wassmer
6517c68ef5 Copying //UE4/Dev-RenderPlat-Staging@8684824 to Dev-Main (//UE4/Dev-Main)
#rb none

[CL 8684840 by Marcus Wassmer in Main branch]
2019-09-14 09:45:25 -04:00
zach bethel
88a7502f0f Hand-integration of ERenderGraphPassFlags enum rename.
#jira none
#rb none

#ROBOMERGE-SOURCE: CL 7461344 in //UE4/Release-4.23/...
#ROBOMERGE-BOT: RELEASE (Release-4.23 -> Main) (v371-7306989)

[CL 7461347 by zach bethel in Main branch]
2019-07-19 14:19:12 -04:00
zach bethel
879a31dc40 RDG Resource Barrier Fixes and Improvements.
- Resource barriers are now batched and submitted as a group at the beginning of a pass.
 - UAVs referencing the same underlying resource now only submit a single write barrier instead of a write + N UAV barriers.
 - During a mip generation pass, barriers are not issued for textures (they are implicitly converted to the SubRWBarrier state).
 - Depth / stencil read now transitions to the read state; this allows DSV + SRV to work correctly.

#jira UE-76196
#rb Guillaume.Abadie

[CL 7064877 by zach bethel in Main branch]
2019-06-18 13:23:41 -04:00
Rolando Caloca
aa0d2303d6 Copying //UE4/Dev-Rendering to Dev-Main (//UE4/Dev-Main) @ 6944469
#rb none
#rnx

[CL 6944849 by Rolando Caloca in Main branch]
2019-06-11 18:27:07 -04:00