Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
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
- Ratification Status
- Ratified
- Extension and Version Dependencies
- 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
- This extension requires SPV_KHR_device_group
- 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_KHR
STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR
STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR
STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR
STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR
STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR
SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR
DeviceGroupPresentModeFlagBitsKHR
DeviceGroupPresentCapabilitiesKHR
ImageSwapchainCreateInfoKHR
BindImageMemorySwapchainInfoKHR
AcquireNextImageInfoKHR
DeviceGroupPresentInfoKHR
DeviceGroupSwapchainCreateInfoKHR
getDeviceGroupPresentCapabilitiesKHR
getDeviceGroupSurfacePresentModesKHR
getPhysicalDevicePresentRectanglesKHR
acquireNextImage2KHR
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:
getDeviceGroupPresentCapabilitiesKHR
getDeviceGroupSurfacePresentModesKHR
getPhysicalDevicePresentRectanglesKHR
If VK_KHR_swapchain is supported:
New Structures
Extending
BindSparseInfo
:
Extending
CommandBufferBeginInfo
:Extending
MemoryAllocateInfo
:Extending
RenderPassBeginInfo
,RenderingInfo
: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:
AcquireNextImageInfoKHR
Extending
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_VERSION
Extending
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
- SwapchainCreateFlagBitsKHR Flags
- pattern SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT :: SwapchainCreateFlagBitsKHR
- 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
- 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
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 application can also release the
acquisition of the image through
releaseSwapchainImagesEXT
,
if the image is not in use by the device, and skip the present
operation.
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
,
ReleaseSwapchainImagesInfoEXT
,
SwapchainCreateInfoKHR
,
acquireFullScreenExclusiveModeEXT
,
acquireNextImageKHR
,
createSharedSwapchainsKHR
,
createSwapchainKHR
,
destroySwapchainKHR
,
getLatencyTimingsNV
,
getPastPresentationTimingGOOGLE
,
getRefreshCycleDurationGOOGLE
,
getSwapchainCounterEXT
,
getSwapchainImagesKHR
,
getSwapchainStatusKHR
,
latencySleepNV
,
queuePresentKHR
,
releaseFullScreenExclusiveModeEXT
,
setHdrMetadataEXT
,
setLatencyMarkerNV
,
setLatencySleepModeNV
,
setLocalDimmingAMD
,
waitForPresentKHR
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
DeviceGroupPresentCapabilitiesKHR | |
|
Instances
data ImageSwapchainCreateInfoKHR Source #
VkImageSwapchainCreateInfoKHR - Specify that an image will be bound to swapchain memory
Valid Usage
- If
swapchain
is notNULL_HANDLE
, the fields ofImageCreateInfo
must match the implied image creation parameters of the swapchain
Valid Usage (Implicit)
-
sType
must beSTRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR
- If
swapchain
is notNULL_HANDLE
,swapchain
must be a validSwapchainKHR
handle
See Also
VK_KHR_device_group,
VK_KHR_swapchain,
VK_VERSION_1_1,
StructureType
,
SwapchainKHR
ImageSwapchainCreateInfoKHR | |
|
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
- If the
swapchain
has been created withSWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT
,imageIndex
must be one that has previously been returned byacquireNextImageKHR
oracquireNextImage2KHR
Valid Usage (Implicit)
-
sType
must beSTRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR
-
swapchain
must be a validSwapchainKHR
handle
Host Synchronization
- Host access to
swapchain
must be externally synchronized
See Also
VK_KHR_device_group,
VK_KHR_swapchain,
VK_VERSION_1_1,
StructureType
,
SwapchainKHR
BindImageMemorySwapchainInfoKHR | |
|
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
semaphore
is notNULL_HANDLE
it must be unsignaled - If
semaphore
is notNULL_HANDLE
it must not have any uncompleted signal or wait operations pending - If
fence
is notNULL_HANDLE
it must be unsignaled and must not be associated with any other queue command that has not yet completed execution on that queue -
semaphore
andfence
must not both be equal toNULL_HANDLE
-
deviceMask
must be a valid device mask -
deviceMask
must not be zero -
semaphore
must have aSemaphoreType
ofSEMAPHORE_TYPE_BINARY
Valid Usage (Implicit)
-
sType
must beSTRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR
-
pNext
must beNULL
-
swapchain
must be a validSwapchainKHR
handle - If
semaphore
is notNULL_HANDLE
,semaphore
must be a validSemaphore
handle - If
fence
is notNULL_HANDLE
,fence
must be a validFence
handle - Each of
fence
,semaphore
, andswapchain
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
swapchain
must be externally synchronized
- Host access to
semaphore
must be externally synchronized - Host access to
fence
must be externally synchronized
See Also
VK_KHR_device_group,
VK_KHR_swapchain,
VK_VERSION_1_1,
Fence
, Semaphore
,
StructureType
,
SwapchainKHR
, acquireNextImage2KHR
AcquireNextImageInfoKHR | |
|
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
-
swapchainCount
must equal0
orPresentInfoKHR
::swapchainCount
- If
mode
isDEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR
, then each element ofpDeviceMasks
must have exactly one bit set, and the corresponding element ofDeviceGroupPresentCapabilitiesKHR
::presentMask
must be non-zero - If
mode
isDEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR
, then each element ofpDeviceMasks
must have exactly one bit set, and some physical device in the logical device must include that bit in itsDeviceGroupPresentCapabilitiesKHR
::presentMask
- If
mode
isDEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR
, then each element ofpDeviceMasks
must have a value for which all set bits are set in one of the elements ofDeviceGroupPresentCapabilitiesKHR
::presentMask
- If
mode
isDEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR
, then for each bit set in each element ofpDeviceMasks
, the corresponding element ofDeviceGroupPresentCapabilitiesKHR
::presentMask
must be non-zero - The value of
each element of
pDeviceMasks
must be equal to the device mask passed inAcquireNextImageInfoKHR
::deviceMask
when the image index was last acquired -
mode
must have exactly one bit set, and that bit must have been included inDeviceGroupSwapchainCreateInfoKHR
::modes
Valid Usage (Implicit)
-
sType
must beSTRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR
- If
swapchainCount
is not0
,pDeviceMasks
must be a valid pointer to an array ofswapchainCount
uint32_t
values -
mode
must be a validDeviceGroupPresentModeFlagBitsKHR
value
See Also
VK_KHR_device_group,
VK_KHR_swapchain,
VK_VERSION_1_1,
DeviceGroupPresentModeFlagBitsKHR
,
StructureType
DeviceGroupPresentInfoKHR | |
|
Instances
Show DeviceGroupPresentInfoKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_swapchain showsPrec :: Int -> DeviceGroupPresentInfoKHR -> ShowS # show :: DeviceGroupPresentInfoKHR -> String # showList :: [DeviceGroupPresentInfoKHR] -> ShowS # | |
FromCStruct DeviceGroupPresentInfoKHR Source # | |
ToCStruct DeviceGroupPresentInfoKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_swapchain 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 |
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
DeviceGroupSwapchainCreateInfoKHR | |
|
Instances
getDeviceGroupPresentCapabilitiesKHR Source #
:: 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 #
:: 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
-
surface
must be supported by all physical devices associated withdevice
, as reported bygetPhysicalDeviceSurfaceSupportKHR
or an equivalent platform-specific mechanism
Valid Usage (Implicit)
-
device
must be a validDevice
handle
-
surface
must be a validSurfaceKHR
handle -
pModes
must be a valid pointer to aDeviceGroupPresentModeFlagsKHR
value - Both of
device
, andsurface
must have been created, allocated, or retrieved from the sameInstance
Host Synchronization
- Host access to
surface
must be externally synchronized
Return Codes
See Also
VK_KHR_device_group,
VK_KHR_surface,
VK_KHR_swapchain,
VK_VERSION_1_1,
Device
, DeviceGroupPresentModeFlagsKHR
,
SurfaceKHR
:: forall io. MonadIO io | |
=> Device |
|
-> ("acquireInfo" ::: AcquireNextImageInfoKHR) |
|
-> io (Result, "imageIndex" ::: Word32) |
vkAcquireNextImage2KHR - Retrieve the index of the next available presentable image
Description
If the swapchain
has been created with the
SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT
flag, the image
whose index is returned in pImageIndex
will be fully backed by memory
before this call returns to the application.
Valid Usage
- If
forward progress
cannot be guaranteed for the
surface
used to createswapchain
, thetimeout
member ofpAcquireInfo
must not beUINT64_MAX
Valid Usage (Implicit)
-
device
must be a validDevice
handle
-
pAcquireInfo
must be a valid pointer to a validAcquireNextImageInfoKHR
structure -
pImageIndex
must be a valid pointer to auint32_t
value
Return Codes
See Also
VK_KHR_device_group,
VK_KHR_swapchain,
VK_VERSION_1_1,
AcquireNextImageInfoKHR
, Device
acquireNextImage2KHRSafe Source #
:: forall io. MonadIO io | |
=> Device |
|
-> ("acquireInfo" ::: AcquireNextImageInfoKHR) |
|
-> io (Result, "imageIndex" ::: Word32) |
A variant of acquireNextImage2KHR
which makes a *safe* FFI call
getPhysicalDevicePresentRectanglesKHR Source #
:: 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
-
surface
must be a validSurfaceKHR
handle
-
surface
must be supported byphysicalDevice
, as reported bygetPhysicalDeviceSurfaceSupportKHR
or an equivalent platform-specific mechanism
Valid Usage (Implicit)
-
physicalDevice
must be a validPhysicalDevice
handle
-
surface
must be a validSurfaceKHR
handle -
pRectCount
must be a valid pointer to auint32_t
value - If
the value referenced by
pRectCount
is not0
, andpRects
is notNULL
,pRects
must be a valid pointer to an array ofpRectCount
Rect2D
structures - Both of
physicalDevice
, andsurface
must have been created, allocated, or retrieved from the sameInstance
Host Synchronization
- Host access to
surface
must 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
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
pattern SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT :: SwapchainCreateFlagBitsKHR |
|
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 |
|