We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi!
I am developing UI application for embedded system running on Mali-400 GPU.
So far I have stumbled with following strange behavior: glDrawElements works differently if called with
different parameters.
Scenario: 8 vertices, 12 indices describing 2 rectangles - dark grey and red above it.
1. Variant 1:
glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_SHORT, 0);
glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_SHORT, (const GLushort*)(0) + 6);
only dark gray triangle is drawn - where is the red triangle???
2. Variant 2:
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, 0);
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, (const GLushort*)(0) + 6);
only dark gray rectangle is drawn (which is expected) - but where is red triangle???
3. Variant 3:
glDrawElements(GL_TRIANGLES, 12, GL_UNSIGNED_SHORT, (const GLushort*)(0));
both dark and red rectangles are drawn (which is expected result)
Why second glDrawElements call in variants 1 and 2 does not produce anything on screen?
Is it something related to internal pipeline optimizations or am I completely missing something here?
I have checked the same code on another device which is running on PowerVR GPU - everything is
fine there, no questions, that is why I came here to Mali support forums.
Executing grep --binary-files=text REVISION libMali.so on libMali shows some entries of REVISION=467.
I was able to create a reproducible program (for Android) which demonstrates those cases.
All those described scenarios are in jniexports.c:render of attached archive (lines 261-276).
Brandon,
Thank you very much for your reply. This is indeed helpful and approves my own thoughts. I will inquire device vendor about driver update.