moe moe - 15 days ago 5
Android Question

Compile-time failure when reading texels from samplerExternalOES

Minimal failing fragment shader:

#version 320 es
#extension GL_OES_EGL_image_external_essl3 : require

precision highp float;
precision highp int;

vec4 x(samplerExternalOES sampler) {
return texture(sampler, vec2(0, 0));
}

void main() {
}


On a Samsung G-930P, with OpenGL ES 3.2 V@145.0 (GIT@I5bc0f577f9), this fails to compile, with the shader log reading:


Internal compiler error: Error: array indexing out of boundary


On a Samsung G-930F - essentially the same phone, same Android version, etc. however with OpenGL ES 3.2 v1.r12p1-00dev0.60546d7cd0bfd82d0ba92ca3bb825c75, it compiles - and the latter device can correctly execute more complex shaders which read texels from
samplerExternalOES
.

Is this a bug in the OpenGL ES implementation on the G-930P? Is this an unreasonable way to specify the parameters of a function which wants to call
texture
on a
samplerExternalOES
?

Answer

Is this a bug in the OpenGL ES implementation on the G-930P?

It sure looks like it ...

On a Samsung G-930F - essentially the same phone, same Android version, etc. however with OpenGL ES 3.2 v1.r12p1-00dev0.60546d7cd0bfd82d0ba92ca3bb825c75,

It's not the same if you look inside the phone.

The first phone (with version V@145.0) is based on a Qualcomm Snapdradon which uses an Adreno GPU, the second (12p1) is based on Samsung Exynos which uses a Mali GPU.

To me it looks like this is bug in the Adreno device driver, and Mali's driver is handling it correctly.

Comments