vkCreateBuffer
To create buffers, call:
VkResult vkCreateBuffer(
VkDevice device,
const VkBufferCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkBuffer* pBuffer);
pub fn create_buffer(
device: vk::Device,
p_create_info: *const vk::BufferCreateInfo,
p_allocator: *const vk::AllocationCallbacks,
p_buffer: *mut vk::Buffer,
) -> vk::Result;
deviceis the logical device that creates the buffer object.pCreateInfois a pointer to a VkBufferCreateInfo structure containing parameters affecting creation of the buffer.pAllocatorcontrols host memory allocation as described in the Memory Allocation chapter.pBufferis a pointer to a VkBuffer handle in which the resulting buffer object is returned.
Implementations may fail to create a buffer if the
effective usage includes the
VK_BUFFER_USAGE_2_DESCRIPTOR_HEAP_BIT_EXT flag, and size is
greater than the maximum of
maxResourceHeapSize and
maxSamplerHeapSize.
If this happens, VK_ERROR_OUT_OF_DEVICE_MEMORY will be returned.
Valid Usage
VUID-vkCreateBuffer-device-09664
device 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
VUID-vkCreateBuffer-device-queuecount
The device must have been created with at least 1 queue