Mesa (master): radeonsi: simplify constant buffer upload for big endian

Marek Olšák mareko at kemper.freedesktop.org
Sun Aug 10 10:52:58 UTC 2014


Module: Mesa
Branch: master
Commit: a65611f70abc91f86e41aeaf5fa1941e3440feb6
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a65611f70abc91f86e41aeaf5fa1941e3440feb6

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Sat Aug  9 22:26:46 2014 +0200

radeonsi: simplify constant buffer upload for big endian

Point util_memcpy_cpu_to_le32 to a buffer storage directly.

v2: simplify more

Reviewed-by: Michel Dänzer <michel.daenzer at amd.com>

---

 src/gallium/drivers/radeonsi/si_descriptors.c |   22 ++++------------------
 1 file changed, 4 insertions(+), 18 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c b/src/gallium/drivers/radeonsi/si_descriptors.c
index 81ad14b..c877797 100644
--- a/src/gallium/drivers/radeonsi/si_descriptors.c
+++ b/src/gallium/drivers/radeonsi/si_descriptors.c
@@ -648,25 +648,11 @@ void si_update_vertex_buffers(struct si_context *sctx)
 void si_upload_const_buffer(struct si_context *sctx, struct r600_resource **rbuffer,
 			    const uint8_t *ptr, unsigned size, uint32_t *const_offset)
 {
-	if (SI_BIG_ENDIAN) {
-		uint32_t *tmpPtr;
-		unsigned i;
+	void *tmp;
 
-		if (!(tmpPtr = malloc(size))) {
-			R600_ERR("Failed to allocate BE swap buffer.\n");
-			return;
-		}
-
-		util_memcpy_cpu_to_le32(tmpPtr, ptr, size);
-
-		u_upload_data(sctx->b.uploader, 0, size, tmpPtr, const_offset,
-				(struct pipe_resource**)rbuffer);
-
-		free(tmpPtr);
-	} else {
-		u_upload_data(sctx->b.uploader, 0, size, ptr, const_offset,
-					(struct pipe_resource**)rbuffer);
-	}
+	u_upload_alloc(sctx->b.uploader, 0, size, const_offset,
+		       (struct pipe_resource**)rbuffer, &tmp);
+	util_memcpy_cpu_to_le32(tmp, ptr, size);
 }
 
 static void si_set_constant_buffer(struct pipe_context *ctx, uint shader, uint slot,




More information about the mesa-commit mailing list