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

Author: Marek Olšák <marek.ol...@amd.com>
Date:   Thu Dec 21 01:00:07 2023 -0500

winsys/amdgpu: remove amdgpu_bo_sparse::gpu_address, use 
amdgpu_va_get_start_addr

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-pra...@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26914>

---

 src/gallium/winsys/amdgpu/drm/amdgpu_bo.c | 17 ++++++++++-------
 src/gallium/winsys/amdgpu/drm/amdgpu_bo.h |  1 -
 2 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c 
b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c
index b263f20d92a..fea6026500f 100644
--- a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c
+++ b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c
@@ -1003,7 +1003,7 @@ static void amdgpu_bo_sparse_destroy(struct radeon_winsys 
*rws, struct pb_buffer
 
    r = amdgpu_bo_va_op_raw(ws->dev, NULL, 0,
                            (uint64_t)bo->num_va_pages * 
RADEON_SPARSE_PAGE_SIZE,
-                           bo->gpu_address, 0, AMDGPU_VA_OP_CLEAR);
+                           amdgpu_va_get_start_addr(bo->va_handle), 0, 
AMDGPU_VA_OP_CLEAR);
    if (r) {
       fprintf(stderr, "amdgpu: clearing PRT VA region on destroy failed 
(%d)\n", r);
    }
@@ -1060,14 +1060,15 @@ amdgpu_bo_sparse_create(struct amdgpu_winsys *ws, 
uint64_t size,
    /* For simplicity, we always map a multiple of the page size. */
    map_size = align64(size, RADEON_SPARSE_PAGE_SIZE);
    va_gap_size = ws->check_vm ? 4 * RADEON_SPARSE_PAGE_SIZE : 0;
+
+   uint64_t gpu_address;
    r = amdgpu_va_range_alloc(ws->dev, amdgpu_gpu_va_range_general,
                              map_size + va_gap_size, RADEON_SPARSE_PAGE_SIZE,
-                             0, &bo->gpu_address, &bo->va_handle,
-                            AMDGPU_VA_RANGE_HIGH);
+                             0, &gpu_address, &bo->va_handle, 
AMDGPU_VA_RANGE_HIGH);
    if (r)
       goto error_va_alloc;
 
-   r = amdgpu_bo_va_op_raw(ws->dev, NULL, 0, map_size, bo->gpu_address,
+   r = amdgpu_bo_va_op_raw(ws->dev, NULL, 0, map_size, gpu_address,
                            AMDGPU_VM_PAGE_PRT, AMDGPU_VA_OP_MAP);
    if (r)
       goto error_va_map;
@@ -1140,7 +1141,8 @@ amdgpu_bo_sparse_commit(struct radeon_winsys *rws, struct 
pb_buffer_lean *buf,
             r = amdgpu_bo_va_op_raw(ws->dev, backing->bo->bo_handle,
                                     (uint64_t)backing_start * 
RADEON_SPARSE_PAGE_SIZE,
                                     (uint64_t)backing_size * 
RADEON_SPARSE_PAGE_SIZE,
-                                    bo->gpu_address + (uint64_t)span_va_page * 
RADEON_SPARSE_PAGE_SIZE,
+                                    amdgpu_va_get_start_addr(bo->va_handle) +
+                                    (uint64_t)span_va_page * 
RADEON_SPARSE_PAGE_SIZE,
                                     AMDGPU_VM_PAGE_READABLE |
                                     AMDGPU_VM_PAGE_WRITEABLE |
                                     AMDGPU_VM_PAGE_EXECUTABLE,
@@ -1165,7 +1167,8 @@ amdgpu_bo_sparse_commit(struct radeon_winsys *rws, struct 
pb_buffer_lean *buf,
    } else {
       r = amdgpu_bo_va_op_raw(ws->dev, NULL, 0,
                               (uint64_t)(end_va_page - va_page) * 
RADEON_SPARSE_PAGE_SIZE,
-                              bo->gpu_address + (uint64_t)va_page * 
RADEON_SPARSE_PAGE_SIZE,
+                              amdgpu_va_get_start_addr(bo->va_handle) +
+                              (uint64_t)va_page * RADEON_SPARSE_PAGE_SIZE,
                               AMDGPU_VM_PAGE_PRT, AMDGPU_VA_OP_REPLACE);
       if (r) {
          ok = false;
@@ -1746,7 +1749,7 @@ uint64_t amdgpu_bo_get_va(struct pb_buffer_lean *buf)
 
       return amdgpu_va_get_start_addr(slab_bo->b.b.va_handle) + 
get_slab_entry_offset(bo);
    } else if (bo->type == AMDGPU_BO_SPARSE) {
-      return get_sparse_bo(bo)->gpu_address;
+      return amdgpu_va_get_start_addr(get_sparse_bo(bo)->va_handle);
    } else {
       return amdgpu_va_get_start_addr(get_real_bo(bo)->va_handle);
    }
diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.h 
b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.h
index be2f83b2a2e..4da7b20fa72 100644
--- a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.h
+++ b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.h
@@ -103,7 +103,6 @@ struct amdgpu_bo_real_reusable {
 struct amdgpu_bo_sparse {
    struct amdgpu_winsys_bo b;
    amdgpu_va_handle va_handle;
-   uint64_t gpu_address;
 
    uint32_t num_va_pages;
    uint32_t num_backing_pages;

Reply via email to