bugzilla-daemon at freedesktop.org
2017-Jan-25 11:35 UTC
[Nouveau] [Bug 99532] New: Compute shader doesn't give right result under some circumstances
https://bugs.freedesktop.org/show_bug.cgi?id=99532 Bug ID: 99532 Summary: Compute shader doesn't give right result under some circumstances Product: Mesa Version: unspecified Hardware: Other OS: All Status: NEW Severity: normal Priority: medium Component: Drivers/DRI/nouveau Assignee: nouveau at lists.freedesktop.org Reporter: stu_dby at 126.com QA Contact: nouveau at lists.freedesktop.org Created attachment 129135 --> https://bugs.freedesktop.org/attachment.cgi?id=129135&action=edit apitrace of my program When I'm doing a course project in my compute graphics class, I found my program didn't fully work on nouveau while it was working fine on intel and nvidia proprietary drivers. It is a program using deferred shading with some shadow map techniques, and it has an option to draw a "histogram" of depth distribution sampled by a compute shader. I found histogram was showing wrong results (totally blank) on nouveau. After looking into the problem for a while, I happened to find that if I didn't render the histogram (i.e. didn't use compute shader to sample) on the first frame, the histogram would go wrong, otherwise, it would be okay. This problem can be reproduced with the attached apitrace file, recorded with simplified program and trimmed to contain only 4 frames. The first 2 frames are mainly initialization and the third frame renders the scene from one angle without generating histogram. The last frame renders the scene from another angle and generates a histogram at bottom-right edge, which is completely blank on nouveau. However, if the trace is further trimmed to contain frame 0,1,3, the histogram will render correctly. (Results of the two will be attached below) I'm willing provide assistance if needed. -- You are receiving this mail because: You are the QA Contact for the bug. You are the assignee for the bug. -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20170125/5aa824b8/attachment.html>
bugzilla-daemon at freedesktop.org
2017-Jan-25 11:36 UTC
[Nouveau] [Bug 99532] Compute shader doesn't give right result under some circumstances
https://bugs.freedesktop.org/show_bug.cgi?id=99532 --- Comment #1 from Boyan Ding <stu_dby at 126.com> --- Created attachment 129136 --> https://bugs.freedesktop.org/attachment.cgi?id=129136&action=edit Wrong rendering (histogram blank) -- You are receiving this mail because: You are the QA Contact for the bug. You are the assignee for the bug. -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20170125/adc417c0/attachment.html>
bugzilla-daemon at freedesktop.org
2017-Jan-25 11:36 UTC
[Nouveau] [Bug 99532] Compute shader doesn't give right result under some circumstances
https://bugs.freedesktop.org/show_bug.cgi?id=99532 --- Comment #2 from Boyan Ding <stu_dby at 126.com> --- Created attachment 129137 --> https://bugs.freedesktop.org/attachment.cgi?id=129137&action=edit Correct rendering of the last frame -- You are receiving this mail because: You are the assignee for the bug. You are the QA Contact for the bug. -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20170125/509606b8/attachment.html>
bugzilla-daemon at freedesktop.org
2017-Jan-25 13:18 UTC
[Nouveau] [Bug 99532] Compute shader doesn't give right result under some circumstances
https://bugs.freedesktop.org/show_bug.cgi?id=99532 --- Comment #3 from Ilia Mirkin <imirkin at alum.mit.edu> --- On GM107 it actually appears to work correctly. However on GK208 I got a blank histogram on the first run, and then a semi-random one on subsequent runs. (And now it's blank again.) What GPU are you using? -- You are receiving this mail because: You are the QA Contact for the bug. You are the assignee for the bug. -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20170125/f742bf68/attachment.html>
bugzilla-daemon at freedesktop.org
2017-Jan-25 13:24 UTC
[Nouveau] [Bug 99532] Compute shader doesn't give right result under some circumstances
https://bugs.freedesktop.org/show_bug.cgi?id=99532 --- Comment #4 from Boyan Ding <stu_dby at 126.com> --- (In reply to Ilia Mirkin from comment #3)> On GM107 it actually appears to work correctly. However on GK208 I got a > blank histogram on the first run, and then a semi-random one on subsequent > runs. (And now it's blank again.) > > What GPU are you using?Mine is a GT740M (GK208). -- You are receiving this mail because: You are the assignee for the bug. You are the QA Contact for the bug. -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20170125/bda0e0af/attachment.html>
bugzilla-daemon at freedesktop.org
2017-Jan-25 13:38 UTC
[Nouveau] [Bug 99532] Compute shader doesn't give right result under some circumstances
https://bugs.freedesktop.org/show_bug.cgi?id=99532 --- Comment #5 from Ilia Mirkin <imirkin at alum.mit.edu> --- Can you figure out which compute invocation messes up? Looks like you have 2 compute shaders in there, although my bet is on the one that does all the atomic ops on shared memory - that stuff changed between Kepler and Maxwell, which could explain why it works on GM107. -- You are receiving this mail because: You are the QA Contact for the bug. You are the assignee for the bug. -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20170125/6cbb9a5d/attachment.html>
bugzilla-daemon at freedesktop.org
2017-Jan-25 13:41 UTC
[Nouveau] [Bug 99532] Compute shader doesn't give right result under some circumstances
https://bugs.freedesktop.org/show_bug.cgi?id=99532 --- Comment #6 from Ilia Mirkin <imirkin at alum.mit.edu> --- Oh wait - while there are 2 compute shaders, you only use one of them (the one with all the shared atomics). Also need to double-check that it's not an earlier draw messing things up (e.g. that the compute shader is getting the proper inputs). But my bet is on an issue in the compute shader. -- You are receiving this mail because: You are the QA Contact for the bug. You are the assignee for the bug. -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20170125/df6300ae/attachment.html>
bugzilla-daemon at freedesktop.org
2017-Jan-25 13:44 UTC
[Nouveau] [Bug 99532] Compute shader doesn't give right result under some circumstances
https://bugs.freedesktop.org/show_bug.cgi?id=99532 --- Comment #7 from Boyan Ding <stu_dby at 126.com> --- (In reply to Ilia Mirkin from comment #6)> Oh wait - while there are 2 compute shaders, you only use one of them (the > one with all the shared atomics). Also need to double-check that it's not an > earlier draw messing things up (e.g. that the compute shader is getting the > proper inputs). But my bet is on an issue in the compute shader.I agree with you, since the same compute shader input was also used in subsequent rendering. If that were wrong, the following render would also be incorrect. -- You are receiving this mail because: You are the QA Contact for the bug. You are the assignee for the bug. -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20170125/17e1c633/attachment.html>
bugzilla-daemon at freedesktop.org
2017-Jan-25 13:47 UTC
[Nouveau] [Bug 99532] Compute shader doesn't give right result under some circumstances
https://bugs.freedesktop.org/show_bug.cgi?id=99532 --- Comment #8 from Samuel Pitoiset <samuel.pitoiset at gmail.com> --- A missing OP_CCTL maybe? I have something which could help (but it's definitely not the right thing to do). The possible fix is here: https://cgit.freedesktop.org/~hakzsam/mesa/commit/?h=atomic_fixes&id=d3a1158acde83d9d7a2a58e431623dd89e59ca65 -- You are receiving this mail because: You are the QA Contact for the bug. You are the assignee for the bug. -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20170125/98971253/attachment.html>
bugzilla-daemon at freedesktop.org
2017-Jan-25 13:51 UTC
[Nouveau] [Bug 99532] Compute shader doesn't give right result under some circumstances
https://bugs.freedesktop.org/show_bug.cgi?id=99532 --- Comment #9 from Samuel Pitoiset <samuel.pitoiset at gmail.com> --- That might explain the failure on kepler (and presumably fermi) because maxwell doesn't need that. -- You are receiving this mail because: You are the assignee for the bug. You are the QA Contact for the bug. -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20170125/f57cd958/attachment-0001.html>
bugzilla-daemon at freedesktop.org
2017-Jan-25 14:07 UTC
[Nouveau] [Bug 99532] Compute shader doesn't give right result under some circumstances
https://bugs.freedesktop.org/show_bug.cgi?id=99532 --- Comment #10 from Ilia Mirkin <imirkin at alum.mit.edu> --- (In reply to Samuel Pitoiset from comment #8)> A missing OP_CCTL maybe? I have something which could help (but it's > definitely not the right thing to do). > > The possible fix is here: > https://cgit.freedesktop.org/~hakzsam/mesa/commit/ > ?h=atomic_fixes&id=d3a1158acde83d9d7a2a58e431623dd89e59ca65Nope. It does change the rendering very slightly - there's now one bar consistently in the histogram - still incorrect. -- You are receiving this mail because: You are the QA Contact for the bug. You are the assignee for the bug. -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20170125/b2f21957/attachment.html>
bugzilla-daemon at freedesktop.org
2017-Jan-26 06:09 UTC
[Nouveau] [Bug 99532] Compute shader doesn't give right result under some circumstances
https://bugs.freedesktop.org/show_bug.cgi?id=99532 --- Comment #11 from Boyan Ding <stu_dby at 126.com> --- Created attachment 129157 --> https://bugs.freedesktop.org/attachment.cgi?id=129157&action=edit The compute shader binary and assembly compiled with nouveau I took some time today to capture the compiled shader binaries under nouveau and proprietary driver. It seems there are differences when handling atomic operations. The code generated by nvidia driver (will be attached below) is rather huge, but seems mostly repetitions of several small sections of code. I don't know about nvidia isa, but hope it helps. -- You are receiving this mail because: You are the QA Contact for the bug. You are the assignee for the bug. -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20170126/d2ce8118/attachment-0001.html>
bugzilla-daemon at freedesktop.org
2017-Jan-26 06:10 UTC
[Nouveau] [Bug 99532] Compute shader doesn't give right result under some circumstances
https://bugs.freedesktop.org/show_bug.cgi?id=99532 --- Comment #12 from Boyan Ding <stu_dby at 126.com> --- Created attachment 129158 --> https://bugs.freedesktop.org/attachment.cgi?id=129158&action=edit The compute shader binary and assembly compiled with proprietary driver -- You are receiving this mail because: You are the assignee for the bug. You are the QA Contact for the bug. -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20170126/3d99f037/attachment.html>
bugzilla-daemon at freedesktop.org
2017-Feb-06 12:24 UTC
[Nouveau] [Bug 99532] Compute shader doesn't give right result under some circumstances
https://bugs.freedesktop.org/show_bug.cgi?id=99532 --- Comment #13 from Boyan Ding <stu_dby at 126.com> --- Now I doubt if the problem really lies in the atomic operations, even in compiler at all. I changed the compute shader a little bit, only letting thread (0, 0) to accumulate its result to the ssbo (the dividing factor in histogram fragment shader changed from 20000 to 20). This bypasses atomic operation and shared memory, but the same problem persists. I suspect that the input state of compute shader is somehow invalid, and that explains why removing one frame of the trace will magically eliminate the problem. -- You are receiving this mail because: You are the assignee for the bug. You are the QA Contact for the bug. -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20170206/530d7eb4/attachment.html>
bugzilla-daemon at freedesktop.org
2017-Feb-07 12:01 UTC
[Nouveau] [Bug 99532] Compute shader doesn't give right result under some circumstances
https://bugs.freedesktop.org/show_bug.cgi?id=99532 --- Comment #14 from Boyan Ding <stu_dby at 126.com> --- Created attachment 129380 --> https://bugs.freedesktop.org/attachment.cgi?id=129380&action=edit A minimal reproducer I wrote another much simpler program today to find the real cause of this bug. Turns out that compute shader is unable to sample from depth texture. The attached program first renders a shape to a FBO. Then a compute shader is used to copy the color and depth textures attached to the former FBO to a shader image, which is drawn to the screen. The depth part is different between nouveau and other drivers. Compile the program with gcc test.c -lglfw -lGLEW -lGL -- You are receiving this mail because: You are the QA Contact for the bug. You are the assignee for the bug. -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20170207/425f1d9a/attachment.html>
bugzilla-daemon at freedesktop.org
2017-Feb-07 12:02 UTC
[Nouveau] [Bug 99532] Compute shader doesn't give right result under some circumstances
https://bugs.freedesktop.org/show_bug.cgi?id=99532 --- Comment #15 from Boyan Ding <stu_dby at 126.com> --- Created attachment 129381 --> https://bugs.freedesktop.org/attachment.cgi?id=129381&action=edit Correct shader image (i965) -- You are receiving this mail because: You are the assignee for the bug. You are the QA Contact for the bug. -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20170207/94c614c9/attachment.html>
bugzilla-daemon at freedesktop.org
2017-Feb-07 12:03 UTC
[Nouveau] [Bug 99532] Compute shader doesn't give right result under some circumstances
https://bugs.freedesktop.org/show_bug.cgi?id=99532 --- Comment #16 from Boyan Ding <stu_dby at 126.com> --- Created attachment 129382 --> https://bugs.freedesktop.org/attachment.cgi?id=129382&action=edit Incorrect shader image (nouveau) -- You are receiving this mail because: You are the assignee for the bug. You are the QA Contact for the bug. -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20170207/d3268f48/attachment.html>
bugzilla-daemon at freedesktop.org
2017-Feb-12 18:35 UTC
[Nouveau] [Bug 99532] Compute shader doesn't give right result under some circumstances
https://bugs.freedesktop.org/show_bug.cgi?id=99532 --- Comment #17 from Ilia Mirkin <imirkin at alum.mit.edu> --- A few observations: - Pretty sure you want GL_TEXTURE_FETCH_BARRIER_BIT. Not that this matters for nvc0. - In addition to this always working on GM107, it *sometimes* works on my GK208. Something about card state? Or something in compute insufficiently initialized? - I tried setting the DEPTH_TEXTURE bit in the TIC with no effect. - The GM107 works just as effectively with both old- and new-style TIC formats. - Throwing glFlush or glTextureBarrier into the mix made no difference, so it's not a cache issue. - Switching to DEPTH24 and DEPTH32F made no difference. -- You are receiving this mail because: You are the assignee for the bug. You are the QA Contact for the bug. -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20170212/6e139984/attachment.html>
bugzilla-daemon at freedesktop.org
2017-Feb-13 01:31 UTC
[Nouveau] [Bug 99532] Compute shader doesn't give right result under some circumstances
https://bugs.freedesktop.org/show_bug.cgi?id=99532 --- Comment #18 from Ilia Mirkin <imirkin at alum.mit.edu> --- Also likely relevant is the fact that all these fail, even on GM107. But the ones for other shader stages do pass. We're clearly missing some setting of some kind. dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute.sampler2dshadow,Fail dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute.samplercubeshadow,Fail dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute.sampler2darrayshadow,Fail dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute.isampler2d,Fail dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute.sampler2dshadow,Fail dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute.samplercubeshadow,Fail dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute.sampler2darrayshadow,Fail dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.compute.sampler2dshadow,Fail dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.compute.samplercubeshadow,Fail dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.compute.sampler2darrayshadow,Fail dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.compute.sampler2dshadow,Fail dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.compute.samplercubeshadow,Fail dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.compute.sampler2darrayshadow,Fail -- You are receiving this mail because: You are the assignee for the bug. You are the QA Contact for the bug. -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20170213/ce33c540/attachment.html>
bugzilla-daemon at freedesktop.org
2017-Feb-14 02:14 UTC
[Nouveau] [Bug 99532] Compute shader doesn't give right result under some circumstances
https://bugs.freedesktop.org/show_bug.cgi?id=99532 Boyan Ding <stu_dby at 126.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #19 from Boyan Ding <stu_dby at 126.com> --- commit 956556b3c30ce3d38d0af795f9383df3bc2cf8a2 Author: Ilia Mirkin <imirkin at alum.mit.edu> Date: Mon Feb 13 11:14:51 2017 -0500 nvc0: disable linked tsc mode in compute launch descriptor Empirically, this makes things work. Presumably this was originally copied from the blob, which does make use of linked tsc mode. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99532 Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu> Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com> Cc: mesa-stable at lists.freedesktop.org -- You are receiving this mail because: You are the assignee for the bug. You are the QA Contact for the bug. -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20170214/7aa15b29/attachment.html>