API_Specification » APISpec_Devices_and_Queues module

Chapter 4: Specification

Contents

Classes

struct VV::V1::LogicalDevice::Queue::CreateInfo
Specification
struct VV::V1::LogicalDevice::Queue
Queues handle different types of batched commands for the GPU to complete.
struct VV::V1::LogicalDevice::Queue2
struct VV::V1::LogicalDevice::GroupCreateInfo
struct VV::V1::LogicalDevice::MemoryOverallocationCreateInfo
struct VV::V1::LogicalDevice::PrivateDataCreateInfo
Used to reserve private data storage slots.
struct VV::V1::LogicalDevice::CreateInfo
Specification
struct VV::V3::LogicalDevice::Queue
Queues handle different types of batched commands for the GPU to complete.
struct VV::V1::LogicalDevice
Represent logical connections to physical devices.
struct VV::V2::LogicalDevice
Represent logical connections to physical devices.
class VV::V3::LogicalDevice
Represent logical connections to physical devices.
struct VV::V1::PhysicalDevice::ConformanceVersion
Conformance test suite version an implementation is compliant with is described with this.
struct VV::V1::PhysicalDevice::Group
struct VV::V1::PhysicalDevice::MemoryProperties
Specification</
struct VV::V1::PhysicalDevice::PerformanceCounter::Description
struct VV::V1::PhysicalDevice::PerformanceCounter
Specification
struct VV::V1::PhysicalDevice::Properties::DeviceID
To query the UUID and LUID of a device, add a VkPhysicalDeviceIDProperties structure to the pNext chain of the VkPhysicalDeviceProperties2 structure.
struct VV::V1::PhysicalDevice::Properties::PCIBusInfo
To query the PCI bus information of a physical device, add a VkPhysicalDevicePCIBusInfoPropertiesEXT structure to the pNext chain of the VkPhysicalDeviceProperties2 structure.
struct VV::V1::PhysicalDevice::Properties::Vulkan11
To query the properties of the driver corresponding to Vulkan 1.1 functionality, add VkPhysicalDeviceVulkan11Properties to the pNext chain of the VkPhysicalDeviceProperties2 structure.
struct VV::V1::PhysicalDevice::Properties::Vulkan12
To query the properties of the driver corresponding to Vulkan 1.2 functionality, add VkPhysicalDeviceVulkan12Properties to the pNext chain of the VkPhysicalDeviceProperties2 structure.
struct VV::V1::PhysicalDevice::Properties
Container of query general properties of physical devices once enumerated.
struct VV::V1::PhysicalDevice::Properties2
Each structure in Properties and its pNext chain contain members corresponding to properties or implementation-dependent limits.
struct VV::V1::PhysicalDevice::QueueFamilyProperties
A set of queues that have common properties and support the same functionality.
struct VV::V1::PhysicalDevice::QueueFamilyProperties2::Checkpoint
Additional queue family information can be queried by setting QueueFamilyProperties2::Next to point to a Checkpoint structure.
struct VV::V1::PhysicalDevice::QueueFamilyProperties2
Return extended information in a pNext chain of output structures.
struct VV::V1::PhysicalDevice
Represents a physical device.

Enums

