[Mesa-dev] [PATCH 05/10] i965/fs: Fix vgrf0 live interval when no interpolation was done.

Eric Anholt eric at anholt.net
Wed Mar 26 14:23:43 PDT 2014


When you've got a simple solid-color shader that doesn't generate
pixel_x/y interpolation, we were deciding that the first vgrf was the same
as both the undefined pixel_x and pixel_y, and extending its live interval
to avoid the stride problem.  That tricked optimization (such as
compute_to_mrf) that tries to see if a particular instruction is the last
use of a variable.
---
 src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 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 6151729..c7b1f25 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp
@@ -86,8 +86,10 @@ fs_live_variables::setup_one_read(bblock_t *block, fs_inst *inst,
     */
    int end_ip = ip;
    if (v->dispatch_width == 16 && (reg.stride == 0 ||
-                                   (v->pixel_x.reg == reg.reg ||
-                                    v->pixel_y.reg == reg.reg))) {
+                                   ((v->pixel_x.file == GRF &&
+                                     v->pixel_x.reg == reg.reg) ||
+                                    (v->pixel_y.file == GRF &&
+                                     v->pixel_y.reg == reg.reg)))) {
       end_ip++;
    }
 
-- 
1.9.0



More information about the mesa-dev mailing list