Commit Graph

186 Commits

Author SHA1 Message Date
guillaume abadie
dd1c4774d5 Improves DumpGPU command
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]
2021-12-03 16:04:00 -05:00
guillaume abadie
d39d2e2bd9 Fixes VisualizeTexture not listing all RDG resources
#rb none
#lockdown michal.valient
#preflight 615dc3f477b42c00019e6d4c

#ROBOMERGE-AUTHOR: guillaume.abadie
#ROBOMERGE-SOURCE: CL 17740153 via CL 17982088 via CL 18367271 via CL 18367315
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18367334 by guillaume abadie in ue5-release-engine-test branch]
2021-12-03 03:42:23 -05:00
guillaume abadie
e0202048e8 Implements r.DumpGPU command
#rb yuriy.odonnell
#lockdown michal.valient
#preflight 615ace99e69d8c00011a309f

#ROBOMERGE-AUTHOR: guillaume.abadie
#ROBOMERGE-SOURCE: CL 17706889 via CL 17969938 via CL 18366598 via CL 18366692
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18366749 by guillaume abadie in ue5-release-engine-test branch]
2021-12-03 02:41:52 -05:00
zach bethel
dfe9fe4b19 Engine changes to enable RDG transient heap visualization mode.
#rb none
#preflight 61379013d9c85a00012fb2ba

#ROBOMERGE-AUTHOR: zach.bethel
#ROBOMERGE-SOURCE: CL 17447083 via CL 17902765 via CL 18360627 via CL 18360774
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18360847 by zach bethel in ue5-release-engine-test branch]
2021-12-02 18:04:03 -05:00
tuxerr
d299b17d29 PR #8517: fix VK_FDM usage on Vulkan (Contributed by tuxerr)
3 fixes:
* Fixes the GRHISupportsVariableRateShading logic to ensure that bool doesn't get nuked if the device supports FragmentDensityMap but not ShadingRateAttachment.
* Ensures Scene Textures are created as an array when multiview enabled.
* Ensures the RenderPass2 impl supports the Multiview Mask.

#jira UE-131846
#rb steve.smith jeannoe.morissette

#ROBOMERGE-AUTHOR: steve.smith
#ROBOMERGE-SOURCE: CL 17864739 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v883-17842818)

[CL 17864759 by tuxerr in ue5-release-engine-test branch]
2021-10-19 15:28:06 -04:00
aurel cordonnier
a12d56ff31 Merge from Release-Engine-Staging @ 17791557 to Release-Engine-Test
This represents UE4/Main @17774255, Release-5.0 @17791557 and Dev-PerfTest @17789485

[CL 17794212 by aurel cordonnier in ue5-release-engine-test branch]
2021-10-12 21:21:22 -04:00
charles derousiers
e17a01e51a Add RDG Upload variant which take a lambda function for freeing the CPU memory once the data are uploaded.
#rb zach.bethel
#preflight 612f0d3779d62b0001b43362

#ROBOMERGE-SOURCE: CL 17383153 via CL 17383415
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)

[CL 17383421 by charles derousiers in ue5-release-engine-test branch]
2021-09-01 03:09:25 -04:00
zach bethel
aed2812399 Reworked acquire / discard transitions in RDG to use split barriers to improve overlap.
#jira none

#ROBOMERGE-SOURCE: CL 17182512 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v855-17104924)

[CL 17182558 by zach bethel in ue5-release-engine-test branch]
2021-08-16 17:32:38 -04:00
zach bethel
447ab7a28a Fixed bug with RDG drain and async compute. Fixed transition bug with UAV workaround in upload buffers. Added some command line arguments. Optimiized checks to disable RDG validation if parallel.
#rb none

#ROBOMERGE-SOURCE: CL 16997303 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v838-16927207)

[CL 16997322 by zach bethel in ue5-release-engine-test branch]
2021-07-29 13:02:16 -04:00
zach bethel
a6c2b7ea30 Fixed state merging when r.RDG.Drain is enabled.
#rb trivial

#ROBOMERGE-SOURCE: CL 16962979 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v838-16927207)

[CL 16962993 by zach bethel in ue5-release-engine-test branch]
2021-07-26 19:49:38 -04:00
zach bethel
2f133f4f37 Fixed GPU scene and Nanite resources to support cross-pipeline SRV access.
Re-enabled async compute for Nanite. Fixed submission bug with async compute and parallel RDG where the async compute command list wasn't being submitted correctly in order.

