The Specification describes Vulkan commands as functions or procedures using C99 syntax. Language bindings for other languages such as C++ and Javascript may allow for stricter parameter passing, or object-oriented interfaces.
Vulkan uses the standard C types for the base type of scalar parameters
(e.g. types from stdint.h
), with exceptions described below, or elsewhere
in the text when appropriate:
VkBool32
represents boolean True
and False
values, since
C does not have a sufficiently portable built-in boolean type:
typedef uint32_t VkBool32;
VkDeviceSize
represents device memory size and offset values:
typedef uint64_t VkDeviceSize;
Commands that create Vulkan objects are of the form vkCreate*
and
take Vk*CreateInfo
structures with the parameters needed to create the
object. These Vulkan objects are destroyed with commands of the form
vkDestroy*
.
The last in-parameter to each command that creates or destroys a Vulkan
object is pAllocator
. The pAllocator
parameter can be set to a
non-NULL
value such that allocations for the given object are delegated to
an application provided callback; refer to the Memory Allocation chapter for further details.
Commands that allocate Vulkan objects owned by pool objects are of the
form vkAllocate*
, and take Vk*AllocateInfo
structures. These
Vulkan objects are freed with commands of the form vkFree*
.
These objects do not take allocators; if host memory is needed, they will
use the allocator that was specified when their parent pool was created.
Information is retrieved from the implementation with commands of the form
vkGet*
.
Commands are recorded into a command buffer by calling API commands of the
form vkCmd*
. Each such command may have different restrictions on
where it can be used: in a primary and/or secondary command buffer, inside
and/or outside a render pass, and in one or more of the supported queue
types. These restrictions are documented together with the definition of
each such command.
The duration of a Vulkan command refers to the interval between calling the command and its return to the caller.