Mesa (main): turnip: Store the computed iova in the tu_image.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Feb 1 16:03:02 UTC 2022


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

Author: Emma Anholt <emma at anholt.net>
Date:   Mon Jan 31 21:32:30 2022 -0800

turnip: Store the computed iova in the tu_image.

Less of a big deal than for buffers, but let's be consistent in how we
handle our bindings.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14816>

---

 src/freedreno/vulkan/tu_clear_blit.c | 4 ++--
 src/freedreno/vulkan/tu_cmd_buffer.c | 3 +--
 src/freedreno/vulkan/tu_device.c     | 4 ++--
 src/freedreno/vulkan/tu_image.c      | 4 ++--
 src/freedreno/vulkan/tu_private.h    | 2 +-
 5 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/src/freedreno/vulkan/tu_clear_blit.c b/src/freedreno/vulkan/tu_clear_blit.c
index fc2fe87ac94..ebaefcd9c50 100644
--- a/src/freedreno/vulkan/tu_clear_blit.c
+++ b/src/freedreno/vulkan/tu_clear_blit.c
@@ -1224,7 +1224,7 @@ tu6_clear_lrz(struct tu_cmd_buffer *cmd,
               VK_SAMPLE_COUNT_1_BIT);
    ops->clear_value(cs, PIPE_FORMAT_Z16_UNORM, value);
    ops->dst_buffer(cs, PIPE_FORMAT_Z16_UNORM,
-                   image->bo->iova + image->bo_offset + image->lrz_offset,
+                   image->iova + image->lrz_offset,
                    image->lrz_pitch * 2);
    ops->coords(cs, &(VkOffset2D) {}, NULL, &(VkExtent2D) {image->lrz_pitch, image->lrz_height});
    ops->run(cmd, cs);
@@ -1252,7 +1252,7 @@ tu_image_view_copy_blit(struct fdl6_view *iview,
       &image->layout[tu6_plane_index(image->vk_format, aspect_mask)];
 
    fdl6_view_init(iview, &layout, &(struct fdl_view_args) {
-      .iova = image->bo->iova + image->bo_offset,
+      .iova = image->iova,
       .base_array_layer = subres->baseArrayLayer + layer,
       .layer_count = 1,
       .base_miplevel = subres->mipLevel,
diff --git a/src/freedreno/vulkan/tu_cmd_buffer.c b/src/freedreno/vulkan/tu_cmd_buffer.c
index 92b6d83780a..3f1a7aec9a6 100644
--- a/src/freedreno/vulkan/tu_cmd_buffer.c
+++ b/src/freedreno/vulkan/tu_cmd_buffer.c
@@ -242,8 +242,7 @@ tu6_emit_zs(struct tu_cmd_buffer *cmd,
    tu_cs_emit_pkt4(cs, REG_A6XX_RB_DEPTH_FLAG_BUFFER_BASE, 3);
    tu_cs_image_flag_ref(cs, &iview->view, 0);
 
-   tu_cs_emit_regs(cs, A6XX_GRAS_LRZ_BUFFER_BASE(.bo = iview->image->bo,
-                                                 .bo_offset = iview->image->bo_offset + iview->image->lrz_offset),
+   tu_cs_emit_regs(cs, A6XX_GRAS_LRZ_BUFFER_BASE(.qword = iview->image->iova + iview->image->lrz_offset),
                    A6XX_GRAS_LRZ_BUFFER_PITCH(.pitch = iview->image->lrz_pitch),
                    A6XX_GRAS_LRZ_FAST_CLEAR_BUFFER_BASE());
 
diff --git a/src/freedreno/vulkan/tu_device.c b/src/freedreno/vulkan/tu_device.c
index 7fe30f362df..d87f6d9fd26 100644
--- a/src/freedreno/vulkan/tu_device.c
+++ b/src/freedreno/vulkan/tu_device.c
@@ -2287,10 +2287,10 @@ tu_BindImageMemory2(VkDevice device,
 
       if (mem) {
          image->bo = &mem->bo;
-         image->bo_offset = pBindInfos[i].memoryOffset;
+         image->iova = mem->bo.iova + pBindInfos[i].memoryOffset;
       } else {
          image->bo = NULL;
-         image->bo_offset = 0;
+         image->iova = 0;
       }
    }
 
diff --git a/src/freedreno/vulkan/tu_image.c b/src/freedreno/vulkan/tu_image.c
index a1c09fa303e..4c43e5cb03d 100644
--- a/src/freedreno/vulkan/tu_image.c
+++ b/src/freedreno/vulkan/tu_image.c
@@ -184,7 +184,7 @@ tu_image_view_init(struct tu_image_view *iview,
    }
 
    struct fdl_view_args args = {};
-   args.iova = image->bo->iova + image->bo_offset;
+   args.iova = image->iova;
    args.base_array_layer = range->baseArrayLayer;
    args.base_miplevel = range->baseMipLevel;
    args.layer_count = tu_get_layerCount(image, range);
@@ -230,7 +230,7 @@ tu_image_view_init(struct tu_image_view *iview,
 
    if (image->vk_format == VK_FORMAT_D32_SFLOAT_S8_UINT) {
       struct fdl_layout *layout = &image->layout[1];
-      iview->stencil_base_addr = image->bo->iova + image->bo_offset +
+      iview->stencil_base_addr = image->iova +
          fdl_surface_offset(layout, range->baseMipLevel, range->baseArrayLayer);
       iview->stencil_layer_size = fdl_layer_stride(layout, range->baseMipLevel);
       iview->stencil_PITCH = A6XX_RB_STENCIL_BUFFER_PITCH(fdl_pitch(layout, range->baseMipLevel)).value;
diff --git a/src/freedreno/vulkan/tu_private.h b/src/freedreno/vulkan/tu_private.h
index 5655a72509b..48b83467773 100644
--- a/src/freedreno/vulkan/tu_private.h
+++ b/src/freedreno/vulkan/tu_private.h
@@ -1483,7 +1483,7 @@ struct tu_image
 
    /* Set when bound */
    struct tu_bo *bo;
-   VkDeviceSize bo_offset;
+   uint64_t iova;
 
    uint32_t lrz_height;
    uint32_t lrz_pitch;



More information about the mesa-commit mailing list