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

glInvalidateFramebuffer problem

Hello,

My app works OK on:

-Windows Desktop GL

-Apple iOS iPad mini 2

-Samsung Galaxy Note 4 (ARM Mali-T760)

-Sony Xperia XZ2 Adreno 630

However when running on:

Huawei Mate 20 X (ARM Mali-G76) version OpenGL ES 3.2 v1.r16p0-01rel0.95d2435cbe2284d49b9bbcf5b1624fdd

Then I'm getting problems.

Expected results:

ARM Mali results:

after touching the screen to rotate the camera

I'm suspecting a driver bug.

This problem appears to be related to 'glInvalidateFramebuffer', if I replace all glInvalidateFramebuffer calls with glClear (or just remove the glInvalidateFramebuffer calls), then it starts to work ok.

Please check this link which includes APK files and images:

https://www.dropbox.com/sh/17lho4zzuwhuh4r/AACiAVIiSTxSv5_CeMDSqPSZa?dl=0

Thank you,

Greg

Parents
  • Hi Greg, 

    Sorry for the delayed response; it took a while for the driver team to hunt this one down.

    On some driver versions we have a state tracking bug which causes an optimization to incorrectly trigger, causing tiles to be discarded even though they are different to the content in memory. This only occurs in cases where the render pass does not redraw the whole screen, so the rendered bounding box changes between uses of the same framebuffer.

    The only workaround we have for now is ensuring that the whole screen is redrawn in render passes that use invalidate.

    Kind regards 
    Pete

Reply
  • Hi Greg, 

    Sorry for the delayed response; it took a while for the driver team to hunt this one down.

    On some driver versions we have a state tracking bug which causes an optimization to incorrectly trigger, causing tiles to be discarded even though they are different to the content in memory. This only occurs in cases where the render pass does not redraw the whole screen, so the rendered bounding box changes between uses of the same framebuffer.

    The only workaround we have for now is ensuring that the whole screen is redrawn in render passes that use invalidate.

    Kind regards 
    Pete

Children
No data