Vulkan-Docs/doc/specs/vulkan/man/vkCreateInstance.txt

122 lines
5.2 KiB
Plaintext
Raw Normal View History

2016-02-16 09:53:44 +00:00
vkCreateInstance(3)
====================
Name
----
vkCreateInstance - Create a new Vulkan instance
C Specification
---------------
include::../protos/vkCreateInstance.txt[]
Parameters
----------
pname:pCreateInfo::
Pointer to instance creation structure.
pname:pInstance::
Pointer to variable which will receive the new instance handle.
Description
-----------
fname:vkCreateInstance creates a new Vulkan instance and places a handle to it in
the variable pointed to by pname:pInstance. pname:pCreateInfo is a pointer to an
instance of the slink:VkInstanceCreateInfo structure containing information about
how the instance should be created. The definition of slink:VkInstanceCreateInfo
is:
include::../structs/VkInstanceCreateInfo.txt[]
The pname:sType member of sname:VkInstanceCreateInfo should be set to ename:VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO.
The pname:pNext member of sname:VkInstanceCreateInfo is reserved for use by extensions
and should be set to code:NULL.
The pname:pApplicationInfo member, if non-code:NULL, points to an instance of the slink:VkApplicationInfo
structure containing information about the application. The expected contents of the pname:pApplicationInfo
member are documented below.
The pname:enabledLayerNameCount member of sname:VkInstanceCreateInfo specifies the number of global layers
to enable, and pname:ppEnabledLayerNames is a pointer to an array of pname:enabledLayerNameCount
code:NULL-terminated UTF-8 strings containing the names of layers
that should be enabled globally. If pname:enabledLayerNameCount is zero, then pname:ppEnabledLayerNames
is ignored and no global layers are enabled.
Similary, information about global extensions is specified in the pname:enabledExtensionNameCount and
pname:ppEnabledExtensionNames members. pname:enabledExtensionNameCount specifies the number of global
extensions to enable and pname:ppEnabledExtensionNames is a pointer to an array of pointers
to code:NULL-terminated UTF-8 strings containing the extension names. If an extension is provided
by a layer, both the layer and extension must be specified at fname:vkCreateInstance time.
If pname:enabledExtensionNameCount is zero then no extensions are enabled and pname:ppEnabledExtensionNames
is ignored.
The definition of the slink:VkApplicationInfo structure is as follows:
include::../structs/VkApplicationInfo.txt[]
The pname:sType member of slink:VkApplicationInfo should be set to ename:VK_STRUCTURE_TYPE_APPLICATION_INFO.
The pname:pNext member of slink:VkApplicationInfo is reserved for use by extensions and should
be set to code:NULL.
pname:pApplicationName is a pointer to a code:NULL-terminated UTF-8 string containing the name of
the application. pname:applicationVersion contains an application-specific version number. It is
recommended that new versions of an existing application specify monotonically increasing
values for pname:applicationVersion.
If the application is built on a reusable engine, the name of the engine may be specified
in the NULL-terminated UTF-8 string pointed to by pname:pEngineName. pname:engineVersion
is the version of the engine used to create the application.
Finally, pname:apiVersion is the version of the Vulkan API that the application expects to
use.
Any application memory required by the instance will be allocated by calling functions
specified in the structure pointed to by ptext:pAllocCb. The definition of slink:VkAllocationCallbacks is:
include::../structs/VkAllocationCallbacks.txt[]
The slink:VkAllocationCallbacks structure contains two function pointers. pname:pfnAllocation
points to an allocation function whose protoype should be of the following
form:
[source,{basebackend@docbook:c++:cpp}]
------------------------------------------------------------------------------
typedef void* (*PFN_vkAllocationFunction)(
void* pUserData,
size_t size,
size_t alignment,
VkSystemAllocationScope allocationScope);
------------------------------------------------------------------------------
pname:pUserData is set to the value of pname:pUserData in the allocation info structure
passed to fname:vkCreateInstance. ptext:size is the size of the desired allocation,
ptext:alignment is the desired allocation, in bytes, and ptext:allocationScope represents
the intended usage of the allocation. The return value of function is a pointer
to the newly allocated memory.
The pname:pfnFree member of slink:VkAllocationCallbacks points to an instance of the
following function:
[source,{basebackend@docbook:c++:cpp}]
------------------------------------------------------------------------------
typedef void (*PFN_vkFreeFunction)(
void* pUserData,
void* pMemory);
------------------------------------------------------------------------------
Again, the pname:pUserData parameter is initialized to the value passed in the
slink:VkAllocationCallbacks structure passed to fname:vkCreateInstance. ptext:pMemory is a
pointer to the memory to be freed.
include::../validity/protos/vkCreateInstance.txt[]
See Also
--------
flink:vkDestroyInstance
include::footer.txt[]