# VkPushDescriptorSetInfo(3) Manual Page

## Name

VkPushDescriptorSetInfo - Structure specifying a descriptor set push operation

Loading… please wait.

## C Specification

The `VkPushDescriptorSetInfo` structure is defined as:

    // Provided by VK_VERSION_1_4
    typedef struct VkPushDescriptorSetInfo {
        VkStructureType                sType;
        const void*                    pNext;
        VkShaderStageFlags             stageFlags;
        VkPipelineLayout               layout;
        uint32_t                       set;
        uint32_t                       descriptorWriteCount;
        const VkWriteDescriptorSet*    pDescriptorWrites;
    } VkPushDescriptorSetInfo;

or the equivalent

    // Provided by VK_KHR_maintenance6 with VK_KHR_push_descriptor
    typedef VkPushDescriptorSetInfo VkPushDescriptorSetInfoKHR;

## Members

- `sType` is a VkStructureType value identifying this structure.

- `pNext` is `NULL` or a pointer to a structure extending this structure.

- `stageFlags` is a bitmask of VkShaderStageFlagBits specifying the shader stages that will use the descriptors.

- `layout` is a VkPipelineLayout object used to program the bindings. If the `dynamicPipelineLayout` feature is enabled, `layout` can be VK_NULL_HANDLE and the layout must be specified by chaining VkPipelineLayoutCreateInfo structure off the `pNext`

- `set` is the set number of the descriptor set in the pipeline layout that will be updated.

- `descriptorWriteCount` is the number of elements in the `pDescriptorWrites` array.

- `pDescriptorWrites` is a pointer to an array of VkWriteDescriptorSet structures describing the descriptors to be updated.

## Description

If `stageFlags` specifies a subset of all stages corresponding to one or more pipeline bind points, the binding operation still affects all stages corresponding to the given pipeline bind point(s) as if the equivalent original version of this command had been called with the same parameters. For example, specifying a `stageFlags` value of `VK_SHADER_STAGE_VERTEX_BIT` | `VK_SHADER_STAGE_FRAGMENT_BIT` | `VK_SHADER_STAGE_COMPUTE_BIT` is equivalent to calling the original version of this command once with `VK_PIPELINE_BIND_POINT_GRAPHICS` and once with `VK_PIPELINE_BIND_POINT_COMPUTE`.

Valid Usage

- VUID-VkPushDescriptorSetInfo-set-00364
  `set` must be less than VkPipelineLayoutCreateInfo::`setLayoutCount` provided when `layout` was created

- VUID-VkPushDescriptorSetInfo-set-00365
  `set` must be the unique set number in the pipeline layout that uses a descriptor set layout that was created with `VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT`

- VUID-VkPushDescriptorSetInfo-pDescriptorWrites-06494
  For each element i where `pDescriptorWrites`[i].`descriptorType` is `VK_DESCRIPTOR_TYPE_SAMPLER`, `VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER`, `VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE`, `VK_DESCRIPTOR_TYPE_STORAGE_IMAGE`, or `VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT`, `pDescriptorWrites`[i].`pImageInfo` must be a valid pointer to an array of `pDescriptorWrites`[i].`descriptorCount` valid `VkDescriptorImageInfo` structures

- VUID-VkPushDescriptorSetInfo-None-09495
  If the `dynamicPipelineLayout` feature is not enabled, `layout` must be a valid VkPipelineLayout handle

- VUID-VkPushDescriptorSetInfo-layout-09496
  If `layout` is VK_NULL_HANDLE, the `pNext` chain must include a valid VkPipelineLayoutCreateInfo structure

Valid Usage (Implicit)

- VUID-VkPushDescriptorSetInfo-sType-sType
  `sType` must be `VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO`

- VUID-VkPushDescriptorSetInfo-pNext-pNext
  `pNext` must be `NULL` or a pointer to a valid instance of VkPipelineLayoutCreateInfo

- VUID-VkPushDescriptorSetInfo-sType-unique
  The `sType` value of each structure in the `pNext` chain must be unique

- VUID-VkPushDescriptorSetInfo-stageFlags-parameter
  `stageFlags` must be a valid combination of VkShaderStageFlagBits values

- VUID-VkPushDescriptorSetInfo-stageFlags-requiredbitmask
  `stageFlags` must not be `0`

- VUID-VkPushDescriptorSetInfo-layout-parameter
  If `layout` is not VK_NULL_HANDLE, `layout` must be a valid VkPipelineLayout handle

- VUID-VkPushDescriptorSetInfo-pDescriptorWrites-parameter
  `pDescriptorWrites` must be a valid pointer to an array of `descriptorWriteCount` valid VkWriteDescriptorSet structures

- VUID-VkPushDescriptorSetInfo-descriptorWriteCount-arraylength
  `descriptorWriteCount` must be greater than `0`

## See Also

VK_KHR_maintenance6, VK_KHR_push_descriptor, VK_VERSION_1_4, VkPipelineLayout, VkShaderStageFlags, VkStructureType, VkWriteDescriptorSet, vkCmdPushDescriptorSet2, vkCmdPushDescriptorSet2KHR

## Document Notes

For more information, see the Vulkan Specification

This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.

## Copyright

Copyright 2014-2025 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0