Unexpected "OpenGL ES 3.0 (WebGL 1.0)" reported by glGetString(GL_VERSION) · Issue #13295 · emscripten-core/emscripten (original) (raw)

I have observed a strange behavior of a sample 3D viewer application on Safari 14 (on both macOS and iOS) and Chrome (iOS 12.5.1).
glGetString(GL_VERSION) in application returns "OpenGL ES 3.0 (WebGL 1.0)" which makes no sense to me.

Application is build with -s USE_WEBGL2=1 option, which in my understanding should report OpenGL ES 2.0 when browser creates WebGL 1.0 context and OpenGL ES 3.0 for WebGL 2.0. And this is how it actually works on desktop browsers (like disabling webgl.enable-webgl2 in Firefox browser), but for some reason - not on iPad.

First, I would like to understand if it is a bug or expected behavior. In latter case - I would appreciate some details what does it mean, as created "OpenGL ES 3.0 (WebGL 1.0)" is certainly broken. I have also tried to enable WebGL 2.0 in iPad experimental features, which bring "OpenGL ES 3.0 (WebGL 2.0)" with proper GLSL compiler, but has been broken in other GLES 3.0 aspects - but this is kind of expected, as it is "experimental". What I don't expect is "OpenGL ES 3.0 (WebGL 1.0)" thing - as far as I understand, this string is generated by Emscripten, so it couldn't be a Browser bug...

By the way, I have suddenly found that -s USE_WEBGL2=1 is no more listed in recent documentation. I see there is -s MAX_WEBGL_VERSION=2 now, but cannot find when this has been changed and if there is a difference between old/new flags.
So far I've tried Emscripten 2.0.11.

image