Mesa (master): i965/fs: Fix test for smearing enabled on an instruction.

Eric Anholt anholt at kemper.freedesktop.org
Wed May 29 17:21:05 UTC 2013


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

Author: Eric Anholt <eric at anholt.net>
Date:   Thu May  2 17:44:28 2013 -0700

i965/fs: Fix test for smearing enabled on an instruction.

We were expanding the live range too far, breaking register_coalesce_2()
and compute_to_mrf() on 16-wide shaders.  Turning it back on improves
GLB2.7 performance by 0.239355% +/- 0.0850649% (n=398). shader-db stats
are:

total instructions in shared programs: 1627211 -> 1609262 (-1.10%)
instructions in affected programs:     450351 -> 432402 (-3.99%)

While 33 new 16-wide shaders are gained, 70 are lost.  Despite that,
tropics (the app that lost the most 16-wide) shows a .41% +/- .16%
(n=7/8, first-run outlier removed) performance improvement on my HSW.

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 .../drivers/dri/i965/brw_fs_live_variables.cpp     |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp b/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp
index 3daf8fa..f5daab2 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp
@@ -216,7 +216,7 @@ fs_visitor::calculate_live_intervals()
              * pixel_x/pixel_y, which are registers of 16-bit values and thus
              * would get stomped by the first decode as well.
              */
-            if (dispatch_width == 16 && (inst->src[i].smear ||
+            if (dispatch_width == 16 && (inst->src[i].smear >= 0 ||
                                          (this->pixel_x.reg == reg ||
                                           this->pixel_y.reg == reg))) {
                end_ip++;




More information about the mesa-commit mailing list