From fdedc0b3b37c29ac2d75cd0cf6795323d3944b65 Mon Sep 17 00:00:00 2001 From: Lucas Stach Date: Fri, 18 Nov 2022 17:58:02 +0100 Subject: [PATCH] etnaviv: optimize sampler source update Now that we track age at the resource level we can optimize the sampler source update by only copying/flushing the levels that are actually used by the sampler. Signed-off-by: Lucas Stach Reviewed-by: Christian Gmeiner Part-of: --- src/gallium/drivers/etnaviv/etnaviv_texture.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/gallium/drivers/etnaviv/etnaviv_texture.c b/src/gallium/drivers/etnaviv/etnaviv_texture.c index f97d1e9fdb5..0d1d4a698ac 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_texture.c +++ b/src/gallium/drivers/etnaviv/etnaviv_texture.c @@ -172,16 +172,18 @@ etna_update_sampler_source(struct pipe_sampler_view *view, int num) to = etna_resource(base->texture); if ((to != from) && etna_resource_older(to, from)) { - etna_copy_resource(view->context, &to->base, &from->base, 0, - view->texture->last_level); + etna_copy_resource(view->context, &to->base, &from->base, + view->u.tex.first_level, + MIN2(view->texture->last_level, view->u.tex.last_level)); ctx->dirty |= ETNA_DIRTY_TEXTURE_CACHES; } else if ((to == from) && etna_resource_needs_flush(to)) { if (etna_can_use_sampler_ts(view, num)) { enable_sampler_ts = true; } else { /* Resolve TS if needed */ - etna_copy_resource(view->context, &to->base, &from->base, 0, - view->texture->last_level); + etna_copy_resource(view->context, &to->base, &from->base, + view->u.tex.first_level, + MIN2(view->texture->last_level, view->u.tex.last_level)); ctx->dirty |= ETNA_DIRTY_TEXTURE_CACHES; } }