VK_EXT_metal_objects(3)

# VK_EXT_metal_objects(3) Manual Page

## Name

VK_EXT_metal_objects - device extension

Loading… please wait.

## Registered Extension Number

312

## Revision

2

## Ratification Status

Ratified

## Extension and Version Dependencies

None

## Contact

- Bill Hollings [GitHub]billhollings

## Extension Proposal

VK_EXT_metal_objects

## Other Extension Metadata

Last Modified Date

  2024-04-04

IP Status

  No known IP claims.

Contributors

  - Bill Hollings, The Brenwill Workshop Ltd.

  - Dzmitry Malyshau, Mozilla Corp.

## Description

In a Vulkan implementation that is layered on top of Metal on Apple device platforms, this extension provides the ability to import and export the underlying Metal objects associated with specific Vulkan objects.

As detailed in the extension proposal document, this extension adds one new Vulkan command, vkExportMetalObjectsEXT, to export underlying Metal objects from Vulkan objects, and supports importing the appropriate existing Metal objects when creating Vulkan objects of types VkDeviceMemory, VkImage, VkSemaphore, and VkEvent,

The intent is that this extension will be advertised and supported only on implementations that are layered on top of Metal on Apple device platforms.

## New Base Types

- IOSurfaceRef

- MTLBuffer_id

- MTLCommandQueue_id

- MTLDevice_id

- MTLSharedEvent_id

- MTLTexture_id

## New Commands

- vkExportMetalObjectsEXT

## New Structures

- VkExportMetalObjectsInfoEXT

- Extending VkExportMetalObjectsInfoEXT:

  - VkExportMetalBufferInfoEXT

  - VkExportMetalCommandQueueInfoEXT

  - VkExportMetalDeviceInfoEXT

  - VkExportMetalIOSurfaceInfoEXT

  - VkExportMetalSharedEventInfoEXT

  - VkExportMetalTextureInfoEXT

- Extending VkImageCreateInfo:

  - VkImportMetalIOSurfaceInfoEXT

  - VkImportMetalTextureInfoEXT

- Extending VkInstanceCreateInfo, VkMemoryAllocateInfo, VkImageCreateInfo, VkImageViewCreateInfo, VkBufferViewCreateInfo, VkSemaphoreCreateInfo, VkEventCreateInfo:

  - VkExportMetalObjectCreateInfoEXT

- Extending VkMemoryAllocateInfo:

  - VkImportMetalBufferInfoEXT

- Extending VkSemaphoreCreateInfo, VkEventCreateInfo:

  - VkImportMetalSharedEventInfoEXT

## New Enums

- VkExportMetalObjectTypeFlagBitsEXT

## New Bitmasks

- VkExportMetalObjectTypeFlagsEXT

## New Enum Constants

- `VK_EXT_METAL_OBJECTS_EXTENSION_NAME`

- `VK_EXT_METAL_OBJECTS_SPEC_VERSION`

- Extending VkStructureType:

  - `VK_STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT`

  - `VK_STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT`

  - `VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT`

  - `VK_STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT`

  - `VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT`

  - `VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT`

  - `VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT`

  - `VK_STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT`

  - `VK_STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT`

  - `VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT`

  - `VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT`

  - `VK_STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT`

## Issues

None.

## Version History

- Revision 1, 2022-05-28 (Bill Hollings)

  - Initial draft.

  - Incorporated feedback from review by the Vulkan Working Group. Renamed many structures, moved import/export of MTLBuffer to VkDeviceMemory, added export of MTLSharedEvent, added import of MTLSharedEvent for VkSemaphore and VkEvent, and changed used bit mask fields to individual bit fields to simplify Valid Usage rules.

- Revision 2, 2024-04-04 (Bill Hollings)

  - Add an `__unsafe_unretained` ownership qualifier to all Metal object declarations, to support Automatic Reference Counting (ARC) on Apple devices.

## See Also

No cross-references are available

## Document Notes

For more information, see the Vulkan Specification

This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.

## Copyright

Copyright 2014-2025 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0