From d4ae40936533f8600948c4bcff8e4f1535daad27 Mon Sep 17 00:00:00 2001 From: Yiwei Zhang Date: Thu, 23 Apr 2026 18:41:20 -0700 Subject: [PATCH] venus: refactor vn_android_get_wsi_memory to return VkDeviceMemory Part-of: --- src/virtio/vulkan/vn_android.c | 10 +++++----- src/virtio/vulkan/vn_android.h | 15 +++++++-------- src/virtio/vulkan/vn_image.c | 15 ++++++--------- 3 files changed, 18 insertions(+), 22 deletions(-) diff --git a/src/virtio/vulkan/vn_android.c b/src/virtio/vulkan/vn_android.c index 70730bb6538..6742163b433 100644 --- a/src/virtio/vulkan/vn_android.c +++ b/src/virtio/vulkan/vn_android.c @@ -375,9 +375,9 @@ vn_android_image_from_anb(struct vn_device *dev, return VK_SUCCESS; } -struct vn_device_memory * -vn_android_get_wsi_memory_from_bind_info( - struct vn_device *dev, const VkBindImageMemoryInfo *bind_info) +VkDeviceMemory +vn_android_get_wsi_memory(struct vn_device *dev, + const VkBindImageMemoryInfo *bind_info) { const VkNativeBufferANDROID *anb_info = vk_find_struct_const(bind_info->pNext, NATIVE_BUFFER_ANDROID); @@ -388,9 +388,9 @@ vn_android_get_wsi_memory_from_bind_info( dev, img->base.vk.android_deferred_create_info, anb_info, &dev->base.vk.alloc, &img); if (result != VK_SUCCESS) - return NULL; + return VK_NULL_HANDLE; - return img->wsi.anb_mem; + return vn_device_memory_to_handle(img->wsi.anb_mem); } static VkResult diff --git a/src/virtio/vulkan/vn_android.h b/src/virtio/vulkan/vn_android.h index 79965b3052e..07a5bc17983 100644 --- a/src/virtio/vulkan/vn_android.h +++ b/src/virtio/vulkan/vn_android.h @@ -28,9 +28,9 @@ vn_android_image_from_anb(struct vn_device *dev, const VkAllocationCallbacks *alloc, struct vn_image **out_img); -struct vn_device_memory * -vn_android_get_wsi_memory_from_bind_info( - struct vn_device *dev, const VkBindImageMemoryInfo *bind_info); +VkDeviceMemory +vn_android_get_wsi_memory(struct vn_device *dev, + const VkBindImageMemoryInfo *bind_info); VkResult vn_android_device_import_ahb(struct vn_device *dev, @@ -49,12 +49,11 @@ vn_android_image_from_anb(UNUSED struct vn_device *dev, return VK_ERROR_OUT_OF_HOST_MEMORY; } -static inline struct vn_device_memory * -vn_android_get_wsi_memory_from_bind_info( - UNUSED struct vn_device *dev, - UNUSED const VkBindImageMemoryInfo *bind_info) +static inline VkDeviceMemory +vn_android_get_wsi_memory(UNUSED struct vn_device *dev, + UNUSED const VkBindImageMemoryInfo *bind_info) { - return NULL; + return VK_NULL_HANDLE; } static inline VkResult diff --git a/src/virtio/vulkan/vn_image.c b/src/virtio/vulkan/vn_image.c index a5ce79a8f8a..3fae0081f9f 100644 --- a/src/virtio/vulkan/vn_image.c +++ b/src/virtio/vulkan/vn_image.c @@ -691,13 +691,11 @@ vn_image_bind_wsi_memory(struct vn_device *dev, for (uint32_t i = 0; i < count; i++) { VkBindImageMemoryInfo *info = &local_infos[i]; - struct vn_device_memory *mem = - vn_device_memory_from_handle(info->memory); - if (!mem) { + if (info->memory == VK_NULL_HANDLE) { #ifdef VK_USE_PLATFORM_ANDROID_KHR - mem = vn_android_get_wsi_memory_from_bind_info(dev, info); - if (!mem) { + info->memory = vn_android_get_wsi_memory(dev, info); + if (info->memory == VK_NULL_HANDLE) { STACK_ARRAY_FINISH(local_infos); return VK_ERROR_OUT_OF_HOST_MEMORY; } @@ -707,13 +705,12 @@ vn_image_bind_wsi_memory(struct vn_device *dev, BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR); assert(swapchain_info); - mem = vn_device_memory_from_handle(wsi_common_get_memory( - swapchain_info->swapchain, swapchain_info->imageIndex)); + info->memory = wsi_common_get_memory(swapchain_info->swapchain, + swapchain_info->imageIndex); #endif - info->memory = vn_device_memory_to_handle(mem); info->memoryOffset = 0; } - assert(mem && info->memory != VK_NULL_HANDLE); + assert(info->memory != VK_NULL_HANDLE); } vn_async_vkBindImageMemory2(dev->primary_ring, vn_device_to_handle(dev),