2016-07-11 01:13:41 +00:00
|
|
|
// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a
|
|
|
|
// Creative Commons Attribution 4.0 International License; see
|
|
|
|
// http://creativecommons.org/licenses/by/4.0/
|
|
|
|
|
2016-02-16 09:53:44 +00:00
|
|
|
VkBufferCreateInfo(3)
|
|
|
|
=====================
|
|
|
|
|
|
|
|
Name
|
|
|
|
----
|
|
|
|
VkBufferCreateInfo - Structure specifying the parameters of a newly created buffer object.
|
|
|
|
|
|
|
|
C Specification
|
|
|
|
---------------
|
|
|
|
|
2016-07-11 01:13:41 +00:00
|
|
|
// refBegin VkBufferCreateInfo Structure specifying the parameters of a newly created buffer object.
|
2016-02-16 09:53:44 +00:00
|
|
|
|
2016-07-11 01:13:41 +00:00
|
|
|
The sname:VkBufferCreateInfo structure is defined as:
|
2016-02-16 09:53:44 +00:00
|
|
|
|
2016-07-11 01:13:41 +00:00
|
|
|
include::../structs/VkBufferCreateInfo.txt[]
|
2016-02-16 09:53:44 +00:00
|
|
|
|
|
|
|
|
2016-07-11 01:13:41 +00:00
|
|
|
Members
|
|
|
|
-------
|
|
|
|
|
|
|
|
* pname:sType is the type of this structure.
|
|
|
|
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
|
|
|
* pname:flags is a bitmask describing additional parameters of the
|
|
|
|
buffer. See elink:VkBufferCreateFlagBits below for a description of the
|
|
|
|
supported bits.
|
|
|
|
* pname:size is the size in bytes of the buffer to be created.
|
|
|
|
* pname:usage is a bitmask describing the allowed usages of the buffer.
|
|
|
|
See elink:VkBufferUsageFlagBits below for a description of the supported
|
|
|
|
bits.
|
|
|
|
* pname:sharingMode is the sharing mode of the buffer when it will be
|
|
|
|
accessed by multiple queue families, see elink:VkSharingMode in the
|
|
|
|
<<resources-sharing,Resource Sharing>> section below for supported
|
|
|
|
values.
|
|
|
|
* pname:queueFamilyIndexCount is the number of entries in the
|
|
|
|
pname:pQueueFamilyIndices array.
|
|
|
|
* pname:pQueueFamilyIndices is a list of queue families that will
|
|
|
|
access this buffer (ignored if pname:sharingMode is not
|
|
|
|
ename:VK_SHARING_MODE_CONCURRENT).
|
2016-02-16 09:53:44 +00:00
|
|
|
|
|
|
|
|
|
|
|
Description
|
|
|
|
-----------
|
|
|
|
|
2016-07-11 01:13:41 +00:00
|
|
|
Bits which can: be set in pname:usage are:
|
|
|
|
|
|
|
|
// refBegin VkBufferUsageFlagBits - Bitmask specifying allowed usage of a buffer
|
|
|
|
include::../enums/VkBufferUsageFlagBits.txt[]
|
|
|
|
|
|
|
|
* ename:VK_BUFFER_USAGE_TRANSFER_SRC_BIT indicates that the buffer can: be
|
|
|
|
used as the source of a _transfer command_ (see the definition of
|
|
|
|
<<synchronization-transfer,ename:VK_PIPELINE_STAGE_TRANSFER_BIT>>).
|
|
|
|
* ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT indicates that the buffer
|
|
|
|
can: be used as the destination of a transfer command.
|
|
|
|
* ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT indicates that the buffer
|
|
|
|
can: be used to create a sname:VkBufferView suitable for occupying a
|
|
|
|
sname:VkDescriptorSet slot of type
|
|
|
|
ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER.
|
|
|
|
* ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT indicates that the buffer
|
|
|
|
can: be used to create a sname:VkBufferView suitable for occupying a
|
|
|
|
sname:VkDescriptorSet slot of type
|
|
|
|
ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER.
|
|
|
|
* ename:VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT indicates that the buffer can:
|
|
|
|
be used in a sname:VkDescriptorBufferInfo suitable for occupying a
|
|
|
|
sname:VkDescriptorSet slot either of type
|
|
|
|
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
|
|
|
|
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC.
|
|
|
|
* ename:VK_BUFFER_USAGE_STORAGE_BUFFER_BIT indicates that the buffer can:
|
|
|
|
be used in a sname:VkDescriptorBufferInfo suitable for occupying a
|
|
|
|
sname:VkDescriptorSet slot either of type
|
|
|
|
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or
|
|
|
|
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC.
|
|
|
|
* ename:VK_BUFFER_USAGE_INDEX_BUFFER_BIT indicates that the buffer is
|
|
|
|
suitable for passing as the pname:buffer parameter to
|
|
|
|
fname:vkCmdBindIndexBuffer.
|
|
|
|
* ename:VK_BUFFER_USAGE_VERTEX_BUFFER_BIT indicates that the buffer is
|
|
|
|
suitable for passing as an element of the pname:pBuffers array to
|
|
|
|
fname:vkCmdBindVertexBuffers.
|
|
|
|
* ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT indicates that the buffer is
|
|
|
|
suitable for passing as the pname:buffer parameter to
|
|
|
|
fname:vkCmdDrawIndirect, fname:vkCmdDrawIndexedIndirect, or
|
|
|
|
fname:vkCmdDispatchIndirect.
|
|
|
|
|
|
|
|
Any combination of bits can: be specified for pname:usage, but at least one
|
|
|
|
of the bits must: be set in order to create a valid buffer.
|
|
|
|
|
|
|
|
Bits which can: be set in pname:flags are:
|
|
|
|
|
|
|
|
// refBegin VkBufferCreateFlagBits - Bitmask specifying additional parameters of a buffer
|
|
|
|
include::../enums/VkBufferCreateFlagBits.txt[]
|
|
|
|
|
|
|
|
These bits have the following meanings:
|
|
|
|
|
|
|
|
* ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT indicates that the buffer will
|
|
|
|
be backed using sparse memory binding.
|
|
|
|
* ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT indicates that the buffer
|
|
|
|
can: be partially backed using sparse memory binding. Buffers
|
|
|
|
created with this flag must: also be created with the
|
|
|
|
ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT flag.
|
|
|
|
* ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT indicates that the buffer will
|
|
|
|
be backed using sparse memory binding with memory ranges that might also
|
|
|
|
simultaneously be backing another buffer (or another portion of the same
|
|
|
|
buffer). Buffers created with this flag must: also be created
|
|
|
|
with the ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT flag.
|
|
|
|
|
|
|
|
See <<sparsememory-sparseresourcefeatures,Sparse Resource Features>> and
|
|
|
|
<<features-features,Physical Device Features>> for details of the sparse
|
|
|
|
memory features supported on a device.
|
2016-02-16 09:53:44 +00:00
|
|
|
|
|
|
|
include::../validity/structs/VkBufferCreateInfo.txt[]
|
|
|
|
|
2016-07-11 01:13:41 +00:00
|
|
|
|
2016-02-16 09:53:44 +00:00
|
|
|
See Also
|
|
|
|
--------
|
|
|
|
|
Change log for July 15, 2016 Vulkan 1.0.21 spec update:
* Bump API patch number and header version number to 21 for this update.
Github Issues:
* Clarify how <<features-supported-sample-counts,sample count queries>>
relate to the limits in slink:VkPhysicalDeviceLimits. (public issue
185).
* Clarify in the <<interfaces-iointerfaces,Shader Input and Output
Interfaces>> section that shader output variables have undefined values
until the shader writes to them (public issue 240).
* Specify the implicit value of image parameters that cannot be set in
slink:VkSwapchainCreateInfo::pname:flags, pname:imageType,
pname:mipLevels, pname:samples, pname:tiling, and pname:initialLayout
(public issue 243).
* Make use of code:NULL and code:VK_NULL_HANDLE consistent in the
VK_KHR_swapchain extension (public issue 276).
Internal Issues:
* Clarify that presenting an image to a display surface swapchain applies
the display surface's mode, and that destroying a display surface
swapchain may reset the display's mode, in the VK_KHR_display_swapchain
extension (internal issue 247).
* Better describe what a slink:VkSurfaceKHR is, and that creating one does
not set a mode, in the VK_KHR_display extension. This is a round-about
way of pointing out that mode setting is not covered by the extension,
but rather is performed as a side effect of presentation (internal issue
247).
* Add more valid usage statements to flink:vkQueuePresentKHR command when
the VK_KHR_display_swapchain extension is present (internal issue
247).
* Add more includes to the VK_KHR_swapchain extension to better document
interactions with VK_KHR_display_swapchain (internal issue 247).
* Clarify restrictions on location aliasing in the
<<fxvertex,Fixed-Function Vertex Processing>> section (internal issue
370).
* Add mathematical description of blitting to flink:vkCmdBlitImage, and
link it to the <<textures,Image Operations>> chapter. Use mathematical
notation for ranges of texel coordinates in the <<textures,Image
Operations>> chapter. Fixed miscellaneous validity statements for
flink:vkCmdBlit and slink:VkImageBlit (internal issue 382).
Other Commits:
* Added a valid usage rule to flink:VkGraphicsPipelineCreateInfo that the
ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST topology must only be used when
tessellation shaders are used.
* Expand the style guide into a formal "Procedures and Conventions"
document. Add a API Naming Conventions section, move most of the API
Specification Appendix C (Layers and Extensions) content into the new
document, and define the resulting procedures as mandatory (where
relevant). This more clearly separates use vs. specification of Vulkan
APIs.
* Update vk_platform.h to handle 32-bit ARMv8 binaries.
* Various minor cleanups to the Makefile and build process.
2016-07-16 02:05:43 +00:00
|
|
|
elink:VkBufferCreateFlags, elink:VkBufferUsageFlags, basetype:VkDeviceSize, elink:VkSharingMode, elink:VkStructureType, flink:vkCreateBuffer
|
2016-07-11 01:13:41 +00:00
|
|
|
|
|
|
|
|
|
|
|
Document Notes
|
|
|
|
--------------
|
|
|
|
|
|
|
|
For more information, see the Vulkan Specification at URL
|
|
|
|
|
|
|
|
https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkBufferCreateInfo
|
|
|
|
|
|
|
|
This page is extracted from the Vulkan Specification.
|
|
|
|
Fixes and changes should be made to the Specification,not directly.
|
2016-02-16 09:53:44 +00:00
|
|
|
|
|
|
|
include::footer.txt[]
|
2016-07-11 01:13:41 +00:00
|
|
|
|