radeonsi: don't use util_memcpy_cpu_to_le32 for shader uploads
authorMarek Olšák <marek.olsak@amd.com>
Thu, 27 Apr 2017 17:19:53 +0000 (19:19 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Thu, 4 May 2017 22:23:44 +0000 (00:23 +0200)
at least I think this is correct.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/drivers/radeonsi/si_shader.c

index c4d102e02022fb3511a08c79cb650fb5d7f34560..f9b9405259753aae6ff93aebdf9b9b33c8d13646 100644 (file)
@@ -6575,27 +6575,28 @@ int si_shader_binary_upload(struct si_screen *sscreen, struct si_shader *shader)
                                        PIPE_TRANSFER_READ_WRITE |
                                        PIPE_TRANSFER_UNSYNCHRONIZED);
 
+       /* Don't use util_memcpy_cpu_to_le32. LLVM binaries are
+        * endian-independent. */
        if (prolog) {
-               util_memcpy_cpu_to_le32(ptr, prolog->code, prolog->code_size);
+               memcpy(ptr, prolog->code, prolog->code_size);
                ptr += prolog->code_size;
        }
        if (previous_stage) {
-               util_memcpy_cpu_to_le32(ptr, previous_stage->code,
-                                       previous_stage->code_size);
+               memcpy(ptr, previous_stage->code, previous_stage->code_size);
                ptr += previous_stage->code_size;
        }
        if (prolog2) {
-               util_memcpy_cpu_to_le32(ptr, prolog2->code, prolog2->code_size);
+               memcpy(ptr, prolog2->code, prolog2->code_size);
                ptr += prolog2->code_size;
        }
 
-       util_memcpy_cpu_to_le32(ptr, mainb->code, mainb->code_size);
+       memcpy(ptr, mainb->code, mainb->code_size);
        ptr += mainb->code_size;
 
        if (epilog)
-               util_memcpy_cpu_to_le32(ptr, epilog->code, epilog->code_size);
+               memcpy(ptr, epilog->code, epilog->code_size);
        else if (mainb->rodata_size > 0)
-               util_memcpy_cpu_to_le32(ptr, mainb->rodata, mainb->rodata_size);
+               memcpy(ptr, mainb->rodata, mainb->rodata_size);
 
        sscreen->b.ws->buffer_unmap(shader->bo->buf);
        return 0;