[Mesa-dev] i965: On-demand render target flushing

Pohjolainen, Topi 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:
> Currently:
> 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
>    resolves.
> 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 mailing list