Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Name
VK_NV_external_memory - device extension
VK_NV_external_memory
- Name String
VK_NV_external_memory
- Extension Type
- Device extension
- Registered Extension Number
- 57
- Revision
- 1
- Ratification Status
- Not ratified
- Extension and Version Dependencies
- VK_NV_external_memory_capabilities
- Deprecation State
Deprecated by
VK_KHR_external_memory
extension- Which in turn was promoted to Vulkan 1.1
- Contact
Other Extension Metadata
- Last Modified Date
- 2016-08-19
- IP Status
- No known IP claims.
- Contributors
- James Jones, NVIDIA
- Carsten Rohde, NVIDIA
Description
Applications may wish to export memory to other Vulkan instances or other APIs, or import memory from other Vulkan instances or other APIs to enable Vulkan workloads to be split up across application module, process, or API boundaries. This extension enables applications to create exportable Vulkan memory objects such that the underlying resources can be referenced outside the Vulkan instance that created them.
New Structures
Extending
MemoryAllocateInfo
:
New Enum Constants
NV_EXTERNAL_MEMORY_SPEC_VERSION
Extending
StructureType
:
Issues
1) If memory objects are shared between processes and APIs, is this considered aliasing according to the rules outlined in the Memory Aliasing section?
RESOLVED: Yes, but strict exceptions to the rules are added to allow some forms of aliasing in these cases. Further, other extensions may build upon these new aliasing rules to define specific support usage within Vulkan for imported native memory objects, or memory objects from other APIs.
2) Are new image layouts or metadata required to specify image layouts and layout transitions compatible with non-Vulkan APIs, or with other instances of the same Vulkan driver?
RESOLVED: No. Separate instances of the same Vulkan driver running
on the same GPU should have identical internal layout semantics, so
applications have the tools they need to ensure views of images are
consistent between the two instances. Other APIs will fall into two
categories: Those that are Vulkan compatible (a term to be defined by
subsequent interopability extensions), or Vulkan incompatible. When
sharing images with Vulkan incompatible APIs, the Vulkan image must be
transitioned to the
IMAGE_LAYOUT_GENERAL
layout before
handing it off to the external API.
Note this does not attempt to address cross-device transitions, nor transitions to engines on the same device which are not visible within the Vulkan API. Both of these are beyond the scope of this extension.
Examples
// TODO: Write some sample code here.
Version History
Revision 1, 2016-08-19 (James Jones)
- Initial draft
See Also
ExportMemoryAllocateInfoNV
, ExternalMemoryImageCreateInfoNV
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.
Synopsis
- data ExternalMemoryImageCreateInfoNV = ExternalMemoryImageCreateInfoNV {}
- data ExportMemoryAllocateInfoNV = ExportMemoryAllocateInfoNV {}
- type NV_EXTERNAL_MEMORY_SPEC_VERSION = 1
- pattern NV_EXTERNAL_MEMORY_SPEC_VERSION :: forall a. Integral a => a
- type NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory"
- pattern NV_EXTERNAL_MEMORY_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
- newtype ExternalMemoryHandleTypeFlagBitsNV where
- ExternalMemoryHandleTypeFlagBitsNV Flags
- pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV :: ExternalMemoryHandleTypeFlagBitsNV
- pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV :: ExternalMemoryHandleTypeFlagBitsNV
- pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV :: ExternalMemoryHandleTypeFlagBitsNV
- pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV :: ExternalMemoryHandleTypeFlagBitsNV
- type ExternalMemoryHandleTypeFlagsNV = ExternalMemoryHandleTypeFlagBitsNV
Documentation
data ExternalMemoryImageCreateInfoNV Source #
VkExternalMemoryImageCreateInfoNV - Specify that an image may be backed by external memory
Valid Usage (Implicit)
See Also
VK_NV_external_memory,
ExternalMemoryHandleTypeFlagsNV
,
StructureType
ExternalMemoryImageCreateInfoNV | |
|
Instances
data ExportMemoryAllocateInfoNV Source #
VkExportMemoryAllocateInfoNV - Specify memory handle types that may be exported
Valid Usage (Implicit)
See Also
VK_NV_external_memory,
ExternalMemoryHandleTypeFlagsNV
,
StructureType
ExportMemoryAllocateInfoNV | |
|
Instances
type NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 Source #
pattern NV_EXTERNAL_MEMORY_SPEC_VERSION :: forall a. Integral a => a Source #
type NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" Source #
pattern NV_EXTERNAL_MEMORY_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #
newtype ExternalMemoryHandleTypeFlagBitsNV Source #
VkExternalMemoryHandleTypeFlagBitsNV - Bitmask specifying external memory handle types
See Also
VK_NV_external_memory_capabilities,
ExternalMemoryHandleTypeFlagsNV
pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV :: ExternalMemoryHandleTypeFlagBitsNV |
|
pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV :: ExternalMemoryHandleTypeFlagBitsNV |
|
pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV :: ExternalMemoryHandleTypeFlagBitsNV |
|
pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV :: ExternalMemoryHandleTypeFlagBitsNV |
|