vulkan
Safe HaskellNone
LanguageHaskell2010

Vulkan.Extensions.VK_NV_external_memory_capabilities

Description

Name

VK_NV_external_memory_capabilities - instance extension

VK_NV_external_memory_capabilities

Name String
VK_NV_external_memory_capabilities
Extension Type
Instance extension
Registered Extension Number
56
Revision
1
Ratification Status
Not ratified
Extension and Version Dependencies
None
Deprecation State
Contact

Other Extension Metadata

Last Modified Date
2016-08-19
IP Status
No known IP claims.
Interactions and External Dependencies
  • Interacts with Vulkan 1.1.
  • Interacts with VK_KHR_dedicated_allocation.
  • Interacts with VK_NV_dedicated_allocation.
Contributors
  • James Jones, NVIDIA

Description

Applications may wish to import memory from the Direct 3D API, or export memory to other Vulkan instances. This extension provides a set of capability queries that allow applications determine what types of win32 memory handles an implementation supports for a given set of use cases.

New Commands

New Structures

New Enums

New Bitmasks

New Enum Constants

Issues

1) Why do so many external memory capabilities need to be queried on a per-memory-handle-type basis?

RESOLVED: This is because some handle types are based on OS-native objects that have far more limited capabilities than the very generic Vulkan memory objects. Not all memory handle types can name memory objects that support 3D images, for example. Some handle types cannot even support the deferred image and memory binding behavior of Vulkan and require specifying the image when allocating or importing the memory object.

2) Does the ExternalImageFormatPropertiesNV structure need to include a list of memory type bits that support the given handle type?

RESOLVED: No. The memory types that do not support the handle types will simply be filtered out of the results returned by getImageMemoryRequirements when a set of handle types was specified at image creation time.

3) Should the non-opaque handle types be moved to their own extension?

RESOLVED: Perhaps. However, defining the handle type bits does very little and does not require any platform-specific types on its own, and it is easier to maintain the bitmask values in a single extension for now. Presumably more handle types could be added by separate extensions though, and it would be midly weird to have some platform-specific ones defined in the core spec and some in extensions

Version History

  • Revision 1, 2016-08-19 (James Jones)

    • Initial version

See Also

No cross-references are available

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

Documentation

getPhysicalDeviceExternalImageFormatPropertiesNV Source #

Arguments

:: MonadIO io 
=> PhysicalDevice

physicalDevice is the physical device from which to query the image capabilities

physicalDevice must be a valid PhysicalDevice handle

-> Format

format is the image format, corresponding to ImageCreateInfo::format.

format must be a valid Format value

-> ImageType

type is the image type, corresponding to ImageCreateInfo::imageType.

type must be a valid ImageType value

-> ImageTiling

tiling is the image tiling, corresponding to ImageCreateInfo::tiling.

tiling must be a valid ImageTiling value

-> ImageUsageFlags

usage is the intended usage of the image, corresponding to ImageCreateInfo::usage.

usage must be a valid combination of ImageUsageFlagBits values

usage must not be 0

-> ImageCreateFlags

flags is a bitmask describing additional parameters of the image, corresponding to ImageCreateInfo::flags.

flags must be a valid combination of ImageCreateFlagBits values

-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)

externalHandleType is either one of the bits from ExternalMemoryHandleTypeFlagBitsNV, or 0.

externalHandleType must not have more than one bit set

externalHandleType must be a valid combination of ExternalMemoryHandleTypeFlagBitsNV values

-> io ExternalImageFormatPropertiesNV 

vkGetPhysicalDeviceExternalImageFormatPropertiesNV - Determine image capabilities compatible with external memory handle types

Description

If externalHandleType is 0, pExternalImageFormatProperties->imageFormatProperties will return the same values as a call to getPhysicalDeviceImageFormatProperties, and the other members of pExternalImageFormatProperties will all be 0. Otherwise, they are filled in as described for ExternalImageFormatPropertiesNV.

Return Codes

Success
Failure

See Also

VK_NV_external_memory_capabilities, ExternalImageFormatPropertiesNV, ExternalMemoryHandleTypeFlagsNV, Format, ImageCreateFlags, ImageTiling, ImageType, ImageUsageFlags, PhysicalDevice

data ExternalImageFormatPropertiesNV Source #

Constructors

ExternalImageFormatPropertiesNV 

Fields

Instances

Instances details
Storable ExternalImageFormatPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_external_memory_capabilities

Show ExternalImageFormatPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_external_memory_capabilities

FromCStruct ExternalImageFormatPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_external_memory_capabilities

ToCStruct ExternalImageFormatPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_external_memory_capabilities

Zero ExternalImageFormatPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_external_memory_capabilities

newtype ExternalMemoryHandleTypeFlagBitsNV Source #

VkExternalMemoryHandleTypeFlagBitsNV - Bitmask specifying external memory handle types

Description

See Also

VK_NV_external_memory_capabilities, ExternalMemoryHandleTypeFlagsNV

Instances

Instances details
Bits ExternalMemoryHandleTypeFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_external_memory_capabilities

Methods

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

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

xor :: ExternalMemoryHandleTypeFlagBitsNV -> ExternalMemoryHandleTypeFlagBitsNV -> ExternalMemoryHandleTypeFlagBitsNV #

complement :: ExternalMemoryHandleTypeFlagBitsNV -> ExternalMemoryHandleTypeFlagBitsNV #

shift :: ExternalMemoryHandleTypeFlagBitsNV -> Int -> ExternalMemoryHandleTypeFlagBitsNV #

rotate :: ExternalMemoryHandleTypeFlagBitsNV -> Int -> ExternalMemoryHandleTypeFlagBitsNV #

zeroBits :: ExternalMemoryHandleTypeFlagBitsNV #

