# VkExportMetalObjectsInfoEXT(3) Manual Page

## Name

VkExportMetalObjectsInfoEXT - Structure whose pNext chain identifies Vulkan objects and corresponding Metal objects

Loading… please wait.

## C Specification

The `VkExportMetalObjectsInfoEXT` structure is defined as:

    // Provided by VK_EXT_metal_objects
    typedef struct VkExportMetalObjectsInfoEXT {
        VkStructureType    sType;
        const void*        pNext;
    } VkExportMetalObjectsInfoEXT;

## Members

- `sType` is a VkStructureType value identifying this structure.

- `pNext` is `NULL` or a pointer to a structure extending this structure.

## Description

Valid Usage

- VUID-VkExportMetalObjectsInfoEXT-pNext-06791
  If the `pNext` chain includes a VkExportMetalDeviceInfoEXT structure, the VkInstance must have been created with `VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT` in the `exportObjectType` member of a VkExportMetalObjectCreateInfoEXT structure in the `pNext` chain of the VkInstanceCreateInfo structure in the vkCreateInstance command

- VUID-VkExportMetalObjectsInfoEXT-pNext-06792
  If the `pNext` chain includes a VkExportMetalCommandQueueInfoEXT structure, the VkInstance must have been created with `VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT` in the `exportObjectType` member of a VkExportMetalObjectCreateInfoEXT structure in the `pNext` chain of the VkInstanceCreateInfo structure in the vkCreateInstance command

- VUID-VkExportMetalObjectsInfoEXT-pNext-06793
  If the `pNext` chain includes a VkExportMetalBufferInfoEXT structure, the VkDeviceMemory in its `memory` member must have been allocated with `VK_EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT` in the `exportObjectType` member of a VkExportMetalObjectCreateInfoEXT structure in the `pNext` chain of the VkMemoryAllocateInfo structure in the vkAllocateMemory command

- VUID-VkExportMetalObjectsInfoEXT-pNext-06794
  If the `pNext` chain includes a VkExportMetalTextureInfoEXT structure, exactly one of its `image`, `imageView`, or `bufferView` members must not be VK_NULL_HANDLE

- VUID-VkExportMetalObjectsInfoEXT-pNext-06795
  If the `pNext` chain includes a VkExportMetalTextureInfoEXT structure, and its `image` member is not VK_NULL_HANDLE, the VkImage in its `image` member must have been created with `VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT` in the `exportObjectType` member of a VkExportMetalObjectCreateInfoEXT structure in the `pNext` chain of the VkImageCreateInfo structure in the vkCreateImage command

- VUID-VkExportMetalObjectsInfoEXT-pNext-06796
  If the `pNext` chain includes a VkExportMetalTextureInfoEXT structure, and its `imageView` member is not VK_NULL_HANDLE, the VkImageView in its `imageView` member must have been created with `VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT` in the `exportObjectType` member of a VkExportMetalObjectCreateInfoEXT structure in the `pNext` chain of the VkImageViewCreateInfo structure in the vkCreateImageView command

- VUID-VkExportMetalObjectsInfoEXT-pNext-06797
  If the `pNext` chain includes a VkExportMetalTextureInfoEXT structure, and its `bufferView` member is not VK_NULL_HANDLE, the VkBufferView in its `bufferView` member must have been created with `VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT` in the `exportObjectType` member of a VkExportMetalObjectCreateInfoEXT structure in the `pNext` chain of the VkBufferViewCreateInfo structure in the vkCreateBufferView command

- VUID-VkExportMetalObjectsInfoEXT-pNext-06798
  If the `pNext` chain includes a VkExportMetalTextureInfoEXT structure, and if either its `image` or `imageView` member is not VK_NULL_HANDLE, then `plane` must be `VK_IMAGE_ASPECT_PLANE_0_BIT`, `VK_IMAGE_ASPECT_PLANE_1_BIT`, or `VK_IMAGE_ASPECT_PLANE_2_BIT`

