[Mesa-dev] [PATCH 1/2] i965/fs: Don't let the EOT send message interfere with the MRF hack

Neil Roberts neil at linux.intel.com
Tue Jun 9 04:05:21 PDT 2015

Both patches look good to me and I can confirm they make the Piglit
tests pass on Skylake.

Reviewed-by: Neil Roberts <neil at linux.intel.com>

My original assumption of the problem was that the implied writes from
the SCRATCH_WRITE instruction aren't taken into account when calculating
the liveliness of the registers and I didn't realise that in the
particular case of the bug report this doesn't matter because the
register for the EOT message is effectively hard-coded to clash with the
message register used for spilling. I'm still not totally convinced that
there's not still a problem where a register can be allocated to clash
with the scratch write register because nothing in
fs_live_variables::setup_def_use takes into account the implied MRF
writes. However if that is the case and I haven't just misunderstood the
code then it is a separate problem and we'd still need this patch

I was thinking it's a bit risky to just use a register that is lower
than the lowest used MRF register because it could be possible for a
message to use a really low register number and then this would end up
using a negative register number. However in practice on Gen7+ it looks
like there's hardly anything left that is using the fake MRF and we're
unlikely to add more so it probably doesn't really matter.

- Neil

More information about the mesa-dev mailing list