I've recently discovered shader sampling bug on r12p1 on S7 series. Looks visually similar to what we previously had on r7p0.
Reproducing issue
Scenario 1.
Dolphin emulator:
http://dl.dolphin-emu.org/builds/dolphin-master-5.0-600.apk
Homebrew demo:
Neo Tanks - WiiBrew
Unzip downloaded archive, in Dolphin set path to unpacked folder and choose boot.dol, swipe right to a folder icon, run boot.dol.
Screenshots:
r12p1: https://s13.postimg.io/7ca1duydz/download_20160914_002047.png
v145: https://s17.postimg.io/77mtbf2gv/download_20160914_002058.png
Scenario 2:
Seascape Benchmark - Android Apps on Google Play (totally black screen)
r12p1: https://s15.postimg.io/k1glc3ycb/Screenshot_20160913_234123.png
v145: https://s21.postimg.io/i1ire4gvb/download_20160914_004921.png
Scenario 3:
REV Vehicle Demo - Android Apps on Google Play
(Missing shaders)
r12p1: https://s11.postimg.io/jbivi1n9f/download_20160914_002118.png
https://s17.postimg.io/chb8p9rin/download_20160914_002120.png
v145: https://s17.postimg.io/xawj9qvzz/download_20160914_002111.png
https://s10.postimg.io/fejl93v49/download_20160914_002114.png
Thanks for the bug report - I'll raise this with the driver team.
Cheers, Pete
Based on our investigation looking at the Seascape demo, this looks like an application bug which is being tripped up because more recent drivers are stricter at catching and reporting error conditions due to a significant tightening in test coverage in the OpenGL ES 3.2 conformance tests.
Khronos recently confirmed that non-constant global initializers are prohibited in the core ESSL spec, so for example in the Seascape shader the following statement is not allowed in global scope:
uniform float time; const float SEA_SPEED = 0.4; float SEA_TIME = time * SEA_SPEED; # This requires a uniform, so is not a constant initializer
Stricter conformance tests for OpenGL ES 3.2 means that we expect recent drivers from multiple vendors to start throwing a compile time error on this one, so you will be getting an error reported by glCompileShader for this one which looks like:
E/ ( 1648): MALI ERROR: Could not compile shader 62: E/ ( 1648): 0:40: S0012: Global variable initializer must be a constant expression
There is a new extension published which allow a shader to explicitly re-enable constant initializers which will be shipping in one of our next driver releases, but it's not present in r12p1.
Kind regards, Pete
Dolphin got tripped up by that error when someone was first testing Mali's ES 3.0 driver, he fixed the issues a long time ago:
Fix Mali-T604 shader compilation · dolphin-emu/dolphin@e0a5f78 · GitHub
Have they looked at scenario 1? It is most definitely a different issue for Dolphin
Updated with a link
The issue with the REV Vehicle Demo seems to be that the application seems to be assuming that the extension GL_AMD_compressed_ATC_texture is available; it's not on Mali which means some texture samplers are just returning the OpenGL ES standard error color (black, with fully transparent alpha channel).
I doubt this one is a regression; it would never have worked on Mali as we have never supported this texture format.
Hi. Thanks for bug report. Can you try this new version?
Seascape Benchmark - Android Apps on Google Play
I'm currently testing OpenGL ES 3.2 v1.r12p1-03dev0.cdba6cdc48f1c2d36952923a6bbafbbf
Noticed regressions.
1. WoT Blitz now having issues with shaders on this revision (no issues on previous revision
*see triangles, stripes
https://s14.postimg.org/5mee4mm4x/Screenshot_20161111_230505.png
https://s18.postimg.org/864vqmtvd/Screenshot_20161111_230436.png
https://s22.postimg.org/4ixb4mscx/Screenshot_20161111_230740.png
2. Dolphin is still badly broken (fine on Adreno/Nvidia)
https://s21.postimg.org/53vpxqpt3/Screenshot_20161112_003520.png
https://s18.postimg.org/8ku3px7op/Screenshot_20161112_001838.png
3. Vainglory Vulkan beta is pitch black now (no issues on previous revision)
https://s15.postimg.org/5usq321ff/Screenshot_20161110_214622.png
https://s14.postimg.org/sqlc4aklb/Screenshot_20161110_214739.png
Should be fairly easy to replicate, though for Dolphin I suggest NeoTanks open-source homebrew