# vkAllocateCommandBuffers(3) Manual Page

## Name

vkAllocateCommandBuffers - Allocate command buffers from an existing command pool

## C Specification

To allocate command buffers, call:

    VkResult vkAllocateCommandBuffers(
        VkDevice                                    device,
        const VkCommandBufferAllocateInfo*          pAllocateInfo,
        VkCommandBuffer*                            pCommandBuffers);

## Parameters

- `device` is the logical device that owns the command pool.

- `pAllocateInfo` is a pointer to a `VkCommandBufferAllocateInfo` structure describing parameters of the allocation.

- `pCommandBuffers` is a pointer to an array of VkCommandBuffer handles in which the resulting command buffer objects are returned. The array must be at least the length specified by the `commandBufferCount` member of `pAllocateInfo`. Each allocated command buffer begins in the initial state.

## Description

`vkAllocateCommandBuffers` can be used to create multiple command buffers. If the creation of any of those command buffers fails, the implementation must destroy all successfully created command buffer objects from this command, set all entries of the `pCommandBuffers` array to `NULL` and return the error.

When command buffers are first allocated, they are in the initial state.

Valid Usage (Implicit)

- `device` must be a valid VkDevice handle

- `pAllocateInfo` must be a valid pointer to a valid VkCommandBufferAllocateInfo structure

- `pCommandBuffers` must be a valid pointer to an array of `pAllocateInfo`::commandBufferCount VkCommandBuffer handles

- The value referenced by `pAllocateInfo`::`commandBufferCount` must be greater than `0`

Host Synchronization

- Host access to `pAllocateInfo`::commandPool must be externally synchronized

Return Codes

On success, this command returns

  - `VK_SUCCESS`

On failure, this command returns

  - `VK_ERROR_OUT_OF_HOST_MEMORY`

  - `VK_ERROR_OUT_OF_DEVICE_MEMORY`

## See Also

VkCommandBuffer, VkCommandBufferAllocateInfo, VkDevice

## 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

Copyright (c) 2014-2020 Khronos Group. This work is licensed under a Creative Commons Attribution 4.0 International License.