bit :: Int -> ExternalMemoryHandleTypeFlagBitsNV #

setBit :: ExternalMemoryHandleTypeFlagBitsNV -> Int -> ExternalMemoryHandleTypeFlagBitsNV #

clearBit :: ExternalMemoryHandleTypeFlagBitsNV -> Int -> ExternalMemoryHandleTypeFlagBitsNV #

complementBit :: ExternalMemoryHandleTypeFlagBitsNV -> Int -> ExternalMemoryHandleTypeFlagBitsNV #

testBit :: ExternalMemoryHandleTypeFlagBitsNV -> Int -> Bool #

bitSizeMaybe :: ExternalMemoryHandleTypeFlagBitsNV -> Maybe Int #

bitSize :: ExternalMemoryHandleTypeFlagBitsNV -> Int #

isSigned :: ExternalMemoryHandleTypeFlagBitsNV -> Bool #

shiftL :: ExternalMemoryHandleTypeFlagBitsNV -> Int -> ExternalMemoryHandleTypeFlagBitsNV #

unsafeShiftL :: ExternalMemoryHandleTypeFlagBitsNV -> Int -> ExternalMemoryHandleTypeFlagBitsNV #

shiftR :: ExternalMemoryHandleTypeFlagBitsNV -> Int -> ExternalMemoryHandleTypeFlagBitsNV #

unsafeShiftR :: ExternalMemoryHandleTypeFlagBitsNV -> Int -> ExternalMemoryHandleTypeFlagBitsNV #

rotateL :: ExternalMemoryHandleTypeFlagBitsNV -> Int -> ExternalMemoryHandleTypeFlagBitsNV #

rotateR :: ExternalMemoryHandleTypeFlagBitsNV -> Int -> ExternalMemoryHandleTypeFlagBitsNV #

popCount :: ExternalMemoryHandleTypeFlagBitsNV -> Int #

FiniteBits ExternalMemoryHandleTypeFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_external_memory_capabilities

Eq ExternalMemoryHandleTypeFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_external_memory_capabilities

Ord ExternalMemoryHandleTypeFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_external_memory_capabilities

Storable ExternalMemoryHandleTypeFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_external_memory_capabilities

Read ExternalMemoryHandleTypeFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_external_memory_capabilities

Show ExternalMemoryHandleTypeFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_external_memory_capabilities

Zero ExternalMemoryHandleTypeFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_external_memory_capabilities

newtype ExternalMemoryFeatureFlagBitsNV Source #

VkExternalMemoryFeatureFlagBitsNV - Bitmask specifying external memory features

Description

See Also

VK_NV_external_memory_capabilities, ExternalImageFormatPropertiesNV, ExternalMemoryFeatureFlagsNV, getPhysicalDeviceExternalImageFormatPropertiesNV

Instances

Instances details
Bits ExternalMemoryFeatureFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_external_memory_capabilities

Methods

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

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

xor :: ExternalMemoryFeatureFlagBitsNV -> ExternalMemoryFeatureFlagBitsNV -> ExternalMemoryFeatureFlagBitsNV #

complement :: ExternalMemoryFeatureFlagBitsNV -> ExternalMemoryFeatureFlagBitsNV #

shift :: ExternalMemoryFeatureFlagBitsNV -> Int -> ExternalMemoryFeatureFlagBitsNV #

rotate :: ExternalMemoryFeatureFlagBitsNV -> Int -> ExternalMemoryFeatureFlagBitsNV #

zeroBits :: ExternalMemoryFeatureFlagBitsNV #

bit :: Int -> ExternalMemoryFeatureFlagBitsNV #

setBit :: ExternalMemoryFeatureFlagBitsNV -> Int -> ExternalMemoryFeatureFlagBitsNV #

clearBit :: ExternalMemoryFeatureFlagBitsNV -> Int -> ExternalMemoryFeatureFlagBitsNV #

complementBit :: ExternalMemoryFeatureFlagBitsNV -> Int -> ExternalMemoryFeatureFlagBitsNV #

testBit :: ExternalMemoryFeatureFlagBitsNV -> Int -> Bool #

bitSizeMaybe :: ExternalMemoryFeatureFlagBitsNV -> Maybe Int #

bitSize :: ExternalMemoryFeatureFlagBitsNV -> Int #

isSigned :: ExternalMemoryFeatureFlagBitsNV -> Bool #

shiftL :: ExternalMemoryFeatureFlagBitsNV -> Int -> ExternalMemoryFeatureFlagBitsNV #

unsafeShiftL :: ExternalMemoryFeatureFlagBitsNV -> Int -> ExternalMemoryFeatureFlagBitsNV #

shiftR :: ExternalMemoryFeatureFlagBitsNV -> Int -> ExternalMemoryFeatureFlagBitsNV #

unsafeShiftR :: ExternalMemoryFeatureFlagBitsNV -> Int -> ExternalMemoryFeatureFlagBitsNV #

rotateL :: ExternalMemoryFeatureFlagBitsNV -> Int -> ExternalMemoryFeatureFlagBitsNV #

rotateR :: ExternalMemoryFeatureFlagBitsNV -> Int -> ExternalMemoryFeatureFlagBitsNV #

popCount :: ExternalMemoryFeatureFlagBitsNV -> Int #

FiniteBits ExternalMemoryFeatureFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_external_memory_capabilities

Eq ExternalMemoryFeatureFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_external_memory_capabilities

Ord ExternalMemoryFeatureFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_external_memory_capabilities

Storable ExternalMemoryFeatureFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_external_memory_capabilities

Read ExternalMemoryFeatureFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_external_memory_capabilities

Show ExternalMemoryFeatureFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_external_memory_capabilities

Zero ExternalMemoryFeatureFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_external_memory_capabilities

type NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" Source #