Module: Mesa
Branch: main
Commit: 4f681d5e2c9e8fc21e397914527b8a87240b0401
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4f681d5e2c9e8fc21e397914527b8a87240b0401

Author: Tatsuyuki Ishi <[email protected]>
Date:   Tue Feb 28 15:32:51 2023 +0900

radv: Remove SDMA padding from copy helpers.

These are handled in winsys already; no need to duplicate and complicate
the code paths.

Reviewed-by: Samuel Pitoiset <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21585>

---

 src/amd/vulkan/radv_sdma_copy_image.c | 18 +++---------------
 1 file changed, 3 insertions(+), 15 deletions(-)

diff --git a/src/amd/vulkan/radv_sdma_copy_image.c 
b/src/amd/vulkan/radv_sdma_copy_image.c
index d9224fbb510..625601c7ea8 100644
--- a/src/amd/vulkan/radv_sdma_copy_image.c
+++ b/src/amd/vulkan/radv_sdma_copy_image.c
@@ -77,19 +77,14 @@ radv_sdma_v4_v5_copy_image_to_buffer(struct radv_cmd_buffer 
*cmd_buffer, struct
    unsigned copy_height = DIV_ROUND_UP(image->info.height, 
image->planes[0].surface.blk_h);
    bool tmz = false;
 
-   uint32_t ib_pad_dw_mask = 
cmd_buffer->device->physical_device->rad_info.ib_pad_dw_mask[AMD_IP_SDMA];
-
    /* Linear -> linear sub-window copy. */
    if (image->planes[0].surface.is_linear) {
-      ASSERTED unsigned cdw_max =
-         radeon_check_space(cmd_buffer->device->ws, cmd_buffer->cs, align(8, 
ib_pad_dw_mask + 1));
+      ASSERTED unsigned cdw_max = radeon_check_space(cmd_buffer->device->ws, 
cmd_buffer->cs, 7);
       unsigned bytes = src_pitch * copy_height * bpp;
 
       if (!(bytes < (1u << 22)))
          return false;
 
-      radeon_emit(cmd_buffer->cs, 0x00000000);
-
       src_address += image->planes[0].surface.u.gfx9.offset[0];
 
       radeon_emit(cmd_buffer->cs, CIK_SDMA_PACKET(CIK_SDMA_OPCODE_COPY,
@@ -101,9 +96,6 @@ radv_sdma_v4_v5_copy_image_to_buffer(struct radv_cmd_buffer 
*cmd_buffer, struct
       radeon_emit(cmd_buffer->cs, dst_address);
       radeon_emit(cmd_buffer->cs, dst_address >> 32);
 
-      while (cmd_buffer->cs->cdw & ib_pad_dw_mask)
-         radeon_emit(cmd_buffer->cs, SDMA_NOP_PAD);
-
       assert(cmd_buffer->cs->cdw <= cdw_max);
 
       return true;
@@ -125,10 +117,9 @@ radv_sdma_v4_v5_copy_image_to_buffer(struct 
radv_cmd_buffer *cmd_buffer, struct
             linear_slice_pitch < (1 << 28) && copy_width < (1 << 14) && 
copy_height < (1 << 14)))
          return false;
 
-      ASSERTED unsigned cdw_max = radeon_check_space(cmd_buffer->device->ws, 
cmd_buffer->cs,
-                                                     align(15 + dcc * 3, 
ib_pad_dw_mask + 1));
+      ASSERTED unsigned cdw_max =
+         radeon_check_space(cmd_buffer->device->ws, cmd_buffer->cs, 14 + (dcc 
? 3 : 0));
 
-      radeon_emit(cmd_buffer->cs, 0x00000000);
       radeon_emit(cmd_buffer->cs,
                   CIK_SDMA_PACKET(CIK_SDMA_OPCODE_COPY, 
CIK_SDMA_COPY_SUB_OPCODE_TILED_SUB_WINDOW,
                                   (tmz ? 4 : 0)) |
@@ -172,9 +163,6 @@ radv_sdma_v4_v5_copy_image_to_buffer(struct radv_cmd_buffer 
*cmd_buffer, struct
                         image->planes[0].surface.u.gfx9.color.dcc.pipe_aligned 
<< 31);
       }
 
-      while (cmd_buffer->cs->cdw & ib_pad_dw_mask)
-         radeon_emit(cmd_buffer->cs, SDMA_NOP_PAD);
-
       assert(cmd_buffer->cs->cdw <= cdw_max);
 
       return true;

Reply via email to