I've been trying to capture snapshots with this configuration with very little success: profiler 1.5.4 with Nexus 6 on Android 6.0.1, build MOB31K, not root.
What I see is that there are no GPU related stats in the realtime view for any processes, and also for the processes listed in the snapshot view. When I try to capture a snapshot for one of my processes, it responds with "can't snapshot this process".
However just once on one of my processes, I did get GPU stats and one capture that looked pretty sensible - however it didn't include all the contexts and missed the rendering info I was looking for.
Does anyone have any advice on how I might more reliably get snapshots?
Snapdragon Profiler needs to bootstrap to your application on init. For this to happen you need to start your application after you connect to your device. If that still doesn't enable per process GPU related metrics on real-time or the ability to take a snapshot you might need to make sure you have internet permission on your manifest. Since you have been able to take a snapshot once I would think the permission in your manifest is correct and all you need to make sure is to start your app after connection.
Many thanks! Following your suggestion, I can now repeatedly trigger snapshots.
However what happens is that it just sits there, retrieving the snapshot (orange bar in the data explorer). At this stage, my app is doing its GL rendering via C++ code.
If I interact with my app in a way that causes some Java-level GL rendering calls - there's a brief stall on the app, but the snapshot still doesn't appear.
If I then interact to stop the Javal GL calls and just return to the C++, the snapshot data then gets downloaded. It either contains no contexts and a black image (and throws errors when trying to retrieve buffers such as color buffers, etc) or it hangs with 'Working' over the top of the progress bar in the bottom left (and a spinning activity cursor for the app).
Does the snapshot mechanism work with GL calls from C++?
Snapdragon Profiler captures snapshots on a frame by frame basis. This is determined by 'frame delimiter' calls which the default is set to eglSwapBuffers. It seems as if in your use case this doesn't apply and it only swaps buffers until you interact with your app and that's probably why snapshot doesn't retrieve data until you interact with the app. Can you please provide more context on how GL is used on your app? Another option is to play around with the other potential frame delimters that can be used to trigger a snapshot, this include glFlush/glFinish, etc. If you have a sample app that you can PM me I would be glad to try it internally and diagnose the issue.