VK_KHR_external_memory_win32(3)

# VK_KHR_external_memory_win32(3) Manual Page

## Name

VK_KHR_external_memory_win32 - device extension

Loading… please wait.

## Registered Extension Number

74

## Revision

1

## Extension and Version Dependencies

VK_KHR_external_memory

## Contact

- James Jones cubanismo

## Other Extension Metadata

Last Modified Date

  2016-10-21

IP Status

  No known IP claims.

Contributors

  - James Jones, NVIDIA

  - Jeff Juliano, NVIDIA

  - Carsten Rohde, NVIDIA

## Description

An application may wish to reference device memory in multiple Vulkan logical devices or instances, in multiple processes, and/or in multiple APIs. This extension enables an application to export Windows handles from Vulkan memory objects and to import Vulkan memory objects from Windows handles exported from other Vulkan memory objects or from similar resources in other APIs.

## New Commands

- vkGetMemoryWin32HandleKHR

- vkGetMemoryWin32HandlePropertiesKHR

## New Structures

- VkMemoryGetWin32HandleInfoKHR

- VkMemoryWin32HandlePropertiesKHR

- Extending VkMemoryAllocateInfo:

  - VkExportMemoryWin32HandleInfoKHR

  - VkImportMemoryWin32HandleInfoKHR

## New Enum Constants

- `VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME`

- `VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION`

- Extending VkStructureType:

  - `VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR`

  - `VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR`

  - `VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR`

  - `VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR`

## Issues

1) Do applications need to call `CloseHandle`() on the values returned from vkGetMemoryWin32HandleKHR when `handleType` is `VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR`?

| editing-note (Jon) This issue refers to a token from `VK_KHR_external_semaphore_win32`, but there is no dependency or interaction with that extension defined above.

RESOLVED: Yes, unless it is passed back in to another driver instance to import the object. A successful get call transfers ownership of the handle to the application. Destroying the memory object will not destroy the handle or the handle’s reference to the underlying memory resource.

2) Should the language regarding KMT/Windows 7 handles be moved to a separate extension so that it can be deprecated over time?

RESOLVED: No. Support for them can be deprecated by drivers if they choose, by no longer returning them in the supported handle types of the instance level queries.

3) How should the valid size and memory type for windows memory handles created outside of Vulkan be specified?

RESOLVED: The valid memory types are queried directly from the external handle. The size is determined by the associated image or buffer memory requirements for external handle types that require dedicated allocations, and by the size specified when creating the object from which the handle was exported for other external handle types.

## Version History

- Revision 1, 2016-10-21 (James Jones)

  - Initial revision

## See Also

VkExportMemoryWin32HandleInfoKHR, VkImportMemoryWin32HandleInfoKHR, VkMemoryGetWin32HandleInfoKHR, VkMemoryWin32HandlePropertiesKHR, vkGetMemoryWin32HandleKHR, vkGetMemoryWin32HandlePropertiesKHR

## 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-2023 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0