C Specification

To bind an embedded immutable sampler set to a command buffer, call:

// Provided by VK_EXT_descriptor_buffer
void vkCmdBindDescriptorBufferEmbeddedSamplersEXT(
    VkCommandBuffer                             commandBuffer,
    VkPipelineBindPoint                         pipelineBindPoint,
    VkPipelineLayout                            layout,
    uint32_t                                    set);


  • commandBuffer is the command buffer that the embedded immutable samplers will be bound to.

  • pipelineBindPoint is a VkPipelineBindPoint indicating the type of the pipeline that will use the embedded immutable samplers.

  • layout is a VkPipelineLayout object used to program the bindings.

  • set is the number of the set to be bound.


vkCmdBindDescriptorBufferEmbeddedSamplersEXT binds the embedded immutable samplers in set of layout to set for the command buffer for subsequent bound pipeline commands set by pipelineBindPoint. Any previous binding to this set by vkCmdSetDescriptorBufferOffsetsEXT or this command is overwritten. Any sets that were last bound by a call to vkCmdBindDescriptorSets are invalidated upon calling this command. Other sets will also be invalidated upon calling this command if layout differs from the pipeline layout used to bind those other sets, as described in Pipeline Layout Compatibility.

Valid Usage
  • VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-None-08068
    The descriptorBuffer feature must be enabled

  • VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-pipelineBindPoint-08069
    pipelineBindPoint must be supported by the commandBuffer’s parent VkCommandPool’s queue family

  • VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-set-08070
    The VkDescriptorSetLayout at index set when layout was created must have been created with the VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT bit set

  • VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-set-08071
    set must be less than or equal to VkPipelineLayoutCreateInfo::setLayoutCount provided when layout was created

Valid Usage (Implicit)
  • VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-commandBuffer-parameter
    commandBuffer must be a valid VkCommandBuffer handle

  • VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-pipelineBindPoint-parameter
    pipelineBindPoint must be a valid VkPipelineBindPoint value

  • VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-layout-parameter
    layout must be a valid VkPipelineLayout handle

  • VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-commandBuffer-recording
    commandBuffer must be in the recording state

  • VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-commandBuffer-cmdpool
    The VkCommandPool that commandBuffer was allocated from must support graphics, or compute operations

  • VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-videocoding
    This command must only be called outside of a video coding scope

  • VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-commonparent
    Both of commandBuffer, and layout must have been created, allocated, or retrieved from the same VkDevice

Host Synchronization
  • Host access to commandBuffer must be externally synchronized

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

Command Properties
Command Buffer Levels Render Pass Scope Video Coding Scope Supported Queue Types Command Type






See Also

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 2014-2023 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0