Module: Mesa
Branch: master
Commit: 3e6d3bca1d7044dd44566fe9751011275ec0ee91
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3e6d3bca1d7044dd44566fe9751011275ec0ee91

Author: Chad Versace <[email protected]>
Date:   Fri Feb  5 12:07:08 2021 -0800

anv/android: Fix size check for imported gralloc bo

1. Don't compare bo->size to image->size. An upcoming patch replaces
anv_image::size with complicated stuff. Instead, properly query the
required size with anv_GetImageMemoryRequirements.

2. Require the bo to fit the *aligned* image size.

Reviewed-by: Jason Ekstrand <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8097>

---

 src/intel/vulkan/anv_android.c | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/src/intel/vulkan/anv_android.c b/src/intel/vulkan/anv_android.c
index 63999c2d1c0..08cc4acc1f5 100644
--- a/src/intel/vulkan/anv_android.c
+++ b/src/intel/vulkan/anv_android.c
@@ -511,11 +511,26 @@ anv_image_from_gralloc(VkDevice device_h,
    if (result != VK_SUCCESS)
       goto fail_create;
 
-   if (bo->size < image->size) {
+   VkImageMemoryRequirementsInfo2 mem_reqs_info = {
+      .sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,
+      .image = image_h,
+   };
+
+   VkMemoryRequirements2 mem_reqs = {
+      .sType = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,
+   };
+
+   anv_GetImageMemoryRequirements2(_device, &mem_reqs_info, &mem_reqs);
+
+   VkDeviceSize aligned_image_size =
+      align_u64(mem_reqs.memoryRequirements.size,
+                mem_reqs.memoryRequirements.alignment);
+
+   if (bo->size < aligned_image_size) {
       result = vk_errorf(device, device, VK_ERROR_INVALID_EXTERNAL_HANDLE,
                          "dma-buf from VkNativeBufferANDROID is too small for "
                          "VkImage: %"PRIu64"B < %"PRIu64"B",
-                         bo->size, image->size);
+                         bo->size, aligned_image_size);
       goto fail_size;
    }
 

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to