From f2f517b31565e71c235e3b6e34953a2f88f322b4 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 22 Feb 2022 12:28:45 -0500 Subject: [PATCH] llvmpipe: allow resource_copy_region to perform replicate operations Reviewed-by: Dave Airlie Part-of: --- src/gallium/drivers/llvmpipe/lp_surface.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/llvmpipe/lp_surface.c b/src/gallium/drivers/llvmpipe/lp_surface.c index 78a1b06b81d..32f24e3007d 100644 --- a/src/gallium/drivers/llvmpipe/lp_surface.c +++ b/src/gallium/drivers/llvmpipe/lp_surface.c @@ -51,10 +51,10 @@ lp_resource_copy_ms(struct pipe_context *pipe, src_format = src->format; - for (unsigned i = 0; i < src->nr_samples; i++) { + for (unsigned i = 0; i < MAX2(src->nr_samples, dst->nr_samples); i++) { struct pipe_transfer *src_trans, *dst_trans; const uint8_t *src_map = llvmpipe_transfer_map_ms(pipe, - src, 0, PIPE_MAP_READ, i, + src, 0, PIPE_MAP_READ, MIN2(i, src->nr_samples - 1), src_box, &src_trans); if (!src_map) @@ -103,7 +103,8 @@ lp_resource_copy(struct pipe_context *pipe, "blit src"); if (dst->nr_samples > 1 && - dst->nr_samples == src->nr_samples) { + (dst->nr_samples == src->nr_samples || + (src->nr_samples == 1 && dst->nr_samples > 1))) { lp_resource_copy_ms(pipe, dst, dst_level, dstx, dsty, dstz, src, src_level, src_box); return;