API_Specification » APISpec_Initialization module

Chapter 3: Specification

Contents

Classes

struct VV::V1::AppInstance::AppInfo
A structure that specifies to the Vulkan driver information about an application that will run an instance.
struct VV::V1::AppInstance::CreateInfo
Structure specifying parameters of a newly created instance.
struct VV::V1::AppInstance::ValidationFeatures
Used when creating a Vulkan app instance and want to enable specific validation features. (Added to the Next chain).
struct VV::V1::AppInstance::ValidationFlags
Used when creating a Vulkan app instance and want to disable validation checks.
struct VV::V1::AppInstance
An object that manages the represented application process state within the GPU.
struct VV::V2::AppInstance
An object that manages the represented application process state within the GPU.
class VV::V3::AppInstance
An object that manages the represented application process state within the GPU.

Enums

enum class EValidationFeatureEnable: ui32 { GPU_Assisted = VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT, GPU_AssistedReserveBindingSlot = VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT, BestPractices = VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT, DebugPrintF = VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT }
Specification

Typedefs

using Handle = VkInstance
Opaque handle to an instance object.
using CreateFlags = Bitfield<EUndefined, VkInstanceCreateFlags>
Reserved for future use...
using FPtr_Void = PFN_vkVoidFunction
Equivalent to VK_FPtr<void, void>.

Functions

static auto Create(const CreateInfo& _info, const Memory::AllocationCallbacks* _allocator, Handle& _handle) -> EResult
Create a new Vulkan application instance.
static void Destroy(Handle _handle, const Memory::AllocationCallbacks* _allocator)
Destroy an application instance of Vulkan.
static auto GetVersion(ui32& _versionContainer) -> EResult
Query the version of application instance-level functionality supported by the implementation.
template<typename ReturnType>
static auto GetProcedureAddress(Handle& _handle, RoCStr _procedureName) -> std::enable_if<std::bool_constant<std::is_pointer<ReturnType>::value && std::is_function<typename std::remove_pointer<ReturnType>::type>::value>::value, ReturnType>::type
Function pointers for all Vulkan commands can be obtained with this command.
template<typename ReturnType>
static auto GetProcedureAddress(Handle& _appInstance, RoCStr _procedureName) -> std::enable_if<std::bool_constant<std::is_pointer<ReturnType>::value && std::is_function<typename std::remove_pointer<ReturnType>::type>::value>::value, ReturnType>::type
Function pointers for all Vulkan commands directly addressed from the device.

Enum documentation

Typedef documentation

using Handle = VkInstance

Opaque handle to an instance object.

Specification

using CreateFlags = Bitfield<EUndefined, VkInstanceCreateFlags>

Reserved for future use...

Specification

using FPtr_Void = PFN_vkVoidFunction

Equivalent to VK_FPtr<void, void>.

Specification

Function documentation

static EResult Create(const CreateInfo& _info, const Memory::AllocationCallbacks* _allocator, Handle& _handle)

Create a new Vulkan application instance.

Parameters
_info The creation specification structure to use.
_allocator Allocator desired (Memory::DefaultAllocator if default desired).
_handle Reference to object that will have the created object's handle written to (if successful).
Returns Returns EResult code (Indicating how the creation went).

Create Instance Specification

static void Destroy(Handle _handle, const Memory::AllocationCallbacks* _allocator)

Destroy an application instance of Vulkan.

Parameters
_handle Handle of the AppInstance.
_allocator Optional: Allocator to use (Memory::DefaultAllocator if default desired).

Destroy Instance Specification

static EResult GetVersion(ui32& _versionContainer)

Query the version of application instance-level functionality supported by the implementation.

Parameters
_versionContainer The value of version will be written to this object referenced.
Returns Returns EResult code (Indicating the version was able to be retrieved).

Specification

template<typename ReturnType>
static std::enable_if<std::bool_constant<std::is_pointer<ReturnType>::value && std::is_function<typename std::remove_pointer<ReturnType>::type>::value>::value, ReturnType>::type GetProcedureAddress(Handle& _handle, RoCStr _procedureName)

Function pointers for all Vulkan commands can be obtained with this command.

vkGetInstanceProcAddr itself is obtained in a platform- and loader- specific manner. Typically, the loader library will export this command as a function symbol, so applications can link against the loader library, or load it dynamically and look up the symbol using platform-specific APIs.

Note: ReturnType is restricted to only function pointing types.

Specification

template<typename ReturnType>
static std::enable_if<std::bool_constant<std::is_pointer<ReturnType>::value && std::is_function<typename std::remove_pointer<ReturnType>::type>::value>::value, ReturnType>::type GetProcedureAddress(Handle& _appInstance, RoCStr _procedureName)

Function pointers for all Vulkan commands directly addressed from the device.

In order to support systems with multiple Vulkan implementations, the function pointers returned by vkGetInstanceProcAddr may point to dispatch code that calls a different real implementation for different VkDevice objects or their child objects. The overhead of the internal dispatch for VkDevice objects can be avoided by obtaining device-specific function pointers for any commands that use a device or device-child object as their dispatchable object.

Note: ReturnType is restricted to only function pointing types.

Specification