Function Prototype

vkCmdPushDataEXT

Update the values of push data

To update push data when using descriptor heaps, call:

void vkCmdPushDataEXT(
    VkCommandBuffer                   commandBuffer,
    const VkPushDataInfoEXT*                            pPushDataInfo);
  • commandBuffer is the command buffer in which the push data update will be recorded.
  • pPushDataInfo is a pointer to a VkPushDataInfoEXT structure.

When vkCmdPushDataEXT is recorded, it immediately invalidates all non-heap descriptor state. Similarly, recording any non-heap descriptor state commands immediately invalidates state set by this command.

All push data is available to all shaders using the existing PushConstant Storage Class.

Device addresses in push data are intended as the fast path for shader-constant data that does not fit into push data directly. In order to maximize performance of constant data inputs, addresses should be aligned to minUniformBufferOffsetAlignment, and decorated with Alignment and NonWritable in the shader when using physical pointers.

Valid Usage (Implicit)

VUID-vkCmdPushDataEXT-pPushDataInfo-parameter

pPushDataInfo must be a valid pointer to a valid VkPushDataInfoEXT structure

VUID-vkCmdPushDataEXT-commandBuffer-cmdpool

The VkCommandPool that commandBuffer was allocated from must support VK_QUEUE_COMPUTE_BIT, or VK_QUEUE_GRAPHICS_BIT operations

VUID-vkCmdPushDataEXT-videocoding

This command must only be called outside of a video coding scope

Host Synchronization

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