[Mesa-dev] [PATCH 0/9] radeonsi: decompression cleanups and ZS optimization

Nicolai Hähnle nhaehnle at gmail.com
Fri Apr 22 22:41:22 UTC 2016


Hi,

this series contains a bunch of minor cleanups to the various decompression
routines. The biggest functional change is that we decompress Z & S in-place
simultaneously now when asked for decompressing both, while at the same time
being slightly more precise about which of the two we decompress in the first
place: if a blit only asks for Z or only S, there's no need to decompress both.
  
Note that this doesn't cover all cases - in particular, when a ZS texture is
bound both with a depth and with a stencil sampler, we still decompress them
individually, since this is difficult to detect.

I started out wanting to also move the si_blitter_begin/_end calls out of
loops to reduce potential state churn, but the blitter isn't really designed
for that, and many drivers rely on the current blitter behavior.

I guess one could add a "manual" mode to the blitter, where we call
util_blitter_begin/_end functions and explicitly restore all state in
si_blitter_end. This could be implemented in a way that drivers can
"opt in" to this new behavior, where the caller is responsible for
restoring state. What do people think about that?

Thanks,
Nicolai  
--
 src/gallium/auxiliary/util/u_math.h    |  12 ++
 src/gallium/drivers/radeonsi/si_blit.c | 184 ++++++++++++++---------
 2 files changed, 125 insertions(+), 71 deletions(-)



More information about the mesa-dev mailing list