| // Copyright 2016-2021 The Khronos Group, Inc. |
| // |
| // SPDX-License-Identifier: CC-BY-4.0 |
| |
| include::{generated}/meta/{refprefix}VK_KHR_external_memory_win32.txt[] |
| |
| === 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. |
| |
| include::{generated}/interfaces/VK_KHR_external_memory_win32.txt[] |
| |
| === Issues |
| |
| 1) Do applications need to call code:CloseHandle() on the values returned |
| from flink:vkGetMemoryWin32HandleKHR when pname:handleType is |
| ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR? |
| |
| ifdef::editing-notes[] |
| [NOTE] |
| .editing-note |
| ==== |
| (Jon) This issue refers to a token from |
| `apiext:VK_KHR_external_semaphore_win32`, but there is no dependency or |
| interaction with that extension defined above. |
| ==== |
| endif::editing-notes[] |
| |
| *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 |