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

Author: Yiwei Zhang <[email protected]>
Date:   Wed Feb 15 15:07:01 2023 -0800

venus: simplify ahb image creation

Those excessive asserts are only useful when bringing up Android.

Signed-off-by: Yiwei Zhang <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21379>

---

 src/virtio/vulkan/vn_android.c | 26 --------------------------
 src/virtio/vulkan/vn_android.h | 15 ---------------
 src/virtio/vulkan/vn_image.c   | 19 +++++++++++--------
 src/virtio/vulkan/vn_image.h   |  6 ------
 4 files changed, 11 insertions(+), 55 deletions(-)

diff --git a/src/virtio/vulkan/vn_android.c b/src/virtio/vulkan/vn_android.c
index 40ff06f8b00..1057146f729 100644
--- a/src/virtio/vulkan/vn_android.c
+++ b/src/virtio/vulkan/vn_android.c
@@ -1111,32 +1111,6 @@ vn_android_get_drm_format_modifier_info(
    return true;
 }
 
-VkResult
-vn_android_image_from_ahb(struct vn_device *dev,
-                          const VkImageCreateInfo *create_info,
-                          const VkAllocationCallbacks *alloc,
-                          struct vn_image **out_img)
-{
-   const VkExternalFormatANDROID *ext_info =
-      vk_find_struct_const(create_info->pNext, EXTERNAL_FORMAT_ANDROID);
-
-   VkImageCreateInfo local_info;
-   if (ext_info && ext_info->externalFormat) {
-      assert(create_info->format == VK_FORMAT_UNDEFINED);
-      assert(create_info->imageType == VK_IMAGE_TYPE_2D);
-      assert(create_info->usage == VK_IMAGE_USAGE_SAMPLED_BIT);
-      assert(create_info->tiling == VK_IMAGE_TILING_OPTIMAL);
-      assert(!(create_info->flags & VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT));
-
-      local_info = *create_info;
-      local_info.format =
-         vn_android_drm_format_to_vk_format(ext_info->externalFormat);
-      create_info = &local_info;
-   }
-
-   return vn_image_create_deferred(dev, create_info, alloc, out_img);
-}
-
 VkResult
 vn_android_device_import_ahb(struct vn_device *dev,
                              struct vn_device_memory *mem,
diff --git a/src/virtio/vulkan/vn_android.h b/src/virtio/vulkan/vn_android.h
index 6a5da88028e..3330ae9a165 100644
--- a/src/virtio/vulkan/vn_android.h
+++ b/src/virtio/vulkan/vn_android.h
@@ -41,12 +41,6 @@ uint64_t
 vn_android_get_ahb_usage(const VkImageUsageFlags usage,
                          const VkImageCreateFlags flags);
 
-VkResult
-vn_android_image_from_ahb(struct vn_device *dev,
-                          const VkImageCreateInfo *create_info,
-                          const VkAllocationCallbacks *alloc,
-                          struct vn_image **out_img);
-
 VkResult
 vn_android_device_import_ahb(struct vn_device *dev,
                              struct vn_device_memory *mem,
@@ -108,15 +102,6 @@ vn_android_get_ahb_usage(UNUSED const VkImageUsageFlags 
usage,
    return 0;
 }
 
-static inline VkResult
-vn_android_image_from_ahb(UNUSED struct vn_device *dev,
-                          UNUSED const VkImageCreateInfo *create_info,
-                          UNUSED const VkAllocationCallbacks *alloc,
-                          UNUSED struct vn_image **out_img)
-{
-   return VK_ERROR_OUT_OF_HOST_MEMORY;
-}
-
 static inline VkResult
 vn_android_device_import_ahb(UNUSED struct vn_device *dev,
                              UNUSED struct vn_device_memory *mem,
diff --git a/src/virtio/vulkan/vn_image.c b/src/virtio/vulkan/vn_image.c
index f0bfdd73ce5..7f6c18ce214 100644
--- a/src/virtio/vulkan/vn_image.c
+++ b/src/virtio/vulkan/vn_image.c
@@ -157,12 +157,15 @@ vn_image_deferred_info_init(struct vn_image *img,
          memcpy(&info->stencil, src, sizeof(info->stencil));
          pnext = &info->stencil;
          break;
-      case VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID:
-         /* we should have translated the external format */
-         assert(create_info->format != VK_FORMAT_UNDEFINED);
-         info->from_external_format =
-            ((const VkExternalFormatANDROID *)src)->externalFormat;
-         break;
+      case VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID: {
+         const uint32_t drm_format =
+            (uint32_t)((const VkExternalFormatANDROID *)src)->externalFormat;
+         if (drm_format) {
+            info->create.format =
+               vn_android_drm_format_to_vk_format(drm_format);
+            info->from_external_format = true;
+         }
+      } break;
       default:
          break;
       }
@@ -252,7 +255,7 @@ vn_image_init_deferred(struct vn_device *dev,
    return result;
 }
 
-VkResult
+static VkResult
 vn_image_create_deferred(struct vn_device *dev,
                          const VkImageCreateInfo *create_info,
                          const VkAllocationCallbacks *alloc,
@@ -334,7 +337,7 @@ vn_CreateImage(VkDevice device,
       result =
          vn_android_image_from_anb(dev, pCreateInfo, anb_info, alloc, &img);
    } else if (ahb_info) {
-      result = vn_android_image_from_ahb(dev, pCreateInfo, alloc, &img);
+      result = vn_image_create_deferred(dev, pCreateInfo, alloc, &img);
    } else if (swapchain_info) {
       result = vn_wsi_create_image_from_swapchain(
          dev, pCreateInfo, swapchain_info, alloc, &img);
diff --git a/src/virtio/vulkan/vn_image.h b/src/virtio/vulkan/vn_image.h
index 59dd33728a7..8273d03d826 100644
--- a/src/virtio/vulkan/vn_image.h
+++ b/src/virtio/vulkan/vn_image.h
@@ -108,10 +108,4 @@ vn_image_init_deferred(struct vn_device *dev,
                        const VkImageCreateInfo *create_info,
                        struct vn_image *img);
 
-VkResult
-vn_image_create_deferred(struct vn_device *dev,
-                         const VkImageCreateInfo *create_info,
-                         const VkAllocationCallbacks *alloc,
-                         struct vn_image **out_img);
-
 #endif /* VN_IMAGE_H */

Reply via email to