vulkan-3.26.1: Bindings to the Vulkan graphics API.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits

Synopsis

Documentation

newtype ExternalMemoryHandleTypeFlagBits Source #

VkExternalMemoryHandleTypeFlagBits - Bit specifying external memory handle types

Description

Some external memory handle types can only be shared within the same underlying physical device and/or the same driver version, as defined in the following table:

Handle typePhysicalDeviceIDProperties::driverUUIDPhysicalDeviceIDProperties::deviceUUID
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BITMust matchMust match
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BITMust matchMust match
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BITMust matchMust match
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BITMust matchMust match
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BITMust matchMust match
EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BITMust matchMust match
EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BITMust matchMust match
EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXTNo restrictionNo restriction
EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXTNo restrictionNo restriction
EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXTNo restrictionNo restriction
EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROIDNo restrictionNo restriction
EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIANo restrictionNo restriction
EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NVNo restrictionNo restriction
EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNXNo restrictionNo restriction

External memory handle types compatibility

Note

The above table does not restrict the drivers and devices with which EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT and EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT may be shared, as these handle types inherently mean memory that does not come from the same device, as they import memory from the host or a foreign device, respectively.

Note

Even though the above table does not restrict the drivers and devices with which EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT may be shared, query mechanisms exist in the Vulkan API that prevent the import of incompatible dma-bufs (such as getMemoryFdPropertiesKHR) and that prevent incompatible usage of dma-bufs (such as PhysicalDeviceExternalBufferInfo and PhysicalDeviceExternalImageFormatInfo).

See Also

VK_VERSION_1_1, ExternalMemoryHandleTypeFlags, ImportMemoryFdInfoKHR, ImportMemoryHostPointerInfoEXT, ImportMemoryWin32HandleInfoKHR, ImportMemoryZirconHandleInfoFUCHSIA, MemoryGetFdInfoKHR, MemoryGetRemoteAddressInfoNV, MemoryGetWin32HandleInfoKHR, MemoryGetZirconHandleInfoFUCHSIA, PhysicalDeviceExternalBufferInfo, PhysicalDeviceExternalImageFormatInfo, getMemoryFdPropertiesKHR, getMemoryHostPointerPropertiesEXT, getMemoryWin32HandlePropertiesKHR, getMemoryZirconHandlePropertiesFUCHSIA

Bundled Patterns

pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT :: ExternalMemoryHandleTypeFlagBits

EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT specifies a POSIX file descriptor handle that has only limited valid usage outside of Vulkan and other compatible APIs. It must be compatible with the POSIX system calls dup, dup2, close, and the non-standard system call dup3. Additionally, it must be transportable over a socket using an SCM_RIGHTS control message. It owns a reference to the underlying memory resource represented by its Vulkan memory object.

pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT :: ExternalMemoryHandleTypeFlagBits

EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT specifies an NT handle that has only limited valid usage outside of Vulkan and other compatible APIs. It must be compatible with the functions DuplicateHandle, CloseHandle, CompareObjectHandles, GetHandleInformation, and SetHandleInformation. It owns a reference to the underlying memory resource represented by its Vulkan memory object.

pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT :: ExternalMemoryHandleTypeFlagBits

EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT specifies a global share handle that has only limited valid usage outside of Vulkan and other compatible APIs. It is not compatible with any native APIs. It does not own a reference to the underlying memory resource represented by its Vulkan memory object, and will therefore become invalid when all Vulkan memory objects associated with it are destroyed.

pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT :: ExternalMemoryHandleTypeFlagBits

EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT specifies an NT handle returned by IDXGIResource1::CreateSharedHandle referring to a Direct3D 10 or 11 texture resource. It owns a reference to the memory used by the Direct3D resource.

pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT :: ExternalMemoryHandleTypeFlagBits

EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT specifies a global share handle returned by IDXGIResource::GetSharedHandle referring to a Direct3D 10 or 11 texture resource. It does not own a reference to the underlying Direct3D resource, and will therefore become invalid when all Vulkan memory objects and Direct3D resources associated with it are destroyed.

pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT :: ExternalMemoryHandleTypeFlagBits

EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT specifies an NT handle returned by ID3D12Device::CreateSharedHandle referring to a Direct3D 12 heap resource. It owns a reference to the resources used by the Direct3D heap.

pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT :: ExternalMemoryHandleTypeFlagBits

EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT specifies an NT handle returned by ID3D12Device::CreateSharedHandle referring to a Direct3D 12 committed resource. It owns a reference to the memory used by the Direct3D resource.

pattern EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX :: ExternalMemoryHandleTypeFlagBits

EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX specifies a Screen_buffer object defined by the QNX SDP. See QNX Screen Buffer for more details of this handle type.

