radv: Remove SDMA padding from copy helpers.
authorTatsuyuki Ishi <ishitatsuyuki@gmail.com>
Tue, 28 Feb 2023 06:32:51 +0000 (15:32 +0900)
committerMarge Bot <emma+marge@anholt.net>
Thu, 2 Mar 2023 15:29:47 +0000 (15:29 +0000)
These are handled in winsys already; no need to duplicate and complicate
the code paths.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21585>

src/amd/vulkan/radv_sdma_copy_image.c

index d9224fb..625601c 100644 (file)
@@ -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;