| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Vulkan.Extensions.VK_KHR_device_group
Description
Name
VK_KHR_device_group - device extension
VK_KHR_device_group
- Name String
VK_KHR_device_group
- Extension Type
- Device extension
- Registered Extension Number
- 61
- Revision
- 4
- Extension and Version Dependencies
- Requires Vulkan 1.0
- Requires
VK_KHR_device_group_creation
- Deprecation state
- Promoted to Vulkan 1.1
- Contact
Other Extension Metadata
- Last Modified Date
- 2017-10-10
- IP Status
- No known IP claims.
- Interactions and External Dependencies
- Promoted to Vulkan 1.1 Core
- Contributors
- Jeff Bolz, NVIDIA
- Tobias Hector, Imagination Technologies
Description
This extension provides functionality to use a logical device that
consists of multiple physical devices, as created with the
VK_KHR_device_group_creation extension. A device group can allocate
memory across the subdevices, bind memory from one subdevice to a
resource on another subdevice, record command buffers where some work
executes on an arbitrary subset of the subdevices, and potentially
present a swapchain image from one or more subdevices.
Promotion to Vulkan 1.1
The following enums, types and commands are included as interactions
with VK_KHR_swapchain:
STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHRSTRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHRSTRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHRSTRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHRSTRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHRSTRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHRSWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHRDeviceGroupPresentModeFlagBitsKHRDeviceGroupPresentCapabilitiesKHRImageSwapchainCreateInfoKHRBindImageMemorySwapchainInfoKHRAcquireNextImageInfoKHRDeviceGroupPresentInfoKHRDeviceGroupSwapchainCreateInfoKHRgetDeviceGroupPresentCapabilitiesKHRgetDeviceGroupSurfacePresentModesKHRgetPhysicalDevicePresentRectanglesKHRacquireNextImage2KHR
If Vulkan 1.1 and VK_KHR_swapchain are supported, these are included
by VK_KHR_swapchain.
The base functionality in this extension is included in core Vulkan 1.1, with the KHR suffix omitted. The original type, enum and command names are still available as aliases of the core functionality.
New Commands
If VK_KHR_surface is supported:
getDeviceGroupPresentCapabilitiesKHRgetDeviceGroupSurfacePresentModesKHRgetPhysicalDevicePresentRectanglesKHR
If VK_KHR_swapchain is supported:
New Structures
Extending
BindSparseInfo:
Extending
CommandBufferBeginInfo:Extending
MemoryAllocateInfo:Extending
RenderPassBeginInfo,RenderingInfoKHR:Extending
SubmitInfo:
If VK_KHR_bind_memory2 is supported:
Extending
BindBufferMemoryInfo:Extending
BindImageMemoryInfo:
If VK_KHR_surface is supported:
If VK_KHR_swapchain is supported:
AcquireNextImageInfoKHRExtending
BindImageMemoryInfo:Extending
ImageCreateInfo:Extending
PresentInfoKHR:Extending
SwapchainCreateInfoKHR:
New Enums
If VK_KHR_surface is supported:
New Bitmasks
If VK_KHR_surface is supported:
New Enum Constants
KHR_DEVICE_GROUP_SPEC_VERSIONExtending
DependencyFlagBits:Extending
MemoryAllocateFlagBits:Extending
PeerMemoryFeatureFlagBits:Extending
PipelineCreateFlagBits:Extending
StructureType:
If VK_KHR_bind_memory2 is supported:
Extending
ImageCreateFlagBits:Extending
StructureType:
If VK_KHR_surface is supported:
If VK_KHR_swapchain is supported:
Extending
StructureType:Extending
SwapchainCreateFlagBitsKHR:
New Built-in Variables
New SPIR-V Capabilities
Version History
Revision 1, 2016-10-19 (Jeff Bolz)
- Internal revisions
Revision 2, 2017-05-19 (Tobias Hector)
- Removed extended memory bind functions to VK_KHR_bind_memory2, added dependency on that extension, and device-group-specific structs for those functions.
Revision 3, 2017-10-06 (Ian Elliott)
- Corrected Vulkan 1.1 interactions with the WSI extensions. All Vulkan 1.1 WSI interactions are with the VK_KHR_swapchain extension.
Revision 4, 2017-10-10 (Jeff Bolz)
- Rename “SFR” bits and structure members to use the phrase “split instance bind regions”.
See Also
DeviceGroupBindSparseInfoKHR, DeviceGroupCommandBufferBeginInfoKHR,
DeviceGroupRenderPassBeginInfoKHR, DeviceGroupSubmitInfoKHR,
MemoryAllocateFlagBitsKHR, MemoryAllocateFlagsInfoKHR,
MemoryAllocateFlagsKHR, PeerMemoryFeatureFlagBitsKHR,
PeerMemoryFeatureFlagsKHR, cmdDispatchBaseKHR,
cmdSetDeviceMaskKHR, getDeviceGroupPeerMemoryFeaturesKHR
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
- pattern STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR :: StructureType
- pattern STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR :: StructureType
- pattern STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR :: StructureType
- pattern STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR :: StructureType
- pattern STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR :: StructureType
- pattern PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR :: PeerMemoryFeatureFlagBits
- pattern PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR :: PeerMemoryFeatureFlagBits
- pattern PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR :: PeerMemoryFeatureFlagBits
- pattern PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR :: PeerMemoryFeatureFlagBits
- pattern MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR :: MemoryAllocateFlagBits
- pattern PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR :: PipelineCreateFlagBits
- pattern PIPELINE_CREATE_DISPATCH_BASE_KHR :: PipelineCreateFlagBits
- pattern DEPENDENCY_DEVICE_GROUP_BIT_KHR :: DependencyFlagBits
- pattern STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR :: StructureType
- pattern STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR :: StructureType
- pattern IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR :: ImageCreateFlagBits
- getDeviceGroupPeerMemoryFeaturesKHR :: MonadIO io => Device -> ("heapIndex" ::: Word32) -> ("localDeviceIndex" ::: Word32) -> ("remoteDeviceIndex" ::: Word32) -> io ("peerMemoryFeatures" ::: PeerMemoryFeatureFlags)
- cmdSetDeviceMaskKHR :: MonadIO io => CommandBuffer -> ("deviceMask" ::: Word32) -> io ()
- cmdDispatchBaseKHR :: MonadIO io => CommandBuffer -> ("baseGroupX" ::: Word32) -> ("baseGroupY" ::: Word32) -> ("baseGroupZ" ::: Word32) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> io ()
- type PeerMemoryFeatureFlagsKHR = PeerMemoryFeatureFlags
- type MemoryAllocateFlagsKHR = MemoryAllocateFlags
- type PeerMemoryFeatureFlagBitsKHR = PeerMemoryFeatureFlagBits
- type MemoryAllocateFlagBitsKHR = MemoryAllocateFlagBits
- type MemoryAllocateFlagsInfoKHR = MemoryAllocateFlagsInfo
- type BindBufferMemoryDeviceGroupInfoKHR = BindBufferMemoryDeviceGroupInfo
- type BindImageMemoryDeviceGroupInfoKHR = BindImageMemoryDeviceGroupInfo
- type DeviceGroupRenderPassBeginInfoKHR = DeviceGroupRenderPassBeginInfo
- type DeviceGroupCommandBufferBeginInfoKHR = DeviceGroupCommandBufferBeginInfo
- type DeviceGroupSubmitInfoKHR = DeviceGroupSubmitInfo
- type DeviceGroupBindSparseInfoKHR = DeviceGroupBindSparseInfo
- type KHR_DEVICE_GROUP_SPEC_VERSION = 4
- pattern KHR_DEVICE_GROUP_SPEC_VERSION :: forall a. Integral a => a
- type KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group"
- pattern KHR_DEVICE_GROUP_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
- newtype SurfaceKHR = SurfaceKHR Word64
- newtype SwapchainKHR = SwapchainKHR Word64
- data DeviceGroupPresentCapabilitiesKHR = DeviceGroupPresentCapabilitiesKHR {}
- data ImageSwapchainCreateInfoKHR = ImageSwapchainCreateInfoKHR {}
- data BindImageMemorySwapchainInfoKHR = BindImageMemorySwapchainInfoKHR {}
- data AcquireNextImageInfoKHR = AcquireNextImageInfoKHR {
- swapchain :: SwapchainKHR
- timeout :: Word64
- semaphore :: Semaphore
- fence :: Fence
- deviceMask :: Word32
- data DeviceGroupPresentInfoKHR = DeviceGroupPresentInfoKHR {}
- data DeviceGroupSwapchainCreateInfoKHR = DeviceGroupSwapchainCreateInfoKHR {}
- getDeviceGroupPresentCapabilitiesKHR :: forall io. MonadIO io => Device -> io DeviceGroupPresentCapabilitiesKHR
- getDeviceGroupSurfacePresentModesKHR :: forall io. MonadIO io => Device -> SurfaceKHR -> io ("modes" ::: DeviceGroupPresentModeFlagsKHR)
- acquireNextImage2KHR :: forall io. MonadIO io => Device -> ("acquireInfo" ::: AcquireNextImageInfoKHR) -> io (Result, "imageIndex" ::: Word32)
- acquireNextImage2KHRSafe :: forall io. MonadIO io => Device -> ("acquireInfo" ::: AcquireNextImageInfoKHR) -> io (Result, "imageIndex" ::: Word32)
- getPhysicalDevicePresentRectanglesKHR :: forall io. MonadIO io => PhysicalDevice -> SurfaceKHR -> io (Result, "rects" ::: Vector Rect2D)
- newtype DeviceGroupPresentModeFlagBitsKHR where
- DeviceGroupPresentModeFlagBitsKHR Flags
- pattern DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR :: DeviceGroupPresentModeFlagBitsKHR
- pattern DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR :: DeviceGroupPresentModeFlagBitsKHR
- pattern DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR :: DeviceGroupPresentModeFlagBitsKHR
- pattern DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR :: DeviceGroupPresentModeFlagBitsKHR
- type DeviceGroupPresentModeFlagsKHR = DeviceGroupPresentModeFlagBitsKHR
- newtype SwapchainCreateFlagBitsKHR where
- type SwapchainCreateFlagsKHR = SwapchainCreateFlagBitsKHR
Documentation
pattern DEPENDENCY_DEVICE_GROUP_BIT_KHR :: DependencyFlagBits Source #
getDeviceGroupPeerMemoryFeaturesKHR :: MonadIO io => Device -> ("heapIndex" ::: Word32) -> ("localDeviceIndex" ::: Word32) -> ("remoteDeviceIndex" ::: Word32) -> io ("peerMemoryFeatures" ::: PeerMemoryFeatureFlags) Source #
cmdSetDeviceMaskKHR :: MonadIO io => CommandBuffer -> ("deviceMask" ::: Word32) -> io () Source #
cmdDispatchBaseKHR :: MonadIO io => CommandBuffer -> ("baseGroupX" ::: Word32) -> ("baseGroupY" ::: Word32) -> ("baseGroupZ" ::: Word32) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> io () Source #
type KHR_DEVICE_GROUP_SPEC_VERSION = 4 Source #
pattern KHR_DEVICE_GROUP_SPEC_VERSION :: forall a. Integral a => a Source #
type KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" Source #
pattern KHR_DEVICE_GROUP_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #
newtype SurfaceKHR Source #
VkSurfaceKHR - Opaque handle to a surface object
Description
The VK_KHR_surface extension declares the SurfaceKHR object, and
provides a function for destroying SurfaceKHR objects. Separate
platform-specific extensions each provide a function for creating a
SurfaceKHR object for the respective platform. From the application’s
perspective this is an opaque handle, just like the handles of other
Vulkan objects.
See Also
VK_KHR_surface,
PhysicalDeviceSurfaceInfo2KHR,
SwapchainCreateInfoKHR,
createAndroidSurfaceKHR,
createDirectFBSurfaceEXT,
createDisplayPlaneSurfaceKHR,
createHeadlessSurfaceEXT,
createIOSSurfaceMVK,
createImagePipeSurfaceFUCHSIA,
createMacOSSurfaceMVK,
createMetalSurfaceEXT,
createScreenSurfaceQNX,
createStreamDescriptorSurfaceGGP,
createViSurfaceNN,
createWaylandSurfaceKHR,
createWin32SurfaceKHR,
createXcbSurfaceKHR,
createXlibSurfaceKHR,
destroySurfaceKHR,
getDeviceGroupSurfacePresentModesKHR,
getPhysicalDevicePresentRectanglesKHR,
getPhysicalDeviceSurfaceCapabilities2EXT,
getPhysicalDeviceSurfaceCapabilitiesKHR,
getPhysicalDeviceSurfaceFormatsKHR,
getPhysicalDeviceSurfacePresentModesKHR,
getPhysicalDeviceSurfaceSupportKHR
Constructors
| SurfaceKHR Word64 |
Instances
newtype SwapchainKHR Source #
VkSwapchainKHR - Opaque handle to a swapchain object
Description
A swapchain is an abstraction for an array of presentable images that
are associated with a surface. The presentable images are represented by
Image objects created by the platform. One image
(which can be an array image for multiview/stereoscopic-3D surfaces)
is displayed at a time, but multiple images can be queued for
presentation. An application renders to the image, and then queues the
image for presentation to the surface.
A native window cannot be associated with more than one non-retired swapchain at a time. Further, swapchains cannot be created for native windows that have a non-Vulkan graphics API surface associated with them.
Note
The presentation engine is an abstraction for the platform’s compositor or display engine.
The presentation engine may be synchronous or asynchronous with respect to the application and/or logical device.
Some implementations may use the device’s graphics queue or dedicated presentation hardware to perform presentation.
The presentable images of a swapchain are owned by the presentation
engine. An application can acquire use of a presentable image from the
presentation engine. Use of a presentable image must occur only after
the image is returned by
acquireNextImageKHR, and before it
is released by queuePresentKHR.
This includes transitioning the image layout and rendering commands.
An application can acquire use of a presentable image with
acquireNextImageKHR. After
acquiring a presentable image and before modifying it, the application
must use a synchronization primitive to ensure that the presentation
engine has finished reading from the image. The application can then
transition the image’s layout, queue rendering commands to it, etc.
Finally, the application presents the image with
queuePresentKHR, which releases the
acquisition of the image.
The presentation engine controls the order in which presentable images are acquired for use by the application.
Note
This allows the platform to handle situations which require out-of-order return of images after presentation. At the same time, it allows the application to generate command buffers referencing all of the images in the swapchain at initialization time, rather than in its main loop.
See Also
VK_KHR_swapchain,
AcquireNextImageInfoKHR,
BindImageMemorySwapchainInfoKHR,
ImageSwapchainCreateInfoKHR,
PresentInfoKHR,
SwapchainCreateInfoKHR,
acquireFullScreenExclusiveModeEXT,
acquireNextImageKHR,
createSharedSwapchainsKHR,
createSwapchainKHR,
destroySwapchainKHR,
getPastPresentationTimingGOOGLE,
getRefreshCycleDurationGOOGLE,
getSwapchainCounterEXT,
getSwapchainImagesKHR,
getSwapchainStatusKHR,
queuePresentKHR,
releaseFullScreenExclusiveModeEXT,
setHdrMetadataEXT,
setLocalDimmingAMD,
waitForPresentKHR
Constructors
| SwapchainKHR Word64 |
Instances
data DeviceGroupPresentCapabilitiesKHR Source #
VkDeviceGroupPresentCapabilitiesKHR - Present capabilities from other physical devices
Description
modes always has DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR set.
The present mode flags are also used when presenting an image, in
DeviceGroupPresentInfoKHR::mode.
If a device group only includes a single physical device, then modes
must equal DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR.
Valid Usage (Implicit)
See Also
VK_KHR_device_group,
VK_KHR_surface,
VK_KHR_swapchain,
VK_VERSION_1_1,
DeviceGroupPresentModeFlagsKHR,
StructureType,
getDeviceGroupPresentCapabilitiesKHR
Constructors
| DeviceGroupPresentCapabilitiesKHR | |
Fields
| |
Instances
data ImageSwapchainCreateInfoKHR Source #
VkImageSwapchainCreateInfoKHR - Specify that an image will be bound to swapchain memory
Valid Usage
- If
swapchainis notNULL_HANDLE, the fields ofImageCreateInfomust match the implied image creation parameters of the swapchain
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR
- If
swapchainis notNULL_HANDLE,swapchainmust be a validSwapchainKHRhandle
See Also
VK_KHR_device_group,
VK_KHR_swapchain,
VK_VERSION_1_1,
StructureType,
SwapchainKHR
Constructors
| ImageSwapchainCreateInfoKHR | |
Fields
| |
Instances
data BindImageMemorySwapchainInfoKHR Source #
VkBindImageMemorySwapchainInfoKHR - Structure specifying swapchain image memory to bind to
Description
If swapchain is not NULL, the swapchain and imageIndex are used
to determine the memory that the image is bound to, instead of memory
and memoryOffset.
Memory can be bound to a swapchain and use the pDeviceIndices or
pSplitInstanceBindRegions members of
BindImageMemoryDeviceGroupInfo.
Valid Usage
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR
-
swapchainmust be a validSwapchainKHRhandle
Host Synchronization
- Host access to
swapchainmust be externally synchronized
See Also
VK_KHR_device_group,
VK_KHR_swapchain,
VK_VERSION_1_1,
StructureType,
SwapchainKHR
Constructors
| BindImageMemorySwapchainInfoKHR | |
Fields
| |
Instances
data AcquireNextImageInfoKHR Source #
VkAcquireNextImageInfoKHR - Structure specifying parameters of the acquire
Description
If acquireNextImageKHR is used, the device mask is considered to
include all physical devices in the logical device.
Note
acquireNextImage2KHR signals at most one semaphore, even if the
application requests waiting for multiple physical devices to be ready
via the deviceMask. However, only a single physical device can wait
on that semaphore, since the semaphore becomes unsignaled when the wait
succeeds. For other physical devices to wait for the image to be ready,
it is necessary for the application to submit semaphore signal
operation(s) to that first physical device to signal additional
semaphore(s) after the wait succeeds, which the other physical device(s)
can wait upon.
Valid Usage
- If
semaphoreis notNULL_HANDLEit must be unsignaled - If
semaphoreis notNULL_HANDLEit must not have any uncompleted signal or wait operations pending - If
fenceis notNULL_HANDLEit must be unsignaled and must not be associated with any other queue command that has not yet completed execution on that queue -
semaphoreandfencemust not both be equal toNULL_HANDLE -
deviceMaskmust be a valid device mask -
deviceMaskmust not be zero -
semaphoremust have aSemaphoreTypeofSEMAPHORE_TYPE_BINARY
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR
-
pNextmust beNULL -
swapchainmust be a validSwapchainKHRhandle - If
semaphoreis notNULL_HANDLE,semaphoremust be a validSemaphorehandle - If
fenceis notNULL_HANDLE,fencemust be a validFencehandle - Each of
fence,semaphore, andswapchainthat are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameInstance
Host Synchronization
- Host access to
swapchainmust be externally synchronized
- Host access to
semaphoremust be externally synchronized - Host access to
fencemust be externally synchronized
See Also
VK_KHR_device_group,
VK_KHR_swapchain,
VK_VERSION_1_1,
Fence, Semaphore,
StructureType,
SwapchainKHR, acquireNextImage2KHR
Constructors
| AcquireNextImageInfoKHR | |
Fields
| |
Instances
data DeviceGroupPresentInfoKHR Source #
VkDeviceGroupPresentInfoKHR - Mode and mask controlling which physical devices' images are presented
Description
If mode is DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR, then each
element of pDeviceMasks selects which instance of the swapchain image
is presented. Each element of pDeviceMasks must have exactly one bit
set, and the corresponding physical device must have a presentation
engine as reported by DeviceGroupPresentCapabilitiesKHR.
If mode is DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR, then each
element of pDeviceMasks selects which instance of the swapchain image
is presented. Each element of pDeviceMasks must have exactly one bit
set, and some physical device in the logical device must include that
bit in its DeviceGroupPresentCapabilitiesKHR::presentMask.
If mode is DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR, then each element
of pDeviceMasks selects which instances of the swapchain image are
component-wise summed and the sum of those images is presented. If the
sum in any component is outside the representable range, the value of
that component is undefined. Each element of pDeviceMasks must have
a value for which all set bits are set in one of the elements of
DeviceGroupPresentCapabilitiesKHR::presentMask.
If mode is DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR,
then each element of pDeviceMasks selects which instance(s) of the
swapchain images are presented. For each bit set in each element of
pDeviceMasks, the corresponding physical device must have a
presentation engine as reported by DeviceGroupPresentCapabilitiesKHR.
If DeviceGroupPresentInfoKHR is not provided or swapchainCount is
zero then the masks are considered to be 1. If
DeviceGroupPresentInfoKHR is not provided, mode is considered to be
DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR.
Valid Usage
-
swapchainCountmust equal0orPresentInfoKHR::swapchainCount
- If
modeisDEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR, then each element ofpDeviceMasksmust have exactly one bit set, and the corresponding element ofDeviceGroupPresentCapabilitiesKHR::presentMaskmust be non-zero - If
modeisDEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR, then each element ofpDeviceMasksmust have exactly one bit set, and some physical device in the logical device must include that bit in itsDeviceGroupPresentCapabilitiesKHR::presentMask - If
modeisDEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR, then each element ofpDeviceMasksmust have a value for which all set bits are set in one of the elements ofDeviceGroupPresentCapabilitiesKHR::presentMask - If
modeisDEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR, then for each bit set in each element ofpDeviceMasks, the corresponding element ofDeviceGroupPresentCapabilitiesKHR::presentMaskmust be non-zero - The value of
each element of
pDeviceMasksmust be equal to the device mask passed inAcquireNextImageInfoKHR::deviceMaskwhen the image index was last acquired -
modemust have exactly one bit set, and that bit must have been included inDeviceGroupSwapchainCreateInfoKHR::modes
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR
- If
swapchainCountis not0,pDeviceMasksmust be a valid pointer to an array ofswapchainCountuint32_tvalues -
modemust be a validDeviceGroupPresentModeFlagBitsKHRvalue
See Also
VK_KHR_device_group,
VK_KHR_swapchain,
VK_VERSION_1_1,
DeviceGroupPresentModeFlagBitsKHR,
StructureType
Constructors
| DeviceGroupPresentInfoKHR | |
Fields
| |
Instances
| Show DeviceGroupPresentInfoKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_swapchain Methods showsPrec :: Int -> DeviceGroupPresentInfoKHR -> ShowS # show :: DeviceGroupPresentInfoKHR -> String # showList :: [DeviceGroupPresentInfoKHR] -> ShowS # | |
| FromCStruct DeviceGroupPresentInfoKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_swapchain Methods peekCStruct :: Ptr DeviceGroupPresentInfoKHR -> IO DeviceGroupPresentInfoKHR Source # | |
| ToCStruct DeviceGroupPresentInfoKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_swapchain Methods withCStruct :: DeviceGroupPresentInfoKHR -> (Ptr DeviceGroupPresentInfoKHR -> IO b) -> IO b Source # pokeCStruct :: Ptr DeviceGroupPresentInfoKHR -> DeviceGroupPresentInfoKHR -> IO b -> IO b Source # withZeroCStruct :: (Ptr DeviceGroupPresentInfoKHR -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr DeviceGroupPresentInfoKHR -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero DeviceGroupPresentInfoKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_swapchain Methods | |
data DeviceGroupSwapchainCreateInfoKHR Source #
VkDeviceGroupSwapchainCreateInfoKHR - Structure specifying parameters of a newly created swapchain object
Description
If this structure is not present, modes is considered to be
DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR.
Valid Usage (Implicit)
See Also
VK_KHR_device_group,
VK_KHR_swapchain,
VK_VERSION_1_1,
DeviceGroupPresentModeFlagsKHR,
StructureType
Constructors
| DeviceGroupSwapchainCreateInfoKHR | |
Fields
| |
Instances
getDeviceGroupPresentCapabilitiesKHR Source #
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> io DeviceGroupPresentCapabilitiesKHR |
vkGetDeviceGroupPresentCapabilitiesKHR - Query present capabilities from other physical devices
Return Codes
See Also
VK_KHR_device_group,
VK_KHR_surface,
VK_KHR_swapchain,
VK_VERSION_1_1,
Device, DeviceGroupPresentCapabilitiesKHR
getDeviceGroupSurfacePresentModesKHR Source #
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> SurfaceKHR |
|
| -> io ("modes" ::: DeviceGroupPresentModeFlagsKHR) |
vkGetDeviceGroupSurfacePresentModesKHR - Query present capabilities for a surface
Description
The modes returned by this command are not invariant, and may change
in response to the surface being moved, resized, or occluded. These
modes must be a subset of the modes returned by
getDeviceGroupPresentCapabilitiesKHR.
Valid Usage
-
surfacemust be supported by all physical devices associated withdevice, as reported bygetPhysicalDeviceSurfaceSupportKHRor an equivalent platform-specific mechanism
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
surfacemust be a validSurfaceKHRhandle -
pModesmust be a valid pointer to aDeviceGroupPresentModeFlagsKHRvalue - Both of
device, andsurfacemust have been created, allocated, or retrieved from the sameInstance
Host Synchronization
- Host access to
surfacemust be externally synchronized
Return Codes
See Also
VK_KHR_device_group,
VK_KHR_surface,
VK_KHR_swapchain,
VK_VERSION_1_1,
Device, DeviceGroupPresentModeFlagsKHR,
SurfaceKHR
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> ("acquireInfo" ::: AcquireNextImageInfoKHR) |
|
| -> io (Result, "imageIndex" ::: Word32) |
vkAcquireNextImage2KHR - Retrieve the index of the next available presentable image
Valid Usage
- If the number of
currently acquired images is greater than the difference between the
number of images in the
swapchainmember ofpAcquireInfoand the value ofSurfaceCapabilitiesKHR::minImageCountas returned by a call togetPhysicalDeviceSurfaceCapabilities2KHRwith thesurfaceused to createswapchain, thetimeoutmember ofpAcquireInfomust not beUINT64_MAX
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pAcquireInfomust be a valid pointer to a validAcquireNextImageInfoKHRstructure -
pImageIndexmust be a valid pointer to auint32_tvalue
Return Codes
See Also
VK_KHR_device_group,
VK_KHR_swapchain,
VK_VERSION_1_1,
AcquireNextImageInfoKHR, Device
acquireNextImage2KHRSafe Source #
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> ("acquireInfo" ::: AcquireNextImageInfoKHR) |
|
| -> io (Result, "imageIndex" ::: Word32) |
A variant of acquireNextImage2KHR which makes a *safe* FFI call
getPhysicalDevicePresentRectanglesKHR Source #
Arguments
| :: forall io. MonadIO io | |
| => PhysicalDevice |
|
| -> SurfaceKHR |
|
| -> io (Result, "rects" ::: Vector Rect2D) |
vkGetPhysicalDevicePresentRectanglesKHR - Query present rectangles for a surface on a physical device
Description
If pRects is NULL, then the number of rectangles used when
presenting the given surface is returned in pRectCount. Otherwise,
pRectCount must point to a variable set by the user to the number of
elements in the pRects array, and on return the variable is
overwritten with the number of structures actually written to pRects.
If the value of pRectCount is less than the number of rectangles, at
most pRectCount structures will be written, and
INCOMPLETE will be returned instead of
SUCCESS, to indicate that not all the
available rectangles were returned.
The values returned by this command are not invariant, and may change in response to the surface being moved, resized, or occluded.
The rectangles returned by this command must not overlap.
Valid Usage
-
surfacemust be supported byphysicalDevice, as reported bygetPhysicalDeviceSurfaceSupportKHRor an equivalent platform-specific mechanism
Valid Usage (Implicit)
-
physicalDevicemust be a validPhysicalDevicehandle
-
surfacemust be a validSurfaceKHRhandle -
pRectCountmust be a valid pointer to auint32_tvalue - If
the value referenced by
pRectCountis not0, andpRectsis notNULL,pRectsmust be a valid pointer to an array ofpRectCountRect2Dstructures - Both of
physicalDevice, andsurfacemust have been created, allocated, or retrieved from the sameInstance
Host Synchronization
- Host access to
surfacemust be externally synchronized
Return Codes
See Also
VK_KHR_device_group,
VK_KHR_surface,
VK_KHR_swapchain,
VK_VERSION_1_1,
PhysicalDevice,
Rect2D,
SurfaceKHR
newtype DeviceGroupPresentModeFlagBitsKHR Source #
VkDeviceGroupPresentModeFlagBitsKHR - Bitmask specifying supported device group present modes
See Also
VK_KHR_device_group,
VK_KHR_surface,
VK_KHR_swapchain,
VK_VERSION_1_1,
DeviceGroupPresentInfoKHR, DeviceGroupPresentModeFlagsKHR
Constructors
| DeviceGroupPresentModeFlagBitsKHR Flags |
Bundled Patterns
| pattern DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR :: DeviceGroupPresentModeFlagBitsKHR |
|
| pattern DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR :: DeviceGroupPresentModeFlagBitsKHR |
|
| pattern DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR :: DeviceGroupPresentModeFlagBitsKHR |
|
| pattern DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR :: DeviceGroupPresentModeFlagBitsKHR |
|
Instances
newtype SwapchainCreateFlagBitsKHR Source #
VkSwapchainCreateFlagBitsKHR - Bitmask controlling swapchain creation
See Also
Constructors
| SwapchainCreateFlagBitsKHR Flags |
Bundled Patterns
| pattern SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR :: SwapchainCreateFlagBitsKHR |
|
| pattern SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR :: SwapchainCreateFlagBitsKHR |
|
| pattern SWAPCHAIN_CREATE_PROTECTED_BIT_KHR :: SwapchainCreateFlagBitsKHR |
|