enum class EDeviceDiagnosticConfigFlag: ui32 { EnableShaderDebugInfo = VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV, EnableResourceTracking = VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV, EnableAutomaticCheckpoints = VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV, VV_SpecifyBitmaskable = VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV }
Specification
enum class EDeviceQueueCreateFlag: ui32 { Protected = VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT, VV_SpecifyBitmaskable = VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM }
Specification
enum class EDeviceEventType: ui32 { DisplayHotPlug_ = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT }
Specification
enum class EDriverID { Proprietary = VK_DRIVER_ID_AMD_PROPRIETARY, OpenSource = VK_DRIVER_ID_AMD_OPEN_SOURCE, Mesa_RADV = VK_DRIVER_ID_MESA_RADV, NvidiaProprietary = VK_DRIVER_ID_NVIDIA_PROPRIETARY, IntelProprietaryWindows = VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS, IntelOpenSourceMesa = VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA, ImaginationProprietary = VK_DRIVER_ID_IMAGINATION_PROPRIETARY, QualcommProprietary = VK_DRIVER_ID_QUALCOMM_PROPRIETARY, ARM_Proprietary = VK_DRIVER_ID_ARM_PROPRIETARY, GoogleSwiftShader = VK_DRIVER_ID_GOOGLE_SWIFTSHADER, GGP_Proprietary = VK_DRIVER_ID_GGP_PROPRIETARY, BroadcomProprietary = VK_DRIVER_ID_BROADCOM_PROPRIETARY, MESA_LLLVM_Pipe = VK_DRIVER_ID_MESA_LLVMPIPE, AMD_Proprietary_KHR = VK_DRIVER_ID_AMD_PROPRIETARY_KHR, AMD_OpenSource_KHR = VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR, Mesa_RADV_KHR = VK_DRIVER_ID_MESA_RADV_KHR, NvidiaProprietary_KHR = VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR, IntelProprietaryWindows_KHR = VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR, IntelOpenSourceMesa_KHR = VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR, Imagination_Proprietary_KHR = VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR, QualCommProprietary_KHR = VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR, ARM_Proprietary_KHR = VK_DRIVER_ID_ARM_PROPRIETARY_KHR, GoogleSwiftShader_KHR = VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR, GGP_Proprietary_KHR = VK_DRIVER_ID_GGP_PROPRIETARY_KHR, BroadcomProprietary_KHR = VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR }
enum class ELogicalDeviceQueueCreateFlag: ui32 { CreateProtected = VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT, VV_SpecifyBitmaskable = VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM }
Specification
enum class EMemoryOverallocationBehaviorAMD: ui32 { Default = VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD, Allowed = VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD, Disallowed = VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD }
Specification
enum class EPerformanceCounterDescriptionFlag: ui32 { PerformanceImpacting = VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR, ConcurrentlyImpacted = VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR, VV_SpecifyBitmaskable = VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR }
Specification
enum class EPerformanceCounterScope: ui32 { Performance_CommandBuffer = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR, Performance_RenderPass = VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR, Performance_Command = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR, Query_Buffer = VK_QUERY_SCOPE_COMMAND_BUFFER_KHR, Query_RenderPass = VK_QUERY_SCOPE_RENDER_PASS_KHR, Query_Command = VK_QUERY_SCOPE_COMMAND_KHR }
Specification
enum class EPerformanceCounterStorage: ui32 { VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0, VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1, VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2, VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3, VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4, VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 }
Specification
enum class EPerformanceCounterUnit: ui32 { Generic = VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR, Percentage = VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR, Nanoseconds = VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR, Bytes = VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR, BytesPerSecond = VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR, Kelvin = VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR, Watts = VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR, Volts = VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR, Amps = VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR, Hertz = VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR, Cycles = VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR }
Specification
enum class EPhysicalDeviceType: ui32 { Other = VK_PHYSICAL_DEVICE_TYPE_OTHER, IntergratedGPU = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU, DiscreteGPU = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VirtualGPU = VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU, CPU = VK_PHYSICAL_DEVICE_TYPE_CPU }
Supported physical device types.
enum class EQueueFlag: ui32 { Graphics = VK_QUEUE_GRAPHICS_BIT, Compute = VK_QUEUE_COMPUTE_BIT, Transfer = VK_QUEUE_TRANSFER_BIT, SparseBinding = VK_QUEUE_SPARSE_BINDING_BIT, Protected = VK_QUEUE_PROTECTED_BIT, VV_SpecifyBitmaskable = VK_QUEUE_FLAG_BITS_MAX_ENUM }
Specification
enum class EVendorID: ui32 { VIV = VK_VENDOR_ID_VIV, VSI = VK_VENDOR_ID_VSI, KAZAN = VK_VENDOR_ID_KAZAN, CODEPLAY = VK_VENDOR_ID_CODEPLAY, MESA = VK_VENDOR_ID_MESA }

Typedefs

using Handle = VkDevice
Specification
using Handle = VkQueue
Specification
using CreateFlags = Bitfield<ECreateFlag, VkDeviceQueueCreateFlags>
using CreateFlags = Bitfield<EDeviceQueueCreateFlag,VkDeviceQueueCreateFlags>
Specification
using Handle = VkPhysicalDevice
Specification

Functions

