Function Prototype

vkCmdBindIndexBuffer

Bind an index buffer to a command buffer
primary / secondary
both
graphics
state

To bind an index buffer to a command buffer, call:

void vkCmdBindIndexBuffer(
    VkCommandBuffer commandBuffer,
    VkBuffer buffer,
    VkDeviceSize offset,
    VkIndexType indexType);
  • commandBuffer is the command buffer into which the command is recorded.
  • buffer is the buffer being bound.
  • offset is the starting offset in bytes within buffer used in index buffer address calculations.
  • indexType is a VkIndexType value specifying the size of the indices.

If the maintenance6 feature is enabled, buffer can be VK_NULL_HANDLE. If buffer is VK_NULL_HANDLE and the nullDescriptor feature is enabled, every index fetched results in a value of zero.

Valid Usage

VUID-vkCmdBindIndexBuffer-offset-08782

offset must be less than the size of buffer

VUID-vkCmdBindIndexBuffer-offset-08783

The sum of offset and the base address of the range of VkDeviceMemory object that is backing buffer, must be a multiple of the size of the type indicated by indexType

VUID-vkCmdBindIndexBuffer-buffer-08784

buffer must have been created with the VK_BUFFER_USAGE_INDEX_BUFFER_BIT flag

VUID-vkCmdBindIndexBuffer-buffer-08785

If buffer is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory object

VUID-vkCmdBindIndexBuffer-indexType-08786

indexType must not be VK_INDEX_TYPE_NONE_KHR

VUID-vkCmdBindIndexBuffer-indexType-08787

If indexType is VK_INDEX_TYPE_UINT8_KHR, the indexTypeUint8 feature must be enabled

Valid Usage (Implicit)

VUID-vkCmdBindIndexBuffer-buffer-parameter

If buffer is not VK_NULL_HANDLE, buffer must be a valid VkBuffer handle

VUID-vkCmdBindIndexBuffer-commandBuffer-cmdpool

The VkCommandPool that commandBuffer was allocated from must support graphics operations

VUID-vkCmdBindIndexBuffer-videocoding

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

VUID-vkCmdBindIndexBuffer-commonparent

Both of buffer, and commandBuffer that are valid handles of non-ignored parameters 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 ::