[Mesa-dev] i965: On-demand render target flushing
topi.pohjolainen at gmail.com
Mon Feb 27 18:48:19 UTC 2017
On Fri, Feb 17, 2017 at 09:32:03PM +0200, Topi Pohjolainen wrote:
> 1) Blorp color clears and resolves emit unconditional render target
> flush + command stream after every clear/resolve (including
> regular non-fast clears).
> 2) Blorp color clears, resolves and blits emit texture and constant
> cache resolves even in case only destination is dirty. This is
> because brw_render_cache_set_check_flush() does both render target
> flush as well as the top-of-pipe read cache flushes.
> 3) Similarly to item 2, 3D and compute paths also flush texture and
> constant caches even if none of the texture surfaces are dirty.
> 4) In case of multiple surfaces needing resolves, all render paths
> (blorp, 3D and compute) emit render target, texture and constant
> cache flushes after each resolve instead of just once after all
> This series addresses all four cases. Good news are that even though
> the current setup isn't optimal, it doesn't actually get any better in
> most cases performance wise. There is modest gain in OglDrvRes which
> does heavy blorp blitting. I'm expecting this series also to make
> blorp tex uploads and blorp mipmap generation more competitive.
> Bad news are in the final patch - it looks that current unconditional
> flushing/stalling has been hiding bugs elsewhere. There are cases
> which rely on the flushes after non-fast clears. Hunting the real
> cause is, however, difficult. I only saw them in CI system within
> full runs and was not able to reproduce them myself.
With the added patch disabling deferred allocation of mcs for CCS_E,
the last patch gives:
OglDrvRes: 4.30768% +/- 0.183354%
OglDrvState: 3.16878% +/- 0.769695%
This is mostly due to blorp blits flushing less than before.
This series also improves blorp tex upload. I'll send some updates
to that series.
More information about the mesa-dev