Function Prototype

vkFreeDescriptorSets

Free one or more descriptor sets

To free allocated descriptor sets, call:

VkResult vkFreeDescriptorSets(
    VkDevice device,
    VkDescriptorPool descriptorPool,
    uint32_t descriptorSetCount,
    const VkDescriptorSet* pDescriptorSets);
  • device is the logical device that owns the descriptor pool.
  • descriptorPool is the descriptor pool from which the descriptor sets were allocated.
  • descriptorSetCount is the number of elements in the pDescriptorSets array.
  • pDescriptorSets is a pointer to an array of handles to VkDescriptorSet objects.

After calling vkFreeDescriptorSets, all descriptor sets in pDescriptorSets are invalid.

Valid Usage

VUID-vkFreeDescriptorSets-pDescriptorSets-00309

All submitted commands that refer to any element of pDescriptorSets must have completed execution

VUID-vkFreeDescriptorSets-pDescriptorSets-00310

pDescriptorSets must be a valid pointer to an array of descriptorSetCount VkDescriptorSet handles, each element of which must either be a valid handle or VK_NULL_HANDLE

VUID-vkFreeDescriptorSets-descriptorPool-00312

descriptorPool must have been created with the VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT flag

Valid Usage (Implicit)

VUID-vkFreeDescriptorSets-descriptorSetCount-arraylength

descriptorSetCount must be greater than 0

VUID-vkFreeDescriptorSets-descriptorPool-parent

descriptorPool must have been created, allocated, or retrieved from device

VUID-vkFreeDescriptorSets-pDescriptorSets-parent

Each element of pDescriptorSets that is a valid handle must have been created, allocated, or retrieved from descriptorPool

Host Synchronization

  • Host access to descriptorPool must be externally synchronized
  • Host access to each member of pDescriptorSets must be externally synchronized ::