anv,hasvk,radv: do not fall back to AHARDWAREBUFFER_FORMAT_BLOB
authorChia-I Wu <olvaffe@gmail.com>
Fri, 21 Apr 2023 05:27:13 +0000 (22:27 -0700)
committerMarge Bot <emma+marge@anholt.net>
Thu, 11 May 2023 22:18:03 +0000 (22:18 +0000)
When allocating a VkDeviceMemory exportable as AHB, it seems incorrect
to fall back to AHARDWAREBUFFER_FORMAT_BLOB when the image has no known
AHB format.  We should fail the allocation instead.

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

src/amd/vulkan/radv_android.c
src/intel/vulkan/anv_android.c
src/intel/vulkan_hasvk/anv_android.c
src/vulkan/runtime/vk_android.c

index 178a542..643dbc5 100644 (file)
@@ -416,7 +416,7 @@ radv_ahb_format_for_vk_format(VkFormat vk_format)
    case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
       return AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420;
    default:
-      return AHARDWAREBUFFER_FORMAT_BLOB;
+      return 0;
    }
 }
 
index 8de11c6..b47d402 100644 (file)
@@ -150,7 +150,7 @@ anv_ahb_format_for_vk_format(VkFormat vk_format)
       return HAL_PIXEL_FORMAT_NV12_Y_TILED_INTEL;
 #endif
    default:
-      return AHARDWAREBUFFER_FORMAT_BLOB;
+      return 0;
    }
 }
 
index 1fbaea9..5c290b5 100644 (file)
@@ -150,7 +150,7 @@ anv_ahb_format_for_vk_format(VkFormat vk_format)
       return HAL_PIXEL_FORMAT_NV12_Y_TILED_INTEL;
 #endif
    default:
-      return AHARDWAREBUFFER_FORMAT_BLOB;
+      return 0;
    }
 }
 
index 6cdb8fe..db9bee1 100644 (file)
@@ -150,13 +150,13 @@ vk_alloc_ahardware_buffer(const VkMemoryAllocateInfo *pAllocateInfo)
    /* If caller passed dedicated information. */
    if (dedicated_info && dedicated_info->image) {
       VK_FROM_HANDLE(vk_image, image, dedicated_info->image);
+
+      if (!image->ahb_format)
+         return NULL;
+
       w = image->extent.width;
       h = image->extent.height;
       layers = image->array_layers;
-      assert(image->ahb_format != 0);
-      /* TODO: This feels a bit sketchy.  We should probably be taking the
-       * external format into account somehow.
-       */
       format = image->ahb_format;
       usage = vk_image_usage_to_ahb_usage(image->create_flags,
                                           image->usage);