When using a bitwise & operator in an OpenGL ES 3.0 shader, the Adreno shader compiler reports an error if both operands are vectors.
Frament shader:
#version 300 es
out vec4 Output;void main(){ivec3 value = ivec3(1, 2, 3) & ivec3(4, 5, 6);Output = vec4(value, 1.0);}
Creates this error:
ERROR: 0:4: '&' : wrong operand types no operation '&' exists that takes a left-hand operand of type 'const 3-component vector of int' and a right operand of type 'const 3-component vector of int' (or there is no acceptable conversion)
"The operands must be of type signed or unsigned integers or integer vectors. The operands cannot be vectors of differing size. If one operand is a scalar and the other a vector, the scalar is applied component-wise to the vector, resulting in the same type as the vector. "
At first attempt, we're not able to duplicate this bug (nor the others 28110 and 28112)
1) Can you confirm that you're creating an OpenGLES 3 app (and not GLES2)? You might want to refer to our guide "Adreno Developer Guide GLES 3.1" in the Adreno SDK which is available on our developer site: https://developer.qualcomm.com
2) Can you confirm the following value in the manifest is set? glEsVersion = "0x00030000"
3) Do you have an apk that demonstrates this error?
thanks