I'm attempting to use PerfHUD ES to profile our game, but I'm unsure if I have everything configured properly.
I'm using the command "adb shell setprop debug.perfhudes 1" to enable PerfHUD ES on the OUYA. I've modified our main loop to use the eglGetSystemTimeNV method for time updates, and am able to change the game simulation speed with the Speed Bar in the Performance Dashboard. I've also confirmed that the device is outputting the "NVPerfHUD ES is active." message.
The Performance Dashboard seems to work properly, though the CPU Monitor is basically a flat-line when we're not loading levels, 100% when we're loading levels, and doesn't really show anything in-between, even in obviously CPU-intensive areas. The Frame Debugger seems to work as expected.
But the Frame Profiler is of very limited use. The only graph that has any data is the Draw Call Duration, leaving out a great deal of valuable information.
Checking the Device Info from PerfHUD ES seems to indicate that the OUYA is configured to support all of the performance monitors.
The goal of my quest is to figure out if this is the best I can expect to get out of PerfHUD ES with the OUYA, or if I'm still missing some steps. Can anyone help with/comment on that?
Comments
The Frame Profiler panels seem to have invalid data for utilization, bottlenecks, etc.
durations, which can be seen by unchecking the three ‚Bucket Definition‛ checkboxes in the
top-left of the profiling interface, and review the calls/times in the Draw Calls list at the top
active in the debugger interface for easy identification.The driver work is under investigation.
With regards to your CPU utilisation issue, we had the same problem until the last firmware update for the OUYA; I'm assuming the OUYA devs updated to a later release of NVidia firmware as well as their own.
Personally we're getting plenty of valuable information from just the Frame Debugger, (we were able to speed up our game by over 50%, we're pushing around 350,000 prims per frame at between 30 and 40fps now at 960*540).