- VUID-VkExportMetalObjectsInfoEXT-pNext-06799
  If the `pNext` chain includes a VkExportMetalTextureInfoEXT structure, and if the VkImage in its `image` member does not have a multi-planar format, then its `plane` member must be `VK_IMAGE_ASPECT_PLANE_0_BIT`

- VUID-VkExportMetalObjectsInfoEXT-pNext-06800
  If the `pNext` chain includes a VkExportMetalTextureInfoEXT structure, and if the VkImage in its `image` member has a multi-planar format with only two planes, then its `plane` member must not be `VK_IMAGE_ASPECT_PLANE_2_BIT`

- VUID-VkExportMetalObjectsInfoEXT-pNext-06801
  If the `pNext` chain includes a VkExportMetalTextureInfoEXT structure, and if the VkImageView in its `imageView` member does not have a multi-planar format, then its `plane` member must be `VK_IMAGE_ASPECT_PLANE_0_BIT`

- VUID-VkExportMetalObjectsInfoEXT-pNext-06802
  If the `pNext` chain includes a VkExportMetalTextureInfoEXT structure, and if the VkImageView in its `imageView` member has a multi-planar format with only two planes, then its `plane` member must not be `VK_IMAGE_ASPECT_PLANE_2_BIT`

- VUID-VkExportMetalObjectsInfoEXT-pNext-06803
  If the `pNext` chain includes a VkExportMetalIOSurfaceInfoEXT structure, the VkImage in its `image` member must have been created with `VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT` in the `exportObjectType` member of a VkExportMetalObjectCreateInfoEXT structure in the `pNext` chain of the VkImageCreateInfo structure in the vkCreateImage command

- VUID-VkExportMetalObjectsInfoEXT-pNext-06804
  If the `pNext` chain includes a VkExportMetalSharedEventInfoEXT structure, exactly one of its `semaphore` or `event` members must not be VK_NULL_HANDLE

- VUID-VkExportMetalObjectsInfoEXT-pNext-06805
  If the `pNext` chain includes a VkExportMetalSharedEventInfoEXT structure, and its `semaphore` member is not VK_NULL_HANDLE, the VkSemaphore in its `semaphore` member must have been created with `VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT` in the `exportObjectType` member of a VkExportMetalObjectCreateInfoEXT structure in the `pNext` chain of the VkSemaphoreCreateInfo structure in the vkCreateSemaphore command

- VUID-VkExportMetalObjectsInfoEXT-pNext-06806
  If the `pNext` chain includes a VkExportMetalSharedEventInfoEXT structure, and its `event` member is not VK_NULL_HANDLE, the VkEvent in its `event` member must have been created with `VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT` in the `exportObjectType` member of a VkExportMetalObjectCreateInfoEXT structure in the `pNext` chain of the VkEventCreateInfo structure in the vkCreateEvent command

Valid Usage (Implicit)

- VUID-VkExportMetalObjectsInfoEXT-sType-sType
  `sType` must be `VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT`

- VUID-VkExportMetalObjectsInfoEXT-pNext-pNext
  Each `pNext` member of any structure (including this one) in the `pNext` chain must be either `NULL` or a pointer to a valid instance of VkExportMetalBufferInfoEXT, VkExportMetalCommandQueueInfoEXT, VkExportMetalDeviceInfoEXT, VkExportMetalIOSurfaceInfoEXT, VkExportMetalSharedEventInfoEXT, or VkExportMetalTextureInfoEXT

- VUID-VkExportMetalObjectsInfoEXT-sType-unique
  The `sType` value of each structure in the `pNext` chain must be unique, with the exception of structures of type VkExportMetalBufferInfoEXT, VkExportMetalCommandQueueInfoEXT, VkExportMetalIOSurfaceInfoEXT, VkExportMetalSharedEventInfoEXT, or VkExportMetalTextureInfoEXT

## See Also

VK_EXT_metal_objects, VkStructureType, vkExportMetalObjectsEXT

## Document Notes

For more information, see the Vulkan Specification

This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.

## Copyright

Copyright 2014-2025 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0