https://bugs.freedesktop.org/show_bug.cgi?id=91461
Bug ID: 91461 Summary: gl_TessLevel* writes have no effect for all but the last TCS invocation 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: daniel@constexpr.org QA Contact: dri-devel@lists.freedesktop.org
The tessellator ignores all writes to gl_TessLevelInner and gl_TessLevelOuter by the tessellation control shader except except those done by the last TCS invocation (gl_InvocationID == patch output vertices - 1).
This results in no primitives being generated unless all entries of gl_TessLevelOuter are written in that invocation (the 'initial' values seem to be 0 for gl_TessLevelOuter and 1 for gl_TessLevelInner).
Additionally, barrier() does not synchronize changes to the gl_TessLevel* between TCS invocations.
Neither of these problems can be reproduced with user-defined 'patch out' variables - writes by any TCS invocation are visible in the evaluation shader and barrier() makes them visible to the other TCS invocations.
GPU: Radeon HD 7950 (TAHITI) Mesa: 10.7.0-devel (git-9deb614) LLVM: r243203
https://bugs.freedesktop.org/show_bug.cgi?id=91461
--- Comment #1 from Daniel Scharrer daniel@constexpr.org --- Created attachment 117373 --> https://bugs.freedesktop.org/attachment.cgi?id=117373&action=edit Tessellation test case
I have attached a test case for this. It can be compiled and run using: $ sh tessellation.cpp
Use the arrow keys to change which TCS invocation writes to gl_TessLevel* (or use space/enter to toggle between the first and the last).
It should display a yellow grid no matter what TCS invocation is selected but instead displays a green grid for invocation 3 and nothing for all other invocations.
https://bugs.freedesktop.org/show_bug.cgi?id=91461
--- Comment #2 from Daniel Scharrer daniel@constexpr.org --- I can confirm that the patch "radeonsi: before storing tess levels, load them from LDS instead of temporary" on the mailing list fixes the issue.
https://bugs.freedesktop.org/show_bug.cgi?id=91461
Marek Olšák maraeo@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |FIXED
--- Comment #3 from Marek Olšák maraeo@gmail.com --- Fixed by 60159bcfc66a067b50da06f5cabfa20d72e89. Closing.
dri-devel@lists.freedesktop.org