Mesa (main): anv/blorp: Optimize addresses/relocations when ANV_ALWAYS_SOFTPIN

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jun 8 23:09:30 UTC 2021


Module: Mesa
Branch: main
Commit: ddf970af88c80d349294c7b2375dc4609638de74
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ddf970af88c80d349294c7b2375dc4609638de74

Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Tue Jun  8 09:22:44 2021 -0500

anv/blorp: Optimize addresses/relocations when ANV_ALWAYS_SOFTPIN

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11236>

---

 src/intel/vulkan/genX_blorp_exec.c | 32 ++++++++++++++++++++++++++------
 1 file changed, 26 insertions(+), 6 deletions(-)

diff --git a/src/intel/vulkan/genX_blorp_exec.c b/src/intel/vulkan/genX_blorp_exec.c
index cfa96d2549d..7966b30feb6 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



More information about the mesa-commit mailing list