From 4f681d5e2c9e8fc21e397914527b8a87240b0401 Mon Sep 17 00:00:00 2001 From: Tatsuyuki Ishi Date: Tue, 28 Feb 2023 15:32:51 +0900 Subject: [PATCH] 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 Part-of: --- 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 d9224fb..625601c 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; -- 2.7.4