Overview

Hardware kbl_iris
Architecture m64
Status fail
Filtered Status fail
Time 0.034221

See also historical results for this test.

stdout

Compute Shader resources - Images
Verify that reading/writing GPU memory via image variables work as expected.
1. Create CS which uses two image2D variables to read and write underlying GPU memory.
2. Dispatch CS with DispatchCompute and DispatchComputeIndirect commands.
3. Verify memory content.
4. Repeat for different texture and CS work sizes.
Everything works as expected.
glCreateProgram();
// 4182 returned
glCreateShader(GL_VERTEX_SHADER);
// 4183 returned
glAttachShader(4182, 4183);
glDeleteShader(4183);
glShaderSource(4183, 2, 0x00007ffe47bd3d40, 0x0000000000000000);
glCompileShader(4183);
glCreateShader(GL_FRAGMENT_SHADER);
// 4184 returned
glAttachShader(4182, 4184);
glDeleteShader(4184);
glShaderSource(4184, 2, 0x00007ffe47bd3d30, 0x0000000000000000);
glCompileShader(4184);
glLinkProgram(4182);
glGetProgramiv(4182, GL_LINK_STATUS, 0x00007ffe47bd2df4);
// params = { 1 }
glUseProgram(4182);
glGetUniformLocation(4182, g_image1);
// 0 returned
glUniform1i(0, 0);
glGetUniformLocation(4182, g_image2);
// 1 returned
glUniform1i(1, 1);
glUseProgram(0);
glGenVertexArrays(1, 0x000055833a36180c);
// arrays = { 1004 }
glCreateProgram();
// 4185 returned
glCreateShader(GL_COMPUTE_SHADER);
// 4186 returned
glAttachShader(4185, 4186);
glDeleteShader(4186);
glShaderSource(4186, 2, 0x00007ffe47bd3a80, 0x0000000000000000);
glCompileShader(4186);
glLinkProgram(4185);
glGetProgramiv(4185, GL_LINK_STATUS, 0x00007ffe47bd2b34);
// params = { 1 }
glUseProgram(4185);
glGetUniformLocation(4185, g_image1);
// 0 returned
glUniform1i(0, 0);
glGetUniformLocation(4185, g_image2);
// 1 returned
glUniform1i(1, 1);
glUseProgram(0);
glGenTextures(2, 0x000055833a361800);
// textures = { 1453, 1454 }
glBindTexture(GL_TEXTURE_2D, 1453);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, 64, 64, 0, GL_RGBA, GL_FLOAT, 0x55833a733ef0);
glBindTexture(GL_TEXTURE_2D, 1454);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, 64, 64, 0, GL_RGBA, GL_FLOAT, 0x55833a733ef0);
glBindTexture(GL_TEXTURE_2D, 0);
glBindImageTexture(0, 1453, 0, GL_FALSE, 0, GL_READ_WRITE, GL_RGBA32F);
glBindImageTexture(1, 1454, 0, GL_FALSE, 0, GL_WRITE_ONLY, GL_RGBA32F);
glUseProgram(4185);
glGenBuffers(1, 0x000055833a361808);
// buffers = { 2351 }
glBindBuffer(GL_DISPATCH_INDIRECT_BUFFER, 2351);
glBufferData(GL_DISPATCH_INDIRECT_BUFFER, 12, 0x7ffe47bd3f60, GL_STATIC_DRAW);
glDispatchComputeIndirect(0);
glMemoryBarrier(GL_SHADER_IMAGE_ACCESS_BARRIER_BIT);
glClear(GL_COLOR_BUFFER_BIT);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, 1453);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, 1454);
glUseProgram(4182);
glBindVertexArray(1004);
glViewport(0, 0, 64, 64);
glDrawArraysInstanced(GL_TRIANGLE_STRIP, 0, 4, 1);
glReadPixels(0, 0, 64, 64, GL_RGBA, GL_FLOAT, 0x55833af17290);
Got 0, 0, 0, 1, expected 0, 0, 0, 0 at 0, 0
Test Run() failed
glUseProgram(0);
glDeleteProgram(4185);
glDeleteProgram(4182);
glDeleteVertexArrays(1, { 1004 });
glDeleteTextures(2, { 1453, 1454 });
glDeleteBuffers(1, { 2351 });
glViewport(0, 0, 400, 300);

stderr

pid: 17531