This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

GL_OES_EGL_image_external_essl3 in compute shader get error

I am trying to do some image processing on decoded video frame in Android.

When I use GL_OES_EGL_image_external_essl3 extension in OpenGL Compute Shader to read the OES texture, some Android phones will give an error.

However, using the same extension in Fragment Shader is fine.

My Compute Shader Code:

#version 310 es
#extensionGL_OES_EGL_image_external_essl3:require
layout (location = 0) uniform mediump samplerExternalOES in_rgba; // oes
layout (rgba8, binding = 1) writeonly uniform mediump image2D out_rgba;
layout (location = 2) uniform highp vec2 in_y_size_rev;
layout(local_size_x=8,local_size_y=8,local_size_z=1) in;
void main() {
    precision highp int;
    precision highp float;
    ivec2 pos = ivec2(gl_GlobalInvocationID.xy);
    vec2 pos_norm = (vec2(pos) + 0.5f) * in_y_size_rev;
    vec4 rgba = texture(in_rgba, pos_norm); imageStore(out_rgba, pos, rgba);
}

My Host Code:

……
glDispatchCompute(num_groups_x,num_groups_y,1);
GLenum error = glGetError(); // GL_NO_ERROR
glFinish();
error = glGetError(); // !!!!!!GL_OUT_OF_MEMOR: 0x505 !!!!!!!

The GLES information of devices on which I can reproduce the error.   (By the way, all Adreno GPUs I tested works fine)

1. GLES: ARM, Mali-G76, OpenGL ES 3.2 v1.r18p0-01rel0.eb0c31071d41ebd807505c2a08a74d99

2. GLES: ARM, Mali-G76, OpenGL ES 3.2 v1.r18p0-01rel0.e098644a2658b0905d91d87153032847

3. GLES: ARM, Mali-G76, OpenGL ES 3.2 v1.r18p0-01rel0.4bdf67f8773978c3cc51394b4d92fc05

4. GLES: ARM, Mali-G76 MC4, OpenGL ES 3.2 v1.r20p0-01rel0.a41d1d553047de7edc8f79dbe3e575cd

5. GLES: ARM, Mali-G52 MC2, OpenGL ES 3.2 v1.r20p0-01rel0.3c1c24cb7710121ad59f6bdaee909f9f

  • Just to confirm, do you know if it works on more recent Mali devices? Do you know specifically which chipsets are failing (video formats depend on chipset manufacturer)?

    Do you know what image format are you actually trying to read?

    Cheers, 
    Pete