Hello Fellows,
I have a little Problem with Adreno GPUs (Nexus 4 and Samsung Galaxy S4). The Profiler works fine but not the GPU on the devices. I have tested Mali, PowerVR and Tegra GPUs and they have not the problem.
The Profiler looks like this:
http://i.imgur.com/DRyvlg5.png
The GPU looks like this:
http://i.imgur.com/QO0Ol2h.png
The thing that the texture looks on the devices white is a problem with the Adreno GPU Driver. I have downloaded the latest Version of the driver because on stock Android 4.2.2 on the Nexus 4 the Profiler was not finding my device. With Stock it looks normal. But the blue saws look on every Adreno GPU I tested the same (SGS4 and Nexus 4).
Is there something wrong with the Z-Buffer? But I'm also wondering why the profiler is having the same problem.
Cheers
Jakob
Hello,
I finally found the problem. Under Andorid a GLSurfaceView was created on Adreno GPUs with a 16 bit precise Z-Buffer. If you force the Depth Buffer to be 24 bit precise it work. But I wonder why every other GPU does this as a standard and adreno GPUs need an extra push to be good.
You can force this with GLSurfaceView if you just insert this in before you set the renderer.
mGLSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 24, 8);
Cheers
Jakob
Hi Jakob.
Glad you found a solution. By the looks of the images, it seems like there's some z-fighting going on (two pieces of geometry sharing the same value). In addition to increasing the depth buffer precision, you might be able to fix the problem by adjusting the geometry.
If you indeed need 24 bits of depth, you can also use the setEGLConfigChooser method (as you have), or use an EGLConfigChooser and interate throught the possible available configurations and chose an appropriate one.