Commit Graph

36 Commits

Author SHA1 Message Date
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
a6c304ffb5 RDG validation fix for RDG_{TEXTURE, BUFFER}_ACCESS_ARRAY.
#rb trivial

[CL 16194686 by zach bethel in ue5-main branch]
2021-05-04 11:53:08 -04:00
Krzysztof Narkowicz
e14668b6f9 Lumen - create BC surfaces with TexCreate_UAV if UAVAliasing is supported
#fyi Luke Thatcher

[CL 16170274 by Krzysztof Narkowicz in ue5-main branch]
2021-04-30 13:21:16 -04:00
Krzysztof Narkowicz
e005f9cfca RenderGraph - allow to create an aliased UAV into a BC surface
#rb Zachary.Bethel

[CL 16168670 by Krzysztof Narkowicz in ue5-main branch]
2021-04-30 11:28:17 -04:00
wei liu
fd8ea2fa94 Support a pass with the ability to explicitly skip pass merging.
#jira 113084

#rb Zach.Bethel, Dmitriy.Dyomin, Jack.Porter, Mi.Wang

#lockdown ben.marsh

#ROBOMERGE-SOURCE: CL 15966669 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v787-15839533)

[CL 15981946 by wei liu in ue5-main branch]
2021-04-12 15:36:14 -04:00
zach bethel
d66076eacf Added RDG validation to check for dangling pointers and assert at AddPass time. Tracks resources actively used in the graph and will emit an assert if an incoming resource isn't part of the set. This would catch, for example, if the user kept around a resource from a previous builder and tried to reuse it in a new builder.
#rb charles.derousiers
#jira none

[CL 15931804 by zach bethel in ue5-main branch]
2021-04-06 12:38:10 -04:00
zach bethel
9fc8b1722d Refactored RDG ConvertToUntrackedX functionality into the RDG builder; renamed the operation to 'FinalizeAccess' for clarity, as the resource is considered finalized in the graph and will not transition to any other state. This operation now supports multiple resources, improving performance in cases where multiple resources are finalized back-to-back. Added validation to check that the user don't attempt to use it outside of its finalized state. Fixed up a few places where this assumption was being violated. Minor refactors in various places to use new API.
#rb arne.schober, christopher.waters
#jira none

[CL 15931331 by zach bethel in ue5-main branch]
2021-04-06 11:45:09 -04:00
marc audy
bf2e06bca2 Added initial support for RDG_{TEXTURE, BUFFER}_ACCESS_ARRAY, which enables a dynamic number of inputs into an RDG pass. Removed unused / deprecated SHADER_PARAMETER_RDG_BUFFER.
#rb none

#ROBOMERGE-OWNER: marc.audy
#ROBOMERGE-AUTHOR: zach.bethel
#ROBOMERGE-SOURCE: CL 15905815 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v786-15839533)
#ROBOMERGE-CONFLICT from-shelf

[CL 15907353 by marc audy in ue5-main branch]
2021-04-02 20:35:50 -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
steve smith
461f10df8e Fix CIS break (with rename of FoveationTexture to ShadingRateTexture).
#rb trivial
#jira none

[CL 15630421 by steve smith in ue5-main branch]
2021-03-05 18:33:15 -04:00
steve smith
f6669c1638 Fix assert on RHI access for foveation texture.
#jira UE-104918
#rb zach.bethel

#ROBOMERGE-SOURCE: CL 15628768 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v777-15581079)

[CL 15628769 by steve smith in ue5-main branch]
2021-03-05 16:16:14 -04:00
zach bethel
d72f0bfee0 Reimplemented optimization to reuse existing shadow mask texture in lighting phase.
#rnx

[CL 15473950 by zach bethel in ue5-main branch]
2021-02-19 14:26:41 -04:00
zach bethel
1829d51d80 Fixed build break.
#rb none

[CL 15465960 by zach bethel in ue5-main branch]
2021-02-18 20:06:45 -04:00
zach bethel
782e2b8c79 Fixed crash in DrawTileMesh due to SkipBarriers flag.
#rb none

[CL 15052129 by zach bethel in ue5-main branch]
2021-01-12 13:56:48 -04:00
zach bethel
44e2bf09de Miscellaneous render graph changes in preparation for the scene textures refactor.
- Added GetLoadActionIfProduced helper function.
 - Made GetPooledFreeBuffer attempt to reuse the existing allocation.
 - Disable load action validation when SkipRenderPass is specified.

#rb none
#rnx

[CL 14957259 by zach bethel in ue5-main branch]
2020-12-18 16:33:44 -04:00
zach bethel
0d7dc4d4ed Refactor of uniform buffer binding to allow for runtime selection of static or per-shader binding. This is a necessary precursor to moving the View uniform buffer to use static bindings on mesh passes; it is used in so many places that both binding models are required to preserve compatibility. Added validation to catch when a uniform buffer is bound using both methods at the same time. Added CVar to RHI transition validation to control whether to break in the debugger on a transition failure.
#rb christopher.waters

[CL 14873973 by zach bethel in ue5-main branch]
2020-12-07 17:42:32 -04:00
zach bethel
281d042714 Fixed erroneous assert in RDG debug mode.
#rb none

[CL 14821365 by zach bethel in ue5-main branch]
2020-11-30 13:16:32 -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
07f39208c9 Added RDG system textures struct tied to the RDG blackboard. Pre-registers all resources with a ReadOnly flag which will disallow writes. Also allows us to avoid re-registering dummy textures dozens of times. Removed unused GTAO randomization texture.
#rb christopher.waters

[CL 14766647 by zach bethel in ue5-main branch]
2020-11-17 18:21:53 -04:00
zach bethel
7c55500b43 RDG refactors in preparation for scene render targets refactor.
- Added simple blackboard container.
 - Added support for checking if a resource has been produced within the graph.
 - Moved all RHI validation into user validation cpp file.
 - Fixed bug in graph producer compilation logic when switching to subresources.

#rb none

[CL 14766062 by zach bethel in ue5-main branch]
2020-11-17 17:04:48 -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
zach bethel
40f8c36086 Fix for RDG pass flags validation and ERHIAccess::IndirectArgs.
#rb none

[CL 14665150 by zach bethel in ue5-main branch]
2020-11-05 11:20:37 -04:00
Marc Audy
68150e0be7 Merge UE5/Release-Engine-Staging to UE5/Main @ 14611496
This represents UE4/Main @ 14594913

[CL 14612291 by Marc Audy in ue5-main branch]
2020-10-29 13:38:15 -04:00
zach bethel
e6aed42888 Added missing validation case for RDG debug logging.
#rb trivial
#jira none
#rnx

[CL 14577470 by zach bethel in ue5-main branch]
2020-10-26 12:05:19 -04:00
zach bethel
929433e6b6 Various fixes needed for next round of RDG conversions.
#rb christopher.waters
#jira none
#rnx

[CL 14562670 by zach bethel in ue5-main branch]
2020-10-23 16:26:52 -04:00