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 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev