This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Mali-400 strange glDrawElements behavior question

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).

MyApplication.tar.gz
Parents
  • On both my Mali-400 MP and Mali-450 MP, the first variant draws a red triangle inside a dark gray triangle, on the upper-left with an orange background. So it might be a bug impacting non-MP version of Mali-400 ? The following variants just draw rectangles, instead of triangles.

    The driver I'm using seems to be quite old though. ls -l libMali.so shows 2013-04-15 and there is no REVISION string inside the libMali.so of my Mali-400 MP tablet.

    However, I used your project to toy with apitrace and I was able to extract an editable trace from my Mali-450MP tablet that I've attached here. I also attached a Mali Graphics Debugger trace file. That might help pinpointing the problem more easily.

Reply
  • On both my Mali-400 MP and Mali-450 MP, the first variant draws a red triangle inside a dark gray triangle, on the upper-left with an orange background. So it might be a bug impacting non-MP version of Mali-400 ? The following variants just draw rectangles, instead of triangles.

    The driver I'm using seems to be quite old though. ls -l libMali.so shows 2013-04-15 and there is no REVISION string inside the libMali.so of my Mali-400 MP tablet.

    However, I used your project to toy with apitrace and I was able to extract an editable trace from my Mali-450MP tablet that I've attached here. I also attached a Mali Graphics Debugger trace file. That might help pinpointing the problem more easily.

Children