[BUG] [GLSL] [iPhone SE] Empty if statement in shader gives incorrect image

The fragment shader files, screenshots, reproduction steps and platform info are available here:
https://github.com/mc-imperial/shader-compiler-bugs/issues/36

Adding an empty if statement and a few other changes (that should have zero impact) causes the given GLSL fragment shader to be compiled incorrectly. This results in a very different image to what is expected. See the screenshots. Even removing just the empty if statement causes the issue to disappear.

The bug can be triggered from Safari via WebGL.

Hi Paul,

Firstly thank you for bringing these issues to our attention, we have tested the shader code you provided on an android device running on PowerVR, however we could not reproduce the issue here, it seems like these bugs are specific to iOS devices and therefore only Apple will be able to fix the issues you have raised.

Kind Regards,
Shaun

Hi Shaun

Thanks for the reply. Does this mean the GPU drivers are written by Apple?

Can you advise of an Android device that we should use to test some of your latest GPU drivers?

Thanks
Paul

Hi Paul,

Yes that is correct Apple develop their own device drivers.

At present we can recommend three platforms for developers looking to test and/or deploy applications on PowerVR;

  1. Asus Zenpad 3S 10 (https://www.asus.com/uk/Tablets/ASUS-ZenPad-3S-10-Z500M/specifications/)

  2. Optimus A80 (http://www.merrii.com/en/pla_d.asp?id=173) – the A80 platform also has a strong open source community behind it, which can be found here: http://linux-sunxi.org/sunxi:Community_portal

  3. Google Nexus Player – If you are interested in testing Vulkan applications for Android we can supply a new image for the device which contains our Vulkan drivers, you can submit a request through our support portal which can be found here: https://pvrsupport.imgtec.com/.

We realise this list is quite limited; however many new devices will start to appear on the market early next year.

Kind Regards,
Shaun

Thanks that is useful!

We want to be able to report bugs for non-obsolete hardware/drivers such that the bugs may get fixed and so we can get the latest driver updates.

I see the Optimus A80 has a GPU from 2012 and it has both Linux (but the wiki says no linux-sunxi support) and Android, but only Android 4.4. Is that right? Do you provide the GPU drivers? Are the drivers similar for both Android and Linux? Will these drivers get updated or do you think it would be better to consider the Asus Zenpad (or maybe the Nexus player), given our requirements?

Hi Paul,

The Optimus A80 is not officially supported by Allwinner for Linux-sunxi; however there are some community members which occasionally update the drivers for audio, network etc (this link may be useful - http://linux-sunxi.org/A80#Sunxi_Community). Also you are correct in saying that the Optimus supports Android only up to KitKat (4.4).

In regards to your question about driver similarity between Android and Linux, they are indeed very similar in terms of core functionality, of course there are some differences with regards to interface and memory management.

If you are after the latest possible device with the latest drivers, that is also available on the market right now then the Asus Zenpad would be your best bet.

However I wouldn’t worry too much about the age of the devices, the drivers available on the Optimus A80 and Nexus Player will be pretty robust and if you do find any bugs with any platform with PowerVR you can let us know through the forum or drop us a ticket in the support portal (https://pvrsupport.imgtec.com/), we will try to replicate the problem and verify if the issue still exists in the latest version of our drivers.

We greatly appreciate any feedback you can give us, hope this helps.

Kind Regards,
Shaun