Bug 104153 - [OpenGL CTS] [SKL] KHR-GL46.compute_shader.resource-texture sometimes fails in full run
Summary: [OpenGL CTS] [SKL] KHR-GL46.compute_shader.resource-texture sometimes fails i...
Status: NEW
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/DRI/i965 (show other bugs)
Version: git
Hardware: Other All
: medium normal
Assignee: Intel 3D Bugs Mailing List
QA Contact: Intel 3D Bugs Mailing List
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 102590
  Show dependency treegraph
 
Reported: 2017-12-07 07:53 UTC by Kenneth Graunke
Modified: 2018-05-04 08:29 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Kenneth Graunke 2017-12-07 07:53:45 UTC
KHR-GL46.compute_shader.resource-texture appears to fail in some configs on Skylake GT4 when run via cts-runner --type=gl46.  So far I haven't been able to reproduce this when running a subset of the tests, even with the same config options.
Comment 1 Kenneth Graunke 2017-12-13 04:26:26 UTC
I did see this failure in a CI run today, so it is possible to reproduce it without a full run.  Not quite sure how yet.
Comment 2 Ian Romanick 2017-12-15 02:01:17 UTC
Is there any output from the failing runs?  The test uses indirect dispatch and memory barriers.  There are plenty of opportunities for timing related issues.
Comment 3 Mark Janes 2017-12-15 18:05:31 UTC
KHR-GL46.compute_shader.resource-texture.kblm64 (from KHR-GL46)
Failing for the past 1 build (Since Failed#11521 )
Took 0.13 sec.
Standard Output

Compute Shader resources - Textures
Verify that texture access works correctly in CS.
1. Create CS which uses all sampler types (sampler1D, sampler2D, sampler3D, sampler2DRect,
    sampler1DArray, sampler2DArray, samplerBuffer, sampler2DMS, sampler2DMSArray).
2. Dispatch CS with DispatchCompute and DispatchComputeIndirect commands.
3. Sample each texture and write sampled value to SSBO.
4. Verify SSBO content.
5. Repeat for different texture and CS work sizes.
Everything works as expected.
glCreateProgram();
// 2791 returned
glCreateShader(GL_COMPUTE_SHADER);
// 2792 returned
glAttachShader(2791, 2792);
glDeleteShader(2792);
glShaderSource(2792, 2, 0x00007ffd0d4be1a0, 0x0000000000000000);
glCompileShader(2792);
glLinkProgram(2791);
glGetProgramiv(2791, GL_LINK_STATUS, 0x00007ffd0d4bd264);
// params = { 1 }
glUseProgram(2791);
glGetUniformLocation(2791, g_sampler0);
// 0 returned
glUniform1i(0, 0);
glGetUniformLocation(2791, g_sampler1);
// 1 returned
glUniform1i(1, 1);
glGetUniformLocation(2791, g_sampler2);
// 2 returned
glUniform1i(2, 2);
glGetUniformLocation(2791, g_sampler3);
// 3 returned
glUniform1i(3, 3);
glGetUniformLocation(2791, g_sampler4);
// 4 returned
glUniform1i(4, 4);
glGetUniformLocation(2791, g_sampler5);
// 5 returned
glUniform1i(5, 5);
glGetUniformLocation(2791, g_sampler6);
// 6 returned
glUniform1i(6, 6);
glGetUniformLocation(2791, g_sampler7);
// 7 returned
glUniform1i(7, 7);
glGetUniformLocation(2791, g_sampler8);
// 8 returned
glUniform1i(8, 8);
glUseProgram(0);
glGenBuffers(1, 0x000055cc8d6eab1c);
// buffers = { 1215 }
glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 0, 1215);
glBufferData(GL_SHADER_STORAGE_BUFFER, 73728, 0x55cc8c221c90, GL_DYNAMIC_DRAW);
glBindBuffer(GL_SHADER_STORAGE_BUFFER, 0);
glGenTextures(9, 0x000055cc8d6eab20);
// textures = { 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163 }
glGenBuffers(1, 0x000055cc8d6eab44);
// buffers = { 1216 }
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_1D, 1155);
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexImage1D(GL_TEXTURE_1D, 0, GL_RGBA32F, 32, 0, GL_RGBA, GL_FLOAT, 0x55cc8c74f9c0);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, 1156);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, 32, 4, 0, GL_RGBA, GL_FLOAT, 0x55cc8c74f9c0);
glActiveTexture(GL_TEXTURE2);
glBindTexture(GL_TEXTURE_3D, 1157);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA32F, 32, 4, 4, 0, GL_RGBA, GL_FLOAT, 0x55cc8c74f9c0);
glActiveTexture(GL_TEXTURE3);
glBindTexture(0x84f5, 1158);
glTexParameteri(0x84f5, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(0x84f5, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexImage2D(0x84f5, 0, GL_RGBA32F, 32, 4, 0, GL_RGBA, GL_FLOAT, 0x55cc8c74f9c0);
glActiveTexture(GL_TEXTURE4);
glBindTexture(0x8c18, 1159);
glTexParameteri(0x8c18, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(0x8c18, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexImage2D(0x8c18, 0, GL_RGBA32F, 32, 4, 0, GL_RGBA, GL_FLOAT, 0x55cc8c74f9c0);
glActiveTexture(GL_TEXTURE5);
glBindTexture(GL_TEXTURE_2D_ARRAY, 1160);
glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA32F, 32, 4, 4, 0, GL_RGBA, GL_FLOAT, 0x55cc8c74f9c0);
glActiveTexture(GL_TEXTURE6);
glBindBuffer(GL_TEXTURE_BUFFER, 1216);
glBufferData(GL_TEXTURE_BUFFER, 8192, 0x55cc8c74f9c0, GL_DYNAMIC_DRAW);
glBindBuffer(GL_TEXTURE_BUFFER, 0);
glBindTexture(GL_TEXTURE_BUFFER, 1161);
glTexBuffer(GL_TEXTURE_BUFFER, GL_RGBA32F, 1216);
glActiveTexture(GL_TEXTURE7);
glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, 1162);
glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, 4, GL_RGBA32F, 32, 4, GL_FALSE);
glActiveTexture(GL_TEXTURE8);
glBindTexture(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, 1163);
glTexImage3DMultisample(0x00009102, 4, 0x00008814, 32, 4, 4, GL_FALSE);
glGenFramebuffers(1, 0x00007ffd0d4be21c);
// framebuffers = { 209 }
glBindFramebuffer(GL_FRAMEBUFFER, 209);
glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, 1162, 0);
glClearBufferfv(GL_COLOR, 0, 0x00007ffd0d4be2c0);
glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, 1163, 0);
glClearBufferfv(GL_COLOR, 0, 0x00007ffd0d4be2d0);
glDeleteFramebuffers(1, { 209 });
glUseProgram(2791);
glDispatchCompute(8, 1, 1);
glBindBuffer(GL_SHADER_STORAGE_BUFFER, 1215);
glMemoryBarrier(GL_BUFFER_UPDATE_BARRIER_BIT);
glGetBufferSubData(0x000090d2, 0, 73728, 0x55cc8c221c90);
glDeleteProgram(2791);
glCreateProgram();
// 2793 returned
glCreateShader(GL_COMPUTE_SHADER);
// 2794 returned
glAttachShader(2793, 2794);
glDeleteShader(2794);
glShaderSource(2794, 2, 0x00007ffd0d4be1a0, 0x0000000000000000);
glCompileShader(2794);
glLinkProgram(2793);
glGetProgramiv(2793, GL_LINK_STATUS, 0x00007ffd0d4bd264);
// params = { 1 }
glUseProgram(2793);
glGetUniformLocation(2793, g_sampler0);
// 0 returned
glUniform1i(0, 0);
glGetUniformLocation(2793, g_sampler1);
// 1 returned
glUniform1i(1, 1);
glGetUniformLocation(2793, g_sampler2);
// 2 returned
glUniform1i(2, 2);
glGetUniformLocation(2793, g_sampler3);
// 3 returned
glUniform1i(3, 3);
glGetUniformLocation(2793, g_sampler4);
// 4 returned
glUniform1i(4, 4);
glGetUniformLocation(2793, g_sampler5);
// 5 returned
glUniform1i(5, 5);
glGetUniformLocation(2793, g_sampler6);
// 6 returned
glUniform1i(6, 6);
glGetUniformLocation(2793, g_sampler7);
// 7 returned
glUniform1i(7, 7);
glGetUniformLocation(2793, g_sampler8);
// 8 returned
glUniform1i(8, 8);
glUseProgram(0);
glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 0, 1215);
glBufferData(GL_SHADER_STORAGE_BUFFER, 18432, 0x55cc8c5529e0, GL_DYNAMIC_DRAW);
glBindBuffer(GL_SHADER_STORAGE_BUFFER, 0);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_1D, 1155);
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexImage1D(GL_TEXTURE_1D, 0, GL_RGBA32F, 4, 0, GL_RGBA, GL_FLOAT, 0x55cc8d6d2340);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, 1156);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, 4, 16, 0, GL_RGBA, GL_FLOAT, 0x55cc8d6d2340);
glActiveTexture(GL_TEXTURE2);
glBindTexture(GL_TEXTURE_3D, 1157);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA32F, 4, 16, 2, 0, GL_RGBA, GL_FLOAT, 0x55cc8d6d2340);
glActiveTexture(GL_TEXTURE3);
glBindTexture(0x84f5, 1158);
glTexParameteri(0x84f5, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(0x84f5, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexImage2D(0x84f5, 0, GL_RGBA32F, 4, 16, 0, GL_RGBA, GL_FLOAT, 0x55cc8d6d2340);
glActiveTexture(GL_TEXTURE4);
glBindTexture(0x8c18, 1159);
glTexParameteri(0x8c18, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(0x8c18, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexImage2D(0x8c18, 0, GL_RGBA32F, 4, 16, 0, GL_RGBA, GL_FLOAT, 0x55cc8d6d2340);
glActiveTexture(GL_TEXTURE5);
glBindTexture(GL_TEXTURE_2D_ARRAY, 1160);
glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA32F, 4, 16, 2, 0, GL_RGBA, GL_FLOAT, 0x55cc8d6d2340);
glActiveTexture(GL_TEXTURE6);
glBindBuffer(GL_TEXTURE_BUFFER, 1216);
glBufferData(GL_TEXTURE_BUFFER, 2048, 0x55cc8d6d2340, GL_DYNAMIC_DRAW);
glBindBuffer(GL_TEXTURE_BUFFER, 0);
glBindTexture(GL_TEXTURE_BUFFER, 1161);
glTexBuffer(GL_TEXTURE_BUFFER, GL_RGBA32F, 1216);
glActiveTexture(GL_TEXTURE7);
glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, 1162);
glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, 4, GL_RGBA32F, 4, 16, GL_FALSE);
glActiveTexture(GL_TEXTURE8);
glBindTexture(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, 1163);
glTexImage3DMultisample(0x00009102, 4, 0x00008814, 4, 16, 2, GL_FALSE);
glGenFramebuffers(1, 0x00007ffd0d4be21c);
// framebuffers = { 210 }
glBindFramebuffer(GL_FRAMEBUFFER, 210);
glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, 1162, 0);
glClearBufferfv(GL_COLOR, 0, 0x00007ffd0d4be2c0);
glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, 1163, 0);
glClearBufferfv(GL_COLOR, 0, 0x00007ffd0d4be2d0);
glDeleteFramebuffers(1, { 210 });
glUseProgram(2793);
glGenBuffers(1, 0x000055cc8d6eab48);
// buffers = { 1217 }
glBindBuffer(GL_DISPATCH_INDIRECT_BUFFER, 1217);
glBufferData(GL_DISPATCH_INDIRECT_BUFFER, 12, 0x7ffd0d4be4f0, GL_STATIC_DRAW);
glDispatchComputeIndirect(0);
glBindBuffer(GL_SHADER_STORAGE_BUFFER, 1215);
glMemoryBarrier(GL_BUFFER_UPDATE_BARRIER_BIT);
glGetBufferSubData(0x000090d2, 0, 18432, 0x55cc8c5529e0);
Incorrect data at index 1028.
Test Run() failed
glActiveTexture(GL_TEXTURE0);
glUseProgram(0);
glDeleteProgram(2793);
glDeleteBuffers(1, { 1215 });
glDeleteTextures(9, { 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163 });
glDeleteBuffers(1, { 1216 });
glDeleteBuffers(1, { 1217 });
Comment 4 Ian Romanick 2017-12-21 19:50:14 UTC
I was not able to reproduce this failure during a full CTS run on a Skylake GT3e NUC.  This problem is likely timing related or possibly related to some software outside Mesa (kernel, X, Wayland, something?).

My system is:

kernel-4.14.6-300.fc27.x86_64
libwayland-server-1.14.0-2.fc27.x86_64
gnome-session-wayland-session-3.26.1-1.fc27.x86_64
libdrm 2.4.89 (commit 831036a6)

Looking at the output from the failure (and since it fails sporadically on the CI), I'm definitely leaning towards timing.  Is glMemoryBarrier(GL_BUFFER_UPDATE_BARRIER_BIT) maybe not doing the right thing?
Comment 5 Andrés Gómez García 2018-05-02 12:32:29 UTC
We do regular runs of the CTS on a Skylake GT3e NUC.

So far, we have not been able to reproduce.

System specs:

linux-image-4.12.0-2-amd64 - SMP Debian 4.12.13-1 (2017-09-19)
libdrm2:amd64 2.4.83-1~16.04.1
xserver-xorg 1:7.7+19
xserver-xorg-core 2:1.19.3-2
xserver-xorg-video-intel 2:2.99.917+git20161206-1


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.