mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 16:08:04 +02:00
ac/radeonsi: compute htile for tile mode RADEON_SURF_MODE_1D on GFX6-8
Computing 'htile_size/meta_size' is allowed for RADEON_SURF_MODE_1D when
RADEON_SURF_TC_COMPATIBLE_HTILE isn't set.
Lacking of computing causes performance degradation in some scenarios.
Fixes: d4d9ec55c5 ("radeonsi: implement TC-compatible HTILE")
Signed-off-by: Lu Yao <yaolu@kylinos.cn>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31617>
This commit is contained in:
parent
17096f87c1
commit
0442a6c292
1 changed files with 8 additions and 1 deletions
|
|
@ -816,6 +816,7 @@ static int gfx6_compute_level(ADDR_HANDLE addrlib, const struct ac_surf_config *
|
|||
struct legacy_surf_level *surf_level;
|
||||
struct legacy_surf_dcc_level *dcc_level;
|
||||
ADDR_E_RETURNCODE ret;
|
||||
bool mode_has_htile = false;
|
||||
|
||||
AddrSurfInfoIn->mipLevel = level;
|
||||
AddrSurfInfoIn->width = u_minify(config->info.width, level);
|
||||
|
|
@ -986,8 +987,14 @@ static int gfx6_compute_level(ADDR_HANDLE addrlib, const struct ac_surf_config *
|
|||
}
|
||||
}
|
||||
|
||||
if (surf_level->mode == RADEON_SURF_MODE_2D)
|
||||
mode_has_htile = true;
|
||||
else if (surf_level->mode == RADEON_SURF_MODE_1D &&
|
||||
!(surf->flags & RADEON_SURF_TC_COMPATIBLE_HTILE))
|
||||
mode_has_htile = true;
|
||||
|
||||
/* HTILE. */
|
||||
if (!is_stencil && AddrSurfInfoIn->flags.depth && surf_level->mode == RADEON_SURF_MODE_2D &&
|
||||
if (!is_stencil && AddrSurfInfoIn->flags.depth && mode_has_htile &&
|
||||
level == 0 && !(surf->flags & RADEON_SURF_NO_HTILE)) {
|
||||
AddrHtileIn->flags.tcCompatible = AddrSurfInfoOut->tcCompatible;
|
||||
AddrHtileIn->pitch = AddrSurfInfoOut->pitch;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue