From: Jason Ekstrand Date: Tue, 8 Jun 2021 14:22:44 +0000 (-0500) Subject: anv/blorp: Optimize addresses/relocations when ANV_ALWAYS_SOFTPIN X-Git-Tag: upstream/21.2.3~2319 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ddf970af88c80d349294c7b2375dc4609638de74;p=platform%2Fupstream%2Fmesa.git anv/blorp: Optimize addresses/relocations when ANV_ALWAYS_SOFTPIN Reviewed-by: Lionel Landwerlin Part-of: --- diff --git a/src/intel/vulkan/genX_blorp_exec.c b/src/intel/vulkan/genX_blorp_exec.c index cfa96d2..7966b30 100644 --- a/src/intel/vulkan/genX_blorp_exec.c +++ b/src/intel/vulkan/genX_blorp_exec.c @@ -66,11 +66,23 @@ blorp_surface_reloc(struct blorp_batch *batch, uint32_t ss_offset, struct blorp_address address, uint32_t delta) { struct anv_cmd_buffer *cmd_buffer = batch->driver_batch; + VkResult result; + + if (ANV_ALWAYS_SOFTPIN) { + result = anv_reloc_list_add_bo(&cmd_buffer->surface_relocs, + &cmd_buffer->pool->alloc, + address.buffer); + if (unlikely(result != VK_SUCCESS)) + anv_batch_set_error(&cmd_buffer->batch, result); + return; + } + uint64_t address_u64 = 0; - VkResult result = - anv_reloc_list_add(&cmd_buffer->surface_relocs, &cmd_buffer->pool->alloc, - ss_offset, address.buffer, address.offset + delta, - &address_u64); + result = anv_reloc_list_add(&cmd_buffer->surface_relocs, + &cmd_buffer->pool->alloc, + ss_offset, address.buffer, + address.offset + delta, + &address_u64); if (result != VK_SUCCESS) anv_batch_set_error(&cmd_buffer->batch, result); @@ -83,8 +95,16 @@ static uint64_t blorp_get_surface_address(struct blorp_batch *blorp_batch, struct blorp_address address) { - /* We'll let blorp_surface_reloc write the address. */ - return 0ull; + if (ANV_ALWAYS_SOFTPIN) { + struct anv_address anv_addr = { + .bo = address.buffer, + .offset = address.offset, + }; + return anv_address_physical(anv_addr); + } else { + /* We'll let blorp_surface_reloc write the address. */ + return 0; + } } #if GFX_VER >= 7 && GFX_VER < 10