radeonsi: raise the max size for SDMA buffer copies
authorMarek Olšák <marek.olsak@amd.com>
Tue, 26 Apr 2016 17:10:43 +0000 (19:10 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Tue, 10 May 2016 15:20:09 +0000 (17:20 +0200)
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/drivers/radeonsi/cik_sdma.c
src/gallium/drivers/radeonsi/sid.h

index ec3446a5b5f6a6a144ef88572010dbf93062d7be..88a994ee390a981b9f12fa4cf40a5b22759361b7 100644 (file)
@@ -46,7 +46,7 @@ static void cik_sdma_do_copy_buffer(struct si_context *ctx,
        dst_offset += r600_resource(dst)->gpu_address;
        src_offset += r600_resource(src)->gpu_address;
 
-       ncopy = (size + CIK_SDMA_COPY_MAX_SIZE - 1) / CIK_SDMA_COPY_MAX_SIZE;
+       ncopy = DIV_ROUND_UP(size, CIK_SDMA_COPY_MAX_SIZE);
        r600_need_dma_space(&ctx->b, ncopy * 7);
 
        radeon_add_to_buffer_list(&ctx->b, &ctx->b.dma, rsrc, RADEON_USAGE_READ,
@@ -55,7 +55,7 @@ static void cik_sdma_do_copy_buffer(struct si_context *ctx,
                              RADEON_PRIO_SDMA_BUFFER);
 
        for (i = 0; i < ncopy; i++) {
-               csize = size < CIK_SDMA_COPY_MAX_SIZE ? size : CIK_SDMA_COPY_MAX_SIZE;
+               csize = MIN2(size, CIK_SDMA_COPY_MAX_SIZE);
                cs->buf[cs->cdw++] = CIK_SDMA_PACKET(CIK_SDMA_OPCODE_COPY,
                                                     CIK_SDMA_COPY_SUB_OPCODE_LINEAR,
                                                     0);
index da4f4fa2ed8513df96356600c8c0cda7d51fb010..dcd63727058f4fb527c08e44e35d33fdda02ae1a 100644 (file)
 #define    CIK_SDMA_PACKET_SEMAPHORE               0x7
 #define    CIK_SDMA_PACKET_CONSTANT_FILL           0xb
 #define    CIK_SDMA_PACKET_SRBM_WRITE              0xe
-#define    CIK_SDMA_COPY_MAX_SIZE                  0x1fffff
+#define    CIK_SDMA_COPY_MAX_SIZE                  0x3fffe0
 
 #endif /* _SID_H */