diff options
author | Francisco Jerez <currojerez@riseup.net> | 2016-03-11 15:22:56 -0800 |
---|---|---|
committer | Dylan Baker <baker.dylan.c@gmail.com> | 2016-03-28 16:12:27 -0700 |
commit | 0c3d96fac4bdf23f74497be9ecacf467cf8f069f (patch) | |
tree | e42d3adc339d610bd1ff113de89345d2b599d2bd | |
parent | 76cfbe892a428184fa534e4cc276e79cf2f012d7 (diff) |
i965/fs: Add missing analysis invalidation in opt_sampler_eot().
Bug found by the liveness analysis validation pass that will be
introduced in a later commit. opt_sampler_eot() was allocating
registers and inserting and removing instructions, which makes the
cached liveness analysis calculation inconsistent with the shader IR,
so it must be invalidated.
Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Matt Turner <mattst88@gmail.com>
(cherry picked from commit 6691c03fd39be463e1d222b56e3ec8da9f3b7f24)
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index b5060408d9..80ac04054f 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -2441,8 +2441,10 @@ fs_visitor::opt_sampler_eot() * we have enough space, but it will make sure the dead code eliminator kills * the instruction that this will replace. */ - if (tex_inst->header_size != 0) + if (tex_inst->header_size != 0) { + invalidate_live_intervals(); return true; + } fs_reg send_header = ibld.vgrf(BRW_REGISTER_TYPE_F, load_payload->sources + 1); @@ -2473,6 +2475,7 @@ fs_visitor::opt_sampler_eot() tex_inst->insert_before(cfg->blocks[cfg->num_blocks - 1], new_load_payload); tex_inst->src[0] = send_header; + invalidate_live_intervals(); return true; } |