pattern EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV :: ExternalMemoryHandleTypeFlagBits

EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV is a handle to an allocation accessible by remote devices. It owns a reference to the underlying memory resource represented by its Vulkan memory object.

pattern EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA :: ExternalMemoryHandleTypeFlagBits

EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA is a Zircon handle to a virtual memory object.

pattern EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT :: ExternalMemoryHandleTypeFlagBits

EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT specifies a host pointer to host mapped foreign memory. It does not own a reference to the underlying memory resource, and will therefore become invalid if the foreign memory is unmapped or otherwise becomes no longer available.

pattern EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT :: ExternalMemoryHandleTypeFlagBits

EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT specifies a host pointer returned by a host memory allocation command. It does not own a reference to the underlying memory resource, and will therefore become invalid if the host memory is freed.

pattern EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID :: ExternalMemoryHandleTypeFlagBits

EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID specifies an AHardwareBuffer object defined by the Android NDK. See Android Hardware Buffers for more details of this handle type.

pattern EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT :: ExternalMemoryHandleTypeFlagBits

EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT is a file descriptor for a Linux dma_buf. It owns a reference to the underlying memory resource represented by its Vulkan memory object.

Instances

Instances details
Storable ExternalMemoryHandleTypeFlagBits Source # 
Instance details

Defined in Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits

Bits ExternalMemoryHandleTypeFlagBits Source # 
Instance details

Defined in Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits

Methods

(.&.) :: ExternalMemoryHandleTypeFlagBits -> ExternalMemoryHandleTypeFlagBits -> ExternalMemoryHandleTypeFlagBits #

(.|.) :: ExternalMemoryHandleTypeFlagBits -> ExternalMemoryHandleTypeFlagBits -> ExternalMemoryHandleTypeFlagBits #

xor :: ExternalMemoryHandleTypeFlagBits -> ExternalMemoryHandleTypeFlagBits -> ExternalMemoryHandleTypeFlagBits #

complement :: ExternalMemoryHandleTypeFlagBits -> ExternalMemoryHandleTypeFlagBits #

shift :: ExternalMemoryHandleTypeFlagBits -> Int -> ExternalMemoryHandleTypeFlagBits #

rotate :: ExternalMemoryHandleTypeFlagBits -> Int -> ExternalMemoryHandleTypeFlagBits #

zeroBits :: ExternalMemoryHandleTypeFlagBits #

bit :: Int -> ExternalMemoryHandleTypeFlagBits #

setBit :: ExternalMemoryHandleTypeFlagBits -> Int -> ExternalMemoryHandleTypeFlagBits #

clearBit :: ExternalMemoryHandleTypeFlagBits -> Int -> ExternalMemoryHandleTypeFlagBits #

complementBit :: ExternalMemoryHandleTypeFlagBits -> Int -> ExternalMemoryHandleTypeFlagBits #

testBit :: ExternalMemoryHandleTypeFlagBits -> Int -> Bool #

bitSizeMaybe :: ExternalMemoryHandleTypeFlagBits -> Maybe Int #

bitSize :: ExternalMemoryHandleTypeFlagBits -> Int #

isSigned :: ExternalMemoryHandleTypeFlagBits -> Bool #

shiftL :: ExternalMemoryHandleTypeFlagBits -> Int -> ExternalMemoryHandleTypeFlagBits #

unsafeShiftL :: ExternalMemoryHandleTypeFlagBits -> Int -> ExternalMemoryHandleTypeFlagBits #

shiftR :: ExternalMemoryHandleTypeFlagBits -> Int -> ExternalMemoryHandleTypeFlagBits #

unsafeShiftR :: ExternalMemoryHandleTypeFlagBits -> Int -> ExternalMemoryHandleTypeFlagBits #

rotateL :: ExternalMemoryHandleTypeFlagBits -> Int -> ExternalMemoryHandleTypeFlagBits #

rotateR :: ExternalMemoryHandleTypeFlagBits -> Int -> ExternalMemoryHandleTypeFlagBits #

popCount :: ExternalMemoryHandleTypeFlagBits -> Int #

FiniteBits ExternalMemoryHandleTypeFlagBits Source # 
Instance details

Defined in Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits

Read ExternalMemoryHandleTypeFlagBits Source # 
Instance details

Defined in Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits

Show ExternalMemoryHandleTypeFlagBits Source # 
Instance details

Defined in Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits

Eq ExternalMemoryHandleTypeFlagBits Source # 
Instance details

Defined in Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits

Ord ExternalMemoryHandleTypeFlagBits Source # 
Instance details

Defined in Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits

Zero ExternalMemoryHandleTypeFlagBits Source # 
Instance details

Defined in Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits