From d324e7ed9e554dd5b9965144ca36459c52c5b04b Mon Sep 17 00:00:00 2001 From: Lucas Stach Date: Sat, 13 Aug 2022 00:11:33 +0200 Subject: [PATCH] etnaviv: don't use TS with multi-layer resources Clear and render operations can target each layer of a multi-layer resource separately, which means we would need to track TS valid and clear color states for each layer separately to make TS work correctly. As multi-layer resources are very likely not primarily used for rendering, they are unlikely to profit much from TS, so instead of adding all this state, don't use TS for such resources at all. Fixes piglit spec@glsl-1.20@execution@tex-miplevel-selection 3d Signed-off-by: Lucas Stach Reviewed-by: Christian Gmeiner Part-of: --- src/gallium/drivers/etnaviv/etnaviv_surface.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/etnaviv/etnaviv_surface.c b/src/gallium/drivers/etnaviv/etnaviv_surface.c index bdcf099e087..6c55939cba9 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_surface.c +++ b/src/gallium/drivers/etnaviv/etnaviv_surface.c @@ -114,7 +114,10 @@ etna_create_surface(struct pipe_context *pctx, struct pipe_resource *prsc, /* needs to be RS/BLT compatible for transfer_map/unmap */ (rsc->levels[level].padded_width & ETNA_RS_WIDTH_MASK) == 0 && (rsc->levels[level].padded_height & ETNA_RS_HEIGHT_MASK) == 0 && - etna_resource_hw_tileable(screen->specs.use_blt, prsc)) { + etna_resource_hw_tileable(screen->specs.use_blt, prsc) && + /* Multi-layer resources would need to keep much more state (TS valid and + * clear color per layer) and are unlikely to profit from TS usage. */ + prsc->depth0 == 1 && prsc->array_size == 1) { etna_screen_resource_alloc_ts(pctx->screen, rsc); }