diff --git a/src/broadcom/vulkan/v3dv_image.c b/src/broadcom/vulkan/v3dv_image.c index f1b06586ede..b42ccd25f66 100644 --- a/src/broadcom/vulkan/v3dv_image.c +++ b/src/broadcom/vulkan/v3dv_image.c @@ -296,6 +296,9 @@ v3dv_CreateImage(VkDevice _device, modifier = DRM_FORMAT_MOD_LINEAR; } + const VkExternalMemoryImageCreateInfo *external_info = + vk_find_struct_const(pCreateInfo->pNext, EXTERNAL_MEMORY_IMAGE_CREATE_INFO); + /* 1D and 1D_ARRAY textures are always raster-order */ VkImageTiling tiling; if (pCreateInfo->imageType == VK_IMAGE_TYPE_1D) @@ -332,6 +335,7 @@ v3dv_CreateImage(VkDevice _device, image->drm_format_mod = modifier; image->tiling = tiling; image->tiled = tiling == VK_IMAGE_TILING_OPTIMAL; + image->external = external_info != NULL; image->cpp = vk_format_get_blocksize(image->vk_format); diff --git a/src/broadcom/vulkan/v3dv_private.h b/src/broadcom/vulkan/v3dv_private.h index 90a14206757..cf04f556a32 100644 --- a/src/broadcom/vulkan/v3dv_private.h +++ b/src/broadcom/vulkan/v3dv_private.h @@ -518,6 +518,7 @@ struct v3dv_image { uint64_t drm_format_mod; bool tiled; + bool external; struct v3d_resource_slice slices[V3D_MAX_MIP_LEVELS]; uint64_t size; /* Total size in bytes */