https://bugs.freedesktop.org/show_bug.cgi?id=47201
Bug #: 47201 Summary: TGSI source register with absolute negative modifier does not work correctly Classification: Unclassified Product: Mesa Version: 8.0 Platform: Other OS/Version: Linux (All) Status: NEW Severity: normal Priority: medium Component: Drivers/Gallium/r600 AssignedTo: dri-devel@lists.freedesktop.org ReportedBy: llyzs@163.com
Recently I found a TGSI fragment shader does not render correctly with r600 driver and I further identified the issue down to instructions in this form:
CMP TEMP[0].yz, -|TEMP[1].xxxx|, TEMP[2].xxxx, CONST[0].xyxw
If I covert all those instructions to the equivalents:
ABS TEMP[5], TEMP[1].xxxx CMP TEMP[0].yz, -TEMP[5], TEMP[2].xxxx, CONST[0].xyxw
It then works fine. However, the original instructions work just fine with nouveau and swrast driver, so it should be a r600 bug. Any clue on this issue?
https://bugs.freedesktop.org/show_bug.cgi?id=47201
--- Comment #1 from Vic Lee llyzs@163.com 2012-03-11 06:24:37 UTC --- The issue might be related to r600_bytecode_alu_build() in r600_asm.c. In the codes below:
if (alu->is_op3) { // in this code branch it does not use absolute modifier at all. } else { ...
Looks like whenever is_op3 is true (which is the case of CMP), absolute modifier is just ignored.
https://bugs.freedesktop.org/show_bug.cgi?id=47201
Vic Lee llyzs@163.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |NOTABUG
--- Comment #2 from Vic Lee llyzs@163.com 2012-03-11 06:47:32 UTC --- OK I found the reference info in r600 instruction document and this is a hardware limitation. So this probably has to be solved in higher level rather than in driver.
Sorry for the noise.
https://bugs.freedesktop.org/show_bug.cgi?id=47201
Vic Lee llyzs@163.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|TGSI source register with |Absolute modifier does not |absolute negative modifier |work with 3-source TGSI |does not work correctly |instructions
https://bugs.freedesktop.org/show_bug.cgi?id=47201
Tom Stellard tstellar@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Resolution|NOTABUG |
--- Comment #3 from Tom Stellard tstellar@gmail.com 2012-03-11 18:07:27 PDT --- The is a bug in the r600 driver. The shader compiler should be lowering this to the hardware equivalent of this sequence:
ABS TEMP[5], TEMP[1].xxxx CMP TEMP[0].yz, -TEMP[5], TEMP[2].xxxx, CONST[0].xyxw
Is there a piglit test or application that is hitting this bug?
https://bugs.freedesktop.org/show_bug.cgi?id=47201
--- Comment #4 from Vic Lee llyzs@163.com 2012-03-12 06:33:54 PDT --- Thanks for concerning this bug. It will be great if this can be fixed at driver level. I created a smallest possible test program which will be able to test the shader I am having problem with.
Please see the file header for test info.
https://bugs.freedesktop.org/show_bug.cgi?id=47201
--- Comment #5 from Vic Lee llyzs@163.com 2012-03-12 06:34:57 PDT --- Created attachment 58317 --> https://bugs.freedesktop.org/attachment.cgi?id=58317 test program to reproduce the bug
https://bugs.freedesktop.org/show_bug.cgi?id=47201
--- Comment #6 from xbx xavierb@gmail.com --- Created attachment 112920 --> https://bugs.freedesktop.org/attachment.cgi?id=112920&action=edit r600g patch to fix dropped abs() modifier on op3 alu operations.
https://bugs.freedesktop.org/show_bug.cgi?id=47201
--- Comment #7 from xbx xavierb@gmail.com --- I stumbled upon this bug while testing and debugging a game using the st/nine.
And I made a tentative fix that works for me. (caveat: I know nothing about mesa/gallium/graphic cards, but hey..)
Here is the proposed patch:
https://github.com/xxxbxxx/Mesa-3D/commit/0722d721f8e5ec496bf8ce4591a3b8a5bf...
or attached.
https://bugs.freedesktop.org/show_bug.cgi?id=47201
Gert Wollny gw.fossdev@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Status|REOPENED |RESOLVED
--- Comment #8 from Gert Wollny gw.fossdev@gmail.com --- This was fixed with ad84689f737edefe.
dri-devel@lists.freedesktop.org