Support multi-thread in mobile for SceneColorRendering render pass

Hi,

In my scenarios, there are a large number of objects. In such cases, investigations have revealed a bottleneck in RHI: it fails to submit relevant APICmds to the GPU in a timely manner, causing the GPU to remain idle before SceneColorRendering.

I can understand that this is likely because the Basepass content is substantial, resulting in longer RT/RHI processing times.

Furthermore, I noticed that on the PC side, FParallelMeshDrawCommandPass::Dispatch is used to split Commands into multiple tasks for multithreaded processing, while on the mobile side, FParallelMeshDrawCommandPass::Draw is used for single-threaded processing in the RT thread.

My question is: Is it feasible to switch the mobile RenderDeferredSinglePass to the Dispatch mode?

Especially, does Vulkan’s SubCommandList support Subpass, meaning placing several Subpasses in different SubCommandLists?

Thanks

[Attachment Removed]

Hi Sanning,

We will need to try parallel dispatch, however, the dev team is unsure why its not used on mobile side yet. We suspect it would not be very friendly to mobile GPUs, as it might use separate render-passes for each separate dispatch. So a CPU/GPU tradeoff is at play.

Best regards.

[Attachment Removed]

Hi Sanning,

It sounds like it’s worth a try if your application is render thread bound and the GPU performance doesn’t degrade too much as a result.

Best regards.

[Attachment Removed]

Thanks,

Can we, like RenderDeferredSinglePass, perform AddPass only once, and implement Dispatch as dispatching a single DeferredSinglePass, which contains all Subpasses and all MeshPass(PreMaskPass, BasePass, Lighting, Decal etc)?​

[Attachment Removed]