VkBufferCreateInfo
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;
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.flagsis a bitmask of VkBufferCreateFlagBits specifying additional parameters of the buffer.sizeis the size in bytes of the buffer to be created.usageis a bitmask of VkBufferUsageFlagBits specifying allowed usages of the buffer.sharingModeis a VkSharingMode value specifying the sharing mode of the buffer when it will be accessed by multiple queue families.queueFamilyIndexCountis the number of entries in thepQueueFamilyIndicesarray.pQueueFamilyIndicesis a pointer to an array of queue families that will access this buffer. It is ignored ifsharingModeis notVK_SHARING_MODE_CONCURRENT.
If the pNext chain includes a VkBufferUsageFlags2CreateInfo
structure, VkBufferUsageFlags2CreateInfo::usage from that
structure is used instead of usage from this structure.
Valid Usage
VUID-VkBufferCreateInfo-None-09499
If the pNext chain does not include a
VkBufferUsageFlags2CreateInfo structure,
usage must be a valid combination of VkBufferUsageFlagBits
values
VUID-VkBufferCreateInfo-None-09500
If the pNext chain does not include a
VkBufferUsageFlags2CreateInfo structure,
usage must not be 0
VUID-VkBufferCreateInfo-size-00912
size must be greater than 0
VUID-VkBufferCreateInfo-sharingMode-00913
If sharingMode is VK_SHARING_MODE_CONCURRENT,
pQueueFamilyIndices must be a valid pointer to an array of
queueFamilyIndexCount uint32_t values
VUID-VkBufferCreateInfo-sharingMode-00914
If sharingMode is VK_SHARING_MODE_CONCURRENT,
queueFamilyIndexCount must be greater than 1
VUID-VkBufferCreateInfo-sharingMode-01419
If sharingMode is VK_SHARING_MODE_CONCURRENT, each element
of pQueueFamilyIndices must be unique and must be less than
pQueueFamilyPropertyCount returned by
either vkGetPhysicalDeviceQueueFamilyProperties2 or
vkGetPhysicalDeviceQueueFamilyProperties for the
physicalDevice that was used to create device
VUID-VkBufferCreateInfo-flags-00915
If the sparseBinding feature is not
enabled,
flags must not contain VK_BUFFER_CREATE_SPARSE_BINDING_BIT
VUID-VkBufferCreateInfo-flags-00916
If the sparseResidencyBuffer
feature is not enabled,
flags must not contain
VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
VUID-VkBufferCreateInfo-flags-00917
If the sparseResidencyAliased
feature is not enabled,
flags must not contain VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
VUID-VkBufferCreateInfo-flags-00918
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
VUID-VkBufferCreateInfo-pNext-00920
If the pNext chain includes a
VkExternalMemoryBufferCreateInfo structure, its handleTypes
member must only contain bits that are also in
VkExternalBufferProperties::externalMemoryProperties.compatibleHandleTypes,
as returned by vkGetPhysicalDeviceExternalBufferProperties with
pExternalBufferInfo→handleType equal to any one of the handle
types specified in
VkExternalMemoryBufferCreateInfo::handleTypes
VUID-VkBufferCreateInfo-pNext-01571
If the pNext chain includes a
VkDedicatedAllocationBufferCreateInfoNV structure, and the
dedicatedAllocation member of the chained structure is
VK_TRUE, then flags must not include
VK_BUFFER_CREATE_SPARSE_BINDING_BIT,
VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT, or
VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
VUID-VkBufferCreateInfo-deviceAddress-02604
If VkBufferDeviceAddressCreateInfoEXT::deviceAddress is not
zero, flags must include
VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT
VUID-VkBufferCreateInfo-opaqueCaptureAddress-03337
If
VkBufferOpaqueCaptureAddressCreateInfo::opaqueCaptureAddress
is not zero, flags must include
VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT
VUID-VkBufferCreateInfo-flags-03338
If flags includes
VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, the
bufferDeviceAddressCaptureReplay feature
must be enabled
VUID-VkBufferCreateInfo-usage-04813
If usage includes VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR
or VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR,
and flags does not include
VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR,
then the pNext chain must include a
VkVideoProfileListInfoKHR structure with profileCount
greater than 0 and pProfiles including at least one
VkVideoProfileInfoKHR structure with a videoCodecOperation
member specifying a decode operation
VUID-VkBufferCreateInfo-usage-04814
If usage includes VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR
or VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR,
and flags does not include
VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR,
then the pNext chain must include a
VkVideoProfileListInfoKHR structure with profileCount
greater than 0 and pProfiles including at least one
VkVideoProfileInfoKHR structure with a videoCodecOperation
member specifying an encode operation
VUID-VkBufferCreateInfo-flags-08325
If flags includes
VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR, then
videoMaintenance1 must be enabled
VUID-VkBufferCreateInfo-pNext-10249
If the pNext chain includes a VkVideoProfileListInfoKHR
structure and for any element of its pProfiles member
videoCodecOperation is
VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR, then the
videoEncodeAV1 feature must be
enabled
VUID-VkBufferCreateInfo-size-06409
size must be less than or equal to
VkPhysicalDeviceMaintenance4Properties::maxBufferSize
VUID-VkBufferCreateInfo-usage-08097
If usage includes
VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT, creating this
VkBuffer must not cause the total required space for all
currently valid buffers using this flag on the device to exceed
VkPhysicalDeviceDescriptorBufferPropertiesEXT::samplerDescriptorBufferAddressSpaceSize
or
VkPhysicalDeviceDescriptorBufferPropertiesEXT::descriptorBufferAddressSpaceSize
VUID-VkBufferCreateInfo-usage-08098
If usage includes
VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT, creating this
VkBuffer must not cause the total required space for all
currently valid buffers using this flag on the device to exceed
VkPhysicalDeviceDescriptorBufferPropertiesEXT::resourceDescriptorBufferAddressSpaceSize
or
VkPhysicalDeviceDescriptorBufferPropertiesEXT::descriptorBufferAddressSpaceSize
VUID-VkBufferCreateInfo-flags-08099
If flags includes
VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT, the
descriptorBufferCaptureReplay feature must be enabled
VUID-VkBufferCreateInfo-pNext-08100
If the pNext chain includes a
VkOpaqueCaptureDescriptorDataCreateInfoEXT structure, flagsmust contain
VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
VUID-VkBufferCreateInfo-usage-08101
If usage includes
VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT, the
descriptorBufferPushDescriptors feature must be enabled
VUID-VkBufferCreateInfo-usage-08102
If usage includes
VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT
VkPhysicalDeviceDescriptorBufferPropertiesEXT::bufferlessPushDescriptorsmust be VK_FALSE
VUID-VkBufferCreateInfo-usage-08103
If usage includes
VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT,
usage must contain at least one of
VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT or
VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT
VUID-VkBufferCreateInfo-flags-09641
If flags includes VK_BUFFER_CREATE_PROTECTED_BIT, then
usage must not contain any of the following bits
VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXTVK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXTVK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXTVK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHRVK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHRVK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHRVK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXTVK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXTVK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXTVK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXTVK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT::
Valid Usage (Implicit)
VUID-VkBufferCreateInfo-sType-sType
sType must be VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO
VUID-VkBufferCreateInfo-pNext-pNext
Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkBufferCollectionBufferCreateInfoFUCHSIA, VkBufferDeviceAddressCreateInfoEXT, VkBufferOpaqueCaptureAddressCreateInfo, VkBufferUsageFlags2CreateInfo, VkDedicatedAllocationBufferCreateInfoNV, VkExternalMemoryBufferCreateInfo, VkOpaqueCaptureDescriptorDataCreateInfoEXT, or VkVideoProfileListInfoKHR
VUID-VkBufferCreateInfo-sType-unique
The sType value of each structure in the pNext chain must be unique
VUID-VkBufferCreateInfo-flags-parameter
flags must be a valid combination of VkBufferCreateFlagBits values
VUID-VkBufferCreateInfo-sharingMode-parameter
sharingMode must be a valid VkSharingMode value
::