I'm working on an Android app using the Android SDK + OpenGL ES 3.2. A compute shader (for IBL computation) of mine causes a crash with the following report:
W/Adreno-GSL: <gsl_ldd_control:553>: ioctl fd 84 code 0xc040094a (IOCTL_KGSL_GPU_COMMAND) failed: errno 35 Resource deadlock would occurW/Adreno-GSL: <log_gpu_snapshot:462>: panel.gpuSnapshotPath is not set.not generating user snapshot...
Another thing I've noticed is that if, for example, I add a `glFinish()` call at the end of my render loop, the app won't crash but it'll be unresponsive and all I get is a white screen. Additionally, on top of the above error messages this one pops up:
W/Adreno-GSL: <gsl_ldd_control:553>: ioctl fd 85 code 0xc0200933 (IOCTL_KGSL_TIMESTAMP_EVENT) failed: errno 22 Invalid argumentW/Adreno-GSL: <ioctl_kgsl_syncobj_create:4451>: (56, f, 25536) fail 22 Invalid argument
for(float phi = 0.0; phi < TWO_PI; phi += deltaPhi) { for(float theta = 0.0; theta < HALF_PI; theta += deltaTheta) { vec3 tempVec = cos(phi) * right + sin(phi) * up; vec3 sampleVec = cos(theta) * normal + sin(theta) * tempVec; irradiance += textureLod(u_environmentMap, sampleVec, 0.0).rgb * cos(theta) * sin(theta); sampleCount++; } }
val size = irradianceMapSize glGenTextures(1, irradianceMap, 0) glBindTexture(GL_TEXTURE_CUBE_MAP, irradianceMap[0]) glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE) glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE) glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE) glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR) glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR) glTexStorage2D(GL_TEXTURE_CUBE_MAP, 1, GL_RGBA16F, size, size) glBindImageTexture(1, irradianceMap[0], 0, true, 0, GL_WRITE_ONLY, GL_RGBA16F) // Dispatch compute glUseProgram(irradianceShaderProgram) val imageSizeLoc = glGetUniformLocation(irradianceShaderProgram, "u_imageSize") glUniform1f(imageSizeLoc, size.toFloat()) glActiveTexture(GL_TEXTURE0 + 0) glBindTexture(GL_TEXTURE_CUBE_MAP, environmentMap[0]) glDispatchCompute(size / 4, size / 4, 1) glMemoryBarrier(GL_SHADER_IMAGE_ACCESS_BARRIER_BIT)
#version 320 es layout (local_size_x = 4, local_size_y = 4, local_size_z = 6) in; layout (rgba16f, binding = 1) writeonly uniform highp image2DArray u_target; void main() { imageStore(u_target, ivec3(gl_GlobalInvocationID.xyz), vec4(1.0, 0.0, 0.0, 1.0));
val size = environmentMapSize val maxMipLevel = log2(size.toFloat()).toInt() glGenTextures(1, environmentMap, 0) glBindTexture(GL_TEXTURE_CUBE_MAP, environmentMap[0]) glTexStorage2D(GL_TEXTURE_CUBE_MAP, maxMipLevel + 1, GL_RGBA16F, size, size) glBindImageTexture(1, environmentMap[0], 0, true, 0, GL_WRITE_ONLY, GL_RGBA16F) glUseProgram(toCubemapShaderProgram) glDispatchCompute(size / 4, size / 4, 1) glMemoryBarrier(GL_SHADER_IMAGE_ACCESS_BARRIER_BIT) glGenerateMipmap(GL_TEXTURE_CUBE_MAP)
Result Mali:
Result Adreno:
Edit: it seems images won't be shown unfortunately