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

Author: Yiwei Zhang <zzyi...@chromium.org>
Date:   Wed Oct 11 00:33:47 2023 -0700

venus: use vk_device_memory tracked size

Signed-off-by: Yiwei Zhang <zzyi...@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25184>

---

 src/virtio/vulkan/vn_device_memory.c | 18 +++++++++---------
 src/virtio/vulkan/vn_device_memory.h |  1 -
 2 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/src/virtio/vulkan/vn_device_memory.c 
b/src/virtio/vulkan/vn_device_memory.c
index 5475cb33287..58e25ca56bc 100644
--- a/src/virtio/vulkan/vn_device_memory.c
+++ b/src/virtio/vulkan/vn_device_memory.c
@@ -81,7 +81,7 @@ vn_device_memory_bo_init(struct vn_device *dev, struct 
vn_device_memory *mem)
 
    const struct vk_device_memory *mem_vk = &mem->base.base;
    return vn_renderer_bo_create_from_device_memory(
-      dev->renderer, mem->size, mem->base.id, mem->type.propertyFlags,
+      dev->renderer, mem_vk->size, mem->base.id, mem->type.propertyFlags,
       mem_vk->export_handle_types, &mem->base_bo);
 }
 
@@ -112,7 +112,6 @@ vn_device_memory_pool_grow_alloc(struct vn_device *dev,
 
    vn_object_set_id(mem, (uintptr_t)mem, VK_OBJECT_TYPE_DEVICE_MEMORY);
 
-   mem->size = size;
    mem->type =
       dev->physical_device->memory_properties.memoryTypes[mem_type_index];
 
@@ -215,13 +214,14 @@ vn_device_memory_pool_suballocate(struct vn_device *dev,
    const bool is_renderer_mali = dev->physical_device->renderer_driver_id ==
                                  VK_DRIVER_ID_ARM_PROPRIETARY;
    const VkDeviceSize pool_align = is_renderer_mali ? 4096 : 64 * 1024;
+   const struct vk_device_memory *mem_vk = &mem->base.base;
    struct vn_device_memory_pool *pool = &dev->memory_pools[mem_type_index];
 
-   assert(mem->size <= pool_size);
+   assert(mem_vk->size <= pool_size);
 
    mtx_lock(&pool->mutex);
 
-   if (!pool->memory || pool->used + mem->size > pool_size) {
+   if (!pool->memory || pool->used + mem_vk->size > pool_size) {
       VkResult result =
          vn_device_memory_pool_grow_locked(dev, mem_type_index, pool_size);
       if (result != VK_SUCCESS) {
@@ -235,7 +235,7 @@ vn_device_memory_pool_suballocate(struct vn_device *dev,
    /* point mem->base_bo at pool base_bo and assign base_offset accordingly */
    mem->base_bo = pool->memory->base_bo;
    mem->base_offset = pool->used;
-   pool->used += align64(mem->size, pool_align);
+   pool->used += align64(mem_vk->size, pool_align);
 
    mtx_unlock(&pool->mutex);
 
@@ -348,7 +348,7 @@ vn_device_memory_alloc_guest_vram(struct vn_device *dev,
    const struct vk_device_memory *mem_vk = &mem->base.base;
 
    VkResult result = vn_renderer_bo_create_from_device_memory(
-      dev->renderer, mem->size, 0, mem->type.propertyFlags,
+      dev->renderer, mem_vk->size, 0, mem->type.propertyFlags,
       mem_vk->export_handle_types, &mem->base_bo);
    if (result != VK_SUCCESS) {
       return result;
@@ -518,7 +518,7 @@ vn_device_memory_emit_report(struct vn_device *dev,
       (mem_vk->import_handle_type | mem_vk->export_handle_types)
          ? mem->base_bo->res_id
          : mem->base.id;
-   vn_device_emit_device_memory_report(dev, type, mem_obj_id, mem->size,
+   vn_device_emit_device_memory_report(dev, type, mem_obj_id, mem_vk->size,
                                        VK_OBJECT_TYPE_DEVICE_MEMORY,
                                        mem->base.id, mem->type.heapIndex);
 }
@@ -563,7 +563,6 @@ vn_AllocateMemory(VkDevice device,
 
    vn_object_set_id(mem, (uintptr_t)mem, VK_OBJECT_TYPE_DEVICE_MEMORY);
 
-   mem->size = pAllocateInfo->allocationSize;
    mem->type = dev->physical_device->memory_properties
                   .memoryTypes[pAllocateInfo->memoryTypeIndex];
 
@@ -645,6 +644,7 @@ vn_MapMemory(VkDevice device,
    VN_TRACE_FUNC();
    struct vn_device *dev = vn_device_from_handle(device);
    struct vn_device_memory *mem = vn_device_memory_from_handle(memory);
+   const struct vk_device_memory *mem_vk = &mem->base.base;
    const bool need_bo = !mem->base_bo;
    void *ptr = NULL;
    VkResult result;
@@ -684,7 +684,7 @@ vn_MapMemory(VkDevice device,
       return vn_error(dev->instance, VK_ERROR_MEMORY_MAP_FAILED);
    }
 
-   mem->map_end = size == VK_WHOLE_SIZE ? mem->size : offset + size;
+   mem->map_end = size == VK_WHOLE_SIZE ? mem_vk->size : offset + size;
 
    *ppData = ptr + mem->base_offset + offset;
 
diff --git a/src/virtio/vulkan/vn_device_memory.h 
b/src/virtio/vulkan/vn_device_memory.h
index 5f87f006654..10ce474c050 100644
--- a/src/virtio/vulkan/vn_device_memory.h
+++ b/src/virtio/vulkan/vn_device_memory.h
@@ -22,7 +22,6 @@ struct vn_device_memory_pool {
 struct vn_device_memory {
    struct vn_device_memory_base base;
 
-   VkDeviceSize size;
    VkMemoryType type;
 
    /* non-NULL when suballocated */

Reply via email to