when unity wirte to ondie memory VS write to shared memory on mobile hardware

hi guys,
with mobile tile-based GPU, the hardware breaks up the frame into tile list and operate within the ondie memory, which claimed to be very fast, and when the frame is ready to present, then it would write to the much slower system shared memory (like back buffer?). so only 1 write to the slow system shared memory during a frame is achieved.

question :
if i was to request a number of tmpRT, and operate on them during frame rendering, and avoid wirting to BuiltinRenderTextureType.CameraTarget until the very end, would all the tmpRT be operate on the ondie memory side, or would they operate on the system shared memory side(those dedicated memory served as GPU memory)?

the reason why i wanna ask about this, was i m thinking about imporving stacking camera renderings in my SRP, and if the above goes true, then i would save the write to BuiltinRenderTextureType.CameraTarget until the very last stacking camera lo. currently for every camera in the stack there will be write to BuiltinRenderTextureType.CameraTarget end command

actually, in any normal sense, it would be insane to think that any tmpRT could be operated in on-die mem, not even desktop GPU die has that kind of capacity

That’s why they are called tile-based. They split the destination into tiles (for example, 32x32 pixels - that can easily fit into fast memory) and render each tile individually. Two operations incur a lot of memory bandwidth: reading from system memory into tile memory and writing from tile memory back to the system memory.

You can use Unity - Scripting API: Graphics.SetRenderTarget with Unity - Scripting API: RenderTargetSetup parameter to control what happens to the data. Use Load and Store actions (Unity - Scripting API: RenderBufferLoadAction and Unity - Scripting API: RenderBufferStoreAction).