[Mesa-dev] [PATCH 1/6] ac/surface/gfx6: don't overallocate mipmapped HTILE

Nicolai Hähnle nhaehnle at gmail.com
Thu May 24 08:22:18 UTC 2018


For the series:

Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

On 23.05.2018 23:29, Marek Olšák wrote:
> ping
> 
> On Wed, May 16, 2018 at 9:47 PM, Marek Olšák <maraeo at gmail.com 
> <mailto:maraeo at gmail.com>> wrote:
> 
>     From: Marek Olšák <marek.olsak at amd.com <mailto:marek.olsak at amd.com>>
> 
>     ---
>       src/amd/common/ac_surface.c | 13 +++++++++++--
>       1 file changed, 11 insertions(+), 2 deletions(-)
> 
>     diff --git a/src/amd/common/ac_surface.c b/src/amd/common/ac_surface.c
>     index 9e742dc8a45..47de522d15d 100644
>     --- a/src/amd/common/ac_surface.c
>     +++ b/src/amd/common/ac_surface.c
>     @@ -927,22 +927,31 @@ static int gfx6_compute_surface(ADDR_HANDLE
>     addrlib,
>                       *
>                       * "dcc_alignment * 4" was determined by trial and
>     error.
>                       */
>                      surf->dcc_size = align64(surf->surf_size >> 8,
>                                               surf->dcc_alignment * 4);
>              }
> 
>              /* Make sure HTILE covers the whole miptree, because the
>     shader reads
>               * TC-compatible HTILE even for levels where it's disabled
>     by DB.
>               */
>     -       if (surf->htile_size && config->info.levels > 1)
>     -               surf->htile_size *= 2;
>     +       if (surf->htile_size && config->info.levels > 1 &&
>     +           surf->flags & RADEON_SURF_TC_COMPATIBLE_HTILE) {
>     +               /* MSAA can't occur with levels > 1, so ignore the
>     sample count. */
>     +               const unsigned total_pixels = surf->surf_size /
>     surf->bpe;
>     +               const unsigned htile_block_size = 8 * 8;
>     +               const unsigned htile_element_size = 4;
>     +
>     +               surf->htile_size = (total_pixels / htile_block_size) *
>     +                                  htile_element_size;
>     +               surf->htile_size = align(surf->htile_size,
>     surf->htile_alignment);
>     +       }
> 
>              surf->is_linear = surf->u.legacy.level[0].mode ==
>     RADEON_SURF_MODE_LINEAR_ALIGNED;
>              surf->is_displayable = surf->is_linear ||
>                                     surf->micro_tile_mode ==
>     RADEON_MICRO_MODE_DISPLAY ||
>                                     surf->micro_tile_mode ==
>     RADEON_MICRO_MODE_ROTATED;
>              return 0;
>       }
> 
>       /* This is only called when expecting a tiled layout. */
>       static int
>     -- 
>     2.17.0
> 
> 
> 
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 


-- 
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.


More information about the mesa-dev mailing list