## C Specification

To query the host access layout of an image subresource, for an image created with linear tiling, call:

void vkGetImageSubresourceLayout(
VkDevice                                    device,
VkImage                                     image,
const VkImageSubresource*                   pSubresource,
VkSubresourceLayout*                        pLayout);

## Parameters

• device is the logical device that owns the image.

• image is the image whose layout is being queried.

• pSubresource is a pointer to a VkImageSubresource structure selecting a specific image for the image subresource.

• pLayout points to a VkSubresourceLayout structure in which the layout is returned.

## Description

If the VkFormat of image is a multi-planar format, vkGetImageSubresourceLayout describes one plane of the image.

vkGetImageSubresourceLayout is invariant for the lifetime of a single image. However, the subresource layout of images in Android hardware buffer external memory is not known until the image has been bound to memory, so calling vkGetImageSubresourceLayout for such an image before it has been bound will result in undefined behavior.

Valid Usage
• image must have been created with tiling equal to VK_IMAGE_TILING_LINEAR

• The aspectMask member of pSubresource must only have a single bit set

• The mipLevel member of pSubresource must be less than the mipLevels specified in VkImageCreateInfo when image was created

• The arrayLayer member of pSubresource must be less than the arrayLayers specified in VkImageCreateInfo when image was created

• If the format of image is a multi-planar format with two planes, the aspectMask member of pSubresource must be VK_IMAGE_ASPECT_PLANE_0_BIT or VK_IMAGE_ASPECT_PLANE_1_BIT

• If the format of image is a multi-planar format with three planes, the aspectMask member of pSubresource must be VK_IMAGE_ASPECT_PLANE_0_BIT, VK_IMAGE_ASPECT_PLANE_1_BIT or VK_IMAGE_ASPECT_PLANE_2_BIT

• If image was created with the VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID external memory handle type, then image must be bound to memory.

Valid Usage (Implicit)
• device must be a valid VkDevice handle

• image must be a valid VkImage handle

• pSubresource must be a valid pointer to a valid VkImageSubresource structure

• pLayout must be a valid pointer to a VkSubresourceLayout structure

• image must have been created, allocated, or retrieved from device