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; } }