Some Webgl content does not work in the browser on devices with Exynos CPU when upgraded to just released Android 12. This only happens when WebGl2 API is used in this specific project, WebGl1 implementation works. This project also works on these devices when Android 11 is used. This not only reproduces when using Samsung Internet, but also Chrome.
Reproducible project: Samsung S10E crash - PLAYCANVAS
Tested on: S10E G970F/DS
The project is built using Playcanvas engine, see the specific issue here: Rendering Issue with Samsung Exynos CPU on Android 12 · Issue #3967 · playcanvas/engine · GitHub
see the error logs there. But in general, shaders fail to compile, in some cases even the most simple one:
launch.js:15178 Failed to compile vertex shader:
1: #version 300 es
2: #define attribute in
3: #define varying out
4: #define texture2D texture
5: #define GL2
6: #define VERTEXSHADER
7: attribute vec2 vertex_position;
8:
9: varying vec2 vUv0;
10:
11: void main(void)
12: {
13: gl_Position = vec4(vertex_position, 0.5, 1.0);
14: vUv0 = vertex_position.xy*0.5+0.5;
15: }
16:
There is no shader compile error given, but I do not believe it’s the actual shader compilation failing but something else.
After few of these shaders fail to compile, it seems that WebGl context is lost, and never restored … and so the application does not run.
WebGL: CONTEXT_LOST_WEBGL: loseContext: context lost
Note that it’s problem with WebGl2 implementation on these devices (driver issue possibly?), and the application itself works on any other devices than the specific group os Samsung devices mentioned.