VkDeviceGroupPresentInfoKHR
If the pNext
chain of VkPresentInfoKHR includes a
VkDeviceGroupPresentInfoKHR
structure, then that structure includes an
array of device masks and a device group present mode.
The VkDeviceGroupPresentInfoKHR
structure is defined as:
typedef struct VkDeviceGroupPresentInfoKHR {
VkStructureType sType;
const void* pNext;
uint32_t swapchainCount;
const uint32_t* pDeviceMasks;
VkDeviceGroupPresentModeFlagBitsKHR mode;
} VkDeviceGroupPresentInfoKHR;
sType
is a VkStructureType value identifying this structure.pNext
isNULL
or a pointer to a structure extending this structure.swapchainCount
is zero or the number of elements inpDeviceMasks
.pDeviceMasks
is a pointer to an array of device masks, one for each element of VkPresentInfoKHR::pSwapchains
.mode
is a VkDeviceGroupPresentModeFlagBitsKHR value specifying the device group present mode that will be used for this present.
If mode
is VK_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 VkDeviceGroupPresentCapabilitiesKHR.
If mode
is VK_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
VkDeviceGroupPresentCapabilitiesKHR::presentMask
.
If mode
is VK_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
VkDeviceGroupPresentCapabilitiesKHR::presentMask
.
If mode
is
VK_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
VkDeviceGroupPresentCapabilitiesKHR.
If VkDeviceGroupPresentInfoKHR
is not provided or swapchainCount
is zero then the masks are considered to be 1
.
If VkDeviceGroupPresentInfoKHR
is not provided, mode
is
considered to be VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR
.
Valid Usage
VUID-VkDeviceGroupPresentInfoKHR-swapchainCount-01297
swapchainCount
must equal 0
or
VkPresentInfoKHR::swapchainCount
VUID-VkDeviceGroupPresentInfoKHR-mode-01298
If mode
is VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR
, then
each element of pDeviceMasks
must have exactly one bit set, and
the corresponding element of
VkDeviceGroupPresentCapabilitiesKHR::presentMask
must be
non-zero
VUID-VkDeviceGroupPresentInfoKHR-mode-01299
If mode
is VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR
, then
each element of pDeviceMasks
must have exactly one bit set, and
some physical device in the logical device must include that bit in its
VkDeviceGroupPresentCapabilitiesKHR::presentMask
VUID-VkDeviceGroupPresentInfoKHR-mode-01300
If mode
is VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR
, then
each element of pDeviceMasks
must have a value for which all set
bits are set in one of the elements of
VkDeviceGroupPresentCapabilitiesKHR::presentMask
VUID-VkDeviceGroupPresentInfoKHR-mode-01301
If mode
is
VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR
, then for
each bit set in each element of pDeviceMasks
, the corresponding
element of VkDeviceGroupPresentCapabilitiesKHR::presentMask
must be non-zero
VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-01302
The value of each element of pDeviceMasks
must be equal to the
device mask passed in VkAcquireNextImageInfoKHR::deviceMask
when the image index was last acquired
VUID-VkDeviceGroupPresentInfoKHR-mode-01303
mode
must have exactly one bit set, and that bit must have been
included in VkDeviceGroupSwapchainCreateInfoKHR::modes
Valid Usage (Implicit)
VUID-VkDeviceGroupPresentInfoKHR-sType-sType
sType
must be VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR
VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-parameter
If swapchainCount
is not 0
, pDeviceMasks
must be a valid pointer to an array of swapchainCount
uint32_t
values
VUID-VkDeviceGroupPresentInfoKHR-mode-parameter
mode
must be a valid VkDeviceGroupPresentModeFlagBitsKHR value