vkCreateBuffer
To create buffers, call:
VkResult vkCreateBuffer(
VkDevice device,
const VkBufferCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkBuffer* pBuffer);
device
is the logical device that creates the buffer object.pCreateInfo
is a pointer to a VkBufferCreateInfo structure containing parameters affecting creation of the buffer.pAllocator
controls host memory allocation as described in the Memory Allocation chapter.pBuffer
is a pointer to a VkBuffer handle in which the resulting buffer object is returned.
Valid Usage
VUID-vkCreateBuffer-device-09664
`device` :normative{type="must"} support at least one queue family with one of the
`VK_QUEUE_VIDEO_ENCODE_BIT_KHR`,
`VK_QUEUE_VIDEO_DECODE_BIT_KHR`,
VK_QUEUE_SPARSE_BINDING_BIT
,
VK_QUEUE_TRANSFER_BIT
, VK_QUEUE_COMPUTE_BIT
, or
VK_QUEUE_GRAPHICS_BIT
capabilities
VUID-vkCreateBuffer-flags-00911
If the flags
member of pCreateInfo
includes
VK_BUFFER_CREATE_SPARSE_BINDING_BIT
,
and the extendedSparseAddressSpace
feature is not enabled,
creating this VkBuffer
must not cause the total required sparse
memory for all currently valid sparse resources on the device to exceed
VkPhysicalDeviceLimits
::sparseAddressSpaceSize
VUID-vkCreateBuffer-flags-09383
If the flags
member of pCreateInfo
includes
VK_BUFFER_CREATE_SPARSE_BINDING_BIT
, the
extendedSparseAddressSpace
feature is enabled, and the
usage
member of pCreateInfo
contains bits not in
VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV
::extendedSparseBufferUsageFlags
,
creating this VkBuffer
must not cause the total required sparse
memory for all currently valid sparse resources on the device, excluding
VkBuffer
created with usage
member of pCreateInfo
containing bits in
VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV
::extendedSparseBufferUsageFlags
and VkImage
created with usage
member of pCreateInfo
containing bits in
VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV
::extendedSparseImageUsageFlags
,
to exceed VkPhysicalDeviceLimits
::sparseAddressSpaceSize
VUID-vkCreateBuffer-flags-09384
If the flags
member of pCreateInfo
includes
VK_BUFFER_CREATE_SPARSE_BINDING_BIT
and the
extendedSparseAddressSpace
feature is enabled, creating this
VkBuffer
must not cause the total required sparse memory for all
currently valid sparse resources on the device to exceed
VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV
::extendedSparseAddressSpaceSize
VUID-vkCreateBuffer-pNext-06387
If using the VkBuffer for an import operation from a
VkBufferCollectionFUCHSIA where a
VkBufferCollectionBufferCreateInfoFUCHSIA has been chained to
pNext
, pCreateInfo
must match the
VkBufferConstraintsInfoFUCHSIA::createInfo
used when setting
the constraints on the buffer collection with
vkSetBufferCollectionBufferConstraintsFUCHSIA
Valid Usage (Implicit)
VUID-vkCreateBuffer-device-parameter
device
must be a valid VkDevice handle
VUID-vkCreateBuffer-pCreateInfo-parameter
pCreateInfo
must be a valid pointer to a valid VkBufferCreateInfo structure
VUID-vkCreateBuffer-pAllocator-parameter
If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure
VUID-vkCreateBuffer-pBuffer-parameter
pBuffer
must be a valid pointer to a VkBuffer handle