Hello Mali driver devs,
It appears the GLSL 3.0 compiler doesn't support GL_OES_EGL_image_external extension, required by Android 3.0+ for use with SurfaceTexture. Recompilation for #version 100 instead of #version 300 es resolves the issue. GL_OES_EGL_image_external is present in the extension strings.
02-18 14:26:50.087: I/jbe(26539): Shader compile log:
02-18 14:26:50.087: I/jbe(26539): 0:32: P0003: Extension 'GL_OES_EGL_image_external' not supported
02-18 14:26:50.087: I/jbe(26539): 0:33: L0001: Typename expected, found 'samplerExternalOES'
Best regards,
Stephane
Hi Stephane,
After a discussion in the driver team today we've come to the conclusion that technically this is not a bug, but we agree it's a bit of an oddity which we'd like to fix.
Rationale:
While the OpenGL ES3 API is backwards compatible with the OpenGL ES2 API, and it supports both GLSL 1.0 and 3.0, GLSL 3.0 isn't defined to be backwards compatible with GLSL 1.0.
As it stands today the GL_OES_EGL_image_external extension does not currently specify interactions with ESSL3. We are working with Khronos to amend the extension. In the meantime, you have the right workaround - we recommend using ESSL1 for this use case for the time being.
Cheers,
Pete
Hi Pete,
Makes sense. Indeed ES3 is not meant to be backwards compatible with ES2/1.1 extensions.
Easy workaround for most, so no problem. Only caveat is that the resulting fragment shader compiled under #version 100 can only be linked with a vertex shader of the same GLSL #version.
Best,
Hi peterharris,
How is it going with this extension now on OpenGLES 3?
It's still not supported or it's fixed?
Thanks!
Dominik
The extension spec is now published:
https://www.khronos.org/registry/gles/extensions/OES/OES_EGL_image_external_essl3.txt
However, it's not yet supported in any of our public drivers, and I can't comment on future product features or schedule publicly.
HTH, Pete
Hi @Peter Harris,
Thank you for the information! I will check it.
/Dominik