VV::V3::LogicalDevice class

Represent logical connections to physical devices.

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::LogicalDevice
Represent logical connections to physical devices.

Derived classes

class VV::V4::LogicalDevice

Public types

struct Queue
Queues handle different types of batched commands for the GPU to complete.
using Parent = V2::LogicalDevice

Constructors, destructors, conversion operators

LogicalDevice()
Default constructor.
LogicalDevice(const PhysicalDevice& _physicalDevice)
Constructor with physical device specified.
LogicalDevice(const PhysicalDevice& _physicalDevice, const Memory::AllocationCallbacks& _allocator)
Constructor with physical device and allocator specified.
LogicalDevice(LogicalDevice&& _other) noexcept
Performs a move operation to transfer ownership of the device object to this host object.
~LogicalDevice()
Destructor for logical device. (Will destroy the device object if handle is not null)
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

void AssignPhysicalDevice(const PhysicalDevice& _physicalDevice)
Assigns a physical device.
auto Create(const CreateInfo& _createInfo) -> EResult
Create logical device.
auto Create(const CreateInfo& _createInfo, const Memory::AllocationCallbacks& _allocator) -> EResult
Create a logical device (allocator specified).
auto Create(const PhysicalDevice& _physicalDevice, const CreateInfo& _createInfo) -> EResult
Create a logical device (physical device specified).
auto Create(const PhysicalDevice& _physicalDevice, const CreateInfo& _createInfo, const Memory::AllocationCallbacks& _allocator) -> EResult
Create a logical device (physical device and allocator specified).
void Destroy()
Destroy a logical device.
auto GetPhysicalDevice() const -> const PhysicalDevice&
provides a readonly reference to a physical device host object.
auto WaitUntilIdle() const -> EResult
Wait on the host for the completion of outstanding queue operations for all queues on a given logical device.
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
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.
auto operator==(const LogicalDevice& _other) const -> bool
Checks to see if its the same object by checking to see if its the same handle.
auto operator=(LogicalDevice&& _other) -> LogicalDevice& noexcept
Performs a move assignment operation to transfer ownership of the device object to this host object.

Protected variables

Handle handle
const PhysicalDevice* physicalDevice
const Memory::AllocationCallbacks* allocator