i965/fs: Ensure delta_x/y are even-aligned registers on Gen6.
authorMatt Turner <mattst88@gmail.com>
Thu, 2 Apr 2015 23:57:10 +0000 (16:57 -0700)
committerMatt Turner <mattst88@gmail.com>
Tue, 21 Apr 2015 16:24:48 +0000 (09:24 -0700)
The BSpec says this applies to Gen6 as well.

Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
src/mesa/drivers/dri/i965/brw_fs_generator.cpp
src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp

index b06a947519c26245f55e82385c973a7ed469e2ce..a732a8984bf28985f1a54ddbb60337e675338484 100644 (file)
@@ -428,7 +428,7 @@ fs_generator::generate_linterp(fs_inst *inst,
 
    if (brw->has_pln &&
        delta_y.nr == delta_x.nr + 1 &&
-       (brw->gen >= 6 || (delta_x.nr & 1) == 0)) {
+       (brw->gen >= 7 || (delta_x.nr & 1) == 0)) {
       brw_PLN(p, dst, interp, delta_x);
    } else {
       brw_LINE(p, brw_null_reg(), interp, delta_x);
index 2dfafdf9d6cd57239d7a32c2213170712da028a1..2a4054a29b790b5162f6fa35bb36f5fe6770c6cc 100644 (file)
@@ -245,9 +245,9 @@ brw_alloc_reg_set(struct intel_screen *screen, int reg_width)
    assert(reg == ra_reg_count);
 
    /* Add a special class for aligned pairs, which we'll put delta_x/y
-    * in on gen5 so that we can do PLN.
+    * in on Gen <= 6 so that we can do PLN.
     */
-   if (devinfo->has_pln && reg_width == 1 && devinfo->gen < 6) {
+   if (devinfo->has_pln && reg_width == 1 && devinfo->gen <= 6) {
       aligned_pairs_class = ra_alloc_reg_class(regs);
 
       for (int i = 0; i < pairs_reg_count; i++) {