anv: use the new relocated write mi-builder api
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: José Roberto de Souza <jose.souza@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29571>
This commit is contained in:

committed by
Marge Bot

parent
3e4f6def87
commit
d056f36fab
@@ -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);
|
list_first_entry(&secondary->batch_bos, struct anv_batch_bo, link);
|
||||||
|
|
||||||
anv_genX(primary->device->info, batch_emit_secondary_call)(
|
anv_genX(primary->device->info, batch_emit_secondary_call)(
|
||||||
&primary->batch,
|
&primary->batch, primary->device,
|
||||||
(struct anv_address) { .bo = first_bbo->bo },
|
(struct anv_address) { .bo = first_bbo->bo },
|
||||||
secondary->return_addr);
|
secondary->return_addr);
|
||||||
|
|
||||||
|
@@ -230,6 +230,7 @@ void genX(blorp_exec)(struct blorp_batch *batch,
|
|||||||
const struct blorp_params *params);
|
const struct blorp_params *params);
|
||||||
|
|
||||||
void genX(batch_emit_secondary_call)(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_addr,
|
||||||
struct anv_address secondary_return_addr);
|
struct anv_address secondary_return_addr);
|
||||||
|
|
||||||
|
@@ -5844,19 +5844,17 @@ void genX(cmd_emit_timestamp)(struct anv_batch *batch,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void genX(batch_emit_secondary_call)(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_addr,
|
||||||
struct anv_address secondary_return_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 */
|
/* Emit a write to change the return address of the secondary */
|
||||||
uint64_t *write_return_addr =
|
struct mi_reloc_imm_token reloc =
|
||||||
anv_batch_emitn(batch,
|
mi_store_relocated_imm(&b, mi_mem64(secondary_return_addr));
|
||||||
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;
|
|
||||||
|
|
||||||
#if GFX_VER >= 12
|
#if GFX_VER >= 12
|
||||||
/* Disable prefetcher before jumping into a secondary */
|
/* 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
|
/* Replace the return address written by the MI_STORE_DATA_IMM above with
|
||||||
* the primary's current batch address (immediately after the jump).
|
* the primary's current batch address (immediately after the jump).
|
||||||
*/
|
*/
|
||||||
*write_return_addr =
|
mi_relocate_store_imm(reloc,
|
||||||
anv_address_physical(anv_batch_current_address(batch));
|
anv_address_physical(
|
||||||
|
anv_batch_current_address(batch)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void *
|
void *
|
||||||
|
Reference in New Issue
Block a user