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

Reviewed-by: Neil Roberts <n...@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
anyway.

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

Reply via email to