Structures

VkSetDescriptorBufferOffsetsInfoEXT

Structure specifying descriptor buffer offsets to set in a command buffer

The VkSetDescriptorBufferOffsetsInfoEXT structure is defined as:

typedef struct VkSetDescriptorBufferOffsetsInfoEXT {
    VkStructureType sType;
    const void* pNext;
    VkShaderStageFlags stageFlags;
    VkPipelineLayout layout;
    uint32_t firstSet;
    uint32_t setCount;
    const uint32_t* pBufferIndices;
    const VkDeviceSize* pOffsets;
} VkSetDescriptorBufferOffsetsInfoEXT;
  • 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 the descriptor sets will be bound to
  • 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
  • firstSet is the number of the first set to be bound.
  • setCount is the number of elements in the pBufferIndices and pOffsets arrays.
  • pBufferIndices is a pointer to an array of indices into the descriptor buffer binding points set by vkCmdBindDescriptorBuffersEXT.
  • pOffsets is a pointer to an array of VkDeviceSize offsets to apply to the bound descriptor buffers.

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-VkSetDescriptorBufferOffsetsInfoEXT-pOffsets-08061

The offsets in pOffsets must be aligned to VkPhysicalDeviceDescriptorBufferPropertiesEXT::descriptorBufferOffsetAlignment

VUID-VkSetDescriptorBufferOffsetsInfoEXT-pOffsets-08063

The offsets in pOffsets must be small enough such that any descriptor binding referenced by layout without the VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT flag computes a valid address inside the underlying VkBuffer

VUID-VkSetDescriptorBufferOffsetsInfoEXT-pOffsets-08126

The offsets in pOffsets must be small enough such that any location accessed by a shader as a sampler descriptor must be within VkPhysicalDeviceDescriptorBufferPropertiesEXT::maxSamplerDescriptorBufferRange of the sampler descriptor buffer binding

VUID-VkSetDescriptorBufferOffsetsInfoEXT-pOffsets-08127

The offsets in pOffsets must be small enough such that any location accessed by a shader as a resource descriptor must be within VkPhysicalDeviceDescriptorBufferPropertiesEXT::maxResourceDescriptorBufferRange of the resource descriptor buffer binding

VUID-VkSetDescriptorBufferOffsetsInfoEXT-pBufferIndices-08064

Each element of pBufferIndices must be less than VkPhysicalDeviceDescriptorBufferPropertiesEXT::maxDescriptorBufferBindings

VUID-VkSetDescriptorBufferOffsetsInfoEXT-pBufferIndices-08065

Each element of pBufferIndices must reference a valid descriptor buffer binding set by a previous call to vkCmdBindDescriptorBuffersEXT in commandBuffer

VUID-VkSetDescriptorBufferOffsetsInfoEXT-firstSet-08066

The sum of firstSet and setCount must be less than or equal to VkPipelineLayoutCreateInfo::setLayoutCount provided when layout was created

VUID-VkSetDescriptorBufferOffsetsInfoEXT-firstSet-09006

The VkDescriptorSetLayout for each set from firstSet to firstSet + setCount when layout was created must have been created with the VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT bit set

VUID-VkSetDescriptorBufferOffsetsInfoEXT-None-09495

If the dynamicPipelineLayout feature is not enabled, layout must be a valid VkPipelineLayout handle

VUID-VkSetDescriptorBufferOffsetsInfoEXT-layout-09496

If layout is VK_NULL_HANDLE, the pNext chain must include a valid VkPipelineLayoutCreateInfo structure

Valid Usage (Implicit)

VUID-VkSetDescriptorBufferOffsetsInfoEXT-sType-sType

sType must be VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT

VUID-VkSetDescriptorBufferOffsetsInfoEXT-pNext-pNext

pNext must be NULL or a pointer to a valid instance of VkPipelineLayoutCreateInfo

VUID-VkSetDescriptorBufferOffsetsInfoEXT-sType-unique

The sType value of each struct in the pNext chain must be unique

VUID-VkSetDescriptorBufferOffsetsInfoEXT-pBufferIndices-parameter

pBufferIndices must be a valid pointer to an array of setCount uint32_t values

VUID-VkSetDescriptorBufferOffsetsInfoEXT-pOffsets-parameter

pOffsets must be a valid pointer to an array of setCount VkDeviceSize values