[Mesa-dev] [PATCH 22/26] radeonsi: add a cs parameter into si_cp_copy_data

Marek Olšák maraeo at gmail.com
Wed Feb 13 05:16:17 UTC 2019


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

---
 src/gallium/drivers/radeonsi/si_compute.c     | 2 +-
 src/gallium/drivers/radeonsi/si_cp_dma.c      | 9 ++++-----
 src/gallium/drivers/radeonsi/si_perfcounter.c | 2 +-
 src/gallium/drivers/radeonsi/si_pipe.h        | 2 +-
 src/gallium/drivers/radeonsi/si_state_draw.c  | 2 +-
 5 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_compute.c b/src/gallium/drivers/radeonsi/si_compute.c
index dc6f647d9a8..0d622db91b0 100644
--- a/src/gallium/drivers/radeonsi/si_compute.c
+++ b/src/gallium/drivers/radeonsi/si_compute.c
@@ -721,7 +721,7 @@ static void si_setup_tgsi_user_data(struct si_context *sctx,
 	if (info->indirect) {
 		if (program->uses_grid_size) {
 			for (unsigned i = 0; i < 3; ++i) {
-				si_cp_copy_data(sctx,
+				si_cp_copy_data(sctx, sctx->gfx_cs,
 						COPY_DATA_REG, NULL, (grid_size_reg >> 2) + i,
 						COPY_DATA_SRC_MEM, si_resource(info->indirect),
 						info->indirect_offset + 4 * i);
diff --git a/src/gallium/drivers/radeonsi/si_cp_dma.c b/src/gallium/drivers/radeonsi/si_cp_dma.c
index 4e7a89b77b9..2048d52cd3c 100644
--- a/src/gallium/drivers/radeonsi/si_cp_dma.c
+++ b/src/gallium/drivers/radeonsi/si_cp_dma.c
@@ -607,18 +607,17 @@ void si_cp_write_data(struct si_context *sctx, struct si_resource *buf,
 	radeon_emit_array(cs, (const uint32_t*)data, size/4);
 }
 
-void si_cp_copy_data(struct si_context *sctx,
+void si_cp_copy_data(struct si_context *sctx, struct radeon_cmdbuf *cs,
 		     unsigned dst_sel, struct si_resource *dst, unsigned dst_offset,
 		     unsigned src_sel, struct si_resource *src, unsigned src_offset)
 {
-	struct radeon_cmdbuf *cs = sctx->gfx_cs;
-
+	/* cs can point to the compute IB, which has the buffer list in gfx_cs. */
 	if (dst) {
-		radeon_add_to_buffer_list(sctx, cs, dst,
+		radeon_add_to_buffer_list(sctx, sctx->gfx_cs, dst,
 					  RADEON_USAGE_WRITE, RADEON_PRIO_CP_DMA);
 	}
 	if (src) {
-		radeon_add_to_buffer_list(sctx, cs, src,
+		radeon_add_to_buffer_list(sctx, sctx->gfx_cs, src,
 					  RADEON_USAGE_READ, RADEON_PRIO_CP_DMA);
 	}
 
diff --git a/src/gallium/drivers/radeonsi/si_perfcounter.c b/src/gallium/drivers/radeonsi/si_perfcounter.c
index 7cf3b86c73a..2c3e410daa6 100644
--- a/src/gallium/drivers/radeonsi/si_perfcounter.c
+++ b/src/gallium/drivers/radeonsi/si_perfcounter.c
@@ -671,7 +671,7 @@ static void si_pc_emit_start(struct si_context *sctx,
 {
 	struct radeon_cmdbuf *cs = sctx->gfx_cs;
 
-	si_cp_copy_data(sctx,
+	si_cp_copy_data(sctx, sctx->gfx_cs,
 			COPY_DATA_DST_MEM, buffer, va - buffer->gpu_address,
 			COPY_DATA_IMM, NULL, 1);
 
diff --git a/src/gallium/drivers/radeonsi/si_pipe.h b/src/gallium/drivers/radeonsi/si_pipe.h
index e1f7588da41..c96adbb84bf 100644
--- a/src/gallium/drivers/radeonsi/si_pipe.h
+++ b/src/gallium/drivers/radeonsi/si_pipe.h
@@ -1228,7 +1228,7 @@ void si_test_gds(struct si_context *sctx);
 void si_cp_write_data(struct si_context *sctx, struct si_resource *buf,
 		      unsigned offset, unsigned size, unsigned dst_sel,
 		      unsigned engine, const void *data);
-void si_cp_copy_data(struct si_context *sctx,
+void si_cp_copy_data(struct si_context *sctx, struct radeon_cmdbuf *cs,
 		     unsigned dst_sel, struct si_resource *dst, unsigned dst_offset,
 		     unsigned src_sel, struct si_resource *src, unsigned src_offset);
 
diff --git a/src/gallium/drivers/radeonsi/si_state_draw.c b/src/gallium/drivers/radeonsi/si_state_draw.c
index 3d00d5aef0e..8836574130f 100644
--- a/src/gallium/drivers/radeonsi/si_state_draw.c
+++ b/src/gallium/drivers/radeonsi/si_state_draw.c
@@ -691,7 +691,7 @@ static void si_emit_draw_packets(struct si_context *sctx,
 
 		radeon_set_context_reg(cs, R_028B30_VGT_STRMOUT_DRAW_OPAQUE_VERTEX_STRIDE,
 				       t->stride_in_dw);
-		si_cp_copy_data(sctx,
+		si_cp_copy_data(sctx, sctx->gfx_cs,
 				COPY_DATA_REG, NULL,
 				R_028B2C_VGT_STRMOUT_DRAW_OPAQUE_BUFFER_FILLED_SIZE >> 2,
 				COPY_DATA_SRC_MEM, t->buf_filled_size,
-- 
2.17.1



More information about the mesa-dev mailing list