summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Olšák <marek.olsak@amd.com>2018-04-03 19:22:24 -0400
committerMarek Olšák <marek.olsak@amd.com>2018-04-13 12:31:04 -0400
commitafe0bd2c558918219abc0d596ecb3276f030fb43 (patch)
tree92925e80f5875327fa87112086716d285220f273
parent29a09e1d380375bd3483d52ac5efdc8b47cc9851 (diff)
radeonsi: force 2D tiling on VI only when TC-compat HTILE is really enabled
just pass the flag that indicates it. Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
-rw-r--r--src/gallium/drivers/radeonsi/si_texture.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/gallium/drivers/radeonsi/si_texture.c b/src/gallium/drivers/radeonsi/si_texture.c
index 0bab2a6c45b..b1a47dd6068 100644
--- a/src/gallium/drivers/radeonsi/si_texture.c
+++ b/src/gallium/drivers/radeonsi/si_texture.c
@@ -39,7 +39,7 @@
static enum radeon_surf_mode
si_choose_tiling(struct si_screen *sscreen,
- const struct pipe_resource *templ);
+ const struct pipe_resource *templ, bool tc_compatible_htile);
bool si_prepare_for_dma_blit(struct si_context *sctx,
@@ -510,7 +510,7 @@ static void si_reallocate_texture_inplace(struct si_context *sctx,
return;
/* This fails with MSAA, depth, and compressed textures. */
- if (si_choose_tiling(sctx->screen, &templ) !=
+ if (si_choose_tiling(sctx->screen, &templ, false) !=
RADEON_SURF_MODE_LINEAR_ALIGNED)
return;
}
@@ -1369,7 +1369,7 @@ si_texture_create_object(struct pipe_screen *screen,
static enum radeon_surf_mode
si_choose_tiling(struct si_screen *sscreen,
- const struct pipe_resource *templ)
+ const struct pipe_resource *templ, bool tc_compatible_htile)
{
const struct util_format_description *desc = util_format_description(templ->format);
bool force_tiling = templ->flags & SI_RESOURCE_FLAG_FORCE_TILING;
@@ -1387,9 +1387,7 @@ si_choose_tiling(struct si_screen *sscreen,
/* Avoid Z/S decompress blits by forcing TC-compatible HTILE on VI,
* which requires 2D tiling.
*/
- if (sscreen->info.chip_class == VI &&
- is_depth_stencil &&
- (templ->flags & PIPE_RESOURCE_FLAG_TEXTURING_MORE_LIKELY))
+ if (sscreen->info.chip_class == VI && tc_compatible_htile)
return RADEON_SURF_MODE_2D;
/* Handle common candidates for the linear mode.
@@ -1453,9 +1451,9 @@ struct pipe_resource *si_texture_create(struct pipe_screen *screen,
int r;
r = si_init_surface(sscreen, &surface, templ,
- si_choose_tiling(sscreen, templ), 0, 0,
- false, false, is_flushed_depth,
- tc_compatible_htile);
+ si_choose_tiling(sscreen, templ, tc_compatible_htile),
+ 0, 0, false, false, is_flushed_depth,
+ tc_compatible_htile);
if (r) {
return NULL;
}