Re: [Mesa-dev] [PATCH] radeonsi: simplify constant buffer upload for big endian
No, there isn't. That's a very good point. Marek On Sun, Aug 10, 2014 at 5:10 AM, Michel Dänzer mic...@daenzer.net wrote: On 10.08.2014 06:54, Marek Olšák wrote: From: Marek Olšák marek.ol...@amd.com Point util_memcpy_cpu_to_le32 to a buffer storage directly. --- src/gallium/drivers/radeonsi/si_descriptors.c | 15 +++ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c b/src/gallium/drivers/radeonsi/si_descriptors.c index 81ad14b..bfd2b76 100644 --- a/src/gallium/drivers/radeonsi/si_descriptors.c +++ b/src/gallium/drivers/radeonsi/si_descriptors.c @@ -649,20 +649,11 @@ void si_upload_const_buffer(struct si_context *sctx, struct r600_resource **rbuf const uint8_t *ptr, unsigned size, uint32_t *const_offset) { if (SI_BIG_ENDIAN) { - uint32_t *tmpPtr; - unsigned i; - - if (!(tmpPtr = malloc(size))) { - R600_ERR(Failed to allocate BE swap buffer.\n); - return; - } + void *tmpPtr; + u_upload_alloc(sctx-b.uploader, 0, size, const_offset, +(struct pipe_resource**)rbuffer, tmpPtr); 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); Since util_memcpy_cpu_to_le32() is memcpy() on little endian, is there any point keeping the separate (non-)SI_BIG_ENDIAN paths here? Either way, Reviewed-by: Michel Dänzer michel.daen...@amd.com -- Earthling Michel Dänzer| http://www.amd.com Libre software enthusiast |Mesa and X developer ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [PATCH] radeonsi: simplify constant buffer upload for big endian
From: Marek Olšák marek.ol...@amd.com Point util_memcpy_cpu_to_le32 to a buffer storage directly. --- src/gallium/drivers/radeonsi/si_descriptors.c | 15 +++ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c b/src/gallium/drivers/radeonsi/si_descriptors.c index 81ad14b..bfd2b76 100644 --- a/src/gallium/drivers/radeonsi/si_descriptors.c +++ b/src/gallium/drivers/radeonsi/si_descriptors.c @@ -649,20 +649,11 @@ void si_upload_const_buffer(struct si_context *sctx, struct r600_resource **rbuf const uint8_t *ptr, unsigned size, uint32_t *const_offset) { if (SI_BIG_ENDIAN) { - uint32_t *tmpPtr; - unsigned i; - - if (!(tmpPtr = malloc(size))) { - R600_ERR(Failed to allocate BE swap buffer.\n); - return; - } + void *tmpPtr; + u_upload_alloc(sctx-b.uploader, 0, size, const_offset, + (struct pipe_resource**)rbuffer, tmpPtr); 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); -- 1.9.1 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] radeonsi: simplify constant buffer upload for big endian
On 10.08.2014 06:54, Marek Olšák wrote: From: Marek Olšák marek.ol...@amd.com Point util_memcpy_cpu_to_le32 to a buffer storage directly. --- src/gallium/drivers/radeonsi/si_descriptors.c | 15 +++ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c b/src/gallium/drivers/radeonsi/si_descriptors.c index 81ad14b..bfd2b76 100644 --- a/src/gallium/drivers/radeonsi/si_descriptors.c +++ b/src/gallium/drivers/radeonsi/si_descriptors.c @@ -649,20 +649,11 @@ void si_upload_const_buffer(struct si_context *sctx, struct r600_resource **rbuf const uint8_t *ptr, unsigned size, uint32_t *const_offset) { if (SI_BIG_ENDIAN) { - uint32_t *tmpPtr; - unsigned i; - - if (!(tmpPtr = malloc(size))) { - R600_ERR(Failed to allocate BE swap buffer.\n); - return; - } + void *tmpPtr; + u_upload_alloc(sctx-b.uploader, 0, size, const_offset, +(struct pipe_resource**)rbuffer, tmpPtr); 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); Since util_memcpy_cpu_to_le32() is memcpy() on little endian, is there any point keeping the separate (non-)SI_BIG_ENDIAN paths here? Either way, Reviewed-by: Michel Dänzer michel.daen...@amd.com -- Earthling Michel Dänzer| http://www.amd.com Libre software enthusiast |Mesa and X developer ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev