OSDN Git Service

radeonsi: simplify constant buffer upload for big endian
authorMarek Olšák <marek.olsak@amd.com>
Sat, 9 Aug 2014 20:26:46 +0000 (22:26 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Sun, 10 Aug 2014 10:52:13 +0000 (12:52 +0200)
Point util_memcpy_cpu_to_le32 to a buffer storage directly.

v2: simplify more

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
src/gallium/drivers/radeonsi/si_descriptors.c

index 81ad14b..c877797 100644 (file)
@@ -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,