From 921bd2d1c76394aa987d6da5db03fc6b63883e9d Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Tue, 8 Jun 2021 09:15:09 -0500 Subject: [PATCH] anv: Fast-path surface relocs when we have softpin Reviewed-by: Lionel Landwerlin Part-of: --- src/intel/vulkan/genX_cmd_buffer.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index 0af322c199c..ed92852a612 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -243,13 +243,21 @@ static void add_surface_reloc(struct anv_cmd_buffer *cmd_buffer, struct anv_state state, struct anv_address addr) { - const struct isl_device *isl_dev = &cmd_buffer->device->isl_dev; + VkResult result; - VkResult result = - anv_reloc_list_add(&cmd_buffer->surface_relocs, &cmd_buffer->pool->alloc, - state.offset + isl_dev->ss.addr_offset, - addr.bo, addr.offset, NULL); - if (result != VK_SUCCESS) + if (anv_use_softpin(cmd_buffer->device->physical)) { + result = anv_reloc_list_add_bo(&cmd_buffer->surface_relocs, + &cmd_buffer->pool->alloc, + addr.bo); + } else { + const struct isl_device *isl_dev = &cmd_buffer->device->isl_dev; + result = anv_reloc_list_add(&cmd_buffer->surface_relocs, + &cmd_buffer->pool->alloc, + state.offset + isl_dev->ss.addr_offset, + addr.bo, addr.offset, NULL); + } + + if (unlikely(result != VK_SUCCESS)) anv_batch_set_error(&cmd_buffer->batch, result); }