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
?
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.