C Specification

Metal memory handles compatible with Vulkan may also be created by non-Vulkan APIs using methods beyond the scope of this specification. To determine the correct parameters to use when importing such handles, call:

// Provided by VK_EXT_external_memory_metal
VkResult vkGetMemoryMetalHandlePropertiesEXT(
    VkDevice                                    device,
    VkExternalMemoryHandleTypeFlagBits          handleType,
    const void*                                 pHandle,
    VkMemoryMetalHandlePropertiesEXT*           pMemoryMetalHandleProperties);

Parameters

  • device is the logical device that will be importing pHandle.

  • handleType is a VkExternalMemoryHandleTypeFlagBits value specifying the type of the handle pHandle.

  • pHandle is the handle which will be imported.

  • pMemoryMetalHandleProperties is a pointer to a VkMemoryMetalHandlePropertiesEXT structure in which properties of pHandle are returned.

Description

Valid Usage
  • VUID-vkGetMemoryMetalHandlePropertiesEXT-handle-10416
    pHandle must point to a valid id<MTLBuffer>, id<MTLTexture> or id<MTLDevice>

  • VUID-vkGetMemoryMetalHandlePropertiesEXT-handleType-10417
    handleType must be VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT, VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT or VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT

Valid Usage (Implicit)
  • VUID-vkGetMemoryMetalHandlePropertiesEXT-device-parameter
    device must be a valid VkDevice handle

  • VUID-vkGetMemoryMetalHandlePropertiesEXT-handleType-parameter
    handleType must be a valid VkExternalMemoryHandleTypeFlagBits value

  • VUID-vkGetMemoryMetalHandlePropertiesEXT-pHandle-parameter
    pHandle must be a pointer value

  • VUID-vkGetMemoryMetalHandlePropertiesEXT-pMemoryMetalHandleProperties-parameter
    pMemoryMetalHandleProperties must be a valid pointer to a VkMemoryMetalHandlePropertiesEXT structure

Return Codes
On success, this command returns
  • VK_SUCCESS

On failure, this command returns
  • VK_ERROR_OUT_OF_HOST_MEMORY

  • VK_ERROR_INVALID_EXTERNAL_HANDLE

See Also

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 2014-2025 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0