Why Qualcomm, Why?

So, i was really thinking i could get all the refactoring done today. I rewrote Mesh completely, added new funky functionality, fixed a few minor bugs and so on and so forth. Then i tested my new funk Mesh functionality on the Hero. And all hell broke lose.

What i want to do: when you call Mesh.render() in libgdx <= 0.7 the vbo or vertex arrays is always bound anew, a potentially wasteful operation. In the case of SpriteBatch i render as soon as a new texture was specified in one of the draw methods, e.g. you draw 100 sprites then text. Before the text is drawn the sprites are rendered. Now, that used Mesh.render() so that always re-setup the vbo/vertex array bindings which is totally unnecessary cause the buffer stays the same in between SpriteBatch.begin()/end(). So i thought i do the smart thing and give Mesh functionality so i can control when the underlying vbo/vertex array is bound. I'd bind it in SpriteBatch.begin() once and unbind it in SpriteBatch.end() once. For all the inbetween render calls i do not have to bind anything. All i have to do for each batch is upload the new vertex data to the bound vbo/va and be done with it. Totally awesome sauce fast and all that. Not so on the HTC Hero (quelle surprise...). Turns out this shitty MSM720xa chip actually has no idea of the OpenGL ES standard and just does severe memory corruption if you try that. Found out more on the Wiki.

Long story short: all my refactoring of the Mesh class was in vain cause it doesn’t work on the fucking MSM720xa. Thanks Qualcomm!

5 thoughts on “Why Qualcomm, Why?

Leave a Reply

Your email address will not be published.