Module: Mesa
Branch: 10.2
Commit: 65324b89b89d3102c5a66c9ca7a3ff5f954cef19
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=65324b89b89d3102c5a66c9ca7a3ff5f954cef19

Author: Kenneth Graunke <kenn...@whitecape.org>
Date:   Tue Aug  5 23:57:17 2014 -0700

i965/clip: Fix brw_clip_unfilled.c/compute_offset's assembly.

Due to the destination register width of 1 or 2, these instructions get
ExecSize 1 or 2.  But dir and offset (used as src0) are both registers
of width 4, violating the execsize >= width assertion.

I honestly don't think this could have ever worked.

Fixes Piglit's polygon-offset and polygon-mode-offset tests on Gen4-5.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=70441
Signed-off-by: Kenneth Graunke <kenn...@whitecape.org>
Reviewed-by: Chris Forbes <chr...@ijw.co.nz>
(cherry picked from commit b7679639bcc8ac72cb08c48f9cda8eecd6a9c1e5)
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=36193

---

 src/mesa/drivers/dri/i965/brw_clip_unfilled.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_clip_unfilled.c 
b/src/mesa/drivers/dri/i965/brw_clip_unfilled.c
index 6dc52db..bf33ec6 100644
--- a/src/mesa/drivers/dri/i965/brw_clip_unfilled.c
+++ b/src/mesa/drivers/dri/i965/brw_clip_unfilled.c
@@ -197,7 +197,7 @@ static void compute_offset( struct brw_clip_compile *c )
    struct brw_reg dir = c->reg.dir;
 
    brw_math_invert(p, get_element(off, 2), get_element(dir, 2));
-   brw_MUL(p, vec2(off), dir, get_element(off, 2));
+   brw_MUL(p, vec2(off), vec2(dir), get_element(off, 2));
 
    brw_CMP(p,
           vec1(brw_null_reg()),
@@ -208,8 +208,8 @@ static void compute_offset( struct brw_clip_compile *c )
    brw_SEL(p, vec1(off), brw_abs(get_element(off, 0)), 
brw_abs(get_element(off, 1)));
    brw_set_predicate_control(p, BRW_PREDICATE_NONE);
 
-   brw_MUL(p, vec1(off), off, brw_imm_f(c->key.offset_factor));
-   brw_ADD(p, vec1(off), off, brw_imm_f(c->key.offset_units));
+   brw_MUL(p, vec1(off), vec1(off), brw_imm_f(c->key.offset_factor));
+   brw_ADD(p, vec1(off), vec1(off), brw_imm_f(c->key.offset_units));
 }
 
 

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to