radv: optimize CPU overhead of si_cp_dma_prefetch() slightly
Gitlab: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5008 Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14618>
This commit is contained in:

committed by
Marge Bot

parent
272fba8e75
commit
c47b8d7bf3
@@ -1541,8 +1541,35 @@ si_cp_dma_prefetch(struct radv_cmd_buffer *cmd_buffer, uint64_t va, unsigned siz
|
||||
uint64_t aligned_va = va & ~(SI_CPDMA_ALIGNMENT - 1);
|
||||
uint64_t aligned_size =
|
||||
((va + size + SI_CPDMA_ALIGNMENT - 1) & ~(SI_CPDMA_ALIGNMENT - 1)) - aligned_va;
|
||||
struct radeon_cmdbuf *cs = cmd_buffer->cs;
|
||||
uint32_t header = 0, command = 0;
|
||||
|
||||
si_emit_cp_dma(cmd_buffer, aligned_va, aligned_va, aligned_size, CP_DMA_USE_L2);
|
||||
assert(size <= cp_dma_max_byte_count(cmd_buffer));
|
||||
|
||||
radeon_check_space(cmd_buffer->device->ws, cmd_buffer->cs, 9);
|
||||
|
||||
if (cmd_buffer->device->physical_device->rad_info.chip_class >= GFX9) {
|
||||
command |= S_415_BYTE_COUNT_GFX9(aligned_size) |
|
||||
S_415_DISABLE_WR_CONFIRM_GFX9(1);
|
||||
header |= S_411_DST_SEL(V_411_NOWHERE);
|
||||
} else {
|
||||
command |= S_415_BYTE_COUNT_GFX6(aligned_size) |
|
||||
S_415_DISABLE_WR_CONFIRM_GFX6(1);
|
||||
header |= S_411_DST_SEL(V_411_DST_ADDR_TC_L2);
|
||||
}
|
||||
|
||||
header |= S_411_SRC_SEL(V_411_SRC_ADDR_TC_L2);
|
||||
|
||||
radeon_emit(cs, PKT3(PKT3_DMA_DATA, 5, cmd_buffer->state.predicating));
|
||||
radeon_emit(cs, header);
|
||||
radeon_emit(cs, aligned_va); /* SRC_ADDR_LO [31:0] */
|
||||
radeon_emit(cs, aligned_va >> 32); /* SRC_ADDR_HI [31:0] */
|
||||
radeon_emit(cs, aligned_va); /* DST_ADDR_LO [31:0] */
|
||||
radeon_emit(cs, aligned_va >> 32); /* DST_ADDR_HI [31:0] */
|
||||
radeon_emit(cs, command);
|
||||
|
||||
if (unlikely(cmd_buffer->device->trace_bo))
|
||||
radv_cmd_buffer_trace_emit(cmd_buffer);
|
||||
}
|
||||
|
||||
static void
|
||||
|
Reference in New Issue
Block a user