#rb jamie.hayes, luke.thatcher
[FYI] graham.wihlidal
#jira UE-114775

#ROBOMERGE-SOURCE: CL 16937065 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v838-16927207)

[CL 16937073 by zach bethel in ue5-release-engine-test branch]
2021-07-23 10:18:32 -04:00
jian ru
95a7717441 Conditional GPU copies for RDG buffer uploads. This fixes broken GPU captures on some platforms when CPU-initialized GPU-modified buffers are used
#jira UE-118792

#ROBOMERGE-SOURCE: CL 16933927 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v838-16927207)

[CL 16933931 by jian ru in ue5-release-engine-test branch]
2021-07-22 22:31:13 -04:00
zach bethel
89fc4cf833 Parallel RDG execution improvements.
- 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]
2021-07-22 12:43:00 -04:00
zach bethel
d03ba8eaba Remove split transition for swap chain textures. This avoids cases where certain platforms will stall at the beginning of graph execution.
#rb christopher.waters
#jira UE-119087

#ROBOMERGE-SOURCE: CL 16850825 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)

[CL 16850829 by zach bethel in ue5-release-engine-test branch]
2021-07-14 11:51:24 -04:00
zach bethel
5ec769f91e 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

#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]
2021-07-13 12:38:37 -04:00
christopher waters
b78f574b8a RDGBuffer objects actually need destructing with their new TFunction members. This fixes a slow leak when using Buffer creation callbacks.
#jira none
#rb jian.ru, zach.bethel
#preflight 60d617e1caf05900010655a8

#ROBOMERGE-SOURCE: CL 16787641 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)

[CL 16787653 by christopher waters in ue5-release-engine-test branch]
2021-06-25 15:34:35 -04:00
ola olsson
30b717b963 Combing GPU-Scene instance culling and the id-list generation into one step, and the same for VSM
- Uses the InstanceCullingLoadBalancer to pre-distribute the work on the CPU to ensure even load.
 - Make instance culling use the instance data offset in MDC instead of translating primitive IDs.
 - Track single-instance draws separately from instanced to optimize handling (disable culling for single-instance primitives).

#rb Graham.wihlidal,andrew.lauritzen
[FYI] dmitriy.dyomin
#preflight 60d0eafa2ab2180001269160

#ROBOMERGE-SOURCE: CL 16733827 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v835-16672529)

[CL 16733837 by ola olsson in ue5-release-engine-test branch]
2021-06-21 16:52:03 -04:00
jian ru
55aeb4e4a6 XB1 transient allocator implementation that works with RDG. Courtesy to Kenzo for most of the implementation
#jira UE-117189
#rb ben.woodhouse, kenzo.terelst
[FYI] ben.woodhouse, kenzo.terelst, zach.bethel

#ROBOMERGE-SOURCE: CL 16682921 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v835-16672529)

[CL 16682930 by jian ru in ue5-release-engine-test branch]
2021-06-15 20:56:21 -04:00
Jian Ru
13d2d6e79e Batch BuildRenderingCommands from major mesh passes inside the main render function
#jira UE-117281
#rb ola.olsson, zach.bethel

[CL 16572282 by Jian Ru in ue5-main branch]
2021-06-07 12:19:06 -04:00
zach bethel
f30bf425f3 Fix for assert when readback resource is being used in a copy destination state.
#rb none

[CL 16523954 by zach bethel in ue5-main branch]
2021-06-01 17:52:32 -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
2ab8c34577 Replaced FRDGBufferUploader with internal RDG upload. Removes several transitions and passes and removes immediate command list passes from the graph.
#rb jian.ru

[CL 16459303 by zach bethel in ue5-main branch]
2021-05-25 20:46:17 -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
kenzo terelst
17719fe54c Force IndirectArg buffers to not use transient allocator and make them committed resources in d3d12
#jira UE-115982
#rb Yuriy.ODonnell, Graham.Wihlidal

#ROBOMERGE-OWNER: kenzo.terelst
#ROBOMERGE-AUTHOR: kenzo.terelst
#ROBOMERGE-SOURCE: CL 16425509 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v811-16416015)
#ROBOMERGE-CONFLICT from-shelf

[CL 16425600 by kenzo terelst in ue5-main branch]
2021-05-21 17:42: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