I have a Nexus 10 with Android 5.0 and I'm getting this "error" when compiling the attached shaders :
12-09 04:33:35.369: I/com.re3.benchmark(5159): L0001 The fragment shader uniform structure Light0 does not match the vertex shader uniform structure Light0.
12-09 04:33:35.369: I/com.re3.benchmark(5159): The precision does not match.
I'm basically declaring a structure in the VS that I'm not using, and I think the compiler optimizes the components out, compares with the one that's used in the FS and then realizes they don't match, but instead it says the precision doesn't match. As you can see my FS is highp and putting highp manually in the VS doesn't change the error returned. I've also encountered a second error with a shader that declares just a uniform in the VS but is only used in the FS.
This shouldn't be an error obviously, and an ETA on a fix would be nice.
Can you try and come up with a smaller test case? What makes you think that Mali is at fault here?
Cheers, Pete
Well, simply because if I run the same shaders on a Desktop or a GLES3 iPad it "just works". Even Qualcomm has an issue with rendering without attributes/vertex buffers, so I can't name a mobile GPU that actually works as of now. Maybe some Androids with PowerVR and GLES3 level GPUs would but I haven't gotten one yet to test. I can make an APK with just the tessellation draw call though.
Thanks - the additional context is useful.
If possible could you upload a couple of screenshots of the same frame looking correct on desktop, and looking bad on Mali? It's quite difficult to debug without some visual clue of what it is supposed to look like =)
Ok, so after isolating the instanced tesselation shader I can say for certain that Instanced Tesselation, attributeless and instanced rendering works perfectly on the Mali T604 (at least) which is really good news !
However, it seems that my refraction and reflection effects are doing something to the GPU. I've now disabled tesselation, just enabled reflections which renders everything twice ( in the second pass it uses the image generated in the first pass ) and while some objects disappear ( they have discard in the PS, but only in the first pass, not the second one which uses different shaders without discard ), after about ~30 seconds I'm getting GL_OUT_OF_MEMORY errors. Here's the updated build : RE3 Benchmark_Refl_Out_Of_Memory.apk - Google Drive .
I don't update buffers or textures so I'm not creating new objects, and a Task Manager app says I'm only using ~75 MB of memory so I kind of doubt it's really out of memory.
I'm just looking deeper into this.
You're right that it may not to be an actual memory shortage, there are a limited number of GLES error codes and so "out of memory" could point to something else without a specific error code, but at this stage I don't want to write off any possibility.
-Stacy