VkAndroidHardwareBufferUsageANDROID
To obtain optimal Android hardware buffer usage flags for specific image
creation parameters, add a VkAndroidHardwareBufferUsageANDROID
structure to the pNext
chain of a VkImageFormatProperties2
structure passed to vkGetPhysicalDeviceImageFormatProperties2.
This structure is defined as:
typedef struct VkAndroidHardwareBufferUsageANDROID {
VkStructureType sType;
void* pNext;
uint64_t androidHardwareBufferUsage;
} VkAndroidHardwareBufferUsageANDROID;
sType
is a VkStructureType value identifying this structure.pNext
isNULL
or a pointer to a structure extending this structure.androidHardwareBufferUsage
returns the Android hardware buffer usage flags.
The androidHardwareBufferUsage
field must include Android hardware
buffer usage flags listed in the
AHardwareBuffer Usage
Equivalence table when the corresponding Vulkan image usage or image
creation flags are included in the usage
or flags
fields of
VkPhysicalDeviceImageFormatInfo2.
It must include at least one GPU usage flag
(AHARDWAREBUFFER_USAGE_GPU_*
), even if none of the corresponding Vulkan
usages or flags are requested.
Requiring at least one GPU usage flag ensures that Android hardware buffer memory will be allocated in a memory pool accessible to the Vulkan implementation, and that specializing the memory layout based on usage flags does not prevent it from being compatible with Vulkan. Implementations may avoid unnecessary restrictions caused by this requirement by using vendor usage flags to indicate that only the Vulkan uses indicated in VkImageFormatProperties2 are required.
Valid Usage (Implicit)
VUID-VkAndroidHardwareBufferUsageANDROID-sType-sType
sType
must be VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID