VkPushDescriptorSetWithTemplateInfo
The VkPushDescriptorSetWithTemplateInfo structure is defined as:
typedef struct VkPushDescriptorSetWithTemplateInfo {
VkStructureType sType;
const void* pNext;
VkDescriptorUpdateTemplate descriptorUpdateTemplate;
VkPipelineLayout layout;
uint32_t set;
const void* pData;
} VkPushDescriptorSetWithTemplateInfo;
or the equivalent
typedef VkPushDescriptorSetWithTemplateInfo VkPushDescriptorSetWithTemplateInfoKHR;
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.descriptorUpdateTemplateis a descriptor update template defining how to interpret the descriptor information inpData.layoutis a VkPipelineLayout object used to program the bindings. It must be compatible with the layout used to create thedescriptorUpdateTemplatehandle. If thedynamicPipelineLayoutfeature is enabled,layoutcan be VK_NULL_HANDLE and the layout must be specified by chaining VkPipelineLayoutCreateInfo structure off thepNextsetis the set number of the descriptor set in the pipeline layout that will be updated. This must be the same number used to create thedescriptorUpdateTemplatehandle.pDatais a pointer to memory containing descriptors for the templated update.
Valid Usage
VUID-VkPushDescriptorSetWithTemplateInfo-commandBuffer-00366
The pipelineBindPoint specified during the creation of the
descriptor update template must be supported by the
commandBuffer’s parent VkCommandPool’s queue family
VUID-VkPushDescriptorSetWithTemplateInfo-pData-01686
pData must be a valid pointer to a memory containing one or more
valid instances of VkDescriptorImageInfo,
VkDescriptorBufferInfo, or VkBufferView in a layout defined
by descriptorUpdateTemplate when it was created with
vkCreateDescriptorUpdateTemplate
VUID-VkPushDescriptorSetWithTemplateInfo-layout-07993
layout must be compatible with the layout used to create
descriptorUpdateTemplate
VUID-VkPushDescriptorSetWithTemplateInfo-descriptorUpdateTemplate-07994
descriptorUpdateTemplate must have been created with a
templateType of
VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS
VUID-VkPushDescriptorSetWithTemplateInfo-set-07995
set must be the same value used to create
descriptorUpdateTemplate
VUID-VkPushDescriptorSetWithTemplateInfo-set-07304
set must be less than
VkPipelineLayoutCreateInfo::setLayoutCount provided when
layout was created
VUID-VkPushDescriptorSetWithTemplateInfo-set-07305
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-VkPushDescriptorSetWithTemplateInfo-None-09495
If the dynamicPipelineLayout
feature is not enabled,
layout must be a valid VkPipelineLayout handle
VUID-VkPushDescriptorSetWithTemplateInfo-layout-09496
If layout is VK_NULL_HANDLE, the pNext chain must
include a valid VkPipelineLayoutCreateInfo structure
Valid Usage (Implicit)
VUID-VkPushDescriptorSetWithTemplateInfo-sType-sType
sType must be VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO
VUID-VkPushDescriptorSetWithTemplateInfo-pNext-pNext
pNext must be NULL or a pointer to a valid instance of VkPipelineLayoutCreateInfo
VUID-VkPushDescriptorSetWithTemplateInfo-sType-unique
The sType value of each structure in the pNext chain must be unique
VUID-VkPushDescriptorSetWithTemplateInfo-descriptorUpdateTemplate-parameter
descriptorUpdateTemplate must be a valid VkDescriptorUpdateTemplate handle
VUID-VkPushDescriptorSetWithTemplateInfo-layout-parameter
If layout is not VK_NULL_HANDLE, layout must be a valid VkPipelineLayout handle
VUID-VkPushDescriptorSetWithTemplateInfo-pData-parameter
pData must be a pointer value
VUID-VkPushDescriptorSetWithTemplateInfo-commonparent
Both of descriptorUpdateTemplate, and layout that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice