I'm trying to implement different image processing algorithms like grayscaling, filtering, quantizing etc. on Android smartphones. I've got the camera preview rendered to a quadas an external texture, it works fine with grayscaling in fragment shader. But when I try to do the same in OpenGL ES 3.1 with compute shaders, I get invalid operation error,when calling glBindImageTexture(...) before dispatch compute. According to https://www.khronos.org/registry/gles/extensions/OES/OES_EGL_image_external_essl3.txt
if I bind an external texture like GL_TEXTURE_EXTERNAL_OES and bind it with glBindImageTexture, I should be able to access the image via image2D sampler in GLSL.What am I doing wrong?
unfortunately you only gave us the "other" vendor's driver version, so I can't tell you whether your Mali device should support the requested behaviour (or won't).
The Mali graphics driver will allow binding of external targets via BindImageTexture if (and only if) the OES_EGL_image_external_essl3 extension is exposed, but not before as the driver will follow the GLES core spec (which does not allow it).
Support for OES_EGL_image_external_essl3 has been added with the r11p0 release.