Vulkan-Docs/appendices/VK_EXT_external_memory_host...

111 lines
3.4 KiB
Plaintext

include::meta/VK_EXT_external_memory_host.txt[]
*Last Modified Date*::
2017-11-10
*IP Status*::
No known IP claims.
*Contributors*::
- Jaakko Konttinen, AMD
- David Mao, AMD
- Daniel Rakos, AMD
- Tobias Hector, Imagination Technologies
- Jason Ekstrand, Intel
- James Jones, NVIDIA
This extension enables an application to import host allocations and host
mapped foreign device memory to Vulkan memory objects.
=== New Object Types
None.
=== New Enum Constants
* Extending elink:VkStructureType:
** ename:VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT
** ename:VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT
* Extending elink:VkExternalMemoryHandleTypeFlagBitsKHR:
** ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT
** ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT
=== New Enums
None.
=== New Structs
* slink:VkImportMemoryHostPointerInfoEXT
* slink:VkMemoryHostPointerPropertiesEXT
* slink:VkPhysicalDeviceExternalMemoryHostPropertiesEXT
=== New Functions
* flink:vkGetMemoryHostPointerPropertiesEXT
=== Issues
1) What memory type has to be used to import host pointers?
RESOLVED: Depends on the implementation.
Applications have to use the new flink:vkGetMemoryHostPointerPropertiesEXT
command to query the supported memory types for a particular host pointer.
The reported memory types may include memory types that come from a memory
heap that is otherwise not usable for regular memory object allocation and
thus such a heap's size may be zero.
2) Can the application still access the contents of the host allocation
after importing?
RESOLVED: Yes.
However, usual synchronization requirements apply.
3) Can the application free the host allocation?
RESOLVED: No, it violates valid usage conditions.
Using the memory object imported from a host allocation that's already freed
thus results in undefined behavior.
4) Is flink:vkMapMemory expected to return the same host address which was
specified when importing it to the memory object?
RESOLVED: No.
Implementations are allowed to return the same address but it's not
required.
Some implementations might return a different virtual mapping of the
allocation, although the same physical pages will be used.
5) Is there any limitation on the alignment of the host pointer and/or size?
RESOLVED: Yes.
Both the address and the size have to be an integer multiple of
pname:minImportedHostPointerAlignment.
In addition, some platforms and foreign devices may have additional
restrictions.
6) Can the same host allocation be imported multiple times into a given
physical device?
RESOLVED: No, at least not guaranteed by this extension.
Some platforms do not allow locking the same physical pages for device
access multiple times, so attempting to do it may result in undefined
behavior.
7) Does this extension support exporting the new handle type?
RESOLVED: No.
8) Should we include the possibility to import host mapped foreign device
memory using this API?
RESOLVED: Yes, through a separate handle type.
Implementations are still allowed to support only one of the handle types
introduced by this extension by not returning import support for a
particular handle type as returned in slink:VkExternalMemoryPropertiesKHR.
=== Version History
* Revision 1, 2017-11-10 (Daniel Rakos)
- Internal revisions