From d056f36fab72ca3f4cc93a07a930f83b55cc438a Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Thu, 6 Jun 2024 13:08:48 +0300 Subject: [PATCH] anv: use the new relocated write mi-builder api MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Lionel Landwerlin Reviewed-by: José Roberto de Souza Part-of: --- src/intel/vulkan/anv_batch_chain.c | 2 +- src/intel/vulkan/anv_genX.h | 1 + src/intel/vulkan/genX_cmd_buffer.c | 21 ++++++++++----------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/intel/vulkan/anv_batch_chain.c b/src/intel/vulkan/anv_batch_chain.c index 36ded1733c5..9b200e7ab2a 100644 --- a/src/intel/vulkan/anv_batch_chain.c +++ b/src/intel/vulkan/anv_batch_chain.c @@ -1185,7 +1185,7 @@ anv_cmd_buffer_add_secondary(struct anv_cmd_buffer *primary, list_first_entry(&secondary->batch_bos, struct anv_batch_bo, link); anv_genX(primary->device->info, batch_emit_secondary_call)( - &primary->batch, + &primary->batch, primary->device, (struct anv_address) { .bo = first_bbo->bo }, secondary->return_addr); diff --git a/src/intel/vulkan/anv_genX.h b/src/intel/vulkan/anv_genX.h index c469bb57910..3f1d359c4b9 100644 --- a/src/intel/vulkan/anv_genX.h +++ b/src/intel/vulkan/anv_genX.h @@ -230,6 +230,7 @@ void genX(blorp_exec)(struct blorp_batch *batch, const struct blorp_params *params); void genX(batch_emit_secondary_call)(struct anv_batch *batch, + struct anv_device *device, struct anv_address secondary_addr, struct anv_address secondary_return_addr); diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index a0d356d5d21..ec97cbfc9fb 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -5844,19 +5844,17 @@ void genX(cmd_emit_timestamp)(struct anv_batch *batch, } void genX(batch_emit_secondary_call)(struct anv_batch *batch, + struct anv_device *device, struct anv_address secondary_addr, struct anv_address secondary_return_addr) { + struct mi_builder b; + mi_builder_init(&b, device->info, batch); + mi_builder_set_mocs(&b, anv_mocs_for_address(device, &secondary_return_addr)); + /* Emit a write to change the return address of the secondary */ - uint64_t *write_return_addr = - anv_batch_emitn(batch, - GENX(MI_STORE_DATA_IMM_length) + 1 /* QWord write */, - GENX(MI_STORE_DATA_IMM), -#if GFX_VER >= 12 - .ForceWriteCompletionCheck = true, -#endif - .Address = secondary_return_addr) + - GENX(MI_STORE_DATA_IMM_ImmediateData_start) / 8; + struct mi_reloc_imm_token reloc = + mi_store_relocated_imm(&b, mi_mem64(secondary_return_addr)); #if GFX_VER >= 12 /* Disable prefetcher before jumping into a secondary */ @@ -5876,8 +5874,9 @@ void genX(batch_emit_secondary_call)(struct anv_batch *batch, /* Replace the return address written by the MI_STORE_DATA_IMM above with * the primary's current batch address (immediately after the jump). */ - *write_return_addr = - anv_address_physical(anv_batch_current_address(batch)); + mi_relocate_store_imm(reloc, + anv_address_physical( + anv_batch_current_address(batch))); } void *