Whenever, I run a capture session with the Adreno Profiler, the display on the device is different from what is actually captured. The GL resources ( texture, programs etc ) are indeed correct, but the rendering on the device is not correct. I would assume this is because the profiler is actually running in emulation mode of the host computer, which will adopt the underlying GL implementation behavior ( which is this case is correct ), while the device implementation is causing some side-effect. I've ran the same application on a Mali-400 GPU and the output is correct.
Another issue I noticed is whenever I have a fragment shader that if I have a fragment shader that samples from several textures, changing the output of the fragment shader and sending the modified shader to the device does not change the output on the device( the profiler output does change though ). However, if I output a color constant then it appears on both the device and the profiler.
Discrepancy between Adreno Profiler captured output and device output-SOLVED
Posted: Sun, 2014-12-14 12:21
You're correct about Profiler using emulation on the desktop, so sometimes output can be different.
The fragment shader issue sounds like a bug in Profiler.
What device are you using?
We can actually write this up as been SOLVED( with a caveat ).
I'm using a Adreno 305 device ( HTC Desire 610 ).
Actually the solution to the issue was a note in the Adreno Profile Help that warned against relinking the program after live updates. The issue is due to the fact that when the new program is updated, the old uniforms on the host side are not updated ( which is complete valid since its redundant to query uniform locations each frame when one assume they do not change, and if they do, its usually internal to the application and the application can handle the case accordingly ). The actually solution was to create a debug version of the app that queries the uniform location every frame for the shader being debugged.
I initially wrote this up as a bug with the thought that the uniform location were being preserved via the Profiler-Driver communication, but this clearly is not the case.