VV::V3::AppInstance class

An object that manages the represented application process state within the GPU.

This object represents a device created object on the host. As such ownership is tied to this host object. Due to this design, the object has no copy-construction allowed. Instead, default move constructor and assignment has been defined.

Base classes

struct VV::V2::AppInstance
An object that manages the represented application process state within the GPU.

Derived classes

class VV::V4::AppInstance

Public types

using Parent = V2::AppInstance

Constructors, destructors, conversion operators

AppInstance()
Will construct an AppInstance host object with a null handle and allocator set to default.
AppInstance(const Memory::AllocationCallbacks& _allocator)
Will construct an AppInstance host object with a null handle a the allocator set to the specified allocator.
AppInstance(AppInstance&& _other) noexcept
Performs a move operation to transfer ownership of the device object to this host object.
~AppInstance()
If the handle is found to not be null, this device will attempt to destroy the device object that corresponds to it.
operator Handle&()
Implicit conversion to give a reference to its handle.
operator const Handle&() const
Implicit conversion to give a readonly reference to its handle.
operator const Handle*() const
Implicit conversion to give a pointer to its handle.

Public functions

auto Create(const AppInstance::CreateInfo& _createinfo) -> EResult
Create an application instance.
auto Create(const AppInstance::CreateInfo& _createInfo, const Memory::AllocationCallbacks& _allocator) -> EResult
Create an application instance.
void Destroy()
Destroy an application instance.
auto GetAvailablePhysicalDevices(DynamicArray<PhysicalDevice>& _deviceListing) const -> EResult
Provides the handles of all available physical devices.
auto GetAvailablePhysicalDeviceGroups(DynamicArray<PhysicalDevice::Group>& _groupListing) const -> EResult
Provides a list of the device groups present in the system.
template<typename ReturnType>
auto GetProcedureAddress(RoCStr _procedureName) const -> std::enable_if<std::bool_constant<std::is_pointer<ReturnType>::value && std::is_function<typename std::remove_pointer<ReturnType>::type>::value>::value, ReturnType>::type
auto QueryPhysicalDeviceListing(ui32* _numDevices, PhysicalDevice::Handle* _deviceListing) const -> EResult
Retrieve a list of physical device objects representing the physical devices installed in the system, or get the number of them.
auto QueryPhysicalDeviceGroups(ui32* _numGroups, PhysicalDevice::Group* _groupProperties) const -> EResult
Retrieve a list of physical device groups.
auto operator==(const AppInstance& _other) const -> bool
Checks to see if its the same object by checking to see if its the same handle.
auto operator=(AppInstance&& _other) -> AppInstance& noexcept
Performs a move assignment operation to transfer ownership of the device object to this host object.

Protected variables

Handle handle
const Memory::AllocationCallbacks* allocator

Function documentation

EResult VV::V3::AppInstance::Create(const AppInstance::CreateInfo& _createInfo, const Memory::AllocationCallbacks& _allocator)

Create an application instance.

Parameters
_createInfo
_allocator

EResult VV::V3::AppInstance::GetAvailablePhysicalDeviceGroups(DynamicArray<PhysicalDevice::Group>& _groupListing) const

Provides a list of the device groups present in the system.

Parameters
_groupListing

template<typename ReturnType>
std::enable_if<std::bool_constant<std::is_pointer<ReturnType>::value && std::is_function<typename std::remove_pointer<ReturnType>::type>::value>::value, ReturnType>::type VV::V3::AppInstance::GetProcedureAddress(RoCStr _procedureName) const

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.

https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetInstanceProcAddr.html

EResult VV::V3::AppInstance::QueryPhysicalDeviceListing(ui32* _numDevices, PhysicalDevice::Handle* _deviceListing) const

Retrieve a list of physical device objects representing the physical devices installed in the system, or get the number of them.

If pPhysicalDevices is NULL, then the number of physical devices available is returned in pPhysicalDeviceCount. Otherwise, pPhysicalDeviceCount must point to a variable set by the user to the number of elements in the pPhysicalDevices array, and on return the variable is overwritten with the number of handles actually written to pPhysicalDevices.