Hello, author of a small game related open source project here. I recently attempted an experimental port to Android.
A user of mine with a PowerVR chip (SGX 544MP, driver build 1.9@2204701) keeps having black screen issues. Inside his log, the following error keeps appearing:
E/IMGSRV (14784): :0: skip glDrawElements (indices=1(0x0), bindBuffer=1)
so if the driver is indeed discarding my draw calls, that would explain the black screen (everything is rendered to an off-screen texture and blitted on-screen at the end). The user also turned on “callstack on glGetError”, but no GL errors were generated. The black screen persists from the start of the application for a while until a scene switch (where lots of old objects destroyed and new ones created), then doesn’t happen for a while until it randomly appears again.
Do you have any hints as to what might be causing the driver to discard the draw calls?
Could you please confirm what device this is occurring on?
Yeah sure. The phone is an “Intex Aqua HD” with an “MTK6589” processor and 1GB RAM. Here’s a webpage on it: http://gadgets.ndtv.com/intex-aqua-hd-1025
We’ve searched the source code for our latest SGX driver, but were not able to find this message. We will reap the 1.9 DDK source to see if the message is specific to that branch.
The message is very vague. My initial thoughts are that the draw may have been skipped because the bound index buffer or vertex buffers are invalid. Have you tried to verify the logic in your code or ran any analysis tools to verify the calls you are making? Our PVRTrace capture tool should be able to isolate any issues in your draw calls. Once you have a PVRTrace capture, you can also send it to us from further analysis (I would recommend sharing this capture confidentially with us through our ticketing system: https://pvrsupport.imgtec.com/new-ticket)
I’ve checked the source for our 1.9@2204701 reference driver and couldn’t find the message, I assume our chip customer has added the debug message to their drivers.
Try Joe’s suggestions and let us know how it goes.
Thanks Joe and Paul for looking into the driver source for me.
I’m pretty sure the logic in my code is sound as this exact same code runs on thousands of PCs fine and also on other mobile chips, plus it works ok on the PowerVR one half of the time (and no OpenGL errors are emitted from the draw call).
From a first glance of the documentation on setting up the trace tool you linked me, it looks a lot like apitrace. Is your tracing tool a pure call-dumping shim, or does it actually record internal state from the PowerVR chip itself?
PVRTrace just purely captures GL calls.