static auto QueryPhysicalDeviceListing(Handle _handle, ui32* _numDevices, PhysicalDevice::Handle* _deviceListing) -> EResult
Retrieve a list of physical device objects representing the physical devices installed in the system, or get the number of them.
static auto QueryPhysicalDeviceGroups(Handle _handle, ui32* _numGroups, PhysicalDevice::Group* _groupProperties) -> EResult
Retrieve a list of physical device groups.
static void Get(LogicalDevice::Handle _device, ui32 _queueFamilyIndex, ui32 _queueIndex, Handle& _queueReturn)
Get a queue handle from a device.
static void Get(Handle _device, const Queue2* _queueInfo, Queue::Handle* _queue)
static auto Create(PhysicalDevice::Handle _physicalDevice, const CreateInfo& _info, const Memory::AllocationCallbacks* _allocator, Handle& _device) -> EResult
A logical device is created as a connection to a physical device.
static void Destroy(Handle _device, const Memory::AllocationCallbacks* _allocator)
Destroy a logical device.
static void GetProperties(Handle _handle, Properties& _properties)
Query general properties of physical devices once enumerated.
static void GetProperties2(Handle _handle, Properties2& _properties)
Query general properties of physical devices once enumerated (Second Ver).
static void QueryQueueFamilyProperties(Handle _handle, ui32* _numQueueFamilies, QueueFamilyProperties* _queueFamilies)
Query properties of queues available on a physical device. Reports properties of the queues of the specified physical device.
static void QueryQueueFamilyProperties2(Handle _handle, ui32* _numProperties, QueueFamilyProperties2* _properties)
Query properties of queues available on a physical device.
static auto QueryPerfomranceQueryCounters(Handle _handle, ui32 _queueFamilyIndex, ui32* _numCounters, PerformanceCounter* _counters, PerformanceCounter::Description* _counterDescriptions) -> EResult
Enumerate the performance query counters available on a queue family of a physical device.

Enum documentation

enum class EPhysicalDeviceType: ui32

Supported physical device types.

The physical device type is advertised for informational purposes only, and does not directly affect the operation of the system. However, the device type may correlate with other advertised properties or capabilities of the system, such as how many memory heaps there are.

Specification

Typedef documentation

using CreateFlags = Bitfield<ECreateFlag, VkDeviceQueueCreateFlags>

@ < ="://..////1.2-//.#"></>

using CreateFlags = Bitfield<EDeviceQueueCreateFlag,VkDeviceQueueCreateFlags>

Specification

using Handle = VkPhysicalDevice

Specification

Function documentation

static EResult QueryPhysicalDeviceListing(Handle _handle, ui32* _numDevices, PhysicalDevice::Handle* _deviceListing)

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.

Specification

static EResult QueryPhysicalDeviceGroups(Handle _handle, ui32* _numGroups, PhysicalDevice::Group* _groupProperties)

Retrieve a list of physical device groups.

Specification

static void Get(LogicalDevice::Handle _device, ui32 _queueFamilyIndex, ui32 _queueIndex, Handle& _queueReturn)

Get a queue handle from a device.

Parameters
_device
_queueFamilyIndex
_queueIndex
_queueReturn

vkGetDeviceQueue must only be used to get queues that were created with the flags parameter of VkDeviceQueueCreateInfo set to zero. To get queues that were created with a non-zero flags parameter use vkGetDeviceQueue2.

Specification

static void Get(Handle _device, const Queue2* _queueInfo, Queue::Handle* _queue)

Specification

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

A logical device is created as a connection to a physical device.

Parameters
_physicalDevice
_info
_allocator
_device

Specification

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

Destroy a logical device.

Parameters
_device
_allocator

To ensure that no work is active on the device, vkDeviceWaitIdle can be used to gate the destruction of the device. Prior to destroying a device, an application is responsible for destroying/freeing any Vulkan objects that were created using that device as the first parameter of the corresponding vkCreate* or vkAllocate* command.

Specification

static void GetProperties(Handle _handle, Properties& _properties)

Query general properties of physical devices once enumerated.

Specification

static void GetProperties2(Handle _handle, Properties2& _properties)

Query general properties of physical devices once enumerated (Second Ver).

Specification

static void QueryQueueFamilyProperties(Handle _handle, ui32* _numQueueFamilies, QueueFamilyProperties* _queueFamilies)

Query properties of queues available on a physical device. Reports properties of the queues of the specified physical device.

If pQueueFamilyProperties is NULL, then the number of queue families available is returned in pQueueFamilyPropertyCount. Implementations must support at least one queue family. Otherwise, pQueueFamilyPropertyCount must point to a variable set by the user to the number of elements in the pQueueFamilyProperties array, and on return the variable is overwritten with the number of structures actually written to pQueueFamilyProperties.

Specification

static void QueryQueueFamilyProperties2(Handle _handle, ui32* _numProperties, QueueFamilyProperties2* _properties)

Query properties of queues available on a physical device.

Specification

static EResult QueryPerfomranceQueryCounters(Handle _handle, ui32 _queueFamilyIndex, ui32* _numCounters, PerformanceCounter* _counters, PerformanceCounter::Description* _counterDescriptions)

Enumerate the performance query counters available on a queue family of a physical device.

Specification