## C Specification

The VkBufferCreateInfo structure is defined as:

typedef struct VkBufferCreateInfo {
VkStructureType        sType;
const void*            pNext;
VkBufferCreateFlags    flags;
VkDeviceSize           size;
VkBufferUsageFlags     usage;
VkSharingMode          sharingMode;
uint32_t               queueFamilyIndexCount;
const uint32_t*        pQueueFamilyIndices;
} VkBufferCreateInfo;

## Members

• sType is the type of this structure.

• pNext is NULL or a pointer to an extension-specific structure.

• flags is a bitmask of VkBufferCreateFlagBits specifying additional parameters of the buffer.

• size is the size in bytes of the buffer to be created.

• usage is a bitmask of VkBufferUsageFlagBits specifying allowed usages of the buffer. Any combination of bits can be specified for usage, but at least one of the bits must be set in order to create a valid buffer.

• sharingMode is a VkSharingMode value specifying the sharing mode of the buffer when it will be accessed by multiple queue families.

• queueFamilyIndexCount is the number of entries in the pQueueFamilyIndices array.

• pQueueFamilyIndices is a list of queue families that will access this buffer (ignored if sharingMode is not VK_SHARING_MODE_CONCURRENT).

## Description

Valid Usage
• size must be greater than 0

• If sharingMode is VK_SHARING_MODE_CONCURRENT, pQueueFamilyIndices must be a pointer to an array of queueFamilyIndexCount uint32_t values

• If sharingMode is VK_SHARING_MODE_CONCURRENT, queueFamilyIndexCount must be greater than 1

• If sharingMode is VK_SHARING_MODE_CONCURRENT, each element of pQueueFamilyIndices must be unique and must be less than pQueueFamilyPropertyCount returned by vkGetPhysicalDeviceQueueFamilyProperties for the physicalDevice that was used to create device

• If the sparse bindings feature is not enabled, flags must not contain VK_BUFFER_CREATE_SPARSE_BINDING_BIT

• If the sparse buffer residency feature is not enabled, flags must not contain VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT

• If the sparse aliased residency feature is not enabled, flags must not contain VK_BUFFER_CREATE_SPARSE_ALIASED_BIT

• If flags contains VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT or VK_BUFFER_CREATE_SPARSE_ALIASED_BIT, it must also contain VK_BUFFER_CREATE_SPARSE_BINDING_BIT

Valid Usage (Implicit)
• sType must be VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO

• pNext must be NULL

• flags must be a valid combination of VkBufferCreateFlagBits values

• usage must be a valid combination of VkBufferUsageFlagBits values

• usage must not be 0

• sharingMode must be a valid VkSharingMode value