Hello there,
OpenGL ES 3.1 here. If I load my uniforms to the fragment shader the 'old way' , i.e. by declaring an array of uniforms as 'uniform ivec4 properties[10]' and loading them with 'glUniform4iv(...)' then everything works. If I however try to switch to an UBO:
#version 310 es
//...
layout (std140) uniform fProperties
{
ivec4 properties[10];
};
CPU:
propertiesIndex = glGetUniformBlockIndex( programH, "fProperties" );
// declare a Uniform Buffer 'mUB', fill it up with values and load it....
int index = mUB.getIndex();
glBindBufferBase( GL_UNIFORM_BUFFER, 6, index );
glUniformBlockBinding( programH, propertiesIndex, 6);
then everything works on most GPUs, but on Adreno 510 I get
W/Adreno-GSL(30978): <gsl_ldd_control:475>: ioctl fd 26 code 0x400c0907 (IOCTL_KGSL_DEVICE_WAITTIMESTAMP_CTXTID) failed: errno 35 Resource deadlock would occur
W/Adreno-GSL(30978): <log_gpu_snapshot:384>: panel.gpuSnapshotPath is not set.not generating user snapshot
W/Adreno-GSL(30978): <gsl_ldd_control:475>: ioctl fd 26 code 0xc0200933 (IOCTL_KGSL_TIMESTAMP_EVENT) failed: errno 22 Invalid argument
W/Adreno-GSL(30978): <ioctl_kgsl_syncobj_create:2979>: (1b, b, 2112) fail 22 Invalid argument
W/Adreno-GSL(30978): <gsl_ldd_control:475>: ioctl fd 26 code 0xc040094a (IOCTL_KGSL_GPU_COMMAND) failed: errno 35 Resource deadlock would occur
W/Adreno-GSL(30978): <log_gpu_snapshot:384>: panel.gpuSnapshotPath is not set.not generating user snapshot
and my app dies.
I use 3 different UBOs in my vertex shader, creaed and loaded in the very same way like the problematic one, and those 'vertex' UBOs work everywhere, including Adreno 510, so it's looking like the problem only occurs in the fragment shader.
I've been able to replicate this on an Adreno 510, and I also have bug reports from users running my app on devices sporting Adreno 506. I've tried running this on many other (about 20) devices with different GPUs, including some later Adrenos, and it appears to work there with no visible problems.
The GPU driver identifies itself as:
01-12 15:50:12.442 I/FA (30978): Tag Manager is not found and thus will not be used
01-12 15:50:12.447 I/Adreno (30978): QUALCOMM build : a7823f5, I59a6815413
01-12 15:50:12.447 I/Adreno (30978): Build Date : 09/23/16
01-12 15:50:12.447 I/Adreno (30978): OpenGL ES Shader Compiler Version: XE031.07.00.00
01-12 15:50:12.447 I/Adreno (30978): Local Branch : mybranch22028469
01-12 15:50:12.447 I/Adreno (30978): Remote Branch : quic/LA.BR.1.3.3_rb2.26
01-12 15:50:12.447 I/Adreno (30978): Remote Branch : NONE
01-12 15:50:12.447 I/Adreno (30978): Reconstruct Branch : NOTHING