Summary: | Absolute modifier does not work with 3-source TGSI instructions | ||
---|---|---|---|
Product: | Mesa | Reporter: | Vic Lee <llyzs> |
Component: | Drivers/Gallium/r600 | Assignee: | Default DRI bug account <dri-devel> |
Status: | RESOLVED FIXED | QA Contact: | |
Severity: | normal | ||
Priority: | medium | ||
Version: | 8.0 | ||
Hardware: | Other | ||
OS: | Linux (All) | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Attachments: |
test program to reproduce the bug
r600g patch to fix dropped abs() modifier on op3 alu operations. |
Description
Vic Lee
2012-03-11 05:40:45 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. 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. 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? 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. Created attachment 58317 [details]
test program to reproduce the bug
Created attachment 112920 [details] [review] r600g patch to fix dropped abs() modifier on op3 alu operations. 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/0722d721f8e5ec496bf8ce4591a3b8a5bf87745d or attached. This was fixed with ad84689f737edefe. |
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.