Imagination PowerVR SDK Blog

glDrawElements crash on SGX 540 (Nexus S)


#1

Our game is crashing on a Nexus S running Android 4.1.2. The very first call we make to glDrawElements where we’re drawing two triangles (textured quad) using client vertex & index arrays (not buffer objects) crashes. The only thing I can see in the callstack after the crash is a memcpy call which I guess must be happening in your driver. This app is working fine on several Adreno devices.



I was wondering if this sounds like any previously known issue as this is a pretty old device and if any work-around might exist. I captured a trace with PVR Trace but of course the final crashing draw elements call is not included. It can be downloaded here: https://dl.dropboxusercontent.com/u/69927239/trace.zip if you think it might be of any use.


#2

It looks like the actual cause of this was rendering with an ETC1 texture that didn’t have power of 2 dimensions. No GL errors were generated by TexImage2D or TexSubImage2D though, just this crash when rendering primitives with it.


#3

Hi,



Glad to hear you’ve resolved your issue :slight_smile:



A colleague has informed me that the ETC1 extension was written against the OpenGL ES 1.1 specification. In OpenGL ES 1.1, there was a restriction that all textures had to be power of two. This means that you can only be certain that platforms that support ETC1 will accept power of two textures. Non-power of two texture support is undefined.



Thanks,

Joe