Switching attachments for an FBO works on PC emulation but fails on my device


I am attaching different textures to the same FBO so that I can render normals to one texture, light accumulation to the other an so on.

I ofcourse check for frame buffer completeness, glErrors etc and everything is fine on PC side. But on my android device (Galaxy S1 I9000), there is a huge rendering problem where this mechanism fails and does not throw any of the errors also (GL_FRAMEBUFFER_COMPLETE is returned and no gl errors).

If I avoid doing this switching of attachments to the FBO (just render normals to a single attachment of the FBO) and go back to check, there are no rendering problems.

So at this point, I am not sure if there is a bug in my code or my device or PVR SDK. So I will email the apk file, screen shots of PC emulation for comparison. Please help by testing on other devices and/or providing suggestions to debug my problem.


This is a known issue in the 1.6 driver on the Galaxy S. You can work around it by using separate FBOs for each texture attachment.

Our OGLES2 DeferredShading Example implements a render in this way.



Thanks for your response. You gave me a huge relief :slight_smile:

Does that mean, it only happens on Galaxy S1 or will it happen on S2 and S3 such phones ?

In this link,


it is said that using multiple FBO’s approach is slower. Can you specify if this is actually true and by how much ?

What all devices will I encounter this 1.6 driver ? Will this bee updated anytime soon ?

For PowerVR, an FBO per-texture is best for performance (for any version of the driver). I can’t recommend best practices for other GPU vendors - you should contact them for advice.