anv/blorp: Optimize addresses/relocations when ANV_ALWAYS_SOFTPIN
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11236>
This commit is contained in:
committed by
Marge Bot
parent
c7e1488037
commit
ddf970af88
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user