https://bugs.freedesktop.org/show_bug.cgi?id=95130
Bug ID: 95130 Summary: Derivatives of gl_Color wrong when helper pixels used Product: Mesa Version: git Hardware: Other OS: All Status: NEW Severity: normal Priority: medium Component: Drivers/Gallium/radeonsi Assignee: dri-devel@lists.freedesktop.org Reporter: jlegg@feralinteractive.com QA Contact: dri-devel@lists.freedesktop.org
Created attachment 123239 --> https://bugs.freedesktop.org/attachment.cgi?id=123239&action=edit Test program
Along the edges of triangles and around where fragments are rejected due to depth testing, the GLSL functions dFdx, dFdy, and fwidth return incorrect values when the argument is dependant on gl_Color or gl_SecondaryColor.
I've attached a program reproducing the issue. It takes derivatives of a constant, which should be 0. It is expected to produce a black window. However, the edges of the triangle it draws are visible because of this bug.
The error does not occur when environment variable LIBGL_ALWAYS_SOFTWARE is set to 1.
I'm using Mesa git 0831eb9 with an AMD R9 270 on x86_64 Fedora 22.
https://bugs.freedesktop.org/show_bug.cgi?id=95130
--- Comment #1 from James Legg jlegg@feralinteractive.com --- Created attachment 123240 --> https://bugs.freedesktop.org/attachment.cgi?id=123240&action=edit Apitrace trace of test program
https://bugs.freedesktop.org/show_bug.cgi?id=95130
--- Comment #2 from James Legg jlegg@feralinteractive.com --- Created attachment 123241 --> https://bugs.freedesktop.org/attachment.cgi?id=123241&action=edit Appearance when test is failing
https://bugs.freedesktop.org/show_bug.cgi?id=95130
--- Comment #3 from Nicolai Hähnle nhaehnle@gmail.com --- Hi James, thank you for the detailed report. I can reproduce this and am going to investigate.
https://bugs.freedesktop.org/show_bug.cgi?id=95130
--- Comment #4 from Nicolai Hähnle nhaehnle@gmail.com --- As a temporary workaround, the error should disappear when you run with the environment variable setting R600_DEBUG=mono.
The cause is that with non-monolithic shaders, input interpolation happens in the prolog. However, when we compile the prolog we do not see the derivative computations and therefore fail to turn the helper pixels on.
https://bugs.freedesktop.org/show_bug.cgi?id=95130
Nicolai Hähnle nhaehnle@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |FIXED
--- Comment #5 from Nicolai Hähnle nhaehnle@gmail.com --- This is now fixed in Mesa Git b42bc90b6add0d0f81d915d49712761d32329afa with LLVM r272063.
dri-devel@lists.freedesktop.org