amd/common: Cache intra-tile addresses for retile map.
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Sat, 11 Jul 2020 20:04:25 +0000 (22:04 +0200)
committerMarge Bot <eric+marge@anholt.net>
Sat, 18 Jul 2020 00:28:35 +0000 (00:28 +0000)
commita37aeb128d5f7cf2fa5b8c61566bbd9f2c224a28
treef0e6ebc92a63c88a47a6e76bee6df9a63a71a32b
parentf302ef3853bfcc4dc68205c40f1e7390aff799ab
amd/common: Cache intra-tile addresses for retile map.

However complicated DCC addressing is it is still based on tiles.
If we have the intra-tile offsets + tile dimensions we can expand
that to the full image ourselves.

Behavior around ~1080p on a 2500U:

old:
  30-60 ms on every miss

new:
  5 ms initally (miss in the tile cache)
  <0.5 ms afterwards

The most common case is that the tile cache only contains data for
2 tiles, which for Raven/Renoir/Navi14 will be 4 KiB each, so the
size increase is fairly modest.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5865>
src/amd/common/ac_surface.c