Hey guys I am recently using Snapdragon profiler to optimize my unity project.
When we use Trace capture, it works fine and we find something like this:
http://i1.buimg.com/1949/2452a822cec165c3.png
My question is: What does the render and GMEM Load exactly mean?
When we zoom in, it looks like this:
http://i1.buimg.com/1949/45f5cf369b863d89.png
What does the "Render" and "GMEM Load" means please? It seems that it is not related to drawcalls.
Thanks,
Noah Zuo
Hi Noah,
I apologize for the late response. The "Rendering Stages" metric captures the surfaces that have been submitted for rendering and how long the GPU took on each stage that it needs to perform with the Adreno GPU being a deferred tiling architecture. I recommend reading the portions of the Adreno Developer Guide that talk about tiling architecture found at:
https://developer.qualcomm.com/software/adreno-gpu-sdk/tools
Render encompasses the actual drawing as well as storing data from each tile in GMEM to main memory. GMEM Loads happen when a surface copies back from main memory to GMEM (hence 'loading' it) with it's contents before drawing into it. This operation is more often than not an unnintentional behavior and can cause severe slowdowns as it appears to be the case in your application. The Adreno Developer Guide has various examples on how and why this can happen but a good rule of thumb is always making sure the frame buffers get cleared or invalidated after bound and before any draw operations done. Also make sure that there are no mid frame flushes or glReadPixels.