From 171d7a30818a04320d2be64651afcf52ee6986b2 Mon Sep 17 00:00:00 2001 From: Lucas Stach Date: Fri, 26 Feb 2021 21:28:20 +0100 Subject: [PATCH] etnaviv: don't try to copy PIPE_BUFFER with the 3D engine PIPE_BUFFER layout is incompatible with the 3D pipe, so don't try to blit it via a 3D engine blit, but fall back to the software copy. Fixes crashes in piglit tests arb_copy_buffer and arb_map_buffer_range. Fixes: c9e8b49b8852 (etnaviv: gallium driver for Vivante GPUs) Cc: mesa-stable@lists.freedesktop.org Signed-off-by: Lucas Stach Reviewed-by: Christian Gmeiner Part-of: --- src/gallium/drivers/etnaviv/etnaviv_clear_blit.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c b/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c index e7ac9f1398a..fefcdbfa411 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c +++ b/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c @@ -165,7 +165,8 @@ etna_resource_copy_region(struct pipe_context *pctx, struct pipe_resource *dst, * to non-aligned: can fall back to rendering-based copy? * XXX this goes wrong when source surface is supertiled. */ - if (util_blitter_is_copy_supported(ctx->blitter, dst, src)) { + if (src->target != PIPE_BUFFER && dst->target != PIPE_BUFFER && + util_blitter_is_copy_supported(ctx->blitter, dst, src)) { etna_blit_save_state(ctx); util_blitter_copy_texture(ctx->blitter, dst, dst_level, dstx, dsty, dstz, src, src_level, src_box);