Function Prototype

vkCmdSetDeviceMask

Modify device mask of a command buffer

To update the current device mask of a command buffer, call:

void vkCmdSetDeviceMaskKHR(
    VkCommandBuffer commandBuffer,
    uint32_t deviceMask);
  • commandBuffer is command buffer whose current device mask is modified.
  • deviceMask is the new value of the current device mask.

deviceMask is used to filter out subsequent commands from executing on all physical devices whose bit indices are not set in the mask, except commands beginning a render pass instance, commands transitioning to the next subpass in the render pass instance, and commands ending a render pass instance, which always execute on the set of physical devices whose bit indices are included in the deviceMask member of the VkDeviceGroupRenderPassBeginInfo structure passed to the command beginning the corresponding render pass instance.

Valid Usage

VUID-vkCmdSetDeviceMask-deviceMask-00108

deviceMask must be a valid device mask value

VUID-vkCmdSetDeviceMask-deviceMask-00109

deviceMask must not be zero

VUID-vkCmdSetDeviceMask-deviceMask-00110

deviceMask must not include any set bits that were not in the VkDeviceGroupCommandBufferBeginInfo::deviceMask value when the command buffer began recording

VUID-vkCmdSetDeviceMask-deviceMask-00111

If vkCmdSetDeviceMask is called inside a render pass instance, deviceMask must not include any set bits that were not in the VkDeviceGroupRenderPassBeginInfo::deviceMask value when the render pass instance began recording

Valid Usage (Implicit)

VUID-vkCmdSetDeviceMask-commandBuffer-cmdpool

The VkCommandPool that commandBuffer was allocated from must support graphics, compute, or transfer operations

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the VkCommandPool that commandBuffer was allocated from must be externally synchronized ::