From 382e5f2737af00256ce3e591604e6e9275300dde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tapani=20P=C3=A4lli?= Date: Wed, 24 Mar 2021 14:22:18 +0200 Subject: [PATCH] anv/android: fix image creation with external format MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fixes crashes seen with following group of tests: android.graphics.cts.BasicVulkanGpuTest Fixes: 6fa56273be7 ("anv/image: Drop duplicate 'format' in anv_image_create()") Signed-off-by: Tapani Pälli Reviewed-by: Jason Ekstrand Part-of: --- src/intel/vulkan/anv_image.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c index c3065f3f622..923d976fdb5 100644 --- a/src/intel/vulkan/anv_image.c +++ b/src/intel/vulkan/anv_image.c @@ -930,7 +930,6 @@ anv_image_create(VkDevice _device, pCreateInfo->extent); image->vk_format = pCreateInfo->format; image->format = anv_get_format(pCreateInfo->format); - image->n_planes = image->format->n_planes; image->aspects = vk_format_aspects(image->vk_format); image->levels = pCreateInfo->mipLevels; image->array_size = pCreateInfo->arrayLayers; @@ -942,14 +941,6 @@ anv_image_create(VkDevice _device, image->drm_format_mod = isl_mod_info ? isl_mod_info->modifier : DRM_FORMAT_MOD_INVALID; - /* The Vulkan 1.2.165 glossary says: - * - * A disjoint image consists of multiple disjoint planes, and is created - * with the VK_IMAGE_CREATE_DISJOINT_BIT bit set. - */ - image->disjoint = image->format->n_planes > 1 && - (pCreateInfo->flags & VK_IMAGE_CREATE_DISJOINT_BIT); - if (image->aspects & VK_IMAGE_ASPECT_STENCIL_BIT) { image->stencil_usage = pCreateInfo->usage; const VkImageStencilUsageCreateInfoEXT *stencil_usage_info = @@ -977,6 +968,16 @@ anv_image_create(VkDevice _device, return VK_SUCCESS; } + image->n_planes = image->format->n_planes; + + /* The Vulkan 1.2.165 glossary says: + * + * A disjoint image consists of multiple disjoint planes, and is created + * with the VK_IMAGE_CREATE_DISJOINT_BIT bit set. + */ + image->disjoint = image->format->n_planes > 1 && + (pCreateInfo->flags & VK_IMAGE_CREATE_DISJOINT_BIT); + const isl_tiling_flags_t isl_tiling_flags = choose_isl_tiling_flags(&device->info, create_info, isl_mod_info, image->needs_set_tiling);