All of our games have a lot of issues on the Samsung Galaxy Nexus, but work great on other devices (including everything on iOS). I’ve been trying to figure out why this device gives us so many issues, but I can’t put my finger on it. Is there a bug list that I can reference anywhere? Here are my OpenGL strings:
gl version: OpenGL ES 2.0 build 1.8.GOOGLENEXUS.ED945322@2198402
gl vendor: Imagination Technologies
gl renderer: PowerVR SGX 540
Also, maybe a clue… when I don’t use VAOs, it seems to help (i.e. I only use VAO zero). When I do use VAOs, there seem to be a lot more issues. Keep in mind, though, that this same VAO/no-VAO code works on every other device. Any ideas??
Unfortunately, we do not have a list of all known bugs in this driver. There are known issues with the VAO implementation in some SGX drivers though. As I am not aware of a fix being implemented in later SGX drivers, I would recommend disabling VAOs when running on all SGX devices.
If you can describe the other bugs you have encountered, we can try to help you solve each of them.
Thanks Joe! When you say you recommend disabling vao for all sgx devices, do you mean all sgx devices on android? It seems to be working well on iOS, so I just want to clarify.
I’ll try to describe what seems to fail. We have some renderables that each use a GL_DYNAMIC_DRAW vbo. The vbo content is updated somewhat rarely, and the entirety of the object is drawn using that one vbo and an index vbo. It is pretty much exploded and unrecognizable when it runs in the sgx 540, but it’s good to go everywhere else. Any ideas what could be wrong? Thanks.
Sorry. You’re right. I should have been clearer. The issue is in our reference driver. Most of our customers ship with drivers based on our reference implementation. Some customers (such as Apple) heavily modify the reference driver, which results in the behaviour being very different. I’d recommend restricting the workaround to all non-iOS PowerVR devices.
From the explanation, I’m not sure what the cause could be. If you can share a PVRTrace recording with us or an APK that reproduces the problem, we can investigate. The best way to share files with us is to attach them to a support ticket.