On August 29, 2017 3:14:08 PM Chris Wilson <ch...@chris-wilson.co.uk> wrote:

Quoting Kenneth Graunke (2017-08-29 22:28:38)
Anvil already had code to copy between two buffer objects in the most
efficient way possible, using large bpp copies, then smaller bpp copies.

This patch moves that logic into BLORP as blorp_buffer_copy(), so we
can reuse it in i965 as well.

Just some food for thought...

The render access pattern is terrible for wide linear buffers, as the
pixel block ends up being scattered across many pages, thrashing the TLB.
But if instead of telling it to copy as wide as possible, you just
limited it to a stride of 4096/4 (if memory serves 4 is the largest
pixel block height) then each pixel block is located inside just one
page (and hopefully cluster across the eu, further reducing the stride
may help if the spread ends up taller than wider).

Yes, some benchmarking would have to be done to truly substantiate Ken's claim. I think you may be right that the access patterns aren't great. If we hit the case where you do a one pixel tall blit, that's also not good. I think there is a lot of time that could be sink into making this more efficient.


_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to