[Mesa-dev] [PATCH 09/10] radeonsi: inline util_blitter_copy_texture

Marek Olšák maraeo at gmail.com
Mon Feb 10 18:24:07 PST 2014


From: Marek Olšák <marek.olsak at amd.com>

This will be used for changing texture properties without modifying
pipe_resource like r600g, but not in this series. For now, this change
allows consolidation of pipe_surface functions.
---
 src/gallium/drivers/radeonsi/si_blit.c | 24 +++++++++++++++++++++---
 1 file changed, 21 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_blit.c b/src/gallium/drivers/radeonsi/si_blit.c
index 8bfa6ed..07396e7 100644
--- a/src/gallium/drivers/radeonsi/si_blit.c
+++ b/src/gallium/drivers/radeonsi/si_blit.c
@@ -483,8 +483,10 @@ static void si_resource_copy_region(struct pipe_context *ctx,
 				    const struct pipe_box *src_box)
 {
 	struct si_context *sctx = (struct si_context *)ctx;
+	struct pipe_surface *dst_view, dst_templ;
+	struct pipe_sampler_view src_templ, *src_view;
 	struct texture_orig_info orig_info[2];
-	struct pipe_box sbox;
+	struct pipe_box sbox, dstbox;
 	boolean restore_orig[2];
 
 	/* Fallback for buffers. */
@@ -562,11 +564,27 @@ static void si_resource_copy_region(struct pipe_context *ctx,
 		restore_orig[1] = TRUE;
 	}
 
+	/* Initialize the surface. */
+	util_blitter_default_dst_texture(&dst_templ, dst, dst_level, dstz);
+	dst_view = ctx->create_surface(ctx, dst, &dst_templ);
+
+	/* Initialize the sampler view. */
+	util_blitter_default_src_texture(&src_templ, src, src_level);
+	src_view = ctx->create_sampler_view(ctx, src, &src_templ);
+
+	u_box_3d(dstx, dsty, dstz, abs(src_box->width), abs(src_box->height),
+		 abs(src_box->depth), &dstbox);
+
+	/* Copy. */
 	si_blitter_begin(ctx, SI_COPY);
-	util_blitter_copy_texture(sctx->blitter, dst, dst_level, dstx, dsty, dstz,
-				  src, src_level, src_box);
+	util_blitter_blit_generic(sctx->blitter, dst_view, &dstbox,
+				  src_view, src_box, src->width0, src->height0,
+				  PIPE_MASK_RGBAZS, PIPE_TEX_FILTER_NEAREST, NULL);
 	si_blitter_end(ctx);
 
+	pipe_surface_reference(&dst_view, NULL);
+	pipe_sampler_view_reference(&src_view, NULL);
+
 	if (restore_orig[0])
 		si_reset_blittable_to_orig(src, src_level, &orig_info[0]);
 
-- 
1.8.3.2



More information about the mesa-dev mailing list