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
Just to confirm - I've taken a look at the APK and reproduced the issue on a Galaxy S10. As far as I can tell it is indeed a driver problem, so I'll raise a ticket for the driver team to take a look at it. Thanks for reporting the problem.
Cheers, Pete
Thank you very much for taking the time to investigate.
Is the only workaround to simply don't call glInvalidateFramebuffer?
What devices are affected, all Mali G-series? What would be the driver version GL_VERSION that fixes this problem?
I'm looking for a way to identify the affected devices based on GL_RENDERER, GL_VENDOR, GL_VERSION, ..
Even if you release a new driver update, what are the chances that major phone manufacturers (Samsung, Huawei, ..) will include this driver in a software update? Few years ago I've contacted Samsung about their GPU driver not being updated to Galaxy Note 4 (which suffered from shadows not being properly rendered for alpha-tested shaders) and they didn't bother to reply or make an update. Personally I think it's a big problem how Android Manufacturers handle updates, and GPU driver updates. I think a better system should be implemented, for example allowing to install GPU drivers manually.
Thank you very much,
Esenthel said:Is the only workaround to simply don't call glInvalidateFramebuffer? What devices are affected, all Mali G-series? What would be the driver version GL_VERSION that fixes this problem?
I'll let you know when I have a more concrete diagnosis from the driver team.
For Mali using a glClear at the start of the render pass performs the same as using glInvalidateFramebuffer; both will set the tile memory to clear color and that is a free operation at the start of the render pass. Given you know this works it seems like the safest option.
I have an untested hunch that another workaround would be to use a different container FBO for each of the different resolutions and/or viewports that you are rendering. This is just an educated guess and I've not had time to test it.
Esenthel said:Even if you release a new driver update, what are the chances that major phone manufacturers (Samsung, Huawei, ..) will include this driver in a software update?
We make the drivers available as soon as we have fixes. How those drivers get downstream to specific devices is unfortunately completely out of our hands.
I'll update this thread when I know more.
HTH, Pete
we have encountered the similar problem, currently we are trying to send GL_DEPTH_STENCIL_ATTACHMENT to glInvalidateFramebuffer, and this works fine on other devices except for the huawei mate 20. on huawei mate 20 an gles error will be throwed out.
This sounds like a different problem. Please raise a new forum post with details, and a reproducer and we can investigate, Thanks, Pete
Thank you very much, I'll await more info.
Was the bug fixed?