From 06b8b29a0a88ed902b6a41971a39ef646b4bf62e Mon Sep 17 00:00:00 2001 From: Tapani Pälli Date: Mon, 7 Oct 2019 09:07:48 +0300 Subject: anv/android: fix images created with external format support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fixes a case where user first creates image and then later binds it with memory created from AHW buffer. Cc: Signed-off-by: Tapani Pälli Reviewed-by: Lionel Landwerlin (cherry picked from commit e4a826b2c8af8ac9194a7527c568e876c71b0dee) --- src/intel/vulkan/anv_image.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c index 36c43f26634..66116a8a67d 100644 --- a/src/intel/vulkan/anv_image.c +++ b/src/intel/vulkan/anv_image.c @@ -735,6 +735,17 @@ anv_CreateImage(VkDevice device, return anv_image_from_external(device, pCreateInfo, create_info, pAllocator, pImage); + bool use_external_format = false; + const struct VkExternalFormatANDROID *ext_format = + vk_find_struct_const(pCreateInfo->pNext, EXTERNAL_FORMAT_ANDROID); + + /* "If externalFormat is zero, the effect is as if the + * VkExternalFormatANDROID structure was not present. Otherwise, the image + * will have the specified external format." + */ + if (ext_format && ext_format->externalFormat != 0) + use_external_format = true; + const VkNativeBufferANDROID *gralloc_info = vk_find_struct_const(pCreateInfo->pNext, NATIVE_BUFFER_ANDROID); if (gralloc_info) @@ -750,6 +761,7 @@ anv_CreateImage(VkDevice device, return anv_image_create(device, &(struct anv_image_create_info) { .vk_info = pCreateInfo, + .external_format = use_external_format, }, pAllocator, pImage); -- cgit v1.2.3