Mesa (master): i965/fs: Don't do redundant RA setup on IVB+

Jason Ekstrand jekstrand at kemper.freedesktop.org
Mon Aug 10 19:06:42 UTC 2015


Module: Mesa
Branch: master
Commit: 1bb339493cd892c8065266b93a296a84b1dfce9b
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1bb339493cd892c8065266b93a296a84b1dfce9b

Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date:   Fri Jul 31 08:36:35 2015 -0700

i965/fs: Don't do redundant RA setup on IVB+

Acked-by: Matt Turner <mattst88 at gmail.com>

---

 src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp |    9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp b/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
index 211f70e..b70895e 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
@@ -79,6 +79,15 @@ brw_alloc_reg_set(struct brw_compiler *compiler, int dispatch_width)
    int base_reg_count = BRW_MAX_GRF;
    int index = (dispatch_width / 8) - 1;
 
+   if (dispatch_width > 8 && devinfo->gen >= 7) {
+      /* For IVB+, we don't need the PLN hacks or the even-reg alignment in
+       * SIMD16.  Therefore, we can use the exact same register sets for
+       * SIMD16 as we do for SIMD8 and we don't need to recalculate them.
+       */
+      compiler->fs_reg_sets[index] = compiler->fs_reg_sets[0];
+      return;
+   }
+
    /* The registers used to make up almost all values handled in the compiler
     * are a scalar value occupying a single register (or 2 registers in the
     * case of SIMD16, which is handled by dividing base_reg_count by 2 and




More information about the mesa-commit mailing list