1e5c31af7Sopenharmony_ci// Copyright 2015-2024 The Khronos Group Inc. 2e5c31af7Sopenharmony_ci// 3e5c31af7Sopenharmony_ci// SPDX-License-Identifier: CC-BY-4.0 4e5c31af7Sopenharmony_ci 5e5c31af7Sopenharmony_ci[[devsandqueues]] 6e5c31af7Sopenharmony_ci= Devices and Queues 7e5c31af7Sopenharmony_ci 8e5c31af7Sopenharmony_ciOnce Vulkan is initialized, devices and queues are the primary objects used 9e5c31af7Sopenharmony_cito interact with a Vulkan implementation. 10e5c31af7Sopenharmony_ci 11e5c31af7Sopenharmony_ci[open,refpage='VkPhysicalDevice',desc='Opaque handle to a physical device object',type='handles'] 12e5c31af7Sopenharmony_ci-- 13e5c31af7Sopenharmony_ciVulkan separates the concept of _physical_ and _logical_ devices. 14e5c31af7Sopenharmony_ciA physical device usually represents a single complete implementation of 15e5c31af7Sopenharmony_ciVulkan (excluding instance-level functionality) available to the host, of 16e5c31af7Sopenharmony_ciwhich there are a finite number. 17e5c31af7Sopenharmony_ciA logical device represents an instance of that implementation with its own 18e5c31af7Sopenharmony_cistate and resources independent of other logical devices. 19e5c31af7Sopenharmony_ci 20e5c31af7Sopenharmony_ciPhysical devices are represented by sname:VkPhysicalDevice handles: 21e5c31af7Sopenharmony_ci 22e5c31af7Sopenharmony_ciinclude::{generated}/api/handles/VkPhysicalDevice.adoc[] 23e5c31af7Sopenharmony_ci-- 24e5c31af7Sopenharmony_ci 25e5c31af7Sopenharmony_ci 26e5c31af7Sopenharmony_ci[[devsandqueues-physical-device-enumeration]] 27e5c31af7Sopenharmony_ci== Physical Devices 28e5c31af7Sopenharmony_ci 29e5c31af7Sopenharmony_ci[open,refpage='vkEnumeratePhysicalDevices',desc='Enumerates the physical devices accessible to a Vulkan instance',type='protos'] 30e5c31af7Sopenharmony_ci-- 31e5c31af7Sopenharmony_ciTo retrieve a list of physical device objects representing the physical 32e5c31af7Sopenharmony_cidevices installed in the system, call: 33e5c31af7Sopenharmony_ci 34e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkEnumeratePhysicalDevices.adoc[] 35e5c31af7Sopenharmony_ci 36e5c31af7Sopenharmony_ci * pname:instance is a handle to a Vulkan instance previously created with 37e5c31af7Sopenharmony_ci flink:vkCreateInstance. 38e5c31af7Sopenharmony_ci * pname:pPhysicalDeviceCount is a pointer to an integer related to the 39e5c31af7Sopenharmony_ci number of physical devices available or queried, as described below. 40e5c31af7Sopenharmony_ci * pname:pPhysicalDevices is either `NULL` or a pointer to an array of 41e5c31af7Sopenharmony_ci sname:VkPhysicalDevice handles. 42e5c31af7Sopenharmony_ci 43e5c31af7Sopenharmony_ciIf pname:pPhysicalDevices is `NULL`, then the number of physical devices 44e5c31af7Sopenharmony_ciavailable is returned in pname:pPhysicalDeviceCount. 45e5c31af7Sopenharmony_ciOtherwise, pname:pPhysicalDeviceCount must: point to a variable set by the 46e5c31af7Sopenharmony_ciuser to the number of elements in the pname:pPhysicalDevices array, and on 47e5c31af7Sopenharmony_cireturn the variable is overwritten with the number of handles actually 48e5c31af7Sopenharmony_ciwritten to pname:pPhysicalDevices. 49e5c31af7Sopenharmony_ciIf pname:pPhysicalDeviceCount is less than the number of physical devices 50e5c31af7Sopenharmony_ciavailable, at most pname:pPhysicalDeviceCount structures will be written, 51e5c31af7Sopenharmony_ciand ename:VK_INCOMPLETE will be returned instead of ename:VK_SUCCESS, to 52e5c31af7Sopenharmony_ciindicate that not all the available physical devices were returned. 53e5c31af7Sopenharmony_ci 54e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkEnumeratePhysicalDevices.adoc[] 55e5c31af7Sopenharmony_ci-- 56e5c31af7Sopenharmony_ci 57e5c31af7Sopenharmony_ci[open,refpage='vkGetPhysicalDeviceProperties',desc='Returns properties of a physical device',type='protos'] 58e5c31af7Sopenharmony_ci-- 59e5c31af7Sopenharmony_ciTo query general properties of physical devices once enumerated, call: 60e5c31af7Sopenharmony_ci 61e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkGetPhysicalDeviceProperties.adoc[] 62e5c31af7Sopenharmony_ci 63e5c31af7Sopenharmony_ci * pname:physicalDevice is the handle to the physical device whose 64e5c31af7Sopenharmony_ci properties will be queried. 65e5c31af7Sopenharmony_ci * pname:pProperties is a pointer to a slink:VkPhysicalDeviceProperties 66e5c31af7Sopenharmony_ci structure in which properties are returned. 67e5c31af7Sopenharmony_ci 68e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkGetPhysicalDeviceProperties.adoc[] 69e5c31af7Sopenharmony_ci-- 70e5c31af7Sopenharmony_ci 71e5c31af7Sopenharmony_ci[open,refpage='VkPhysicalDeviceProperties',desc='Structure specifying physical device properties',type='structs'] 72e5c31af7Sopenharmony_ci-- 73e5c31af7Sopenharmony_ciThe sname:VkPhysicalDeviceProperties structure is defined as: 74e5c31af7Sopenharmony_ci 75e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPhysicalDeviceProperties.adoc[] 76e5c31af7Sopenharmony_ci 77e5c31af7Sopenharmony_ci * pname:apiVersion is the version of Vulkan supported by the device, 78e5c31af7Sopenharmony_ci encoded as described in <<extendingvulkan-coreversions-versionnumbers>>. 79e5c31af7Sopenharmony_ci * pname:driverVersion is the vendor-specified version of the driver. 80e5c31af7Sopenharmony_ci * pname:vendorID is a unique identifier for the _vendor_ (see below) of 81e5c31af7Sopenharmony_ci the physical device. 82e5c31af7Sopenharmony_ci * pname:deviceID is a unique identifier for the physical device among 83e5c31af7Sopenharmony_ci devices available from the vendor. 84e5c31af7Sopenharmony_ci * pname:deviceType is a elink:VkPhysicalDeviceType specifying the type of 85e5c31af7Sopenharmony_ci device. 86e5c31af7Sopenharmony_ci * pname:deviceName is an array of ename:VK_MAX_PHYSICAL_DEVICE_NAME_SIZE 87e5c31af7Sopenharmony_ci code:char containing a null-terminated UTF-8 string which is the name of 88e5c31af7Sopenharmony_ci the device. 89e5c31af7Sopenharmony_ci * pname:pipelineCacheUUID is an array of ename:VK_UUID_SIZE code:uint8_t 90e5c31af7Sopenharmony_ci values representing a universally unique identifier for the device. 91e5c31af7Sopenharmony_ci * pname:limits is the slink:VkPhysicalDeviceLimits structure specifying 92e5c31af7Sopenharmony_ci device-specific limits of the physical device. 93e5c31af7Sopenharmony_ci See <<limits, Limits>> for details. 94e5c31af7Sopenharmony_ci * pname:sparseProperties is the slink:VkPhysicalDeviceSparseProperties 95e5c31af7Sopenharmony_ci structure specifying various sparse related properties of the physical 96e5c31af7Sopenharmony_ci device. 97e5c31af7Sopenharmony_ci See <<sparsememory-physicalprops, Sparse Properties>> for details. 98e5c31af7Sopenharmony_ci 99e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1[] 100e5c31af7Sopenharmony_ci[NOTE] 101e5c31af7Sopenharmony_ci.Note 102e5c31af7Sopenharmony_ci==== 103e5c31af7Sopenharmony_ciThe value of pname:apiVersion may: be different than the version returned by 104e5c31af7Sopenharmony_ciflink:vkEnumerateInstanceVersion; either higher or lower. 105e5c31af7Sopenharmony_ciIn such cases, the application must: not use functionality that exceeds the 106e5c31af7Sopenharmony_civersion of Vulkan associated with a given object. 107e5c31af7Sopenharmony_ciThe pname:pApiVersion parameter returned by flink:vkEnumerateInstanceVersion 108e5c31af7Sopenharmony_ciis the version associated with a slink:VkInstance and its children, except 109e5c31af7Sopenharmony_cifor a slink:VkPhysicalDevice and its children. 110e5c31af7Sopenharmony_cisname:VkPhysicalDeviceProperties::pname:apiVersion is the version associated 111e5c31af7Sopenharmony_ciwith a slink:VkPhysicalDevice and its children. 112e5c31af7Sopenharmony_ci==== 113e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1[] 114e5c31af7Sopenharmony_ci 115e5c31af7Sopenharmony_ci[NOTE] 116e5c31af7Sopenharmony_ci.Note 117e5c31af7Sopenharmony_ci==== 118e5c31af7Sopenharmony_ciThe encoding of pname:driverVersion is implementation-defined. 119e5c31af7Sopenharmony_ciIt may: not use the same encoding as pname:apiVersion. 120e5c31af7Sopenharmony_ciApplications should follow information from the _vendor_ on how to extract 121e5c31af7Sopenharmony_cithe version information from pname:driverVersion. 122e5c31af7Sopenharmony_ci==== 123e5c31af7Sopenharmony_ci 124e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3[] 125e5c31af7Sopenharmony_ciOn implementations that claim support for the <<roadmap-2022, Roadmap 2022>> 126e5c31af7Sopenharmony_ciprofile, the major and minor version expressed by pname:apiVersion must: be 127e5c31af7Sopenharmony_ciat least Vulkan 1.3. 128e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3[] 129e5c31af7Sopenharmony_ci 130e5c31af7Sopenharmony_ciThe pname:vendorID and pname:deviceID fields are provided to allow 131e5c31af7Sopenharmony_ciapplications to adapt to device characteristics that are not adequately 132e5c31af7Sopenharmony_ciexposed by other Vulkan queries. 133e5c31af7Sopenharmony_ci 134e5c31af7Sopenharmony_ci[NOTE] 135e5c31af7Sopenharmony_ci.Note 136e5c31af7Sopenharmony_ci==== 137e5c31af7Sopenharmony_ciThese may: include performance profiles, hardware errata, or other 138e5c31af7Sopenharmony_cicharacteristics. 139e5c31af7Sopenharmony_ci==== 140e5c31af7Sopenharmony_ci 141e5c31af7Sopenharmony_ciThe _vendor_ identified by pname:vendorID is the entity responsible for the 142e5c31af7Sopenharmony_cimost salient characteristics of the underlying implementation of the 143e5c31af7Sopenharmony_cislink:VkPhysicalDevice being queried. 144e5c31af7Sopenharmony_ci 145e5c31af7Sopenharmony_ci[NOTE] 146e5c31af7Sopenharmony_ci.Note 147e5c31af7Sopenharmony_ci==== 148e5c31af7Sopenharmony_ciFor example, in the case of a discrete GPU implementation, this should: be 149e5c31af7Sopenharmony_cithe GPU chipset vendor. 150e5c31af7Sopenharmony_ciIn the case of a hardware accelerator integrated into a system-on-chip 151e5c31af7Sopenharmony_ci(SoC), this should: be the supplier of the silicon IP used to create the 152e5c31af7Sopenharmony_ciaccelerator. 153e5c31af7Sopenharmony_ci==== 154e5c31af7Sopenharmony_ci 155e5c31af7Sopenharmony_ciIf the vendor has a https://pcisig.com/membership/member-companies[PCI 156e5c31af7Sopenharmony_civendor ID], the low 16 bits of pname:vendorID must: contain that PCI vendor 157e5c31af7Sopenharmony_ciID, and the remaining bits must: be set to zero. 158e5c31af7Sopenharmony_ciOtherwise, the value returned must: be a valid Khronos vendor ID, obtained 159e5c31af7Sopenharmony_cias described in the <<vulkan-styleguide,Vulkan Documentation and Extensions: 160e5c31af7Sopenharmony_ciProcedures and Conventions>> document in the section "`Registering a Vendor 161e5c31af7Sopenharmony_ciID with Khronos`". 162e5c31af7Sopenharmony_ciKhronos vendor IDs are allocated starting at 0x10000, to distinguish them 163e5c31af7Sopenharmony_cifrom the PCI vendor ID namespace. 164e5c31af7Sopenharmony_ciKhronos vendor IDs are symbolically defined in the elink:VkVendorId type. 165e5c31af7Sopenharmony_ci 166e5c31af7Sopenharmony_ciThe vendor is also responsible for the value returned in pname:deviceID. 167e5c31af7Sopenharmony_ciIf the implementation is driven primarily by a https://pcisig.com/[PCI 168e5c31af7Sopenharmony_cidevice] with a https://pcisig.com/[PCI device ID], the low 16 bits of 169e5c31af7Sopenharmony_cipname:deviceID must: contain that PCI device ID, and the remaining bits 170e5c31af7Sopenharmony_cimust: be set to zero. 171e5c31af7Sopenharmony_ciOtherwise, the choice of what values to return may: be dictated by operating 172e5c31af7Sopenharmony_cisystem or platform policies - but should: uniquely identify both the device 173e5c31af7Sopenharmony_civersion and any major configuration options (for example, core count in the 174e5c31af7Sopenharmony_cicase of multicore devices). 175e5c31af7Sopenharmony_ci 176e5c31af7Sopenharmony_ci[NOTE] 177e5c31af7Sopenharmony_ci.Note 178e5c31af7Sopenharmony_ci==== 179e5c31af7Sopenharmony_ciThe same device ID should: be used for all physical implementations of that 180e5c31af7Sopenharmony_cidevice version and configuration. 181e5c31af7Sopenharmony_ciFor example, all uses of a specific silicon IP GPU version and configuration 182e5c31af7Sopenharmony_cishould: use the same device ID, even if those uses occur in different SoCs. 183e5c31af7Sopenharmony_ci==== 184e5c31af7Sopenharmony_ci 185e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPhysicalDeviceProperties.adoc[] 186e5c31af7Sopenharmony_ci-- 187e5c31af7Sopenharmony_ci 188e5c31af7Sopenharmony_ci[open,refpage='VkVendorId',desc='Khronos vendor IDs',type='enums'] 189e5c31af7Sopenharmony_ci-- 190e5c31af7Sopenharmony_ciKhronos vendor IDs which may: be returned in 191e5c31af7Sopenharmony_cislink:VkPhysicalDeviceProperties::pname:vendorID are: 192e5c31af7Sopenharmony_ci 193e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkVendorId.adoc[] 194e5c31af7Sopenharmony_ci 195e5c31af7Sopenharmony_ci[NOTE] 196e5c31af7Sopenharmony_ci.Note 197e5c31af7Sopenharmony_ci==== 198e5c31af7Sopenharmony_ciKhronos vendor IDs may be allocated by vendors at any time. 199e5c31af7Sopenharmony_ciOnly the latest canonical versions of this Specification, of the 200e5c31af7Sopenharmony_cicorresponding `vk.xml` API Registry, and of the corresponding 201e5c31af7Sopenharmony_ci`{core_header}` header file must: contain all reserved Khronos vendor IDs. 202e5c31af7Sopenharmony_ci 203e5c31af7Sopenharmony_ciOnly Khronos vendor IDs are given symbolic names at present. 204e5c31af7Sopenharmony_ciPCI vendor IDs returned by the implementation can be looked up in the 205e5c31af7Sopenharmony_ciPCI-SIG database. 206e5c31af7Sopenharmony_ci==== 207e5c31af7Sopenharmony_ci-- 208e5c31af7Sopenharmony_ci 209e5c31af7Sopenharmony_ci[open,refpage='VK_MAX_PHYSICAL_DEVICE_NAME_SIZE',desc='Length of a physical device name string',type='consts'] 210e5c31af7Sopenharmony_ci-- 211e5c31af7Sopenharmony_ciename:VK_MAX_PHYSICAL_DEVICE_NAME_SIZE is the length in code:char values of 212e5c31af7Sopenharmony_cian array containing a physical device name string, as returned in 213e5c31af7Sopenharmony_cislink:VkPhysicalDeviceProperties::pname:deviceName. 214e5c31af7Sopenharmony_ci 215e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VK_MAX_PHYSICAL_DEVICE_NAME_SIZE.adoc[] 216e5c31af7Sopenharmony_ci-- 217e5c31af7Sopenharmony_ci 218e5c31af7Sopenharmony_ci[open,refpage='VkPhysicalDeviceType',desc='Supported physical device types',type='enums'] 219e5c31af7Sopenharmony_ci-- 220e5c31af7Sopenharmony_ciThe physical device types which may: be returned in 221e5c31af7Sopenharmony_cislink:VkPhysicalDeviceProperties::pname:deviceType are: 222e5c31af7Sopenharmony_ci 223e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkPhysicalDeviceType.adoc[] 224e5c31af7Sopenharmony_ci 225e5c31af7Sopenharmony_ci * ename:VK_PHYSICAL_DEVICE_TYPE_OTHER - the device does not match any 226e5c31af7Sopenharmony_ci other available types. 227e5c31af7Sopenharmony_ci * ename:VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU - the device is typically 228e5c31af7Sopenharmony_ci one embedded in or tightly coupled with the host. 229e5c31af7Sopenharmony_ci * ename:VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU - the device is typically a 230e5c31af7Sopenharmony_ci separate processor connected to the host via an interlink. 231e5c31af7Sopenharmony_ci * ename:VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU - the device is typically a 232e5c31af7Sopenharmony_ci virtual node in a virtualization environment. 233e5c31af7Sopenharmony_ci * ename:VK_PHYSICAL_DEVICE_TYPE_CPU - the device is typically running on 234e5c31af7Sopenharmony_ci the same processors as the host. 235e5c31af7Sopenharmony_ci 236e5c31af7Sopenharmony_ciThe physical device type is advertised for informational purposes only, and 237e5c31af7Sopenharmony_cidoes not directly affect the operation of the system. 238e5c31af7Sopenharmony_ciHowever, the device type may: correlate with other advertised properties or 239e5c31af7Sopenharmony_cicapabilities of the system, such as how many memory heaps there are. 240e5c31af7Sopenharmony_ci-- 241e5c31af7Sopenharmony_ci 242e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] 243e5c31af7Sopenharmony_ci[open,refpage='vkGetPhysicalDeviceProperties2',desc='Returns properties of a physical device',type='protos'] 244e5c31af7Sopenharmony_ci-- 245e5c31af7Sopenharmony_ciTo query general properties of physical devices once enumerated, call: 246e5c31af7Sopenharmony_ci 247e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1[] 248e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkGetPhysicalDeviceProperties2.adoc[] 249e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1[] 250e5c31af7Sopenharmony_ci 251e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1+VK_KHR_get_physical_device_properties2[or the equivalent command] 252e5c31af7Sopenharmony_ci 253e5c31af7Sopenharmony_ciifdef::VK_KHR_get_physical_device_properties2[] 254e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkGetPhysicalDeviceProperties2KHR.adoc[] 255e5c31af7Sopenharmony_ciendif::VK_KHR_get_physical_device_properties2[] 256e5c31af7Sopenharmony_ci 257e5c31af7Sopenharmony_ci * pname:physicalDevice is the handle to the physical device whose 258e5c31af7Sopenharmony_ci properties will be queried. 259e5c31af7Sopenharmony_ci * pname:pProperties is a pointer to a slink:VkPhysicalDeviceProperties2 260e5c31af7Sopenharmony_ci structure in which properties are returned. 261e5c31af7Sopenharmony_ci 262e5c31af7Sopenharmony_ciEach structure in pname:pProperties and its pname:pNext chain contains 263e5c31af7Sopenharmony_cimembers corresponding to implementation-dependent properties, behaviors, or 264e5c31af7Sopenharmony_cilimits. 265e5c31af7Sopenharmony_cifname:vkGetPhysicalDeviceProperties2 fills in each member to specify the 266e5c31af7Sopenharmony_cicorresponding value for the implementation. 267e5c31af7Sopenharmony_ci 268e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkGetPhysicalDeviceProperties2.adoc[] 269e5c31af7Sopenharmony_ci-- 270e5c31af7Sopenharmony_ci 271e5c31af7Sopenharmony_ci[open,refpage='VkPhysicalDeviceProperties2',desc='Structure specifying physical device properties',type='structs'] 272e5c31af7Sopenharmony_ci-- 273e5c31af7Sopenharmony_ciThe sname:VkPhysicalDeviceProperties2 structure is defined as: 274e5c31af7Sopenharmony_ci 275e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPhysicalDeviceProperties2.adoc[] 276e5c31af7Sopenharmony_ci 277e5c31af7Sopenharmony_ciifdef::VK_KHR_get_physical_device_properties2[] 278e5c31af7Sopenharmony_cior the equivalent 279e5c31af7Sopenharmony_ci 280e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPhysicalDeviceProperties2KHR.adoc[] 281e5c31af7Sopenharmony_ciendif::VK_KHR_get_physical_device_properties2[] 282e5c31af7Sopenharmony_ci 283e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 284e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 285e5c31af7Sopenharmony_ci structure. 286e5c31af7Sopenharmony_ci * pname:properties is a slink:VkPhysicalDeviceProperties structure 287e5c31af7Sopenharmony_ci describing properties of the physical device. 288e5c31af7Sopenharmony_ci This structure is written with the same values as if it were written by 289e5c31af7Sopenharmony_ci flink:vkGetPhysicalDeviceProperties. 290e5c31af7Sopenharmony_ci 291e5c31af7Sopenharmony_ciThe pname:pNext chain of this structure is used to extend the structure with 292e5c31af7Sopenharmony_ciproperties defined by extensions. 293e5c31af7Sopenharmony_ci 294e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPhysicalDeviceProperties2.adoc[] 295e5c31af7Sopenharmony_ci-- 296e5c31af7Sopenharmony_ci 297e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_2[] 298e5c31af7Sopenharmony_ci[open,refpage='VkPhysicalDeviceVulkan11Properties',desc='Structure specifying physical device properties for functionality promoted to Vulkan 1.1',type='structs'] 299e5c31af7Sopenharmony_ci-- 300e5c31af7Sopenharmony_ciThe sname:VkPhysicalDeviceVulkan11Properties structure is defined as: 301e5c31af7Sopenharmony_ci 302e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPhysicalDeviceVulkan11Properties.adoc[] 303e5c31af7Sopenharmony_ci 304e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 305e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 306e5c31af7Sopenharmony_ci structure. 307e5c31af7Sopenharmony_ci 308e5c31af7Sopenharmony_ci:anchor-prefix: 309e5c31af7Sopenharmony_ciinclude::{chapters}/devsandqueues.adoc[tag=VK_KHR_external_memory_capabilities-properties] 310e5c31af7Sopenharmony_ci * [[{anchor-prefix}limits-subgroup-size]] pname:subgroupSize is the 311e5c31af7Sopenharmony_ci default number of invocations in each subgroup. 312e5c31af7Sopenharmony_ci pname:subgroupSize is at least 1 if any of the physical device's queues 313e5c31af7Sopenharmony_ci support ename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT. 314e5c31af7Sopenharmony_ci pname:subgroupSize is a power-of-two. 315e5c31af7Sopenharmony_ci * [[{anchor-prefix}limits-subgroupSupportedStages]] 316e5c31af7Sopenharmony_ci pname:subgroupSupportedStages is a bitfield of 317e5c31af7Sopenharmony_ci elink:VkShaderStageFlagBits describing the shader stages that 318e5c31af7Sopenharmony_ci <<shaders-group-operations, group operations>> with 319e5c31af7Sopenharmony_ci <<shaders-scope-subgroup, subgroup scope>> are supported in. 320e5c31af7Sopenharmony_ci pname:subgroupSupportedStages will have the 321e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_COMPUTE_BIT bit set if any of the physical 322e5c31af7Sopenharmony_ci device's queues support ename:VK_QUEUE_COMPUTE_BIT. 323e5c31af7Sopenharmony_ci * pname:subgroupSupportedOperations is a bitmask of 324e5c31af7Sopenharmony_ci elink:VkSubgroupFeatureFlagBits specifying the sets of 325e5c31af7Sopenharmony_ci <<shaders-group-operations, group operations>> with 326e5c31af7Sopenharmony_ci <<shaders-scope-subgroup, subgroup scope>> supported on this device. 327e5c31af7Sopenharmony_ci pname:subgroupSupportedOperations will have the 328e5c31af7Sopenharmony_ci ename:VK_SUBGROUP_FEATURE_BASIC_BIT bit set if any of the physical 329e5c31af7Sopenharmony_ci device's queues support ename:VK_QUEUE_GRAPHICS_BIT or 330e5c31af7Sopenharmony_ci ename:VK_QUEUE_COMPUTE_BIT. 331e5c31af7Sopenharmony_ci * [[{anchor-prefix}limits-subgroupQuadOperationsInAllStages]] 332e5c31af7Sopenharmony_ci pname:subgroupQuadOperationsInAllStages is a boolean specifying whether 333e5c31af7Sopenharmony_ci <<shaders-quad-operations,quad group operations>> are available in all 334e5c31af7Sopenharmony_ci stages, or are restricted to fragment and compute stages. 335e5c31af7Sopenharmony_ciinclude::{chapters}/limits.adoc[tag=VK_KHR_maintenance2-properties] 336e5c31af7Sopenharmony_ciinclude::{chapters}/limits.adoc[tag=VK_KHR_multiview-properties] 337e5c31af7Sopenharmony_ciinclude::{chapters}/limits.adoc[tag=VK_KHR_protected_memory-properties] 338e5c31af7Sopenharmony_ciinclude::{chapters}/limits.adoc[tag=VK_KHR_maintenance3-properties] 339e5c31af7Sopenharmony_ci 340e5c31af7Sopenharmony_ci:refpage: VkPhysicalDeviceVulkan11Properties 341e5c31af7Sopenharmony_ciinclude::{chapters}/limits.adoc[tag=limits_desc] 342e5c31af7Sopenharmony_ci 343e5c31af7Sopenharmony_ciThese properties correspond to Vulkan 1.1 functionality. 344e5c31af7Sopenharmony_ci 345e5c31af7Sopenharmony_ciThe members of sname:VkPhysicalDeviceVulkan11Properties have the same values 346e5c31af7Sopenharmony_cias the corresponding members of slink:VkPhysicalDeviceIDProperties, 347e5c31af7Sopenharmony_cislink:VkPhysicalDeviceSubgroupProperties, 348e5c31af7Sopenharmony_cislink:VkPhysicalDevicePointClippingProperties, 349e5c31af7Sopenharmony_cislink:VkPhysicalDeviceMultiviewProperties, 350e5c31af7Sopenharmony_cislink:VkPhysicalDeviceProtectedMemoryProperties, and 351e5c31af7Sopenharmony_cislink:VkPhysicalDeviceMaintenance3Properties. 352e5c31af7Sopenharmony_ci 353e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPhysicalDeviceVulkan11Properties.adoc[] 354e5c31af7Sopenharmony_ci-- 355e5c31af7Sopenharmony_ci 356e5c31af7Sopenharmony_ci[open,refpage='VkPhysicalDeviceVulkan12Properties',desc='Structure specifying physical device properties for functionality promoted to Vulkan 1.2',type='structs'] 357e5c31af7Sopenharmony_ci-- 358e5c31af7Sopenharmony_ciThe sname:VkPhysicalDeviceVulkan12Properties structure is defined as: 359e5c31af7Sopenharmony_ci 360e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPhysicalDeviceVulkan12Properties.adoc[] 361e5c31af7Sopenharmony_ci 362e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 363e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 364e5c31af7Sopenharmony_ci structure. 365e5c31af7Sopenharmony_ci 366e5c31af7Sopenharmony_ci:anchor-prefix: 367e5c31af7Sopenharmony_ciinclude::{chapters}/devsandqueues.adoc[tag=VK_KHR_driver_properties-properties] 368e5c31af7Sopenharmony_ciinclude::{chapters}/limits.adoc[tag=VK_KHR_shader_float_controls-properties] 369e5c31af7Sopenharmony_ciinclude::{chapters}/limits.adoc[tag=VK_EXT_descriptor_indexing-properties] 370e5c31af7Sopenharmony_ciinclude::{chapters}/limits.adoc[tag=VK_KHR_depth_stencil_resolve-properties] 371e5c31af7Sopenharmony_ciinclude::{chapters}/limits.adoc[tag=VK_EXT_sampler_filter_minmax-properties] 372e5c31af7Sopenharmony_ciinclude::{chapters}/limits.adoc[tag=VK_KHR_timeline_semaphore-properties] 373e5c31af7Sopenharmony_ci * [[limits-framebufferIntegerColorSampleCounts]] 374e5c31af7Sopenharmony_ci pname:framebufferIntegerColorSampleCounts is a bitmask of 375e5c31af7Sopenharmony_ci elink:VkSampleCountFlagBits indicating the color sample counts that are 376e5c31af7Sopenharmony_ci supported for all framebuffer color attachments with integer formats. 377e5c31af7Sopenharmony_ci 378e5c31af7Sopenharmony_ci:refpage: VkPhysicalDeviceVulkan12Properties 379e5c31af7Sopenharmony_ciinclude::{chapters}/limits.adoc[tag=limits_desc] 380e5c31af7Sopenharmony_ci 381e5c31af7Sopenharmony_ciThese properties correspond to Vulkan 1.2 functionality. 382e5c31af7Sopenharmony_ci 383e5c31af7Sopenharmony_ciThe members of sname:VkPhysicalDeviceVulkan12Properties must: have the same 384e5c31af7Sopenharmony_civalues as the corresponding members of 385e5c31af7Sopenharmony_cislink:VkPhysicalDeviceDriverProperties, 386e5c31af7Sopenharmony_cislink:VkPhysicalDeviceFloatControlsProperties, 387e5c31af7Sopenharmony_cislink:VkPhysicalDeviceDescriptorIndexingProperties, 388e5c31af7Sopenharmony_cislink:VkPhysicalDeviceDepthStencilResolveProperties, 389e5c31af7Sopenharmony_cislink:VkPhysicalDeviceSamplerFilterMinmaxProperties, and 390e5c31af7Sopenharmony_cislink:VkPhysicalDeviceTimelineSemaphoreProperties. 391e5c31af7Sopenharmony_ci 392e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPhysicalDeviceVulkan12Properties.adoc[] 393e5c31af7Sopenharmony_ci-- 394e5c31af7Sopenharmony_ciendif::VK_VERSION_1_2[] 395e5c31af7Sopenharmony_ci 396e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 397e5c31af7Sopenharmony_ci[open,refpage='VkPhysicalDeviceVulkanSC10Properties',desc='Structure describing safety critical properties supported by an implementation',type='structs'] 398e5c31af7Sopenharmony_ci-- 399e5c31af7Sopenharmony_ciThe sname:VkPhysicalDeviceVulkanSC10Properties structure is defined as: 400e5c31af7Sopenharmony_ci 401e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPhysicalDeviceVulkanSC10Properties.adoc[] 402e5c31af7Sopenharmony_ci 403e5c31af7Sopenharmony_ci:anchor-prefix: 404e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 405e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 406e5c31af7Sopenharmony_ci structure. 407e5c31af7Sopenharmony_ci * [[limits-deviceNoDynamicHostAllocations]] 408e5c31af7Sopenharmony_ci pname:deviceNoDynamicHostAllocations indicates whether the 409e5c31af7Sopenharmony_ci implementation will perform dynamic host memory allocations for physical 410e5c31af7Sopenharmony_ci or logical device commands. 411e5c31af7Sopenharmony_ci If pname:deviceNoDynamicHostAllocations is ename:VK_TRUE the 412e5c31af7Sopenharmony_ci implementation will allocate host memory for objects based on the 413e5c31af7Sopenharmony_ci provided slink:VkDeviceObjectReservationCreateInfo limits during 414e5c31af7Sopenharmony_ci flink:vkCreateDevice. 415e5c31af7Sopenharmony_ci Under valid API usage, ename:VK_ERROR_OUT_OF_HOST_MEMORY may: only be 416e5c31af7Sopenharmony_ci returned by commands which do not explicitly disallow it. 417e5c31af7Sopenharmony_ci * [[limits-deviceDestroyFreesMemory]] pname:deviceDestroyFreesMemory 418e5c31af7Sopenharmony_ci indicates whether destroying the device frees all memory resources back 419e5c31af7Sopenharmony_ci to the system. 420e5c31af7Sopenharmony_ci * [[limits-commandPoolMultipleCommandBuffersRecording]] 421e5c31af7Sopenharmony_ci pname:commandPoolMultipleCommandBuffersRecording indicates whether 422e5c31af7Sopenharmony_ci multiple command buffers from the same command pool can: be in the 423e5c31af7Sopenharmony_ci <<commandbuffers-lifecycle, recording state>> at the same time. 424e5c31af7Sopenharmony_ci * [[limits-commandPoolResetCommandBuffer]] 425e5c31af7Sopenharmony_ci pname:commandPoolResetCommandBuffer indicates whether command buffers 426e5c31af7Sopenharmony_ci support flink:vkResetCommandBuffer, and flink:vkBeginCommandBuffer when 427e5c31af7Sopenharmony_ci not in the <<commandbuffers-lifecycle, initial state>>. 428e5c31af7Sopenharmony_ci * [[limits-commandBufferSimultaneousUse]] 429e5c31af7Sopenharmony_ci pname:commandBufferSimultaneousUse indicates whether command buffers 430e5c31af7Sopenharmony_ci support ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT. 431e5c31af7Sopenharmony_ci * [[limits-secondaryCommandBufferNullOrImagelessFramebuffer]] 432e5c31af7Sopenharmony_ci pname:secondaryCommandBufferNullOrImagelessFramebuffer indicates whether 433e5c31af7Sopenharmony_ci the pname:framebuffer member of sname:VkCommandBufferInheritanceInfo 434e5c31af7Sopenharmony_ci may: be equal to dlink:VK_NULL_HANDLE or be created with a 435e5c31af7Sopenharmony_ci slink:VkFramebufferCreateInfo::pname:flags value that includes 436e5c31af7Sopenharmony_ci ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT if the command buffer will be 437e5c31af7Sopenharmony_ci executed within a render pass instance. 438e5c31af7Sopenharmony_ci * [[limits-recycleDescriptorSetMemory]] pname:recycleDescriptorSetMemory 439e5c31af7Sopenharmony_ci indicates whether descriptor pools are able to immediately reuse pool 440e5c31af7Sopenharmony_ci memory from descriptor sets that have been freed. 441e5c31af7Sopenharmony_ci If this is ename:VK_FALSE, then memory may: only be reallocated after 442e5c31af7Sopenharmony_ci flink:vkResetDescriptorPool is called. 443e5c31af7Sopenharmony_ci * [[limits-recyclePipelineMemory]] pname:recyclePipelineMemory indicates 444e5c31af7Sopenharmony_ci whether the memory for a pipeline is available for reuse by new 445e5c31af7Sopenharmony_ci pipelines after the pipeline is destroyed. 446e5c31af7Sopenharmony_ci * [[limits-maxRenderPassSubpasses]] pname:maxRenderPassSubpasses is the 447e5c31af7Sopenharmony_ci maximum number of subpasses in a render pass. 448e5c31af7Sopenharmony_ci * [[limits-maxRenderPassDependencies]] pname:maxRenderPassDependencies is 449e5c31af7Sopenharmony_ci the maximum number of dependencies in a render pass. 450e5c31af7Sopenharmony_ci * [[limits-maxSubpassInputAttachments]] pname:maxSubpassInputAttachments 451e5c31af7Sopenharmony_ci is the maximum number of input attachments in a subpass. 452e5c31af7Sopenharmony_ci * [[limits-maxSubpassPreserveAttachments]] 453e5c31af7Sopenharmony_ci pname:maxSubpassPreserveAttachments is the maximum number of preserve 454e5c31af7Sopenharmony_ci attachments in a subpass. 455e5c31af7Sopenharmony_ci * [[limits-maxFramebufferAttachments]] pname:maxFramebufferAttachments is 456e5c31af7Sopenharmony_ci the maximum number of attachments in a framebuffer, as well as the 457e5c31af7Sopenharmony_ci maximum number of attachments in a render pass. 458e5c31af7Sopenharmony_ci * [[limits-maxDescriptorSetLayoutBindings]] 459e5c31af7Sopenharmony_ci pname:maxDescriptorSetLayoutBindings is the maximum number of bindings 460e5c31af7Sopenharmony_ci in a descriptor set layout. 461e5c31af7Sopenharmony_ci * [[limits-maxQueryFaultCount]] pname:maxQueryFaultCount is the maximum 462e5c31af7Sopenharmony_ci number of faults that the implementation can: record, to be reported via 463e5c31af7Sopenharmony_ci flink:vkGetFaultData. 464e5c31af7Sopenharmony_ci * [[limits-maxCallbackFaultCount]] pname:maxCallbackFaultCount is the 465e5c31af7Sopenharmony_ci maximum number of faults that the implementation can: report via a 466e5c31af7Sopenharmony_ci single call to tlink:PFN_vkFaultCallbackFunction. 467e5c31af7Sopenharmony_ci * [[limits-maxCommandPoolCommandBuffers]] 468e5c31af7Sopenharmony_ci pname:maxCommandPoolCommandBuffers is the maximum number of command 469e5c31af7Sopenharmony_ci buffers that can: be allocated from a single command pool. 470e5c31af7Sopenharmony_ci * [[limits-maxCommandBufferSize]] pname:maxCommandBufferSize is the 471e5c31af7Sopenharmony_ci maximum supported size of a single command buffer in bytes. 472e5c31af7Sopenharmony_ci Applications can: use flink:vkGetCommandPoolMemoryConsumption to compare 473e5c31af7Sopenharmony_ci a command buffer's current memory usage to this limit. 474e5c31af7Sopenharmony_ci 475e5c31af7Sopenharmony_ci[NOTE] 476e5c31af7Sopenharmony_ci.Note 477e5c31af7Sopenharmony_ci==== 478e5c31af7Sopenharmony_ciImplementations that do not have a fixed upper bound on the number of 479e5c31af7Sopenharmony_cicommand buffers that may: be allocated from a command pool can: report 480e5c31af7Sopenharmony_ci0xFFFFFFFFU for pname:maxCommandPoolCommandBuffers. 481e5c31af7Sopenharmony_ci 482e5c31af7Sopenharmony_ciImplementations that do not have a fixed upper bound on the command buffer 483e5c31af7Sopenharmony_cisize can: report code:UINT64_MAX for pname:maxCommandBufferSize. 484e5c31af7Sopenharmony_ci==== 485e5c31af7Sopenharmony_ci 486e5c31af7Sopenharmony_ci:refpage: VkPhysicalDeviceVulkanSC10Properties 487e5c31af7Sopenharmony_ciinclude::{chapters}/limits.adoc[tag=limits_desc] 488e5c31af7Sopenharmony_ci 489e5c31af7Sopenharmony_ciThese properties correspond to Vulkan SC 1.0 functionality. 490e5c31af7Sopenharmony_ci 491e5c31af7Sopenharmony_ciifdef::hidden[] 492e5c31af7Sopenharmony_ci// tag::scaddition[] 493e5c31af7Sopenharmony_ci * slink:VkPhysicalDeviceVulkanSC10Properties <<SCID-1>> 494e5c31af7Sopenharmony_ci// end::scaddition[] 495e5c31af7Sopenharmony_ciendif::hidden[] 496e5c31af7Sopenharmony_ci 497e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPhysicalDeviceVulkanSC10Properties.adoc[] 498e5c31af7Sopenharmony_ci-- 499e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 500e5c31af7Sopenharmony_ci 501e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3[] 502e5c31af7Sopenharmony_ci[open,refpage='VkPhysicalDeviceVulkan13Properties',desc='Structure specifying physical device properties for functionality promoted to Vulkan 1.3',type='structs'] 503e5c31af7Sopenharmony_ci-- 504e5c31af7Sopenharmony_ciThe sname:VkPhysicalDeviceVulkan13Properties structure is defined as: 505e5c31af7Sopenharmony_ci 506e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPhysicalDeviceVulkan13Properties.adoc[] 507e5c31af7Sopenharmony_ci 508e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 509e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 510e5c31af7Sopenharmony_ci structure. 511e5c31af7Sopenharmony_ci 512e5c31af7Sopenharmony_ci:anchor-prefix: 513e5c31af7Sopenharmony_ciinclude::{chapters}/limits.adoc[tag=VK_EXT_subgroup_size_control-properties] 514e5c31af7Sopenharmony_ciinclude::{chapters}/limits.adoc[tag=VK_EXT_inline_uniform_block-properties] 515e5c31af7Sopenharmony_ci * [[{anchor-prefix}limits-maxInlineUniformTotalSize]] 516e5c31af7Sopenharmony_ci pname:maxInlineUniformTotalSize is the maximum total size in bytes of 517e5c31af7Sopenharmony_ci all inline uniform block bindings, across all pipeline shader stages and 518e5c31af7Sopenharmony_ci descriptor set numbers, that can: be included in a pipeline layout. 519e5c31af7Sopenharmony_ci Descriptor bindings with a descriptor type of 520e5c31af7Sopenharmony_ci ename:VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK count against this limit. 521e5c31af7Sopenharmony_ciinclude::{chapters}/devsandqueues.adoc[tag=VK_KHR_shader_integer_dot_product-properties] 522e5c31af7Sopenharmony_ciinclude::{chapters}/limits.adoc[tag=VK_EXT_texel_buffer_alignment-properties] 523e5c31af7Sopenharmony_ciinclude::{chapters}/limits.adoc[tag=VK_KHR_maintenance4-properties] 524e5c31af7Sopenharmony_ci 525e5c31af7Sopenharmony_ci:refpage: VkPhysicalDeviceVulkan13Properties 526e5c31af7Sopenharmony_ciinclude::{chapters}/limits.adoc[tag=limits_desc] 527e5c31af7Sopenharmony_ci 528e5c31af7Sopenharmony_ciThese properties correspond to Vulkan 1.3 functionality. 529e5c31af7Sopenharmony_ci 530e5c31af7Sopenharmony_ciThe members of sname:VkPhysicalDeviceVulkan13Properties must: have the same 531e5c31af7Sopenharmony_civalues as the corresponding members of 532e5c31af7Sopenharmony_cislink:VkPhysicalDeviceInlineUniformBlockProperties and 533e5c31af7Sopenharmony_cislink:VkPhysicalDeviceSubgroupSizeControlProperties. 534e5c31af7Sopenharmony_ci 535e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPhysicalDeviceVulkan13Properties.adoc[] 536e5c31af7Sopenharmony_ci-- 537e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3[] 538e5c31af7Sopenharmony_ci 539e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1,VK_KHR_external_memory_capabilities,VK_KHR_external_semaphore_capabilities,VK_KHR_external_fence_capabilities[] 540e5c31af7Sopenharmony_ci[open,refpage='VkPhysicalDeviceIDProperties',desc='Structure specifying IDs related to the physical device',type='structs'] 541e5c31af7Sopenharmony_ci-- 542e5c31af7Sopenharmony_ciThe sname:VkPhysicalDeviceIDProperties structure is defined as: 543e5c31af7Sopenharmony_ci 544e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPhysicalDeviceIDProperties.adoc[] 545e5c31af7Sopenharmony_ci 546e5c31af7Sopenharmony_ciifdef::VK_KHR_external_memory_capabilities[] 547e5c31af7Sopenharmony_cior the equivalent 548e5c31af7Sopenharmony_ci 549e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPhysicalDeviceIDPropertiesKHR.adoc[] 550e5c31af7Sopenharmony_ciendif::VK_KHR_external_memory_capabilities[] 551e5c31af7Sopenharmony_ci 552e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 553e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 554e5c31af7Sopenharmony_ci structure. 555e5c31af7Sopenharmony_ci 556e5c31af7Sopenharmony_ci// Must have preceding whitespace 557e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 558e5c31af7Sopenharmony_ciifndef::VK_VERSION_1_2[:anchor-prefix:] 559e5c31af7Sopenharmony_ci// tag::VK_KHR_external_memory_capabilities-properties[] 560e5c31af7Sopenharmony_ci * pname:deviceUUID is an array of ename:VK_UUID_SIZE code:uint8_t values 561e5c31af7Sopenharmony_ci representing a universally unique identifier for the device. 562e5c31af7Sopenharmony_ci * pname:driverUUID is an array of ename:VK_UUID_SIZE code:uint8_t values 563e5c31af7Sopenharmony_ci representing a universally unique identifier for the driver build in use 564e5c31af7Sopenharmony_ci by the device. 565e5c31af7Sopenharmony_ci * pname:deviceLUID is an array of ename:VK_LUID_SIZE code:uint8_t values 566e5c31af7Sopenharmony_ci representing a locally unique identifier for the device. 567e5c31af7Sopenharmony_ci * pname:deviceNodeMask is a code:uint32_t bitfield identifying the node 568e5c31af7Sopenharmony_ci within a linked device adapter corresponding to the device. 569e5c31af7Sopenharmony_ci * pname:deviceLUIDValid is a boolean value that will be ename:VK_TRUE if 570e5c31af7Sopenharmony_ci pname:deviceLUID contains a valid LUID and pname:deviceNodeMask contains 571e5c31af7Sopenharmony_ci a valid node mask, and ename:VK_FALSE if they do not. 572e5c31af7Sopenharmony_ci// end::VK_KHR_external_memory_capabilities-properties[] 573e5c31af7Sopenharmony_ci 574e5c31af7Sopenharmony_ci:refpage: VkPhysicalDeviceIDProperties 575e5c31af7Sopenharmony_ciinclude::{chapters}/limits.adoc[tag=limits_desc] 576e5c31af7Sopenharmony_ci 577e5c31af7Sopenharmony_cipname:deviceUUID must: be immutable for a given device across instances, 578e5c31af7Sopenharmony_ciprocesses, driver APIs, driver versions, and system reboots. 579e5c31af7Sopenharmony_ci 580e5c31af7Sopenharmony_ciApplications can: compare the pname:driverUUID value across instance and 581e5c31af7Sopenharmony_ciprocess boundaries, and can: make similar queries in external APIs to 582e5c31af7Sopenharmony_cidetermine whether they are capable of sharing memory objects and resources 583e5c31af7Sopenharmony_ciusing them with the device. 584e5c31af7Sopenharmony_ci 585e5c31af7Sopenharmony_cipname:deviceUUID and/or pname:driverUUID must: be used to determine whether 586e5c31af7Sopenharmony_cia particular external object can be shared between driver components, where 587e5c31af7Sopenharmony_cisuch a restriction exists as defined in the compatibility table for the 588e5c31af7Sopenharmony_ciparticular object type: 589e5c31af7Sopenharmony_ci 590e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1,VK_KHR_external_memory_capabilities[] 591e5c31af7Sopenharmony_ci * <<external-memory-handle-types-compatibility,External memory handle 592e5c31af7Sopenharmony_ci types compatibility>> 593e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1,VK_KHR_external_memory_capabilities[] 594e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities[] 595e5c31af7Sopenharmony_ci * <<external-semaphore-handle-types-compatibility,External semaphore 596e5c31af7Sopenharmony_ci handle types compatibility>> 597e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities[] 598e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1,VK_KHR_external_fence_capabilities[] 599e5c31af7Sopenharmony_ci * <<external-fence-handle-types-compatibility,External fence handle types 600e5c31af7Sopenharmony_ci compatibility>> 601e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1,VK_KHR_external_fence_capabilities[] 602e5c31af7Sopenharmony_ci 603e5c31af7Sopenharmony_ciIf pname:deviceLUIDValid is ename:VK_FALSE, the values of pname:deviceLUID 604e5c31af7Sopenharmony_ciand pname:deviceNodeMask are undefined:. 605e5c31af7Sopenharmony_ciIf pname:deviceLUIDValid is ename:VK_TRUE and Vulkan is running on the 606e5c31af7Sopenharmony_ciWindows operating system, the contents of pname:deviceLUID can: be cast to 607e5c31af7Sopenharmony_cian code:LUID object and must: be equal to the locally unique identifier of a 608e5c31af7Sopenharmony_cicode:IDXGIAdapter1 object that corresponds to pname:physicalDevice. 609e5c31af7Sopenharmony_ciIf pname:deviceLUIDValid is ename:VK_TRUE, pname:deviceNodeMask must: 610e5c31af7Sopenharmony_cicontain exactly one bit. 611e5c31af7Sopenharmony_ciIf Vulkan is running on an operating system that supports the Direct3D 12 612e5c31af7Sopenharmony_ciAPI and pname:physicalDevice corresponds to an individual device in a linked 613e5c31af7Sopenharmony_cidevice adapter, pname:deviceNodeMask identifies the Direct3D 12 node 614e5c31af7Sopenharmony_cicorresponding to pname:physicalDevice. 615e5c31af7Sopenharmony_ciOtherwise, pname:deviceNodeMask must: be `1`. 616e5c31af7Sopenharmony_ci 617e5c31af7Sopenharmony_ci[NOTE] 618e5c31af7Sopenharmony_ci.Note 619e5c31af7Sopenharmony_ci==== 620e5c31af7Sopenharmony_ciAlthough they have identical descriptions, 621e5c31af7Sopenharmony_cislink:VkPhysicalDeviceIDProperties::pname:deviceUUID may differ from 622e5c31af7Sopenharmony_cislink:VkPhysicalDeviceProperties2::pname:pipelineCacheUUID. 623e5c31af7Sopenharmony_ciThe former is intended to identify and correlate devices across API and 624e5c31af7Sopenharmony_cidriver boundaries, while the latter is used to identify a compatible device 625e5c31af7Sopenharmony_ciand driver combination to use when serializing and de-serializing pipeline 626e5c31af7Sopenharmony_cistate. 627e5c31af7Sopenharmony_ci 628e5c31af7Sopenharmony_ciImplementations should: return pname:deviceUUID values which are likely to 629e5c31af7Sopenharmony_cibe unique even in the presence of multiple Vulkan implementations (such as a 630e5c31af7Sopenharmony_ciGPU driver and a software renderer; two drivers for different GPUs; or the 631e5c31af7Sopenharmony_cisame Vulkan driver running on two logically different devices). 632e5c31af7Sopenharmony_ci 633e5c31af7Sopenharmony_ciKhronos' conformance testing is unable to guarantee that pname:deviceUUID 634e5c31af7Sopenharmony_civalues are actually unique, so implementors should: make their own best 635e5c31af7Sopenharmony_ciefforts to ensure this. 636e5c31af7Sopenharmony_ciIn particular, hard-coded pname:deviceUUID values, especially all-`0` bits, 637e5c31af7Sopenharmony_cishould: never be used. 638e5c31af7Sopenharmony_ci 639e5c31af7Sopenharmony_ciA combination of values unique to the vendor, the driver, and the hardware 640e5c31af7Sopenharmony_cienvironment can be used to provide a pname:deviceUUID which is unique to a 641e5c31af7Sopenharmony_cihigh degree of certainty. 642e5c31af7Sopenharmony_ciSome possible inputs to such a computation are: 643e5c31af7Sopenharmony_ci 644e5c31af7Sopenharmony_ci * Information reported by flink:vkGetPhysicalDeviceProperties 645e5c31af7Sopenharmony_ci * PCI device ID (if defined) 646e5c31af7Sopenharmony_ci * PCI bus ID, or similar system configuration information. 647e5c31af7Sopenharmony_ci * Driver binary checksums. 648e5c31af7Sopenharmony_ci==== 649e5c31af7Sopenharmony_ci 650e5c31af7Sopenharmony_ci 651e5c31af7Sopenharmony_ci[NOTE] 652e5c31af7Sopenharmony_ci.Note 653e5c31af7Sopenharmony_ci==== 654e5c31af7Sopenharmony_ciWhile slink:VkPhysicalDeviceIDProperties::pname:deviceUUID is specified to 655e5c31af7Sopenharmony_ciremain consistent across driver versions and system reboots, it is not 656e5c31af7Sopenharmony_ciintended to be usable as a serializable persistent identifier for a device. 657e5c31af7Sopenharmony_ciIt may change when a device is physically added to, removed from, or moved 658e5c31af7Sopenharmony_cito a different connector in a system while that system is powered down. 659e5c31af7Sopenharmony_ciFurther, there is no reasonable way to verify with conformance testing that 660e5c31af7Sopenharmony_cia given device retains the same UUID in a given system across all driver 661e5c31af7Sopenharmony_civersions supported in that system. 662e5c31af7Sopenharmony_ciWhile implementations should make every effort to report consistent device 663e5c31af7Sopenharmony_ciUUIDs across driver versions, applications should avoid relying on the 664e5c31af7Sopenharmony_cipersistence of this value for uses other than identifying compatible devices 665e5c31af7Sopenharmony_cifor external object sharing purposes. 666e5c31af7Sopenharmony_ci==== 667e5c31af7Sopenharmony_ci 668e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPhysicalDeviceIDProperties.adoc[] 669e5c31af7Sopenharmony_ci-- 670e5c31af7Sopenharmony_ci 671e5c31af7Sopenharmony_ci[open,refpage='VK_UUID_SIZE',desc='Length of a universally unique device or driver build identifier',type='consts'] 672e5c31af7Sopenharmony_ci-- 673e5c31af7Sopenharmony_ciename:VK_UUID_SIZE is the length in code:uint8_t values of an array 674e5c31af7Sopenharmony_cicontaining a universally unique device or driver build identifier, as 675e5c31af7Sopenharmony_cireturned in slink:VkPhysicalDeviceIDProperties::pname:deviceUUID and 676e5c31af7Sopenharmony_cislink:VkPhysicalDeviceIDProperties::pname:driverUUID. 677e5c31af7Sopenharmony_ci 678e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VK_UUID_SIZE.adoc[] 679e5c31af7Sopenharmony_ci-- 680e5c31af7Sopenharmony_ci 681e5c31af7Sopenharmony_ci[open,refpage='VK_LUID_SIZE',desc='Length of a locally unique device identifier',type='consts',alias='VK_LUID_SIZE_KHR'] 682e5c31af7Sopenharmony_ci-- 683e5c31af7Sopenharmony_ciename:VK_LUID_SIZE is the length in code:uint8_t values of an array 684e5c31af7Sopenharmony_cicontaining a locally unique device identifier, as returned in 685e5c31af7Sopenharmony_cislink:VkPhysicalDeviceIDProperties::pname:deviceLUID. 686e5c31af7Sopenharmony_ci 687e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VK_LUID_SIZE.adoc[] 688e5c31af7Sopenharmony_ci 689e5c31af7Sopenharmony_ciifdef::VK_KHR_external_memory_capabilities,VK_KHR_external_semaphore_capabilities,VK_KHR_external_fence_capabilities[] 690e5c31af7Sopenharmony_cior the equivalent 691e5c31af7Sopenharmony_ci 692e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VK_LUID_SIZE_KHR.adoc[] 693e5c31af7Sopenharmony_ciendif::VK_KHR_external_memory_capabilities,VK_KHR_external_semaphore_capabilities,VK_KHR_external_fence_capabilities[] 694e5c31af7Sopenharmony_ci-- 695e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1,VK_KHR_external_memory_capabilities,VK_KHR_external_semaphore_capabilities,VK_KHR_external_fence_capabilities[] 696e5c31af7Sopenharmony_ci 697e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_2,VK_KHR_driver_properties[] 698e5c31af7Sopenharmony_ci[open,refpage='VkPhysicalDeviceDriverProperties',desc='Structure containing driver identification information',type='structs',alias='VkPhysicalDeviceDriverPropertiesKHR'] 699e5c31af7Sopenharmony_ci-- 700e5c31af7Sopenharmony_ciThe sname:VkPhysicalDeviceDriverProperties structure is defined as: 701e5c31af7Sopenharmony_ci 702e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPhysicalDeviceDriverProperties.adoc[] 703e5c31af7Sopenharmony_ci 704e5c31af7Sopenharmony_ciifdef::VK_KHR_driver_properties[] 705e5c31af7Sopenharmony_cior the equivalent 706e5c31af7Sopenharmony_ci 707e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPhysicalDeviceDriverPropertiesKHR.adoc[] 708e5c31af7Sopenharmony_ciendif::VK_KHR_driver_properties[] 709e5c31af7Sopenharmony_ci 710e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 711e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 712e5c31af7Sopenharmony_ci structure. 713e5c31af7Sopenharmony_ci 714e5c31af7Sopenharmony_ci// Must have preceding whitespace 715e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 716e5c31af7Sopenharmony_ciifndef::VK_VERSION_1_2[:anchor-prefix:] 717e5c31af7Sopenharmony_ci// tag::VK_KHR_driver_properties-properties[] 718e5c31af7Sopenharmony_ci * pname:driverID is a unique identifier for the driver of the physical 719e5c31af7Sopenharmony_ci device. 720e5c31af7Sopenharmony_ci * pname:driverName is an array of ename:VK_MAX_DRIVER_NAME_SIZE code:char 721e5c31af7Sopenharmony_ci containing a null-terminated UTF-8 string which is the name of the 722e5c31af7Sopenharmony_ci driver. 723e5c31af7Sopenharmony_ci * pname:driverInfo is an array of ename:VK_MAX_DRIVER_INFO_SIZE code:char 724e5c31af7Sopenharmony_ci containing a null-terminated UTF-8 string with additional information 725e5c31af7Sopenharmony_ci about the driver. 726e5c31af7Sopenharmony_ci * pname:conformanceVersion is the version of the Vulkan conformance test 727e5c31af7Sopenharmony_ci this driver is conformant against (see slink:VkConformanceVersion). 728e5c31af7Sopenharmony_ci// end::VK_KHR_driver_properties-properties[] 729e5c31af7Sopenharmony_ci 730e5c31af7Sopenharmony_ci:refpage: VkPhysicalDeviceDriverProperties 731e5c31af7Sopenharmony_ciinclude::{chapters}/limits.adoc[tag=limits_desc] 732e5c31af7Sopenharmony_ci 733e5c31af7Sopenharmony_ciThese are properties of the driver corresponding to a physical device. 734e5c31af7Sopenharmony_ci 735e5c31af7Sopenharmony_cipname:driverID must: be immutable for a given driver across instances, 736e5c31af7Sopenharmony_ciprocesses, driver versions, and system reboots. 737e5c31af7Sopenharmony_ci 738e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPhysicalDeviceDriverProperties.adoc[] 739e5c31af7Sopenharmony_ci-- 740e5c31af7Sopenharmony_ci 741e5c31af7Sopenharmony_ci[open,refpage='VkDriverId',desc='Khronos driver IDs',type='enums',alias='VkDriverIdKHR'] 742e5c31af7Sopenharmony_ci-- 743e5c31af7Sopenharmony_ciKhronos driver IDs which may: be returned in 744e5c31af7Sopenharmony_cislink:VkPhysicalDeviceDriverProperties::pname:driverID are: 745e5c31af7Sopenharmony_ci 746e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkDriverId.adoc[] 747e5c31af7Sopenharmony_ci 748e5c31af7Sopenharmony_ciifdef::VK_KHR_driver_properties[] 749e5c31af7Sopenharmony_cior the equivalent 750e5c31af7Sopenharmony_ci 751e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkDriverIdKHR.adoc[] 752e5c31af7Sopenharmony_ciendif::VK_KHR_driver_properties[] 753e5c31af7Sopenharmony_ci 754e5c31af7Sopenharmony_ci[NOTE] 755e5c31af7Sopenharmony_ci.Note 756e5c31af7Sopenharmony_ci==== 757e5c31af7Sopenharmony_ciKhronos driver IDs may be allocated by vendors at any time. 758e5c31af7Sopenharmony_ciThere may be multiple driver IDs for the same vendor, representing different 759e5c31af7Sopenharmony_cidrivers (for e.g. different platforms, proprietary or open source, etc.). 760e5c31af7Sopenharmony_ciOnly the latest canonical versions of this Specification, of the 761e5c31af7Sopenharmony_cicorresponding `vk.xml` API Registry, and of the corresponding 762e5c31af7Sopenharmony_ci`{core_header}` header file must: contain all reserved Khronos driver IDs. 763e5c31af7Sopenharmony_ci 764e5c31af7Sopenharmony_ciOnly driver IDs registered with Khronos are given symbolic names. 765e5c31af7Sopenharmony_ciThere may: be unregistered driver IDs returned. 766e5c31af7Sopenharmony_ci==== 767e5c31af7Sopenharmony_ci-- 768e5c31af7Sopenharmony_ci 769e5c31af7Sopenharmony_ci[open,refpage='VK_MAX_DRIVER_NAME_SIZE',desc='Maximum length of a physical device driver name string',type='consts',alias='VK_MAX_DRIVER_NAME_SIZE_KHR'] 770e5c31af7Sopenharmony_ci-- 771e5c31af7Sopenharmony_ciename:VK_MAX_DRIVER_NAME_SIZE is the length in code:char values of an array 772e5c31af7Sopenharmony_cicontaining a driver name string, as returned in 773e5c31af7Sopenharmony_cislink:VkPhysicalDeviceDriverProperties::pname:driverName. 774e5c31af7Sopenharmony_ci 775e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VK_MAX_DRIVER_NAME_SIZE.adoc[] 776e5c31af7Sopenharmony_ci 777e5c31af7Sopenharmony_ciifdef::VK_KHR_driver_properties[] 778e5c31af7Sopenharmony_cior the equivalent 779e5c31af7Sopenharmony_ci 780e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VK_MAX_DRIVER_NAME_SIZE_KHR.adoc[] 781e5c31af7Sopenharmony_ciendif::VK_KHR_driver_properties[] 782e5c31af7Sopenharmony_ci-- 783e5c31af7Sopenharmony_ci 784e5c31af7Sopenharmony_ci[open,refpage='VK_MAX_DRIVER_INFO_SIZE',desc='Length of a physical device driver information string',type='consts',alias='VK_MAX_DRIVER_INFO_SIZE_KHR'] 785e5c31af7Sopenharmony_ci-- 786e5c31af7Sopenharmony_ciename:VK_MAX_DRIVER_INFO_SIZE is the length in code:char values of an array 787e5c31af7Sopenharmony_cicontaining a driver information string, as returned in 788e5c31af7Sopenharmony_cislink:VkPhysicalDeviceDriverProperties::pname:driverInfo. 789e5c31af7Sopenharmony_ci 790e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VK_MAX_DRIVER_INFO_SIZE.adoc[] 791e5c31af7Sopenharmony_ci 792e5c31af7Sopenharmony_ciifdef::VK_KHR_driver_properties[] 793e5c31af7Sopenharmony_cior the equivalent 794e5c31af7Sopenharmony_ci 795e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VK_MAX_DRIVER_INFO_SIZE_KHR.adoc[] 796e5c31af7Sopenharmony_ciendif::VK_KHR_driver_properties[] 797e5c31af7Sopenharmony_ci-- 798e5c31af7Sopenharmony_ci 799e5c31af7Sopenharmony_ci[open,refpage='VkConformanceVersion',desc='Structure containing the conformance test suite version the implementation is compliant with',type='structs',alias='VkConformanceVersionKHR'] 800e5c31af7Sopenharmony_ci-- 801e5c31af7Sopenharmony_ciThe conformance test suite version an implementation is compliant with is 802e5c31af7Sopenharmony_cidescribed with the sname:VkConformanceVersion structure: 803e5c31af7Sopenharmony_ci 804e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkConformanceVersion.adoc[] 805e5c31af7Sopenharmony_ci 806e5c31af7Sopenharmony_ciifdef::VK_KHR_driver_properties[] 807e5c31af7Sopenharmony_cior the equivalent 808e5c31af7Sopenharmony_ci 809e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkConformanceVersionKHR.adoc[] 810e5c31af7Sopenharmony_ciendif::VK_KHR_driver_properties[] 811e5c31af7Sopenharmony_ci 812e5c31af7Sopenharmony_ci * pname:major is the major version number of the conformance test suite. 813e5c31af7Sopenharmony_ci * pname:minor is the minor version number of the conformance test suite. 814e5c31af7Sopenharmony_ci * pname:subminor is the subminor version number of the conformance test 815e5c31af7Sopenharmony_ci suite. 816e5c31af7Sopenharmony_ci * pname:patch is the patch version number of the conformance test suite. 817e5c31af7Sopenharmony_ci 818e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkConformanceVersion.adoc[] 819e5c31af7Sopenharmony_ci-- 820e5c31af7Sopenharmony_ciendif::VK_VERSION_1_2,VK_KHR_driver_properties[] 821e5c31af7Sopenharmony_ci 822e5c31af7Sopenharmony_ciifdef::VK_EXT_pci_bus_info[] 823e5c31af7Sopenharmony_ci[open,refpage='VkPhysicalDevicePCIBusInfoPropertiesEXT',desc='Structure containing PCI bus information of a physical device',type='structs'] 824e5c31af7Sopenharmony_ci-- 825e5c31af7Sopenharmony_ciThe sname:VkPhysicalDevicePCIBusInfoPropertiesEXT structure is defined as: 826e5c31af7Sopenharmony_ci 827e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPhysicalDevicePCIBusInfoPropertiesEXT.adoc[] 828e5c31af7Sopenharmony_ci 829e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 830e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 831e5c31af7Sopenharmony_ci structure. 832e5c31af7Sopenharmony_ci * pname:pciDomain is the PCI bus domain. 833e5c31af7Sopenharmony_ci * pname:pciBus is the PCI bus identifier. 834e5c31af7Sopenharmony_ci * pname:pciDevice is the PCI device identifier. 835e5c31af7Sopenharmony_ci * pname:pciFunction is the PCI device function identifier. 836e5c31af7Sopenharmony_ci 837e5c31af7Sopenharmony_ci:refpage: VkPhysicalDevicePCIBusInfoPropertiesEXT 838e5c31af7Sopenharmony_ciinclude::{chapters}/limits.adoc[tag=limits_desc] 839e5c31af7Sopenharmony_ci 840e5c31af7Sopenharmony_ciThese are properties of the PCI bus information of a physical device. 841e5c31af7Sopenharmony_ci 842e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPhysicalDevicePCIBusInfoPropertiesEXT.adoc[] 843e5c31af7Sopenharmony_ci-- 844e5c31af7Sopenharmony_ciendif::VK_EXT_pci_bus_info[] 845e5c31af7Sopenharmony_ci 846e5c31af7Sopenharmony_ciifdef::VK_EXT_physical_device_drm[] 847e5c31af7Sopenharmony_ci[open,refpage='VkPhysicalDeviceDrmPropertiesEXT',desc='Structure containing DRM information of a physical device',type='structs'] 848e5c31af7Sopenharmony_ci-- 849e5c31af7Sopenharmony_ciThe sname:VkPhysicalDeviceDrmPropertiesEXT structure is defined as: 850e5c31af7Sopenharmony_ci 851e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPhysicalDeviceDrmPropertiesEXT.adoc[] 852e5c31af7Sopenharmony_ci 853e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 854e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 855e5c31af7Sopenharmony_ci structure. 856e5c31af7Sopenharmony_ci * pname:hasPrimary is a boolean indicating whether the physical device has 857e5c31af7Sopenharmony_ci a DRM primary node. 858e5c31af7Sopenharmony_ci * pname:hasRender is a boolean indicating whether the physical device has 859e5c31af7Sopenharmony_ci a DRM render node. 860e5c31af7Sopenharmony_ci * pname:primaryMajor is the DRM primary node major number, if any. 861e5c31af7Sopenharmony_ci * pname:primaryMinor is the DRM primary node minor number, if any. 862e5c31af7Sopenharmony_ci * pname:renderMajor is the DRM render node major number, if any. 863e5c31af7Sopenharmony_ci * pname:renderMinor is the DRM render node minor number, if any. 864e5c31af7Sopenharmony_ci 865e5c31af7Sopenharmony_ci:refpage: VkPhysicalDeviceDrmPropertiesEXT 866e5c31af7Sopenharmony_ciinclude::{chapters}/limits.adoc[tag=limits_desc] 867e5c31af7Sopenharmony_ci 868e5c31af7Sopenharmony_ciThese are properties of the DRM information of a physical device. 869e5c31af7Sopenharmony_ci 870e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPhysicalDeviceDrmPropertiesEXT.adoc[] 871e5c31af7Sopenharmony_ci-- 872e5c31af7Sopenharmony_ciendif::VK_EXT_physical_device_drm[] 873e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] 874e5c31af7Sopenharmony_ci 875e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_KHR_shader_integer_dot_product[] 876e5c31af7Sopenharmony_ci[open,refpage='VkPhysicalDeviceShaderIntegerDotProductProperties',desc='Structure containing information about integer dot product support for a physical device',type='structs',alias='VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR'] 877e5c31af7Sopenharmony_ci-- 878e5c31af7Sopenharmony_ciThe sname:VkPhysicalDeviceShaderIntegerDotProductProperties structure is 879e5c31af7Sopenharmony_cidefined as: 880e5c31af7Sopenharmony_ci 881e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPhysicalDeviceShaderIntegerDotProductProperties.adoc[] 882e5c31af7Sopenharmony_ci 883e5c31af7Sopenharmony_ciifdef::VK_KHR_shader_integer_dot_product[] 884e5c31af7Sopenharmony_cior the equivalent 885e5c31af7Sopenharmony_ci 886e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR.adoc[] 887e5c31af7Sopenharmony_ciendif::VK_KHR_shader_integer_dot_product[] 888e5c31af7Sopenharmony_ci 889e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 890e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 891e5c31af7Sopenharmony_ci structure. 892e5c31af7Sopenharmony_ci 893e5c31af7Sopenharmony_ci// Must have preceding whitespace 894e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3[:anchor-prefix: extension-] 895e5c31af7Sopenharmony_ciifndef::VK_VERSION_1_3[:anchor-prefix:] 896e5c31af7Sopenharmony_ci// NOTE: none of these properties currently have anchors, so the 897e5c31af7Sopenharmony_ci// {anchor-prefix} is not used in the property descriptions. 898e5c31af7Sopenharmony_ci// tag::VK_KHR_shader_integer_dot_product-properties[] 899e5c31af7Sopenharmony_ci * pname:integerDotProduct8BitUnsignedAccelerated is a boolean that will be 900e5c31af7Sopenharmony_ci ename:VK_TRUE if the support for 8-bit unsigned dot product operations 901e5c31af7Sopenharmony_ci using the code:OpUDotKHR SPIR-V instruction is accelerated 902e5c31af7Sopenharmony_ci <<devsandqueues-integer-dot-product-accelerated,as defined below>>. 903e5c31af7Sopenharmony_ci * pname:integerDotProduct8BitSignedAccelerated is a boolean that will be 904e5c31af7Sopenharmony_ci ename:VK_TRUE if the support for 8-bit signed dot product operations 905e5c31af7Sopenharmony_ci using the code:OpSDotKHR SPIR-V instruction is accelerated 906e5c31af7Sopenharmony_ci <<devsandqueues-integer-dot-product-accelerated,as defined below>>. 907e5c31af7Sopenharmony_ci * pname:integerDotProduct8BitMixedSignednessAccelerated is a boolean that 908e5c31af7Sopenharmony_ci will be ename:VK_TRUE if the support for 8-bit mixed signedness dot 909e5c31af7Sopenharmony_ci product operations using the code:OpSUDotKHR SPIR-V instruction is 910e5c31af7Sopenharmony_ci accelerated <<devsandqueues-integer-dot-product-accelerated,as defined 911e5c31af7Sopenharmony_ci below>>. 912e5c31af7Sopenharmony_ci * pname:integerDotProduct4x8BitPackedUnsignedAccelerated is a boolean that 913e5c31af7Sopenharmony_ci will be ename:VK_TRUE if the support for 8-bit unsigned dot product 914e5c31af7Sopenharmony_ci operations from operands packed into 32-bit integers using the 915e5c31af7Sopenharmony_ci code:OpUDotKHR SPIR-V instruction is accelerated 916e5c31af7Sopenharmony_ci <<devsandqueues-integer-dot-product-accelerated,as defined below>>. 917e5c31af7Sopenharmony_ci * pname:integerDotProduct4x8BitPackedSignedAccelerated is a boolean that 918e5c31af7Sopenharmony_ci will be ename:VK_TRUE if the support for 8-bit signed dot product 919e5c31af7Sopenharmony_ci operations from operands packed into 32-bit integers using the 920e5c31af7Sopenharmony_ci code:OpSDotKHR SPIR-V instruction is accelerated 921e5c31af7Sopenharmony_ci <<devsandqueues-integer-dot-product-accelerated,as defined below>>. 922e5c31af7Sopenharmony_ci * pname:integerDotProduct4x8BitPackedMixedSignednessAccelerated is a 923e5c31af7Sopenharmony_ci boolean that will be ename:VK_TRUE if the support for 8-bit mixed 924e5c31af7Sopenharmony_ci signedness dot product operations from operands packed into 32-bit 925e5c31af7Sopenharmony_ci integers using the code:OpSUDotKHR SPIR-V instruction is accelerated 926e5c31af7Sopenharmony_ci <<devsandqueues-integer-dot-product-accelerated,as defined below>>. 927e5c31af7Sopenharmony_ci * pname:integerDotProduct16BitUnsignedAccelerated is a boolean that will 928e5c31af7Sopenharmony_ci be ename:VK_TRUE if the support for 16-bit unsigned dot product 929e5c31af7Sopenharmony_ci operations using the code:OpUDotKHR SPIR-V instruction is accelerated 930e5c31af7Sopenharmony_ci <<devsandqueues-integer-dot-product-accelerated,as defined below>>. 931e5c31af7Sopenharmony_ci * pname:integerDotProduct16BitSignedAccelerated is a boolean that will be 932e5c31af7Sopenharmony_ci ename:VK_TRUE if the support for 16-bit signed dot product operations 933e5c31af7Sopenharmony_ci using the code:OpSDotKHR SPIR-V instruction is accelerated 934e5c31af7Sopenharmony_ci <<devsandqueues-integer-dot-product-accelerated,as defined below>>. 935e5c31af7Sopenharmony_ci * pname:integerDotProduct16BitMixedSignednessAccelerated is a boolean that 936e5c31af7Sopenharmony_ci will be ename:VK_TRUE if the support for 16-bit mixed signedness dot 937e5c31af7Sopenharmony_ci product operations using the code:OpSUDotKHR SPIR-V instruction is 938e5c31af7Sopenharmony_ci accelerated <<devsandqueues-integer-dot-product-accelerated,as defined 939e5c31af7Sopenharmony_ci below>>. 940e5c31af7Sopenharmony_ci * pname:integerDotProduct32BitUnsignedAccelerated is a boolean that will 941e5c31af7Sopenharmony_ci be ename:VK_TRUE if the support for 32-bit unsigned dot product 942e5c31af7Sopenharmony_ci operations using the code:OpUDotKHR SPIR-V instruction is accelerated 943e5c31af7Sopenharmony_ci <<devsandqueues-integer-dot-product-accelerated,as defined below>>. 944e5c31af7Sopenharmony_ci * pname:integerDotProduct32BitSignedAccelerated is a boolean that will be 945e5c31af7Sopenharmony_ci ename:VK_TRUE if the support for 32-bit signed dot product operations 946e5c31af7Sopenharmony_ci using the code:OpSDotKHR SPIR-V instruction is accelerated 947e5c31af7Sopenharmony_ci <<devsandqueues-integer-dot-product-accelerated,as defined below>>. 948e5c31af7Sopenharmony_ci * pname:integerDotProduct32BitMixedSignednessAccelerated is a boolean that 949e5c31af7Sopenharmony_ci will be ename:VK_TRUE if the support for 32-bit mixed signedness dot 950e5c31af7Sopenharmony_ci product operations using the code:OpSUDotKHR SPIR-V instruction is 951e5c31af7Sopenharmony_ci accelerated <<devsandqueues-integer-dot-product-accelerated,as defined 952e5c31af7Sopenharmony_ci below>>. 953e5c31af7Sopenharmony_ci * pname:integerDotProduct64BitUnsignedAccelerated is a boolean that will 954e5c31af7Sopenharmony_ci be ename:VK_TRUE if the support for 64-bit unsigned dot product 955e5c31af7Sopenharmony_ci operations using the code:OpUDotKHR SPIR-V instruction is accelerated 956e5c31af7Sopenharmony_ci <<devsandqueues-integer-dot-product-accelerated,as defined below>>. 957e5c31af7Sopenharmony_ci * pname:integerDotProduct64BitSignedAccelerated is a boolean that will be 958e5c31af7Sopenharmony_ci ename:VK_TRUE if the support for 64-bit signed dot product operations 959e5c31af7Sopenharmony_ci using the code:OpSDotKHR SPIR-V instruction is accelerated 960e5c31af7Sopenharmony_ci <<devsandqueues-integer-dot-product-accelerated,as defined below>>. 961e5c31af7Sopenharmony_ci * pname:integerDotProduct64BitMixedSignednessAccelerated is a boolean that 962e5c31af7Sopenharmony_ci will be ename:VK_TRUE if the support for 64-bit mixed signedness dot 963e5c31af7Sopenharmony_ci product operations using the code:OpSUDotKHR SPIR-V instruction is 964e5c31af7Sopenharmony_ci accelerated <<devsandqueues-integer-dot-product-accelerated,as defined 965e5c31af7Sopenharmony_ci below>>. 966e5c31af7Sopenharmony_ci * pname:integerDotProductAccumulatingSaturating8BitUnsignedAccelerated is 967e5c31af7Sopenharmony_ci a boolean that will be ename:VK_TRUE if the support for 8-bit unsigned 968e5c31af7Sopenharmony_ci accumulating saturating dot product operations using the 969e5c31af7Sopenharmony_ci code:OpUDotAccSatKHR SPIR-V instruction is accelerated 970e5c31af7Sopenharmony_ci <<devsandqueues-integer-dot-product-accelerated,as defined below>>. 971e5c31af7Sopenharmony_ci * pname:integerDotProductAccumulatingSaturating8BitSignedAccelerated is a 972e5c31af7Sopenharmony_ci boolean that will be ename:VK_TRUE if the support for 8-bit signed 973e5c31af7Sopenharmony_ci accumulating saturating dot product operations using the 974e5c31af7Sopenharmony_ci code:OpSDotAccSatKHR SPIR-V instruction is accelerated 975e5c31af7Sopenharmony_ci <<devsandqueues-integer-dot-product-accelerated,as defined below>>. 976e5c31af7Sopenharmony_ci * pname:integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated 977e5c31af7Sopenharmony_ci is a boolean that will be ename:VK_TRUE if the support for 8-bit mixed 978e5c31af7Sopenharmony_ci signedness accumulating saturating dot product operations using the 979e5c31af7Sopenharmony_ci code:OpSUDotAccSatKHR SPIR-V instruction is accelerated 980e5c31af7Sopenharmony_ci <<devsandqueues-integer-dot-product-accelerated,as defined below>>. 981e5c31af7Sopenharmony_ci * pname:integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated 982e5c31af7Sopenharmony_ci is a boolean that will be ename:VK_TRUE if the support for 8-bit 983e5c31af7Sopenharmony_ci unsigned accumulating saturating dot product operations from operands 984e5c31af7Sopenharmony_ci packed into 32-bit integers using the code:OpUDotAccSatKHR SPIR-V 985e5c31af7Sopenharmony_ci instruction is accelerated 986e5c31af7Sopenharmony_ci <<devsandqueues-integer-dot-product-accelerated,as defined below>>. 987e5c31af7Sopenharmony_ci * pname:integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated 988e5c31af7Sopenharmony_ci is a boolean that will be ename:VK_TRUE if the support for 8-bit signed 989e5c31af7Sopenharmony_ci accumulating saturating dot product operations from operands packed into 990e5c31af7Sopenharmony_ci 32-bit integers using the code:OpSDotAccSatKHR SPIR-V instruction is 991e5c31af7Sopenharmony_ci accelerated <<devsandqueues-integer-dot-product-accelerated,as defined 992e5c31af7Sopenharmony_ci below>>. 993e5c31af7Sopenharmony_ci * pname:integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated 994e5c31af7Sopenharmony_ci is a boolean that will be ename:VK_TRUE if the support for 8-bit mixed 995e5c31af7Sopenharmony_ci signedness accumulating saturating dot product operations from operands 996e5c31af7Sopenharmony_ci packed into 32-bit integers using the code:OpSUDotAccSatKHR SPIR-V 997e5c31af7Sopenharmony_ci instruction is accelerated 998e5c31af7Sopenharmony_ci <<devsandqueues-integer-dot-product-accelerated,as defined below>>. 999e5c31af7Sopenharmony_ci * pname:integerDotProductAccumulatingSaturating16BitUnsignedAccelerated is 1000e5c31af7Sopenharmony_ci a boolean that will be ename:VK_TRUE if the support for 16-bit unsigned 1001e5c31af7Sopenharmony_ci accumulating saturating dot product operations using the 1002e5c31af7Sopenharmony_ci code:OpUDotAccSatKHR SPIR-V instruction is accelerated 1003e5c31af7Sopenharmony_ci <<devsandqueues-integer-dot-product-accelerated,as defined below>>. 1004e5c31af7Sopenharmony_ci * pname:integerDotProductAccumulatingSaturating16BitSignedAccelerated is a 1005e5c31af7Sopenharmony_ci boolean that will be ename:VK_TRUE if the support for 16-bit signed 1006e5c31af7Sopenharmony_ci accumulating saturating dot product operations using the 1007e5c31af7Sopenharmony_ci code:OpSDotAccSatKHR SPIR-V instruction is accelerated 1008e5c31af7Sopenharmony_ci <<devsandqueues-integer-dot-product-accelerated,as defined below>>. 1009e5c31af7Sopenharmony_ci * pname:integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated 1010e5c31af7Sopenharmony_ci is a boolean that will be ename:VK_TRUE if the support for 16-bit mixed 1011e5c31af7Sopenharmony_ci signedness accumulating saturating dot product operations using the 1012e5c31af7Sopenharmony_ci code:OpSUDotAccSatKHR SPIR-V instruction is accelerated 1013e5c31af7Sopenharmony_ci <<devsandqueues-integer-dot-product-accelerated,as defined below>>. 1014e5c31af7Sopenharmony_ci * pname:integerDotProductAccumulatingSaturating32BitUnsignedAccelerated is 1015e5c31af7Sopenharmony_ci a boolean that will be ename:VK_TRUE if the support for 32-bit unsigned 1016e5c31af7Sopenharmony_ci accumulating saturating dot product operations using the 1017e5c31af7Sopenharmony_ci code:OpUDotAccSatKHR SPIR-V instruction is accelerated 1018e5c31af7Sopenharmony_ci <<devsandqueues-integer-dot-product-accelerated,as defined below>>. 1019e5c31af7Sopenharmony_ci * pname:integerDotProductAccumulatingSaturating32BitSignedAccelerated is a 1020e5c31af7Sopenharmony_ci boolean that will be ename:VK_TRUE if the support for 32-bit signed 1021e5c31af7Sopenharmony_ci accumulating saturating dot product operations using the 1022e5c31af7Sopenharmony_ci code:OpSDotAccSatKHR SPIR-V instruction is accelerated 1023e5c31af7Sopenharmony_ci <<devsandqueues-integer-dot-product-accelerated,as defined below>>. 1024e5c31af7Sopenharmony_ci * pname:integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated 1025e5c31af7Sopenharmony_ci is a boolean that will be ename:VK_TRUE if the support for 32-bit mixed 1026e5c31af7Sopenharmony_ci signedness accumulating saturating dot product operations using the 1027e5c31af7Sopenharmony_ci code:OpSUDotAccSatKHR SPIR-V instruction is accelerated 1028e5c31af7Sopenharmony_ci <<devsandqueues-integer-dot-product-accelerated,as defined below>>. 1029e5c31af7Sopenharmony_ci * pname:integerDotProductAccumulatingSaturating64BitUnsignedAccelerated is 1030e5c31af7Sopenharmony_ci a boolean that will be ename:VK_TRUE if the support for 64-bit unsigned 1031e5c31af7Sopenharmony_ci accumulating saturating dot product operations using the 1032e5c31af7Sopenharmony_ci code:OpUDotAccSatKHR SPIR-V instruction is accelerated 1033e5c31af7Sopenharmony_ci <<devsandqueues-integer-dot-product-accelerated,as defined below>>. 1034e5c31af7Sopenharmony_ci * pname:integerDotProductAccumulatingSaturating64BitSignedAccelerated is a 1035e5c31af7Sopenharmony_ci boolean that will be ename:VK_TRUE if the support for 64-bit signed 1036e5c31af7Sopenharmony_ci accumulating saturating dot product operations using the 1037e5c31af7Sopenharmony_ci code:OpSDotAccSatKHR SPIR-V instruction is accelerated 1038e5c31af7Sopenharmony_ci <<devsandqueues-integer-dot-product-accelerated,as defined below>>. 1039e5c31af7Sopenharmony_ci * pname:integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated 1040e5c31af7Sopenharmony_ci is a boolean that will be ename:VK_TRUE if the support for 64-bit mixed 1041e5c31af7Sopenharmony_ci signedness accumulating saturating dot product operations using the 1042e5c31af7Sopenharmony_ci code:OpSUDotAccSatKHR SPIR-V instruction is accelerated 1043e5c31af7Sopenharmony_ci <<devsandqueues-integer-dot-product-accelerated,as defined below>>. 1044e5c31af7Sopenharmony_ci// end::VK_KHR_shader_integer_dot_product-properties[] 1045e5c31af7Sopenharmony_ci 1046e5c31af7Sopenharmony_ci:refpage: VkPhysicalDeviceShaderIntegerDotProductProperties 1047e5c31af7Sopenharmony_ciinclude::{chapters}/limits.adoc[tag=limits_desc] 1048e5c31af7Sopenharmony_ci 1049e5c31af7Sopenharmony_ciThese are properties of the integer dot product acceleration information of 1050e5c31af7Sopenharmony_cia physical device. 1051e5c31af7Sopenharmony_ci 1052e5c31af7Sopenharmony_ci[[devsandqueues-integer-dot-product-accelerated]] 1053e5c31af7Sopenharmony_ci[NOTE] 1054e5c31af7Sopenharmony_ci.Note 1055e5c31af7Sopenharmony_ci==== 1056e5c31af7Sopenharmony_ciA dot product operation is deemed accelerated if its implementation provides 1057e5c31af7Sopenharmony_cia performance advantage over application-provided code composed from 1058e5c31af7Sopenharmony_cielementary instructions and/or other dot product instructions, either 1059e5c31af7Sopenharmony_cibecause the implementation uses optimized machine code sequences whose 1060e5c31af7Sopenharmony_cigeneration from application-provided code cannot be guaranteed or because it 1061e5c31af7Sopenharmony_ciuses hardware features that cannot otherwise be targeted from 1062e5c31af7Sopenharmony_ciapplication-provided code. 1063e5c31af7Sopenharmony_ci==== 1064e5c31af7Sopenharmony_ci 1065e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPhysicalDeviceShaderIntegerDotProductProperties.adoc[] 1066e5c31af7Sopenharmony_ci-- 1067e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_KHR_shader_integer_dot_product[] 1068e5c31af7Sopenharmony_ci 1069e5c31af7Sopenharmony_ciifdef::VK_QCOM_image_processing[] 1070e5c31af7Sopenharmony_ci[open,refpage='VkPhysicalDeviceImageProcessingPropertiesQCOM',desc='Structure containing image processing properties',type='structs'] 1071e5c31af7Sopenharmony_ci-- 1072e5c31af7Sopenharmony_ciThe sname:VkPhysicalDeviceImageProcessingPropertiesQCOM structure is defined 1073e5c31af7Sopenharmony_cias: 1074e5c31af7Sopenharmony_ci 1075e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPhysicalDeviceImageProcessingPropertiesQCOM.adoc[] 1076e5c31af7Sopenharmony_ci 1077e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 1078e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 1079e5c31af7Sopenharmony_ci structure. 1080e5c31af7Sopenharmony_ci * [[limits-weightfilter-phases]] pname:maxWeightFilterPhases is the 1081e5c31af7Sopenharmony_ci maximum value that can: be specified for 1082e5c31af7Sopenharmony_ci slink:VkImageViewSampleWeightCreateInfoQCOM::pname:numPhases in 1083e5c31af7Sopenharmony_ci <<textures-weightimage-filterphases, weight image sampling>> operations. 1084e5c31af7Sopenharmony_ci * [[limits-weightfilter-maxdimension]] pname:maxWeightFilterDimension is a 1085e5c31af7Sopenharmony_ci slink:VkExtent2D describing the largest dimensions (pname:width and 1086e5c31af7Sopenharmony_ci pname:height) that can: be specified for 1087e5c31af7Sopenharmony_ci slink:VkImageViewSampleWeightCreateInfoQCOM::pname:filterSize. 1088e5c31af7Sopenharmony_ci * [[limits-blockmatch-maxblocksize]] pname:maxBlockMatchRegion is a 1089e5c31af7Sopenharmony_ci slink:VkExtent2D describing the largest dimensions (pname:width and 1090e5c31af7Sopenharmony_ci pname:height) that can: be specified for code:blockSize in 1091e5c31af7Sopenharmony_ci <<textures-blockmatch,block matching>> operations. 1092e5c31af7Sopenharmony_ci * [[limits-boxfilter-maxblocksize]] pname:maxBoxFilterBlockSize is a 1093e5c31af7Sopenharmony_ci slink:VkExtent2D describing the maximum dimensions (pname:width and 1094e5c31af7Sopenharmony_ci pname:height) that can: be specified for code:blocksize in 1095e5c31af7Sopenharmony_ci <<textures-boxfilter,box filter sampling>> operations. 1096e5c31af7Sopenharmony_ci 1097e5c31af7Sopenharmony_ci:refpage: VkPhysicalDeviceImageProcessingPropertiesQCOM 1098e5c31af7Sopenharmony_ciinclude::{chapters}/limits.adoc[tag=limits_desc] 1099e5c31af7Sopenharmony_ci 1100e5c31af7Sopenharmony_ciThese are properties of the image processing information of a physical 1101e5c31af7Sopenharmony_cidevice. 1102e5c31af7Sopenharmony_ci 1103e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPhysicalDeviceImageProcessingPropertiesQCOM.adoc[] 1104e5c31af7Sopenharmony_ci-- 1105e5c31af7Sopenharmony_ciendif::VK_QCOM_image_processing[] 1106e5c31af7Sopenharmony_ci 1107e5c31af7Sopenharmony_ciifdef::VK_EXT_shader_tile_image[] 1108e5c31af7Sopenharmony_ci[open,refpage='VkPhysicalDeviceShaderTileImagePropertiesEXT',desc='Structure containing information about tile image support for a physical device',type='structs'] 1109e5c31af7Sopenharmony_ci-- 1110e5c31af7Sopenharmony_ciThe sname:VkPhysicalDeviceShaderTileImagePropertiesEXT structure is defined 1111e5c31af7Sopenharmony_cias: 1112e5c31af7Sopenharmony_ci 1113e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPhysicalDeviceShaderTileImagePropertiesEXT.adoc[] 1114e5c31af7Sopenharmony_ci 1115e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 1116e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 1117e5c31af7Sopenharmony_ci structure. 1118e5c31af7Sopenharmony_ci * pname:shaderTileImageCoherentReadAccelerated is a boolean that will be 1119e5c31af7Sopenharmony_ci ename:VK_TRUE if coherent reads of tile image data is accelerated. 1120e5c31af7Sopenharmony_ci * pname:shaderTileImageReadSampleFromPixelRateInvocation is a boolean that 1121e5c31af7Sopenharmony_ci will be ename:VK_TRUE if reading from samples from a pixel rate fragment 1122e5c31af7Sopenharmony_ci invocation is supported when 1123e5c31af7Sopenharmony_ci slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples > 1. 1124e5c31af7Sopenharmony_ci * pname:shaderTileImageReadFromHelperInvocation is a boolean that will be 1125e5c31af7Sopenharmony_ci ename:VK_TRUE if reads of tile image data from helper fragment 1126e5c31af7Sopenharmony_ci invocations result in valid values. 1127e5c31af7Sopenharmony_ci 1128e5c31af7Sopenharmony_ci:refpage: VkPhysicalDeviceShaderTileImagePropertiesEXT 1129e5c31af7Sopenharmony_ciinclude::{chapters}/limits.adoc[tag=limits_desc] 1130e5c31af7Sopenharmony_ci 1131e5c31af7Sopenharmony_ciThese are properties of the tile image information of a physical device. 1132e5c31af7Sopenharmony_ci 1133e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPhysicalDeviceShaderTileImagePropertiesEXT.adoc[] 1134e5c31af7Sopenharmony_ci-- 1135e5c31af7Sopenharmony_ciendif::VK_EXT_shader_tile_image[] 1136e5c31af7Sopenharmony_ci 1137e5c31af7Sopenharmony_ciifdef::VK_QCOM_image_processing2[] 1138e5c31af7Sopenharmony_ci[open,refpage='VkPhysicalDeviceImageProcessing2PropertiesQCOM',desc='Structure containing image processing2 properties',type='structs'] 1139e5c31af7Sopenharmony_ci-- 1140e5c31af7Sopenharmony_ciThe sname:VkPhysicalDeviceImageProcessing2PropertiesQCOM structure is 1141e5c31af7Sopenharmony_cidefined as: 1142e5c31af7Sopenharmony_ci 1143e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPhysicalDeviceImageProcessing2PropertiesQCOM.adoc[] 1144e5c31af7Sopenharmony_ci 1145e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 1146e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 1147e5c31af7Sopenharmony_ci structure. 1148e5c31af7Sopenharmony_ci 1149e5c31af7Sopenharmony_ci * [[limits-blockmatch-maxWindowExtent]] pname:maxBlockMatchWindow is a 1150e5c31af7Sopenharmony_ci slink:VkExtent2D describing the largest dimensions (pname:width and 1151e5c31af7Sopenharmony_ci pname:height) that can: be specified for the block match window. 1152e5c31af7Sopenharmony_ci 1153e5c31af7Sopenharmony_ci:refpage: VkPhysicalDeviceImageProcessing2PropertiesQCOM 1154e5c31af7Sopenharmony_ciinclude::{chapters}/limits.adoc[tag=limits_desc] 1155e5c31af7Sopenharmony_ci 1156e5c31af7Sopenharmony_ciThese are properties of the image processing2 information of a physical 1157e5c31af7Sopenharmony_cidevice. 1158e5c31af7Sopenharmony_ci 1159e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPhysicalDeviceImageProcessing2PropertiesQCOM.adoc[] 1160e5c31af7Sopenharmony_ci-- 1161e5c31af7Sopenharmony_ciendif::VK_QCOM_image_processing2[] 1162e5c31af7Sopenharmony_ci 1163e5c31af7Sopenharmony_ciifdef::VK_MSFT_layered_driver[] 1164e5c31af7Sopenharmony_ci[open,refpage='VkPhysicalDeviceLayeredDriverPropertiesMSFT',desc='Structure containing information about driver layering for a physical device',type='structs'] 1165e5c31af7Sopenharmony_ci-- 1166e5c31af7Sopenharmony_ciThe sname:VkPhysicalDeviceLayeredDriverPropertiesMSFT structure is defined 1167e5c31af7Sopenharmony_cias: 1168e5c31af7Sopenharmony_ci 1169e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPhysicalDeviceLayeredDriverPropertiesMSFT.adoc[] 1170e5c31af7Sopenharmony_ci 1171e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 1172e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 1173e5c31af7Sopenharmony_ci structure. 1174e5c31af7Sopenharmony_ci * pname:underlyingAPI is a elink:VkLayeredDriverUnderlyingApiMSFT value 1175e5c31af7Sopenharmony_ci indicating which underlying API is used to implement the layered driver, 1176e5c31af7Sopenharmony_ci or ename:VK_LAYERED_DRIVER_UNDERLYING_API_NONE_MSFT if the driver is not 1177e5c31af7Sopenharmony_ci layered. 1178e5c31af7Sopenharmony_ci 1179e5c31af7Sopenharmony_ciThese are properties of the driver layering information of a physical 1180e5c31af7Sopenharmony_cidevice. 1181e5c31af7Sopenharmony_ci 1182e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPhysicalDeviceLayeredDriverPropertiesMSFT.adoc[] 1183e5c31af7Sopenharmony_ci-- 1184e5c31af7Sopenharmony_ci 1185e5c31af7Sopenharmony_ci[open,refpage='VkLayeredDriverUnderlyingApiMSFT',desc='Layered driver underlying APIs',type='enums'] 1186e5c31af7Sopenharmony_ci-- 1187e5c31af7Sopenharmony_ciUnderlying APIs which may: be returned in 1188e5c31af7Sopenharmony_cislink:VkPhysicalDeviceLayeredDriverPropertiesMSFT::pname:underlyingAPI are: 1189e5c31af7Sopenharmony_ci 1190e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkLayeredDriverUnderlyingApiMSFT.adoc[] 1191e5c31af7Sopenharmony_ci-- 1192e5c31af7Sopenharmony_ciendif::VK_MSFT_layered_driver[] 1193e5c31af7Sopenharmony_ci 1194e5c31af7Sopenharmony_ciifdef::VK_ARM_scheduling_controls[] 1195e5c31af7Sopenharmony_ci[open,refpage='VkPhysicalDeviceSchedulingControlsPropertiesARM',desc='Structure containing scheduling control properties of a physical device',type='structs'] 1196e5c31af7Sopenharmony_ci-- 1197e5c31af7Sopenharmony_ciThe sname:VkPhysicalDeviceSchedulingControlsPropertiesARM structure is 1198e5c31af7Sopenharmony_cidefined as: 1199e5c31af7Sopenharmony_ci 1200e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPhysicalDeviceSchedulingControlsPropertiesARM.adoc[] 1201e5c31af7Sopenharmony_ci 1202e5c31af7Sopenharmony_ci * [[limits-schedulingControlsFlags]]pname:schedulingControlsFlags 1203e5c31af7Sopenharmony_ci specifies the specific scheduling controls that a physical device 1204e5c31af7Sopenharmony_ci supports. 1205e5c31af7Sopenharmony_ci 1206e5c31af7Sopenharmony_ci:refpage: VkPhysicalDeviceSchedulingControlsPropertiesARM 1207e5c31af7Sopenharmony_ciinclude::{chapters}/limits.adoc[tag=limits_desc] 1208e5c31af7Sopenharmony_ci 1209e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPhysicalDeviceSchedulingControlsPropertiesARM.adoc[] 1210e5c31af7Sopenharmony_ci-- 1211e5c31af7Sopenharmony_ci 1212e5c31af7Sopenharmony_ci[open,refpage='VkPhysicalDeviceSchedulingControlsFlagBitsARM',desc='Bitmask specifying scheduling controls supported by a physical device',type='enums'] 1213e5c31af7Sopenharmony_ci-- 1214e5c31af7Sopenharmony_ciBits which can: be set in 1215e5c31af7Sopenharmony_cislink:VkPhysicalDeviceSchedulingControlsPropertiesARM::pname:schedulingControlsFlags, 1216e5c31af7Sopenharmony_cispecifying supported scheduling controls, are: 1217e5c31af7Sopenharmony_ci 1218e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkPhysicalDeviceSchedulingControlsFlagBitsARM.adoc[] 1219e5c31af7Sopenharmony_ci 1220e5c31af7Sopenharmony_ci * ename:VK_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM 1221e5c31af7Sopenharmony_ci indicates that a slink:VkDeviceQueueShaderCoreControlCreateInfoARM 1222e5c31af7Sopenharmony_ci structure may: be included in the pname:pNext chain of a 1223e5c31af7Sopenharmony_ci slink:VkDeviceQueueCreateInfo or slink:VkDeviceCreateInfo structure. 1224e5c31af7Sopenharmony_ci-- 1225e5c31af7Sopenharmony_ci 1226e5c31af7Sopenharmony_ci[open,refpage='VkPhysicalDeviceSchedulingControlsFlagsARM',desc='Bitmask of VkPhysicalDeviceSchedulingControlsFlagBitsARM',type='flags'] 1227e5c31af7Sopenharmony_ci-- 1228e5c31af7Sopenharmony_ciinclude::{generated}/api/flags/VkPhysicalDeviceSchedulingControlsFlagsARM.adoc[] 1229e5c31af7Sopenharmony_ci 1230e5c31af7Sopenharmony_citname:VkPhysicalDeviceSchedulingControlsFlagsARM is a bitmask type for 1231e5c31af7Sopenharmony_cisetting a mask of zero or more 1232e5c31af7Sopenharmony_cielink:VkPhysicalDeviceSchedulingControlsFlagBitsARM. 1233e5c31af7Sopenharmony_ci-- 1234e5c31af7Sopenharmony_ciendif::VK_ARM_scheduling_controls[] 1235e5c31af7Sopenharmony_ci 1236e5c31af7Sopenharmony_ci[open,refpage='vkGetPhysicalDeviceQueueFamilyProperties',desc='Reports properties of the queues of the specified physical device',type='protos'] 1237e5c31af7Sopenharmony_ci-- 1238e5c31af7Sopenharmony_ciTo query properties of queues available on a physical device, call: 1239e5c31af7Sopenharmony_ci 1240e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkGetPhysicalDeviceQueueFamilyProperties.adoc[] 1241e5c31af7Sopenharmony_ci 1242e5c31af7Sopenharmony_ci * pname:physicalDevice is the handle to the physical device whose 1243e5c31af7Sopenharmony_ci properties will be queried. 1244e5c31af7Sopenharmony_ci * pname:pQueueFamilyPropertyCount is a pointer to an integer related to 1245e5c31af7Sopenharmony_ci the number of queue families available or queried, as described below. 1246e5c31af7Sopenharmony_ci * pname:pQueueFamilyProperties is either `NULL` or a pointer to an array 1247e5c31af7Sopenharmony_ci of slink:VkQueueFamilyProperties structures. 1248e5c31af7Sopenharmony_ci 1249e5c31af7Sopenharmony_ciIf pname:pQueueFamilyProperties is `NULL`, then the number of queue families 1250e5c31af7Sopenharmony_ciavailable is returned in pname:pQueueFamilyPropertyCount. 1251e5c31af7Sopenharmony_ciImplementations must: support at least one queue family. 1252e5c31af7Sopenharmony_ciOtherwise, pname:pQueueFamilyPropertyCount must: point to a variable set by 1253e5c31af7Sopenharmony_cithe user to the number of elements in the pname:pQueueFamilyProperties 1254e5c31af7Sopenharmony_ciarray, and on return the variable is overwritten with the number of 1255e5c31af7Sopenharmony_cistructures actually written to pname:pQueueFamilyProperties. 1256e5c31af7Sopenharmony_ciIf pname:pQueueFamilyPropertyCount is less than the number of queue families 1257e5c31af7Sopenharmony_ciavailable, at most pname:pQueueFamilyPropertyCount structures will be 1258e5c31af7Sopenharmony_ciwritten. 1259e5c31af7Sopenharmony_ci 1260e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkGetPhysicalDeviceQueueFamilyProperties.adoc[] 1261e5c31af7Sopenharmony_ci-- 1262e5c31af7Sopenharmony_ci 1263e5c31af7Sopenharmony_ci[open,refpage='VkQueueFamilyProperties',desc='Structure providing information about a queue family',type='structs'] 1264e5c31af7Sopenharmony_ci-- 1265e5c31af7Sopenharmony_ciThe sname:VkQueueFamilyProperties structure is defined as: 1266e5c31af7Sopenharmony_ci 1267e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkQueueFamilyProperties.adoc[] 1268e5c31af7Sopenharmony_ci 1269e5c31af7Sopenharmony_ci * pname:queueFlags is a bitmask of elink:VkQueueFlagBits indicating 1270e5c31af7Sopenharmony_ci capabilities of the queues in this queue family. 1271e5c31af7Sopenharmony_ci * pname:queueCount is the unsigned integer count of queues in this queue 1272e5c31af7Sopenharmony_ci family. 1273e5c31af7Sopenharmony_ci Each queue family must: support at least one queue. 1274e5c31af7Sopenharmony_ci * pname:timestampValidBits is the unsigned integer count of meaningful 1275e5c31af7Sopenharmony_ci bits in the timestamps written via 1276e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_KHR_synchronization2[] 1277e5c31af7Sopenharmony_ci flink:vkCmdWriteTimestamp2 or 1278e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_KHR_synchronization2[] 1279e5c31af7Sopenharmony_ci flink:vkCmdWriteTimestamp. 1280e5c31af7Sopenharmony_ci The valid range for the count is 36 to 64 bits, or a value of 0, 1281e5c31af7Sopenharmony_ci indicating no support for timestamps. 1282e5c31af7Sopenharmony_ci Bits outside the valid range are guaranteed to be zeros. 1283e5c31af7Sopenharmony_ci * pname:minImageTransferGranularity is the minimum granularity supported 1284e5c31af7Sopenharmony_ci for image transfer operations on the queues in this queue family. 1285e5c31af7Sopenharmony_ci 1286e5c31af7Sopenharmony_ciThe value returned in pname:minImageTransferGranularity has a unit of 1287e5c31af7Sopenharmony_cicompressed texel blocks for images having a block-compressed format, and a 1288e5c31af7Sopenharmony_ciunit of texels otherwise. 1289e5c31af7Sopenharmony_ci 1290e5c31af7Sopenharmony_ciPossible values of pname:minImageTransferGranularity are: 1291e5c31af7Sopenharmony_ci 1292e5c31af7Sopenharmony_ci * [eq]#(0,0,0)# specifies that only whole mip levels must: be transferred 1293e5c31af7Sopenharmony_ci using the image transfer operations on the corresponding queues. 1294e5c31af7Sopenharmony_ci In this case, the following restrictions apply to all offset and extent 1295e5c31af7Sopenharmony_ci parameters of image transfer operations: 1296e5c31af7Sopenharmony_ci ** The pname:x, pname:y, and pname:z members of a slink:VkOffset3D 1297e5c31af7Sopenharmony_ci parameter must: always be zero. 1298e5c31af7Sopenharmony_ci ** The pname:width, pname:height, and pname:depth members of a 1299e5c31af7Sopenharmony_ci slink:VkExtent3D parameter must: always match the width, height, and 1300e5c31af7Sopenharmony_ci depth of the image subresource corresponding to the parameter, 1301e5c31af7Sopenharmony_ci respectively. 1302e5c31af7Sopenharmony_ci * [eq]#(A~x~, A~y~, A~z~)# where [eq]#A~x~#, [eq]#A~y~#, and [eq]#A~z~# 1303e5c31af7Sopenharmony_ci are all integer powers of two. 1304e5c31af7Sopenharmony_ci In this case the following restrictions apply to all image transfer 1305e5c31af7Sopenharmony_ci operations: 1306e5c31af7Sopenharmony_ci ** pname:x, pname:y, and pname:z of a slink:VkOffset3D parameter must: be 1307e5c31af7Sopenharmony_ci integer multiples of [eq]#A~x~#, [eq]#A~y~#, and [eq]#A~z~#, 1308e5c31af7Sopenharmony_ci respectively. 1309e5c31af7Sopenharmony_ci ** pname:width of a slink:VkExtent3D parameter must: be an integer 1310e5c31af7Sopenharmony_ci multiple of [eq]#A~x~#, or else [eq]#pname:x {plus} pname:width# must: 1311e5c31af7Sopenharmony_ci equal the width of the image subresource corresponding to the 1312e5c31af7Sopenharmony_ci parameter. 1313e5c31af7Sopenharmony_ci ** pname:height of a slink:VkExtent3D parameter must: be an integer 1314e5c31af7Sopenharmony_ci multiple of [eq]#A~y~#, or else [eq]#pname:y {plus} pname:height# must: 1315e5c31af7Sopenharmony_ci equal the height of the image subresource corresponding to the 1316e5c31af7Sopenharmony_ci parameter. 1317e5c31af7Sopenharmony_ci ** pname:depth of a slink:VkExtent3D parameter must: be an integer 1318e5c31af7Sopenharmony_ci multiple of [eq]#A~z~#, or else [eq]#pname:z {plus} pname:depth# must: 1319e5c31af7Sopenharmony_ci equal the depth of the image subresource corresponding to the 1320e5c31af7Sopenharmony_ci parameter. 1321e5c31af7Sopenharmony_ci ** If the format of the image corresponding to the parameters is one of 1322e5c31af7Sopenharmony_ci the block-compressed formats then for the purposes of the above 1323e5c31af7Sopenharmony_ci calculations the granularity must: be scaled up by the compressed texel 1324e5c31af7Sopenharmony_ci block dimensions. 1325e5c31af7Sopenharmony_ci 1326e5c31af7Sopenharmony_ciQueues supporting graphics and/or compute operations must: report 1327e5c31af7Sopenharmony_ci[eq]#(1,1,1)# in pname:minImageTransferGranularity, meaning that there are 1328e5c31af7Sopenharmony_cino additional restrictions on the granularity of image transfer operations 1329e5c31af7Sopenharmony_cifor these queues. 1330e5c31af7Sopenharmony_ciOther queues supporting image transfer operations are only required: to 1331e5c31af7Sopenharmony_cisupport whole mip level transfers, thus pname:minImageTransferGranularity 1332e5c31af7Sopenharmony_cifor queues belonging to such queue families may: be [eq]#(0,0,0)#. 1333e5c31af7Sopenharmony_ci 1334e5c31af7Sopenharmony_ciThe <<memory-device,Device Memory>> section describes memory properties 1335e5c31af7Sopenharmony_ciqueried from the physical device. 1336e5c31af7Sopenharmony_ci 1337e5c31af7Sopenharmony_ciFor physical device feature queries see the <<features, Features>> chapter. 1338e5c31af7Sopenharmony_ci 1339e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkQueueFamilyProperties.adoc[] 1340e5c31af7Sopenharmony_ci-- 1341e5c31af7Sopenharmony_ci 1342e5c31af7Sopenharmony_ci[open,refpage='VkQueueFlagBits',desc='Bitmask specifying capabilities of queues in a queue family',type='enums'] 1343e5c31af7Sopenharmony_ci-- 1344e5c31af7Sopenharmony_ciBits which may: be set in slink:VkQueueFamilyProperties::pname:queueFlags, 1345e5c31af7Sopenharmony_ciindicating capabilities of queues in a queue family are: 1346e5c31af7Sopenharmony_ci 1347e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkQueueFlagBits.adoc[] 1348e5c31af7Sopenharmony_ci 1349e5c31af7Sopenharmony_ci * ename:VK_QUEUE_GRAPHICS_BIT specifies that queues in this queue family 1350e5c31af7Sopenharmony_ci support graphics operations. 1351e5c31af7Sopenharmony_ci * ename:VK_QUEUE_COMPUTE_BIT specifies that queues in this queue family 1352e5c31af7Sopenharmony_ci support compute operations. 1353e5c31af7Sopenharmony_ci * ename:VK_QUEUE_TRANSFER_BIT specifies that queues in this queue family 1354e5c31af7Sopenharmony_ci support transfer operations. 1355e5c31af7Sopenharmony_ci * ename:VK_QUEUE_SPARSE_BINDING_BIT specifies that queues in this queue 1356e5c31af7Sopenharmony_ci family support sparse memory management operations (see 1357e5c31af7Sopenharmony_ci <<sparsememory,Sparse Resources>>). 1358e5c31af7Sopenharmony_ci If any of the sparse resource features are enabled, then at least one 1359e5c31af7Sopenharmony_ci queue family must: support this bit. 1360e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 1361e5c31af7Sopenharmony_ci This flag is not supported in Vulkan SC <<SCID-8>>. 1362e5c31af7Sopenharmony_ciifdef::hidden[] 1363e5c31af7Sopenharmony_ci// tag::scremoved[] 1364e5c31af7Sopenharmony_ci * elink:VkQueueFlagBits 1365e5c31af7Sopenharmony_ci ** ename:VK_QUEUE_SPARSE_BINDING_BIT <<SCID-8>> 1366e5c31af7Sopenharmony_ci// end::scremoved[] 1367e5c31af7Sopenharmony_ciendif::hidden[] 1368e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 1369e5c31af7Sopenharmony_ciifdef::VK_KHR_video_decode_queue[] 1370e5c31af7Sopenharmony_ci * ename:VK_QUEUE_VIDEO_DECODE_BIT_KHR specifies that queues in this queue 1371e5c31af7Sopenharmony_ci family support <<video-decode-operations,video decode operations>>. 1372e5c31af7Sopenharmony_ciendif::VK_KHR_video_decode_queue[] 1373e5c31af7Sopenharmony_ciifdef::VK_KHR_video_encode_queue[] 1374e5c31af7Sopenharmony_ci * ename:VK_QUEUE_VIDEO_ENCODE_BIT_KHR specifies that queues in this queue 1375e5c31af7Sopenharmony_ci family support <<video-encode-operations,video encode operations>>. 1376e5c31af7Sopenharmony_ciendif::VK_KHR_video_encode_queue[] 1377e5c31af7Sopenharmony_ciifdef::VK_NV_optical_flow[] 1378e5c31af7Sopenharmony_ci * ename:VK_QUEUE_OPTICAL_FLOW_BIT_NV specifies that queues in this queue 1379e5c31af7Sopenharmony_ci family support optical flow operations. 1380e5c31af7Sopenharmony_ciendif::VK_NV_optical_flow[] 1381e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1[] 1382e5c31af7Sopenharmony_ci * ename:VK_QUEUE_PROTECTED_BIT specifies that queues in this queue family 1383e5c31af7Sopenharmony_ci support the ename:VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT bit. 1384e5c31af7Sopenharmony_ci (see <<memory-protected-memory,Protected Memory>>). 1385e5c31af7Sopenharmony_ci If the physical device supports the <<features-protectedMemory, 1386e5c31af7Sopenharmony_ci pname:protectedMemory>> feature, at least one of its queue families 1387e5c31af7Sopenharmony_ci must: support this bit. 1388e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1[] 1389e5c31af7Sopenharmony_ci 1390e5c31af7Sopenharmony_ciIf an implementation exposes any queue family that supports graphics 1391e5c31af7Sopenharmony_cioperations, at least one queue family of at least one physical device 1392e5c31af7Sopenharmony_ciexposed by the implementation must: support both graphics and compute 1393e5c31af7Sopenharmony_cioperations. 1394e5c31af7Sopenharmony_ci 1395e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1[] 1396e5c31af7Sopenharmony_ciFurthermore, if the <<features-protectedMemory, pname:protectedMemory>> 1397e5c31af7Sopenharmony_ciphysical device feature is supported, then at least one queue family of at 1398e5c31af7Sopenharmony_cileast one physical device exposed by the implementation must: support 1399e5c31af7Sopenharmony_cigraphics operations, compute operations, and protected memory operations. 1400e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1[] 1401e5c31af7Sopenharmony_ci 1402e5c31af7Sopenharmony_ci[NOTE] 1403e5c31af7Sopenharmony_ci.Note 1404e5c31af7Sopenharmony_ci==== 1405e5c31af7Sopenharmony_ciAll commands that are allowed on a queue that supports transfer operations 1406e5c31af7Sopenharmony_ciare also allowed on a queue that supports either graphics or compute 1407e5c31af7Sopenharmony_cioperations. 1408e5c31af7Sopenharmony_ciThus, if the capabilities of a queue family include 1409e5c31af7Sopenharmony_ciename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT, then reporting 1410e5c31af7Sopenharmony_cithe ename:VK_QUEUE_TRANSFER_BIT capability separately for that queue family 1411e5c31af7Sopenharmony_ciis optional:. 1412e5c31af7Sopenharmony_ci==== 1413e5c31af7Sopenharmony_ci 1414e5c31af7Sopenharmony_ciFor further details see <<devsandqueues-queues,Queues>>. 1415e5c31af7Sopenharmony_ci-- 1416e5c31af7Sopenharmony_ci 1417e5c31af7Sopenharmony_ci[open,refpage='VkQueueFlags',desc='Bitmask of VkQueueFlagBits',type='flags'] 1418e5c31af7Sopenharmony_ci-- 1419e5c31af7Sopenharmony_ciinclude::{generated}/api/flags/VkQueueFlags.adoc[] 1420e5c31af7Sopenharmony_ci 1421e5c31af7Sopenharmony_citname:VkQueueFlags is a bitmask type for setting a mask of zero or more 1422e5c31af7Sopenharmony_cielink:VkQueueFlagBits. 1423e5c31af7Sopenharmony_ci-- 1424e5c31af7Sopenharmony_ci 1425e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] 1426e5c31af7Sopenharmony_ci[open,refpage='vkGetPhysicalDeviceQueueFamilyProperties2',desc='Reports properties of the queues of the specified physical device',type='protos'] 1427e5c31af7Sopenharmony_ci-- 1428e5c31af7Sopenharmony_ciTo query properties of queues available on a physical device, call: 1429e5c31af7Sopenharmony_ci 1430e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1[] 1431e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkGetPhysicalDeviceQueueFamilyProperties2.adoc[] 1432e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1[] 1433e5c31af7Sopenharmony_ci 1434e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1+VK_KHR_get_physical_device_properties2[or the equivalent command] 1435e5c31af7Sopenharmony_ci 1436e5c31af7Sopenharmony_ciifdef::VK_KHR_get_physical_device_properties2[] 1437e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkGetPhysicalDeviceQueueFamilyProperties2KHR.adoc[] 1438e5c31af7Sopenharmony_ciendif::VK_KHR_get_physical_device_properties2[] 1439e5c31af7Sopenharmony_ci 1440e5c31af7Sopenharmony_ci * pname:physicalDevice is the handle to the physical device whose 1441e5c31af7Sopenharmony_ci properties will be queried. 1442e5c31af7Sopenharmony_ci * pname:pQueueFamilyPropertyCount is a pointer to an integer related to 1443e5c31af7Sopenharmony_ci the number of queue families available or queried, as described in 1444e5c31af7Sopenharmony_ci flink:vkGetPhysicalDeviceQueueFamilyProperties. 1445e5c31af7Sopenharmony_ci * pname:pQueueFamilyProperties is either `NULL` or a pointer to an array 1446e5c31af7Sopenharmony_ci of slink:VkQueueFamilyProperties2 structures. 1447e5c31af7Sopenharmony_ci 1448e5c31af7Sopenharmony_cifname:vkGetPhysicalDeviceQueueFamilyProperties2 behaves similarly to 1449e5c31af7Sopenharmony_ciflink:vkGetPhysicalDeviceQueueFamilyProperties, with the ability to return 1450e5c31af7Sopenharmony_ciextended information in a pname:pNext chain of output structures. 1451e5c31af7Sopenharmony_ci 1452e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkGetPhysicalDeviceQueueFamilyProperties2.adoc[] 1453e5c31af7Sopenharmony_ci-- 1454e5c31af7Sopenharmony_ci 1455e5c31af7Sopenharmony_ci[open,refpage='VkQueueFamilyProperties2',desc='Structure providing information about a queue family',type='structs'] 1456e5c31af7Sopenharmony_ci-- 1457e5c31af7Sopenharmony_ciThe sname:VkQueueFamilyProperties2 structure is defined as: 1458e5c31af7Sopenharmony_ci 1459e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkQueueFamilyProperties2.adoc[] 1460e5c31af7Sopenharmony_ci 1461e5c31af7Sopenharmony_ciifdef::VK_KHR_get_physical_device_properties2[] 1462e5c31af7Sopenharmony_cior the equivalent 1463e5c31af7Sopenharmony_ci 1464e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkQueueFamilyProperties2KHR.adoc[] 1465e5c31af7Sopenharmony_ciendif::VK_KHR_get_physical_device_properties2[] 1466e5c31af7Sopenharmony_ci 1467e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 1468e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 1469e5c31af7Sopenharmony_ci structure. 1470e5c31af7Sopenharmony_ci * pname:queueFamilyProperties is a slink:VkQueueFamilyProperties structure 1471e5c31af7Sopenharmony_ci which is populated with the same values as in 1472e5c31af7Sopenharmony_ci flink:vkGetPhysicalDeviceQueueFamilyProperties. 1473e5c31af7Sopenharmony_ci 1474e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkQueueFamilyProperties2.adoc[] 1475e5c31af7Sopenharmony_ci-- 1476e5c31af7Sopenharmony_ci 1477e5c31af7Sopenharmony_ciifdef::VK_EXT_global_priority_query,VK_KHR_global_priority[] 1478e5c31af7Sopenharmony_ci[open,refpage='VkQueueFamilyGlobalPriorityPropertiesKHR',desc='Return structure for queue family global priority information query',type='structs'] 1479e5c31af7Sopenharmony_ci-- 1480e5c31af7Sopenharmony_ciThe definition of slink:VkQueueFamilyGlobalPriorityPropertiesKHR is: 1481e5c31af7Sopenharmony_ci 1482e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkQueueFamilyGlobalPriorityPropertiesKHR.adoc[] 1483e5c31af7Sopenharmony_ciifdef::VK_EXT_global_priority_query[] 1484e5c31af7Sopenharmony_cior the equivalent 1485e5c31af7Sopenharmony_ci 1486e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkQueueFamilyGlobalPriorityPropertiesEXT.adoc[] 1487e5c31af7Sopenharmony_ciendif::VK_EXT_global_priority_query[] 1488e5c31af7Sopenharmony_ci 1489e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 1490e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 1491e5c31af7Sopenharmony_ci structure. 1492e5c31af7Sopenharmony_ci * pname:priorityCount is the number of supported global queue priorities 1493e5c31af7Sopenharmony_ci in this queue family, and it must: be greater than 0. 1494e5c31af7Sopenharmony_ci * pname:priorities is an array of ename:VK_MAX_GLOBAL_PRIORITY_SIZE_EXT 1495e5c31af7Sopenharmony_ci elink:VkQueueGlobalPriorityEXT enums representing all supported global 1496e5c31af7Sopenharmony_ci queue priorities in this queue family. 1497e5c31af7Sopenharmony_ci The first pname:priorityCount elements of the array will be valid. 1498e5c31af7Sopenharmony_ci 1499e5c31af7Sopenharmony_ciIf the sname:VkQueueFamilyGlobalPriorityPropertiesKHR structure is included 1500e5c31af7Sopenharmony_ciin the pname:pNext chain of the slink:VkQueueFamilyProperties2 structure 1501e5c31af7Sopenharmony_cipassed to flink:vkGetPhysicalDeviceQueueFamilyProperties2, it is filled in 1502e5c31af7Sopenharmony_ciwith the list of supported global queue priorities for the indicated family. 1503e5c31af7Sopenharmony_ci 1504e5c31af7Sopenharmony_ciThe valid elements of pname:priorities must: not contain any duplicate 1505e5c31af7Sopenharmony_civalues. 1506e5c31af7Sopenharmony_ci 1507e5c31af7Sopenharmony_ciThe valid elements of pname:priorities must: be a continuous sequence of 1508e5c31af7Sopenharmony_cielink:VkQueueGlobalPriorityKHR enums in the ascending order. 1509e5c31af7Sopenharmony_ci 1510e5c31af7Sopenharmony_ci[NOTE] 1511e5c31af7Sopenharmony_ci.Note 1512e5c31af7Sopenharmony_ci==== 1513e5c31af7Sopenharmony_ciFor example, returning pname:priorityCount as 3 with supported 1514e5c31af7Sopenharmony_cipname:priorities as ename:VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR, 1515e5c31af7Sopenharmony_ciename:VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR and 1516e5c31af7Sopenharmony_ciename:VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR is not allowed. 1517e5c31af7Sopenharmony_ci==== 1518e5c31af7Sopenharmony_ci 1519e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkQueueFamilyGlobalPriorityPropertiesKHR.adoc[] 1520e5c31af7Sopenharmony_ci-- 1521e5c31af7Sopenharmony_ci 1522e5c31af7Sopenharmony_ci[open,refpage='VK_MAX_GLOBAL_PRIORITY_SIZE_KHR',desc='Length of an array of global queue priorities',type='consts'] 1523e5c31af7Sopenharmony_ci-- 1524e5c31af7Sopenharmony_ciename:VK_MAX_GLOBAL_PRIORITY_SIZE_KHR is the length of an array of 1525e5c31af7Sopenharmony_cielink:VkQueueGlobalPriorityKHR enumerants representing supported queue 1526e5c31af7Sopenharmony_cipriorities, as returned in 1527e5c31af7Sopenharmony_cislink:VkQueueFamilyGlobalPriorityPropertiesKHR::pname:priorities. 1528e5c31af7Sopenharmony_ci 1529e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VK_MAX_GLOBAL_PRIORITY_SIZE_KHR.adoc[] 1530e5c31af7Sopenharmony_ci 1531e5c31af7Sopenharmony_ciifdef::VK_EXT_global_priority_query[] 1532e5c31af7Sopenharmony_cior the equivalent 1533e5c31af7Sopenharmony_ci 1534e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VK_MAX_GLOBAL_PRIORITY_SIZE_EXT.adoc[] 1535e5c31af7Sopenharmony_ciendif::VK_EXT_global_priority_query[] 1536e5c31af7Sopenharmony_ci-- 1537e5c31af7Sopenharmony_ciendif::VK_EXT_global_priority_query,VK_KHR_global_priority[] 1538e5c31af7Sopenharmony_ci 1539e5c31af7Sopenharmony_ciifdef::VK_NV_device_diagnostic_checkpoints[] 1540e5c31af7Sopenharmony_ciinclude::{chapters}/VK_NV_device_diagnostic_checkpoints/queue_checkpoint_properties.adoc[] 1541e5c31af7Sopenharmony_ciendif::VK_NV_device_diagnostic_checkpoints[] 1542e5c31af7Sopenharmony_ci 1543e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] 1544e5c31af7Sopenharmony_ci 1545e5c31af7Sopenharmony_ciifdef::VK_KHR_video_queue[] 1546e5c31af7Sopenharmony_ci[open,refpage='VkQueueFamilyVideoPropertiesKHR',desc='Structure describing video codec operations supported by a queue family',type='structs'] 1547e5c31af7Sopenharmony_ci-- 1548e5c31af7Sopenharmony_ciThe slink:VkQueueFamilyVideoPropertiesKHR structure is defined as: 1549e5c31af7Sopenharmony_ci 1550e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkQueueFamilyVideoPropertiesKHR.adoc[] 1551e5c31af7Sopenharmony_ci 1552e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 1553e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 1554e5c31af7Sopenharmony_ci structure. 1555e5c31af7Sopenharmony_ci * pname:videoCodecOperations is a bitmask of 1556e5c31af7Sopenharmony_ci elink:VkVideoCodecOperationFlagBitsKHR that indicates the set of video 1557e5c31af7Sopenharmony_ci codec operations supported by the queue family. 1558e5c31af7Sopenharmony_ci 1559e5c31af7Sopenharmony_ciIf this structure is included in the pname:pNext chain of the 1560e5c31af7Sopenharmony_cislink:VkQueueFamilyProperties2 structure passed to 1561e5c31af7Sopenharmony_ciflink:vkGetPhysicalDeviceQueueFamilyProperties2, then it is filled with the 1562e5c31af7Sopenharmony_ciset of video codec operations supported by the specified queue family. 1563e5c31af7Sopenharmony_ci 1564e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkQueueFamilyVideoPropertiesKHR.adoc[] 1565e5c31af7Sopenharmony_ci-- 1566e5c31af7Sopenharmony_ci 1567e5c31af7Sopenharmony_ci[open,refpage='VkQueueFamilyQueryResultStatusPropertiesKHR',desc='Structure specifying support for result status query',type='structs'] 1568e5c31af7Sopenharmony_ci-- 1569e5c31af7Sopenharmony_ciThe slink:VkQueueFamilyQueryResultStatusPropertiesKHR structure is defined 1570e5c31af7Sopenharmony_cias: 1571e5c31af7Sopenharmony_ci 1572e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkQueueFamilyQueryResultStatusPropertiesKHR.adoc[] 1573e5c31af7Sopenharmony_ci 1574e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 1575e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 1576e5c31af7Sopenharmony_ci structure. 1577e5c31af7Sopenharmony_ci * pname:queryResultStatusSupport reports ename:VK_TRUE if query type 1578e5c31af7Sopenharmony_ci ename:VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR and use of 1579e5c31af7Sopenharmony_ci ename:VK_QUERY_RESULT_WITH_STATUS_BIT_KHR are supported. 1580e5c31af7Sopenharmony_ci 1581e5c31af7Sopenharmony_ciIf this structure is included in the pname:pNext chain of the 1582e5c31af7Sopenharmony_cislink:VkQueueFamilyProperties2 structure passed to 1583e5c31af7Sopenharmony_ciflink:vkGetPhysicalDeviceQueueFamilyProperties2, then it is filled with 1584e5c31af7Sopenharmony_ciinformation about whether <<queries-result-status-only,result status 1585e5c31af7Sopenharmony_ciqueries>> are supported by the specified queue family. 1586e5c31af7Sopenharmony_ci 1587e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkQueueFamilyQueryResultStatusPropertiesKHR.adoc[] 1588e5c31af7Sopenharmony_ci-- 1589e5c31af7Sopenharmony_ciendif::VK_KHR_video_queue[] 1590e5c31af7Sopenharmony_ci 1591e5c31af7Sopenharmony_ciifdef::VK_KHR_performance_query[] 1592e5c31af7Sopenharmony_ciinclude::{chapters}/VK_KHR_performance_query/queuefamily.adoc[] 1593e5c31af7Sopenharmony_ciendif::VK_KHR_performance_query[] 1594e5c31af7Sopenharmony_ci 1595e5c31af7Sopenharmony_ci 1596e5c31af7Sopenharmony_ci[[devsandqueues-devices]] 1597e5c31af7Sopenharmony_ci== Devices 1598e5c31af7Sopenharmony_ci 1599e5c31af7Sopenharmony_ciDevice objects represent logical connections to physical devices. 1600e5c31af7Sopenharmony_ciEach device exposes a number of _queue families_ each having one or more 1601e5c31af7Sopenharmony_ci_queues_. 1602e5c31af7Sopenharmony_ciAll queues in a queue family support the same operations. 1603e5c31af7Sopenharmony_ci 1604e5c31af7Sopenharmony_ciAs described in <<devsandqueues-physical-device-enumeration,Physical 1605e5c31af7Sopenharmony_ciDevices>>, a Vulkan application will first query for all physical devices in 1606e5c31af7Sopenharmony_cia system. 1607e5c31af7Sopenharmony_ciEach physical device can: then be queried for its capabilities, including 1608e5c31af7Sopenharmony_ciits queue and queue family properties. 1609e5c31af7Sopenharmony_ciOnce an acceptable physical device is identified, an application will create 1610e5c31af7Sopenharmony_cia corresponding logical device. 1611e5c31af7Sopenharmony_ciThe created logical device is then the primary interface to the physical 1612e5c31af7Sopenharmony_cidevice. 1613e5c31af7Sopenharmony_ci 1614e5c31af7Sopenharmony_ciHow to enumerate the physical devices in a system and query those physical 1615e5c31af7Sopenharmony_cidevices for their queue family properties is described in the 1616e5c31af7Sopenharmony_ci<<devsandqueues-physical-device-enumeration, Physical Device Enumeration>> 1617e5c31af7Sopenharmony_cisection above. 1618e5c31af7Sopenharmony_ci 1619e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1,VK_KHR_device_group_creation[] 1620e5c31af7Sopenharmony_ci 1621e5c31af7Sopenharmony_ciA single logical device can: be created from multiple physical devices, if 1622e5c31af7Sopenharmony_cithose physical devices belong to the same device group. 1623e5c31af7Sopenharmony_ciA _device group_ is a set of physical devices that support accessing each 1624e5c31af7Sopenharmony_ciother's memory and recording a single command buffer that can: be executed 1625e5c31af7Sopenharmony_cion all the physical devices. 1626e5c31af7Sopenharmony_ciDevice groups are enumerated by calling 1627e5c31af7Sopenharmony_ciflink:vkEnumeratePhysicalDeviceGroups, and a logical device is created from 1628e5c31af7Sopenharmony_cia subset of the physical devices in a device group by passing the physical 1629e5c31af7Sopenharmony_cidevices through slink:VkDeviceGroupDeviceCreateInfo. 1630e5c31af7Sopenharmony_ciFor two physical devices to be in the same device group, they must: support 1631e5c31af7Sopenharmony_ciidentical extensions, features, and properties. 1632e5c31af7Sopenharmony_ci 1633e5c31af7Sopenharmony_ci[NOTE] 1634e5c31af7Sopenharmony_ci.Note 1635e5c31af7Sopenharmony_ci==== 1636e5c31af7Sopenharmony_ciPhysical devices in the same device group must: be so similar because there 1637e5c31af7Sopenharmony_ciare no rules for how different features/properties would interact. 1638e5c31af7Sopenharmony_ciThey must: return the same values for nearly every invariant 1639e5c31af7Sopenharmony_ciftext:vkGetPhysicalDevice* feature, property, capability, etc., but could 1640e5c31af7Sopenharmony_cipotentially differ for certain queries based on things like having a 1641e5c31af7Sopenharmony_cidifferent display connected, or a different compositor. 1642e5c31af7Sopenharmony_ciThe specification does not attempt to enumerate which state is in each 1643e5c31af7Sopenharmony_cicategory, because such a list would quickly become out of date. 1644e5c31af7Sopenharmony_ci==== 1645e5c31af7Sopenharmony_ci 1646e5c31af7Sopenharmony_ci[open,refpage='vkEnumeratePhysicalDeviceGroups',desc='Enumerates groups of physical devices that can be used to create a single logical device',type='protos'] 1647e5c31af7Sopenharmony_ci-- 1648e5c31af7Sopenharmony_ciTo retrieve a list of the device groups present in the system, call: 1649e5c31af7Sopenharmony_ci 1650e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1[] 1651e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkEnumeratePhysicalDeviceGroups.adoc[] 1652e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1[] 1653e5c31af7Sopenharmony_ci 1654e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1+VK_KHR_device_group_creation[or the equivalent command] 1655e5c31af7Sopenharmony_ci 1656e5c31af7Sopenharmony_ciifdef::VK_KHR_device_group_creation[] 1657e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkEnumeratePhysicalDeviceGroupsKHR.adoc[] 1658e5c31af7Sopenharmony_ciendif::VK_KHR_device_group_creation[] 1659e5c31af7Sopenharmony_ci 1660e5c31af7Sopenharmony_ci * pname:instance is a handle to a Vulkan instance previously created with 1661e5c31af7Sopenharmony_ci flink:vkCreateInstance. 1662e5c31af7Sopenharmony_ci * pname:pPhysicalDeviceGroupCount is a pointer to an integer related to 1663e5c31af7Sopenharmony_ci the number of device groups available or queried, as described below. 1664e5c31af7Sopenharmony_ci * pname:pPhysicalDeviceGroupProperties is either `NULL` or a pointer to an 1665e5c31af7Sopenharmony_ci array of slink:VkPhysicalDeviceGroupProperties structures. 1666e5c31af7Sopenharmony_ci 1667e5c31af7Sopenharmony_ciIf pname:pPhysicalDeviceGroupProperties is `NULL`, then the number of device 1668e5c31af7Sopenharmony_cigroups available is returned in pname:pPhysicalDeviceGroupCount. 1669e5c31af7Sopenharmony_ciOtherwise, pname:pPhysicalDeviceGroupCount must: point to a variable set by 1670e5c31af7Sopenharmony_cithe user to the number of elements in the 1671e5c31af7Sopenharmony_cipname:pPhysicalDeviceGroupProperties array, and on return the variable is 1672e5c31af7Sopenharmony_cioverwritten with the number of structures actually written to 1673e5c31af7Sopenharmony_cipname:pPhysicalDeviceGroupProperties. 1674e5c31af7Sopenharmony_ciIf pname:pPhysicalDeviceGroupCount is less than the number of device groups 1675e5c31af7Sopenharmony_ciavailable, at most pname:pPhysicalDeviceGroupCount structures will be 1676e5c31af7Sopenharmony_ciwritten, and ename:VK_INCOMPLETE will be returned instead of 1677e5c31af7Sopenharmony_ciename:VK_SUCCESS, to indicate that not all the available device groups were 1678e5c31af7Sopenharmony_cireturned. 1679e5c31af7Sopenharmony_ci 1680e5c31af7Sopenharmony_ciEvery physical device must: be in exactly one device group. 1681e5c31af7Sopenharmony_ci 1682e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkEnumeratePhysicalDeviceGroups.adoc[] 1683e5c31af7Sopenharmony_ci-- 1684e5c31af7Sopenharmony_ci 1685e5c31af7Sopenharmony_ci[open,refpage='VkPhysicalDeviceGroupProperties',desc='Structure specifying physical device group properties',type='structs'] 1686e5c31af7Sopenharmony_ci-- 1687e5c31af7Sopenharmony_ciThe sname:VkPhysicalDeviceGroupProperties structure is defined as: 1688e5c31af7Sopenharmony_ci 1689e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPhysicalDeviceGroupProperties.adoc[] 1690e5c31af7Sopenharmony_ci 1691e5c31af7Sopenharmony_ciifdef::VK_KHR_device_group_creation[] 1692e5c31af7Sopenharmony_cior the equivalent 1693e5c31af7Sopenharmony_ci 1694e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPhysicalDeviceGroupPropertiesKHR.adoc[] 1695e5c31af7Sopenharmony_ciendif::VK_KHR_device_group_creation[] 1696e5c31af7Sopenharmony_ci 1697e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 1698e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 1699e5c31af7Sopenharmony_ci structure. 1700e5c31af7Sopenharmony_ci * pname:physicalDeviceCount is the number of physical devices in the 1701e5c31af7Sopenharmony_ci group. 1702e5c31af7Sopenharmony_ci * pname:physicalDevices is an array of ename:VK_MAX_DEVICE_GROUP_SIZE 1703e5c31af7Sopenharmony_ci slink:VkPhysicalDevice handles representing all physical devices in the 1704e5c31af7Sopenharmony_ci group. 1705e5c31af7Sopenharmony_ci The first pname:physicalDeviceCount elements of the array will be valid. 1706e5c31af7Sopenharmony_ci * pname:subsetAllocation specifies whether logical devices created from 1707e5c31af7Sopenharmony_ci the group support allocating device memory on a subset of devices, via 1708e5c31af7Sopenharmony_ci the pname:deviceMask member of the slink:VkMemoryAllocateFlagsInfo. 1709e5c31af7Sopenharmony_ci If this is ename:VK_FALSE, then all device memory allocations are made 1710e5c31af7Sopenharmony_ci across all physical devices in the group. 1711e5c31af7Sopenharmony_ci If pname:physicalDeviceCount is `1`, then pname:subsetAllocation must: 1712e5c31af7Sopenharmony_ci be ename:VK_FALSE. 1713e5c31af7Sopenharmony_ci 1714e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPhysicalDeviceGroupProperties.adoc[] 1715e5c31af7Sopenharmony_ci-- 1716e5c31af7Sopenharmony_ci 1717e5c31af7Sopenharmony_ci[open,refpage='VK_MAX_DEVICE_GROUP_SIZE',desc='Length of a physical device handle array',type='consts',alias='VK_MAX_DEVICE_GROUP_SIZE_KHR'] 1718e5c31af7Sopenharmony_ci-- 1719e5c31af7Sopenharmony_ciename:VK_MAX_DEVICE_GROUP_SIZE is the length of an array containing 1720e5c31af7Sopenharmony_cislink:VkPhysicalDevice handle values representing all physical devices in a 1721e5c31af7Sopenharmony_cigroup, as returned in 1722e5c31af7Sopenharmony_cislink:VkPhysicalDeviceGroupProperties::pname:physicalDevices. 1723e5c31af7Sopenharmony_ci 1724e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VK_MAX_DEVICE_GROUP_SIZE.adoc[] 1725e5c31af7Sopenharmony_ci 1726e5c31af7Sopenharmony_ciifdef::VK_KHR_device_group_creation[] 1727e5c31af7Sopenharmony_cior the equivalent 1728e5c31af7Sopenharmony_ci 1729e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VK_MAX_DEVICE_GROUP_SIZE_KHR.adoc[] 1730e5c31af7Sopenharmony_ciendif::VK_KHR_device_group_creation[] 1731e5c31af7Sopenharmony_ci-- 1732e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1,VK_KHR_device_group_creation[] 1733e5c31af7Sopenharmony_ci 1734e5c31af7Sopenharmony_ci 1735e5c31af7Sopenharmony_ci[[devsandqueues-device-creation]] 1736e5c31af7Sopenharmony_ci=== Device Creation 1737e5c31af7Sopenharmony_ci 1738e5c31af7Sopenharmony_ci[open,refpage='VkDevice',desc='Opaque handle to a device object',type='handles'] 1739e5c31af7Sopenharmony_ci-- 1740e5c31af7Sopenharmony_ciLogical devices are represented by sname:VkDevice handles: 1741e5c31af7Sopenharmony_ci 1742e5c31af7Sopenharmony_ciinclude::{generated}/api/handles/VkDevice.adoc[] 1743e5c31af7Sopenharmony_ci-- 1744e5c31af7Sopenharmony_ci 1745e5c31af7Sopenharmony_ci[open,refpage='vkCreateDevice',desc='Create a new device instance',type='protos'] 1746e5c31af7Sopenharmony_ci-- 1747e5c31af7Sopenharmony_ciA logical device is created as a _connection_ to a physical device. 1748e5c31af7Sopenharmony_ciTo create a logical device, call: 1749e5c31af7Sopenharmony_ci 1750e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkCreateDevice.adoc[] 1751e5c31af7Sopenharmony_ci 1752e5c31af7Sopenharmony_ci * pname:physicalDevice must: be one of the device handles returned from a 1753e5c31af7Sopenharmony_ci call to fname:vkEnumeratePhysicalDevices (see 1754e5c31af7Sopenharmony_ci <<devsandqueues-physical-device-enumeration, Physical Device 1755e5c31af7Sopenharmony_ci Enumeration>>). 1756e5c31af7Sopenharmony_ci * pname:pCreateInfo is a pointer to a slink:VkDeviceCreateInfo structure 1757e5c31af7Sopenharmony_ci containing information about how to create the device. 1758e5c31af7Sopenharmony_ci * pname:pAllocator controls host memory allocation as described in the 1759e5c31af7Sopenharmony_ci <<memory-allocation, Memory Allocation>> chapter. 1760e5c31af7Sopenharmony_ci * pname:pDevice is a pointer to a handle in which the created 1761e5c31af7Sopenharmony_ci slink:VkDevice is returned. 1762e5c31af7Sopenharmony_ci 1763e5c31af7Sopenharmony_cifname:vkCreateDevice verifies that extensions and features requested in the 1764e5c31af7Sopenharmony_cipname:ppEnabledExtensionNames and pname:pEnabledFeatures members of 1765e5c31af7Sopenharmony_cipname:pCreateInfo, respectively, are supported by the implementation. 1766e5c31af7Sopenharmony_ciIf any requested extension is not supported, fname:vkCreateDevice must: 1767e5c31af7Sopenharmony_cireturn ename:VK_ERROR_EXTENSION_NOT_PRESENT. 1768e5c31af7Sopenharmony_ciIf any requested feature is not supported, fname:vkCreateDevice must: return 1769e5c31af7Sopenharmony_ciename:VK_ERROR_FEATURE_NOT_PRESENT. 1770e5c31af7Sopenharmony_ciSupport for extensions can: be checked before creating a device by querying 1771e5c31af7Sopenharmony_ciflink:vkEnumerateDeviceExtensionProperties. 1772e5c31af7Sopenharmony_ciSupport for features can: similarly be checked by querying 1773e5c31af7Sopenharmony_ciflink:vkGetPhysicalDeviceFeatures. 1774e5c31af7Sopenharmony_ci 1775e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 1776e5c31af7Sopenharmony_cifname:vkCreateDevice also verifies that mandatory structures and features 1777e5c31af7Sopenharmony_cifor Vulkan SC are present and enabled: 1778e5c31af7Sopenharmony_ci 1779e5c31af7Sopenharmony_ci * The pname:pNext chain must: include a 1780e5c31af7Sopenharmony_ci slink:VkDeviceObjectReservationCreateInfo structure. 1781e5c31af7Sopenharmony_ci * The pname:pNext chain must: include a 1782e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceVulkanSC10Features structure. 1783e5c31af7Sopenharmony_ciifdef::hidden[] 1784e5c31af7Sopenharmony_ci// tag::scdeviation[] 1785e5c31af7Sopenharmony_ci * The slink:VkDeviceCreateInfo::pname:pNext chain must: include a 1786e5c31af7Sopenharmony_ci slink:VkDeviceObjectReservationCreateInfo structure <<SCID-4>>. 1787e5c31af7Sopenharmony_ci * The slink:VkDeviceCreateInfo::pname:pNext chain must: include a 1788e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceVulkanSC10Features structure <<SCID-1>>. 1789e5c31af7Sopenharmony_ci// end::scdeviation[] 1790e5c31af7Sopenharmony_ciendif::hidden[] 1791e5c31af7Sopenharmony_ci 1792e5c31af7Sopenharmony_ciIf any of these conditions are not met, fname:vkCreateDevice must: return 1793e5c31af7Sopenharmony_ciename:VK_ERROR_INITIALIZATION_FAILED. 1794e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 1795e5c31af7Sopenharmony_ci 1796e5c31af7Sopenharmony_ciAfter verifying and enabling the extensions the sname:VkDevice object is 1797e5c31af7Sopenharmony_cicreated and returned to the application. 1798e5c31af7Sopenharmony_ci 1799e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 1800e5c31af7Sopenharmony_ciMultiple logical devices can: be created from the same physical device. 1801e5c31af7Sopenharmony_ciLogical device creation may: fail due to lack of device-specific resources 1802e5c31af7Sopenharmony_ci(in addition to other errors). 1803e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 1804e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 1805e5c31af7Sopenharmony_ciAn implementation may: allow multiple logical devices to be created from the 1806e5c31af7Sopenharmony_cisame physical device. 1807e5c31af7Sopenharmony_ciLogical device creation may: fail due to lack of device-specific resources, 1808e5c31af7Sopenharmony_ciincluding too many other logical devices, in addition to other errors. 1809e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 1810e5c31af7Sopenharmony_ciIf that occurs, fname:vkCreateDevice will return 1811e5c31af7Sopenharmony_ciename:VK_ERROR_TOO_MANY_OBJECTS. 1812e5c31af7Sopenharmony_ci 1813e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 1814e5c31af7Sopenharmony_ciIf the pipeline cache data pointed to by the pname:pInitialData member of 1815e5c31af7Sopenharmony_ciany element of 1816e5c31af7Sopenharmony_cislink:VkDeviceObjectReservationCreateInfo::pname:pPipelineCacheCreateInfos 1817e5c31af7Sopenharmony_ciis not compatible with the device, then fname:vkCreateDevice will return 1818e5c31af7Sopenharmony_ciename:VK_ERROR_INVALID_PIPELINE_CACHE_DATA. 1819e5c31af7Sopenharmony_ciifdef::hidden[] 1820e5c31af7Sopenharmony_ci// tag::scdeviation[] 1821e5c31af7Sopenharmony_ci * flink:vkCreateDevice returns ename:VK_ERROR_INVALID_PIPELINE_CACHE_DATA 1822e5c31af7Sopenharmony_ci if the pname:pInitialData member of any element of 1823e5c31af7Sopenharmony_ci slink:VkDeviceObjectReservationCreateInfo::pname:pPipelineCacheCreateInfos 1824e5c31af7Sopenharmony_ci is a pointer to incompatible pipeline cache data <<SCID-1>>. 1825e5c31af7Sopenharmony_ci// end::scdeviation[] 1826e5c31af7Sopenharmony_ciendif::hidden[] 1827e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 1828e5c31af7Sopenharmony_ci 1829e5c31af7Sopenharmony_ciifdef::VK_EXT_application_parameters[] 1830e5c31af7Sopenharmony_ciTo provide _application parameters_ at device creation time, an application 1831e5c31af7Sopenharmony_cican: link one or more slink:VkApplicationParametersEXT structures to the 1832e5c31af7Sopenharmony_cipname:pNext chain of the sname:VkDeviceCreateInfo structure. 1833e5c31af7Sopenharmony_ci 1834e5c31af7Sopenharmony_ciIf the slink:VkApplicationParametersEXT::pname:vendorID and 1835e5c31af7Sopenharmony_cislink:VkApplicationParametersEXT::pname:deviceID values do not match the 1836e5c31af7Sopenharmony_cislink:VkPhysicalDeviceProperties::pname:vendorID and 1837e5c31af7Sopenharmony_cislink:VkPhysicalDeviceProperties::pname:deviceID of pname:physicalDevice, 1838e5c31af7Sopenharmony_ciflink:vkCreateDevice must: return ename:VK_ERROR_INITIALIZATION_FAILED. 1839e5c31af7Sopenharmony_ci 1840e5c31af7Sopenharmony_ciIf slink:VkApplicationParametersEXT::pname:key is not a valid 1841e5c31af7Sopenharmony_ciimplementation-defined application parameter key for the device being 1842e5c31af7Sopenharmony_cicreated, or if pname:value is not a valid value for the specified pname:key, 1843e5c31af7Sopenharmony_ciflink:vkCreateDevice will fail and return 1844e5c31af7Sopenharmony_ciename:VK_ERROR_INITIALIZATION_FAILED. 1845e5c31af7Sopenharmony_ci 1846e5c31af7Sopenharmony_ciFor any implementation-defined application parameter pname:key that exists 1847e5c31af7Sopenharmony_cibut is not set by the application, the implementation-specific default value 1848e5c31af7Sopenharmony_ciis used. 1849e5c31af7Sopenharmony_ciendif::VK_EXT_application_parameters[] 1850e5c31af7Sopenharmony_ci 1851e5c31af7Sopenharmony_ci.Valid Usage 1852e5c31af7Sopenharmony_ci**** 1853e5c31af7Sopenharmony_ci * [[VUID-vkCreateDevice-ppEnabledExtensionNames-01387]] 1854e5c31af7Sopenharmony_ci All <<extendingvulkan-extensions-extensiondependencies, required device 1855e5c31af7Sopenharmony_ci extensions>> for each extension in the 1856e5c31af7Sopenharmony_ci slink:VkDeviceCreateInfo::pname:ppEnabledExtensionNames list must: also 1857e5c31af7Sopenharmony_ci be present in that list 1858e5c31af7Sopenharmony_ciifdef::VK_EXT_application_parameters[] 1859e5c31af7Sopenharmony_ci * [[VUID-vkCreateDevice-key-05092]] 1860e5c31af7Sopenharmony_ci The pname:key value of each slink:VkApplicationParametersEXT structure 1861e5c31af7Sopenharmony_ci in the slink:VkDeviceCreateInfo::pname:pNext chain must: be unique 1862e5c31af7Sopenharmony_ciendif::VK_EXT_application_parameters[] 1863e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 1864e5c31af7Sopenharmony_ci * [[VUID-vkCreateDevice-deviceMemoryRequestCount-05095]] 1865e5c31af7Sopenharmony_ci The sum of pname:deviceMemoryRequestCount over all 1866e5c31af7Sopenharmony_ci sname:VkDeviceObjectReservationCreateInfo structures included in the 1867e5c31af7Sopenharmony_ci slink:VkDeviceCreateInfo::pname:pNext chain must: be less than or equal 1868e5c31af7Sopenharmony_ci to slink:VkPhysicalDeviceLimits::pname:maxMemoryAllocationCount 1869e5c31af7Sopenharmony_ci * [[VUID-vkCreateDevice-samplerRequestCount-05096]] 1870e5c31af7Sopenharmony_ci The sum of pname:samplerRequestCount over all 1871e5c31af7Sopenharmony_ci sname:VkDeviceObjectReservationCreateInfo structures included in the 1872e5c31af7Sopenharmony_ci slink:VkDeviceCreateInfo::pname:pNext chain must: be less than or equal 1873e5c31af7Sopenharmony_ci to slink:VkPhysicalDeviceLimits::pname:maxSamplerAllocationCount 1874e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 1875e5c31af7Sopenharmony_ci**** 1876e5c31af7Sopenharmony_ci 1877e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkCreateDevice.adoc[] 1878e5c31af7Sopenharmony_ci-- 1879e5c31af7Sopenharmony_ci 1880e5c31af7Sopenharmony_ci[open,refpage='VkDeviceCreateInfo',desc='Structure specifying parameters of a newly created device',type='structs'] 1881e5c31af7Sopenharmony_ci-- 1882e5c31af7Sopenharmony_ciThe sname:VkDeviceCreateInfo structure is defined as: 1883e5c31af7Sopenharmony_ci 1884e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkDeviceCreateInfo.adoc[] 1885e5c31af7Sopenharmony_ci 1886e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 1887e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 1888e5c31af7Sopenharmony_ci structure. 1889e5c31af7Sopenharmony_ci * pname:flags is reserved for future use. 1890e5c31af7Sopenharmony_ci * pname:queueCreateInfoCount is the unsigned integer size of the 1891e5c31af7Sopenharmony_ci pname:pQueueCreateInfos array. 1892e5c31af7Sopenharmony_ci Refer to the <<devsandqueues-queue-creation,Queue Creation>> section 1893e5c31af7Sopenharmony_ci below for further details. 1894e5c31af7Sopenharmony_ci * pname:pQueueCreateInfos is a pointer to an array of 1895e5c31af7Sopenharmony_ci slink:VkDeviceQueueCreateInfo structures describing the queues that are 1896e5c31af7Sopenharmony_ci requested to be created along with the logical device. 1897e5c31af7Sopenharmony_ci Refer to the <<devsandqueues-queue-creation,Queue Creation>> section 1898e5c31af7Sopenharmony_ci below for further details. 1899e5c31af7Sopenharmony_ci * pname:enabledLayerCount is deprecated and ignored. 1900e5c31af7Sopenharmony_ci * pname:ppEnabledLayerNames is deprecated and ignored. 1901e5c31af7Sopenharmony_ci See <<extendingvulkan-layers-devicelayerdeprecation>>. 1902e5c31af7Sopenharmony_ci * pname:enabledExtensionCount is the number of device extensions to 1903e5c31af7Sopenharmony_ci enable. 1904e5c31af7Sopenharmony_ci * pname:ppEnabledExtensionNames is a pointer to an array of 1905e5c31af7Sopenharmony_ci pname:enabledExtensionCount null-terminated UTF-8 strings containing the 1906e5c31af7Sopenharmony_ci names of extensions to enable for the created device. 1907e5c31af7Sopenharmony_ci See the <<extendingvulkan-extensions>> section for further details. 1908e5c31af7Sopenharmony_ci * pname:pEnabledFeatures is `NULL` or a pointer to a 1909e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceFeatures structure containing boolean indicators 1910e5c31af7Sopenharmony_ci of all the features to be enabled. 1911e5c31af7Sopenharmony_ci Refer to the <<features, Features>> section for further details. 1912e5c31af7Sopenharmony_ci 1913e5c31af7Sopenharmony_ci.Valid Usage 1914e5c31af7Sopenharmony_ci**** 1915e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-queueFamilyIndex-02802]] 1916e5c31af7Sopenharmony_ci The pname:queueFamilyIndex member of each element of 1917e5c31af7Sopenharmony_ci pname:pQueueCreateInfos must: be unique within pname:pQueueCreateInfos 1918e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1[] 1919e5c31af7Sopenharmony_ci , except that two members can share the same pname:queueFamilyIndex if 1920e5c31af7Sopenharmony_ci one describes protected-capable queues and one describes queues that are 1921e5c31af7Sopenharmony_ci not protected-capable 1922e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1[] 1923e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1[] 1924e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-pQueueCreateInfos-06755]] 1925e5c31af7Sopenharmony_ci If multiple elements of pname:pQueueCreateInfos share the same 1926e5c31af7Sopenharmony_ci pname:queueFamilyIndex, the sum of their pname:queueCount members must: 1927e5c31af7Sopenharmony_ci be less than or equal to the pname:queueCount member of the 1928e5c31af7Sopenharmony_ci sname:VkQueueFamilyProperties structure, as returned by 1929e5c31af7Sopenharmony_ci fname:vkGetPhysicalDeviceQueueFamilyProperties in the 1930e5c31af7Sopenharmony_ci pname:pQueueFamilyProperties[queueFamilyIndex] 1931e5c31af7Sopenharmony_ciifdef::VK_KHR_global_priority,VK_EXT_global_priority[] 1932e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-pQueueCreateInfos-06654]] 1933e5c31af7Sopenharmony_ci If multiple elements of pname:pQueueCreateInfos share the same 1934e5c31af7Sopenharmony_ci pname:queueFamilyIndex, then all of such elements must: have the same 1935e5c31af7Sopenharmony_ci global priority level, which can: be specified explicitly by the 1936e5c31af7Sopenharmony_ci including a slink:VkDeviceQueueGlobalPriorityCreateInfoKHR structure in 1937e5c31af7Sopenharmony_ci the pname:pNext chain, or by the implicit default value 1938e5c31af7Sopenharmony_ciendif::VK_KHR_global_priority,VK_EXT_global_priority[] 1939e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1[] 1940e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] 1941e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-pNext-00373]] 1942e5c31af7Sopenharmony_ci If the pname:pNext chain includes a slink:VkPhysicalDeviceFeatures2 1943e5c31af7Sopenharmony_ci structure, then pname:pEnabledFeatures must: be `NULL` 1944e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] 1945e5c31af7Sopenharmony_ciifdef::VK_AMD_negative_viewport_height[] 1946e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1[] 1947e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-01840]] 1948e5c31af7Sopenharmony_ci If slink:VkPhysicalDeviceProperties::pname:apiVersion advertises Vulkan 1949e5c31af7Sopenharmony_ci 1.1 or later, pname:ppEnabledExtensionNames must: not contain 1950e5c31af7Sopenharmony_ci `apiext:VK_AMD_negative_viewport_height` 1951e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1[] 1952e5c31af7Sopenharmony_ciifdef::VK_KHR_maintenance1[] 1953e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-00374]] 1954e5c31af7Sopenharmony_ci pname:ppEnabledExtensionNames must: not contain both 1955e5c31af7Sopenharmony_ci `apiext:VK_KHR_maintenance1` and 1956e5c31af7Sopenharmony_ci `apiext:VK_AMD_negative_viewport_height` 1957e5c31af7Sopenharmony_ciendif::VK_KHR_maintenance1[] 1958e5c31af7Sopenharmony_ciendif::VK_AMD_negative_viewport_height[] 1959e5c31af7Sopenharmony_ciifdef::VK_EXT_buffer_device_address+VK_KHR_buffer_device_address[] 1960e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-03328]] 1961e5c31af7Sopenharmony_ci pname:ppEnabledExtensionNames must: not contain both 1962e5c31af7Sopenharmony_ci `apiext:VK_KHR_buffer_device_address` and 1963e5c31af7Sopenharmony_ci `apiext:VK_EXT_buffer_device_address` 1964e5c31af7Sopenharmony_ciendif::VK_EXT_buffer_device_address+VK_KHR_buffer_device_address[] 1965e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_2[] 1966e5c31af7Sopenharmony_ciifdef::VK_EXT_buffer_device_address[] 1967e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-pNext-04748]] 1968e5c31af7Sopenharmony_ci If the pname:pNext chain includes a 1969e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceVulkan12Features structure and 1970e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceVulkan12Features::pname:bufferDeviceAddress is 1971e5c31af7Sopenharmony_ci ename:VK_TRUE, pname:ppEnabledExtensionNames must: not contain 1972e5c31af7Sopenharmony_ci `apiext:VK_EXT_buffer_device_address` 1973e5c31af7Sopenharmony_ciendif::VK_EXT_buffer_device_address[] 1974e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-pNext-02829]] 1975e5c31af7Sopenharmony_ci If the pname:pNext chain includes a 1976e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceVulkan11Features structure, then it must: not 1977e5c31af7Sopenharmony_ci include a slink:VkPhysicalDevice16BitStorageFeatures, 1978e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceMultiviewFeatures, 1979e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceVariablePointersFeatures, 1980e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceProtectedMemoryFeatures, 1981e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceSamplerYcbcrConversionFeatures, or 1982e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceShaderDrawParametersFeatures structure 1983e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-pNext-02830]] 1984e5c31af7Sopenharmony_ci If the pname:pNext chain includes a 1985e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceVulkan12Features structure, then it must: not 1986e5c31af7Sopenharmony_ci include a slink:VkPhysicalDevice8BitStorageFeatures, 1987e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceShaderAtomicInt64Features, 1988e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceShaderFloat16Int8Features, 1989e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceDescriptorIndexingFeatures, 1990e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceScalarBlockLayoutFeatures, 1991e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceImagelessFramebufferFeatures, 1992e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceUniformBufferStandardLayoutFeatures, 1993e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures, 1994e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures, 1995e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceHostQueryResetFeatures, 1996e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceTimelineSemaphoreFeatures, 1997e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceBufferDeviceAddressFeatures, or 1998e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceVulkanMemoryModelFeatures structure 1999e5c31af7Sopenharmony_ciifdef::VK_KHR_shader_draw_parameters[] 2000e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-04476]] 2001e5c31af7Sopenharmony_ci If pname:ppEnabledExtensionNames contains 2002e5c31af7Sopenharmony_ci `"VK_KHR_shader_draw_parameters"` and the pname:pNext chain includes a 2003e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceVulkan11Features structure, then 2004e5c31af7Sopenharmony_ci sname:VkPhysicalDeviceVulkan11Features::pname:shaderDrawParameters must: 2005e5c31af7Sopenharmony_ci be ename:VK_TRUE 2006e5c31af7Sopenharmony_ciendif::VK_KHR_shader_draw_parameters[] 2007e5c31af7Sopenharmony_ciifdef::VK_KHR_draw_indirect_count[] 2008e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-02831]] 2009e5c31af7Sopenharmony_ci If pname:ppEnabledExtensionNames contains `"VK_KHR_draw_indirect_count"` 2010e5c31af7Sopenharmony_ci and the pname:pNext chain includes a 2011e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceVulkan12Features structure, then 2012e5c31af7Sopenharmony_ci sname:VkPhysicalDeviceVulkan12Features::pname:drawIndirectCount must: be 2013e5c31af7Sopenharmony_ci ename:VK_TRUE 2014e5c31af7Sopenharmony_ciendif::VK_KHR_draw_indirect_count[] 2015e5c31af7Sopenharmony_ciifdef::VK_KHR_sampler_mirror_clamp_to_edge[] 2016e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-02832]] 2017e5c31af7Sopenharmony_ci If pname:ppEnabledExtensionNames contains 2018e5c31af7Sopenharmony_ci `"VK_KHR_sampler_mirror_clamp_to_edge"` and the pname:pNext chain 2019e5c31af7Sopenharmony_ci includes a slink:VkPhysicalDeviceVulkan12Features structure, then 2020e5c31af7Sopenharmony_ci sname:VkPhysicalDeviceVulkan12Features::pname:samplerMirrorClampToEdge 2021e5c31af7Sopenharmony_ci must: be ename:VK_TRUE 2022e5c31af7Sopenharmony_ciendif::VK_KHR_sampler_mirror_clamp_to_edge[] 2023e5c31af7Sopenharmony_ciifdef::VK_EXT_descriptor_indexing[] 2024e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-02833]] 2025e5c31af7Sopenharmony_ci If pname:ppEnabledExtensionNames contains `"VK_EXT_descriptor_indexing"` 2026e5c31af7Sopenharmony_ci and the pname:pNext chain includes a 2027e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceVulkan12Features structure, then 2028e5c31af7Sopenharmony_ci sname:VkPhysicalDeviceVulkan12Features::pname:descriptorIndexing must: 2029e5c31af7Sopenharmony_ci be ename:VK_TRUE 2030e5c31af7Sopenharmony_ciendif::VK_EXT_descriptor_indexing[] 2031e5c31af7Sopenharmony_ciifdef::VK_EXT_sampler_filter_minmax[] 2032e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-02834]] 2033e5c31af7Sopenharmony_ci If pname:ppEnabledExtensionNames contains 2034e5c31af7Sopenharmony_ci `"VK_EXT_sampler_filter_minmax"` and the pname:pNext chain includes a 2035e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceVulkan12Features structure, then 2036e5c31af7Sopenharmony_ci sname:VkPhysicalDeviceVulkan12Features::pname:samplerFilterMinmax must: 2037e5c31af7Sopenharmony_ci be ename:VK_TRUE 2038e5c31af7Sopenharmony_ciendif::VK_EXT_sampler_filter_minmax[] 2039e5c31af7Sopenharmony_ciifdef::VK_EXT_shader_viewport_index_layer[] 2040e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-02835]] 2041e5c31af7Sopenharmony_ci If pname:ppEnabledExtensionNames contains 2042e5c31af7Sopenharmony_ci `"VK_EXT_shader_viewport_index_layer"` and the pname:pNext chain 2043e5c31af7Sopenharmony_ci includes a slink:VkPhysicalDeviceVulkan12Features structure, then 2044e5c31af7Sopenharmony_ci sname:VkPhysicalDeviceVulkan12Features::pname:shaderOutputViewportIndex 2045e5c31af7Sopenharmony_ci and sname:VkPhysicalDeviceVulkan12Features::pname:shaderOutputLayer 2046e5c31af7Sopenharmony_ci must: both be ename:VK_TRUE 2047e5c31af7Sopenharmony_ciendif::VK_EXT_shader_viewport_index_layer[] 2048e5c31af7Sopenharmony_ciendif::VK_VERSION_1_2[] 2049e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3[] 2050e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-pNext-06532]] 2051e5c31af7Sopenharmony_ci If the pname:pNext chain includes a 2052e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceVulkan13Features structure, then it must: not 2053e5c31af7Sopenharmony_ci include a slink:VkPhysicalDeviceDynamicRenderingFeatures, 2054e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceImageRobustnessFeatures, 2055e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceInlineUniformBlockFeatures, 2056e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceMaintenance4Features, 2057e5c31af7Sopenharmony_ci slink:VkPhysicalDevicePipelineCreationCacheControlFeatures, 2058e5c31af7Sopenharmony_ci slink:VkPhysicalDevicePrivateDataFeatures, 2059e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures, 2060e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceShaderIntegerDotProductFeatures, 2061e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceShaderTerminateInvocationFeatures, 2062e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceSubgroupSizeControlFeatures, 2063e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceSynchronization2Features, 2064e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceTextureCompressionASTCHDRFeatures, or 2065e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures structure 2066e5c31af7Sopenharmony_ci// Jon 1.3 TBD - add extension-specific VUs specifying when Vulkan13Features 2067e5c31af7Sopenharmony_ci// members must: be true. 2068e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3[] 2069e5c31af7Sopenharmony_ciifdef::VK_KHR_portability_subset[] 2070e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-pProperties-04451]] 2071e5c31af7Sopenharmony_ci If the `apiext:VK_KHR_portability_subset` extension is included in 2072e5c31af7Sopenharmony_ci pname:pProperties of flink:vkEnumerateDeviceExtensionProperties, 2073e5c31af7Sopenharmony_ci pname:ppEnabledExtensionNames must: include 2074e5c31af7Sopenharmony_ci `"VK_KHR_portability_subset"` 2075e5c31af7Sopenharmony_ciendif::VK_KHR_portability_subset[] 2076e5c31af7Sopenharmony_ciifdef::VK_KHR_fragment_shading_rate+VK_NV_shading_rate_image[] 2077e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-shadingRateImage-04478]] 2078e5c31af7Sopenharmony_ci If the <<features-shadingRateImage, pname:shadingRateImage>> feature is 2079e5c31af7Sopenharmony_ci enabled, the <<features-pipelineFragmentShadingRate, 2080e5c31af7Sopenharmony_ci pname:pipelineFragmentShadingRate>> feature must: not be enabled 2081e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-shadingRateImage-04479]] 2082e5c31af7Sopenharmony_ci If the <<features-shadingRateImage, pname:shadingRateImage>> feature is 2083e5c31af7Sopenharmony_ci enabled, the <<features-primitiveFragmentShadingRate, 2084e5c31af7Sopenharmony_ci pname:primitiveFragmentShadingRate>> feature must: not be enabled 2085e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-shadingRateImage-04480]] 2086e5c31af7Sopenharmony_ci If the <<features-shadingRateImage, pname:shadingRateImage>> feature is 2087e5c31af7Sopenharmony_ci enabled, the <<features-attachmentFragmentShadingRate, 2088e5c31af7Sopenharmony_ci pname:attachmentFragmentShadingRate>> feature must: not be enabled 2089e5c31af7Sopenharmony_ciendif::VK_KHR_fragment_shading_rate+VK_NV_shading_rate_image[] 2090e5c31af7Sopenharmony_ciifdef::VK_KHR_fragment_shading_rate+VK_EXT_fragment_density_map[] 2091e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-fragmentDensityMap-04481]] 2092e5c31af7Sopenharmony_ci If the <<features-fragmentDensityMap, pname:fragmentDensityMap>> feature 2093e5c31af7Sopenharmony_ci is enabled, the <<features-pipelineFragmentShadingRate, 2094e5c31af7Sopenharmony_ci pname:pipelineFragmentShadingRate>> feature must: not be enabled 2095e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-fragmentDensityMap-04482]] 2096e5c31af7Sopenharmony_ci If the <<features-fragmentDensityMap, pname:fragmentDensityMap>> feature 2097e5c31af7Sopenharmony_ci is enabled, the <<features-primitiveFragmentShadingRate, 2098e5c31af7Sopenharmony_ci pname:primitiveFragmentShadingRate>> feature must: not be enabled 2099e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-fragmentDensityMap-04483]] 2100e5c31af7Sopenharmony_ci If the <<features-fragmentDensityMap, pname:fragmentDensityMap>> feature 2101e5c31af7Sopenharmony_ci is enabled, the <<features-attachmentFragmentShadingRate, 2102e5c31af7Sopenharmony_ci pname:attachmentFragmentShadingRate>> feature must: not be enabled 2103e5c31af7Sopenharmony_ciendif::VK_KHR_fragment_shading_rate+VK_EXT_fragment_density_map[] 2104e5c31af7Sopenharmony_ciifdef::VK_EXT_shader_image_atomic_int64[] 2105e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-None-04896]] 2106e5c31af7Sopenharmony_ci If <<features-sparseImageInt64Atomics, pname:sparseImageInt64Atomics>> 2107e5c31af7Sopenharmony_ci is enabled, <<features-shaderImageInt64Atomics, 2108e5c31af7Sopenharmony_ci pname:shaderImageInt64Atomics>> must: be enabled 2109e5c31af7Sopenharmony_ciendif::VK_EXT_shader_image_atomic_int64[] 2110e5c31af7Sopenharmony_ciifdef::VK_EXT_shader_atomic_float[] 2111e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-None-04897]] 2112e5c31af7Sopenharmony_ci If <<features-sparseImageFloat32Atomics, 2113e5c31af7Sopenharmony_ci pname:sparseImageFloat32Atomics>> is enabled, 2114e5c31af7Sopenharmony_ci <<features-shaderImageFloat32Atomics, pname:shaderImageFloat32Atomics>> 2115e5c31af7Sopenharmony_ci must: be enabled 2116e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-None-04898]] 2117e5c31af7Sopenharmony_ci If <<features-sparseImageFloat32AtomicAdd, 2118e5c31af7Sopenharmony_ci pname:sparseImageFloat32AtomicAdd>> is enabled, 2119e5c31af7Sopenharmony_ci <<features-shaderImageFloat32AtomicAdd, 2120e5c31af7Sopenharmony_ci pname:shaderImageFloat32AtomicAdd>> must: be enabled 2121e5c31af7Sopenharmony_ciendif::VK_EXT_shader_atomic_float[] 2122e5c31af7Sopenharmony_ciifdef::VK_EXT_shader_atomic_float2[] 2123e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-sparseImageFloat32AtomicMinMax-04975]] 2124e5c31af7Sopenharmony_ci If <<features-sparseImageFloat32AtomicMinMax, 2125e5c31af7Sopenharmony_ci pname:sparseImageFloat32AtomicMinMax>> is enabled, 2126e5c31af7Sopenharmony_ci <<features-shaderImageFloat32AtomicMinMax, 2127e5c31af7Sopenharmony_ci pname:shaderImageFloat32AtomicMinMax>> must: be enabled 2128e5c31af7Sopenharmony_ciendif::VK_EXT_shader_atomic_float2[] 2129e5c31af7Sopenharmony_ciifdef::VK_EXT_descriptor_buffer[] 2130e5c31af7Sopenharmony_ciifdef::VK_AMD_shader_fragment_mask[] 2131e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-None-08095]] 2132e5c31af7Sopenharmony_ci If <<features-descriptorBuffer, pname:descriptorBuffer>> is enabled, 2133e5c31af7Sopenharmony_ci pname:ppEnabledExtensionNames must: not contain 2134e5c31af7Sopenharmony_ci `apiext:VK_AMD_shader_fragment_mask` 2135e5c31af7Sopenharmony_ciendif::VK_AMD_shader_fragment_mask[] 2136e5c31af7Sopenharmony_ciendif::VK_EXT_descriptor_buffer[] 2137e5c31af7Sopenharmony_ciifdef::VK_ARM_scheduling_controls[] 2138e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-pNext-09396]] 2139e5c31af7Sopenharmony_ci If the pname:pNext chain includes a 2140e5c31af7Sopenharmony_ci slink:VkDeviceQueueShaderCoreControlCreateInfoARM structure, then it 2141e5c31af7Sopenharmony_ci must: not be included in the pname:pNext chain of any of the 2142e5c31af7Sopenharmony_ci slink:VkDeviceQueueCreateInfo structures in pname:pQueueCreateInfos. 2143e5c31af7Sopenharmony_ci * [[VUID-VkDeviceCreateInfo-pNext-09397]] 2144e5c31af7Sopenharmony_ci If the pname:pNext chain includes a 2145e5c31af7Sopenharmony_ci slink:VkDeviceQueueShaderCoreControlCreateInfoARM structure then 2146e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceSchedulingControlsPropertiesARM::pname:schedulingControlsFlags 2147e5c31af7Sopenharmony_ci must: contain 2148e5c31af7Sopenharmony_ci ename:VK_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM. 2149e5c31af7Sopenharmony_ciendif::VK_ARM_scheduling_controls[] 2150e5c31af7Sopenharmony_ci**** 2151e5c31af7Sopenharmony_ci 2152e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkDeviceCreateInfo.adoc[] 2153e5c31af7Sopenharmony_ci-- 2154e5c31af7Sopenharmony_ci 2155e5c31af7Sopenharmony_ci[open,refpage='VkDeviceCreateFlags',desc='Reserved for future use',type='flags'] 2156e5c31af7Sopenharmony_ci-- 2157e5c31af7Sopenharmony_ciinclude::{generated}/api/flags/VkDeviceCreateFlags.adoc[] 2158e5c31af7Sopenharmony_ci 2159e5c31af7Sopenharmony_citname:VkDeviceCreateFlags is a bitmask type for setting a mask, but is 2160e5c31af7Sopenharmony_cicurrently reserved for future use. 2161e5c31af7Sopenharmony_ci-- 2162e5c31af7Sopenharmony_ci 2163e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1,VK_KHR_device_group_creation[] 2164e5c31af7Sopenharmony_ci[open,refpage='VkDeviceGroupDeviceCreateInfo',desc='Create a logical device from multiple physical devices',type='structs'] 2165e5c31af7Sopenharmony_ci-- 2166e5c31af7Sopenharmony_ciA logical device can: be created that connects to one or more physical 2167e5c31af7Sopenharmony_cidevices by adding a sname:VkDeviceGroupDeviceCreateInfo structure to the 2168e5c31af7Sopenharmony_cipname:pNext chain of slink:VkDeviceCreateInfo. 2169e5c31af7Sopenharmony_ciThe sname:VkDeviceGroupDeviceCreateInfo structure is defined as: 2170e5c31af7Sopenharmony_ci 2171e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkDeviceGroupDeviceCreateInfo.adoc[] 2172e5c31af7Sopenharmony_ci 2173e5c31af7Sopenharmony_ciifdef::VK_KHR_device_group_creation[] 2174e5c31af7Sopenharmony_cior the equivalent 2175e5c31af7Sopenharmony_ci 2176e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkDeviceGroupDeviceCreateInfoKHR.adoc[] 2177e5c31af7Sopenharmony_ciendif::VK_KHR_device_group_creation[] 2178e5c31af7Sopenharmony_ci 2179e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 2180e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 2181e5c31af7Sopenharmony_ci structure. 2182e5c31af7Sopenharmony_ci * pname:physicalDeviceCount is the number of elements in the 2183e5c31af7Sopenharmony_ci pname:pPhysicalDevices array. 2184e5c31af7Sopenharmony_ci * pname:pPhysicalDevices is a pointer to an array of physical device 2185e5c31af7Sopenharmony_ci handles belonging to the same device group. 2186e5c31af7Sopenharmony_ci 2187e5c31af7Sopenharmony_ciThe elements of the pname:pPhysicalDevices array are an ordered list of the 2188e5c31af7Sopenharmony_ciphysical devices that the logical device represents. 2189e5c31af7Sopenharmony_ciThese must: be a subset of a single device group, and need not be in the 2190e5c31af7Sopenharmony_cisame order as they were enumerated. 2191e5c31af7Sopenharmony_ciThe order of the physical devices in the pname:pPhysicalDevices array 2192e5c31af7Sopenharmony_cidetermines the _device index_ of each physical device, with element [eq]#i# 2193e5c31af7Sopenharmony_cibeing assigned a device index of [eq]#i#. 2194e5c31af7Sopenharmony_ciCertain commands and structures refer to one or more physical devices by 2195e5c31af7Sopenharmony_ciusing device indices or _device masks_ formed using device indices. 2196e5c31af7Sopenharmony_ci 2197e5c31af7Sopenharmony_ciA logical device created without using sname:VkDeviceGroupDeviceCreateInfo, 2198e5c31af7Sopenharmony_cior with pname:physicalDeviceCount equal to zero, is equivalent to a 2199e5c31af7Sopenharmony_cipname:physicalDeviceCount of one and pname:pPhysicalDevices pointing to the 2200e5c31af7Sopenharmony_cipname:physicalDevice parameter to flink:vkCreateDevice. 2201e5c31af7Sopenharmony_ciIn particular, the device index of that physical device is zero. 2202e5c31af7Sopenharmony_ci 2203e5c31af7Sopenharmony_ci.Valid Usage 2204e5c31af7Sopenharmony_ci**** 2205e5c31af7Sopenharmony_ci * [[VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00375]] 2206e5c31af7Sopenharmony_ci Each element of pname:pPhysicalDevices must: be unique 2207e5c31af7Sopenharmony_ci * [[VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00376]] 2208e5c31af7Sopenharmony_ci All elements of pname:pPhysicalDevices must: be in the same device group 2209e5c31af7Sopenharmony_ci as enumerated by flink:vkEnumeratePhysicalDeviceGroups 2210e5c31af7Sopenharmony_ci * [[VUID-VkDeviceGroupDeviceCreateInfo-physicalDeviceCount-00377]] 2211e5c31af7Sopenharmony_ci If pname:physicalDeviceCount is not `0`, the pname:physicalDevice 2212e5c31af7Sopenharmony_ci parameter of flink:vkCreateDevice must: be an element of 2213e5c31af7Sopenharmony_ci pname:pPhysicalDevices 2214e5c31af7Sopenharmony_ci**** 2215e5c31af7Sopenharmony_ci 2216e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkDeviceGroupDeviceCreateInfo.adoc[] 2217e5c31af7Sopenharmony_ci-- 2218e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1,VK_KHR_device_group_creation[] 2219e5c31af7Sopenharmony_ci 2220e5c31af7Sopenharmony_ciifdef::VK_AMD_memory_overallocation_behavior[] 2221e5c31af7Sopenharmony_ci[open,refpage='VkDeviceMemoryOverallocationCreateInfoAMD',desc='Specify memory overallocation behavior for a Vulkan device',type='structs'] 2222e5c31af7Sopenharmony_ci-- 2223e5c31af7Sopenharmony_ciTo specify whether device memory allocation is allowed beyond the size 2224e5c31af7Sopenharmony_cireported by slink:VkPhysicalDeviceMemoryProperties, add a 2225e5c31af7Sopenharmony_cislink:VkDeviceMemoryOverallocationCreateInfoAMD structure to the pname:pNext 2226e5c31af7Sopenharmony_cichain of the slink:VkDeviceCreateInfo structure. 2227e5c31af7Sopenharmony_ciIf this structure is not specified, it is as if the 2228e5c31af7Sopenharmony_ciename:VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD value is used. 2229e5c31af7Sopenharmony_ci 2230e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkDeviceMemoryOverallocationCreateInfoAMD.adoc[] 2231e5c31af7Sopenharmony_ci 2232e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 2233e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 2234e5c31af7Sopenharmony_ci structure. 2235e5c31af7Sopenharmony_ci * pname:overallocationBehavior is the desired overallocation behavior. 2236e5c31af7Sopenharmony_ci 2237e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkDeviceMemoryOverallocationCreateInfoAMD.adoc[] 2238e5c31af7Sopenharmony_ci-- 2239e5c31af7Sopenharmony_ci 2240e5c31af7Sopenharmony_ci[open,refpage='VkMemoryOverallocationBehaviorAMD',desc='Specify memory overallocation behavior',type='enums'] 2241e5c31af7Sopenharmony_ci-- 2242e5c31af7Sopenharmony_ciPossible values for 2243e5c31af7Sopenharmony_cislink:VkDeviceMemoryOverallocationCreateInfoAMD::pname:overallocationBehavior 2244e5c31af7Sopenharmony_ciinclude: 2245e5c31af7Sopenharmony_ci 2246e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkMemoryOverallocationBehaviorAMD.adoc[] 2247e5c31af7Sopenharmony_ci 2248e5c31af7Sopenharmony_ci * ename:VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD lets the 2249e5c31af7Sopenharmony_ci implementation decide if overallocation is allowed. 2250e5c31af7Sopenharmony_ci * ename:VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD specifies 2251e5c31af7Sopenharmony_ci overallocation is allowed if platform permits. 2252e5c31af7Sopenharmony_ci * ename:VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD specifies the 2253e5c31af7Sopenharmony_ci application is not allowed to allocate device memory beyond the heap 2254e5c31af7Sopenharmony_ci sizes reported by slink:VkPhysicalDeviceMemoryProperties. 2255e5c31af7Sopenharmony_ci Allocations that are not explicitly made by the application within the 2256e5c31af7Sopenharmony_ci scope of the Vulkan instance are not accounted for. 2257e5c31af7Sopenharmony_ci-- 2258e5c31af7Sopenharmony_ciendif::VK_AMD_memory_overallocation_behavior[] 2259e5c31af7Sopenharmony_ci 2260e5c31af7Sopenharmony_ciifdef::VK_NV_device_diagnostics_config[] 2261e5c31af7Sopenharmony_ci[open,refpage='VkDeviceDiagnosticsConfigCreateInfoNV',desc='Specify diagnostics config for a Vulkan device',type='structs'] 2262e5c31af7Sopenharmony_ci-- 2263e5c31af7Sopenharmony_ciWhen using the Nsight^(TM)^ Aftermath SDK, to configure how device crash 2264e5c31af7Sopenharmony_cidumps are created, add a slink:VkDeviceDiagnosticsConfigCreateInfoNV 2265e5c31af7Sopenharmony_cistructure to the pname:pNext chain of the slink:VkDeviceCreateInfo 2266e5c31af7Sopenharmony_cistructure. 2267e5c31af7Sopenharmony_ci 2268e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkDeviceDiagnosticsConfigCreateInfoNV.adoc[] 2269e5c31af7Sopenharmony_ci 2270e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 2271e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 2272e5c31af7Sopenharmony_ci structure. 2273e5c31af7Sopenharmony_ci * pname:flags is a bitmask of elink:VkDeviceDiagnosticsConfigFlagBitsNV 2274e5c31af7Sopenharmony_ci specifying additional parameters for configuring diagnostic tools. 2275e5c31af7Sopenharmony_ci 2276e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkDeviceDiagnosticsConfigCreateInfoNV.adoc[] 2277e5c31af7Sopenharmony_ci-- 2278e5c31af7Sopenharmony_ci 2279e5c31af7Sopenharmony_ci[open,refpage='VkDeviceDiagnosticsConfigFlagBitsNV',desc='Bitmask specifying diagnostics flags',type='enums'] 2280e5c31af7Sopenharmony_ci-- 2281e5c31af7Sopenharmony_ciBits which can: be set in 2282e5c31af7Sopenharmony_cislink:VkDeviceDiagnosticsConfigCreateInfoNV::pname:flags include: 2283e5c31af7Sopenharmony_ci 2284e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkDeviceDiagnosticsConfigFlagBitsNV.adoc[] 2285e5c31af7Sopenharmony_ci 2286e5c31af7Sopenharmony_ci * ename:VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV 2287e5c31af7Sopenharmony_ci enables the generation of debug information for shaders. 2288e5c31af7Sopenharmony_ci * ename:VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV 2289e5c31af7Sopenharmony_ci enables driver side tracking of resources (images, buffers, etc.) used 2290e5c31af7Sopenharmony_ci to augment the device fault information. 2291e5c31af7Sopenharmony_ci * ename:VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV 2292e5c31af7Sopenharmony_ci enables automatic insertion of <<device-diagnostic-checkpoints, 2293e5c31af7Sopenharmony_ci diagnostic checkpoints>> for draw calls, dispatches, 2294e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline[] 2295e5c31af7Sopenharmony_ci trace rays, 2296e5c31af7Sopenharmony_ciendif::VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline[] 2297e5c31af7Sopenharmony_ci and copies. 2298e5c31af7Sopenharmony_ci The CPU call stack at the time of the command will be associated as the 2299e5c31af7Sopenharmony_ci marker data for the automatically inserted checkpoints. 2300e5c31af7Sopenharmony_ci * ename:VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV 2301e5c31af7Sopenharmony_ci enables shader error reporting. 2302e5c31af7Sopenharmony_ci-- 2303e5c31af7Sopenharmony_ci 2304e5c31af7Sopenharmony_ci[open,refpage='VkDeviceDiagnosticsConfigFlagsNV',desc='Bitmask of VkDeviceDiagnosticsConfigFlagBitsNV',type='flags'] 2305e5c31af7Sopenharmony_ci-- 2306e5c31af7Sopenharmony_ciinclude::{generated}/api/flags/VkDeviceDiagnosticsConfigFlagsNV.adoc[] 2307e5c31af7Sopenharmony_ci 2308e5c31af7Sopenharmony_citname:VkDeviceDiagnosticsConfigFlagsNV is a bitmask type for setting a mask 2309e5c31af7Sopenharmony_ciof zero or more elink:VkDeviceDiagnosticsConfigFlagBitsNV. 2310e5c31af7Sopenharmony_ci-- 2311e5c31af7Sopenharmony_ciendif::VK_NV_device_diagnostics_config[] 2312e5c31af7Sopenharmony_ci 2313e5c31af7Sopenharmony_ciifdef::VK_EXT_device_memory_report[] 2314e5c31af7Sopenharmony_ci[open,refpage='VkDeviceDeviceMemoryReportCreateInfoEXT',desc='Register device memory report callbacks for a Vulkan device',type='structs'] 2315e5c31af7Sopenharmony_ci-- 2316e5c31af7Sopenharmony_ciTo register callbacks for underlying device memory events of type 2317e5c31af7Sopenharmony_cielink:VkDeviceMemoryReportEventTypeEXT, add one or multiple 2318e5c31af7Sopenharmony_cislink:VkDeviceDeviceMemoryReportCreateInfoEXT structures to the pname:pNext 2319e5c31af7Sopenharmony_cichain of the slink:VkDeviceCreateInfo structure. 2320e5c31af7Sopenharmony_ci 2321e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkDeviceDeviceMemoryReportCreateInfoEXT.adoc[] 2322e5c31af7Sopenharmony_ci 2323e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 2324e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 2325e5c31af7Sopenharmony_ci structure. 2326e5c31af7Sopenharmony_ci * pname:flags is 0 and reserved for future use. 2327e5c31af7Sopenharmony_ci * pname:pfnUserCallback is the application callback function to call. 2328e5c31af7Sopenharmony_ci * pname:pUserData is user data to be passed to the callback. 2329e5c31af7Sopenharmony_ci 2330e5c31af7Sopenharmony_ciThe callback may: be called from multiple threads simultaneously. 2331e5c31af7Sopenharmony_ci 2332e5c31af7Sopenharmony_ciThe callback must: be called only once by the implementation when a 2333e5c31af7Sopenharmony_cielink:VkDeviceMemoryReportEventTypeEXT event occurs. 2334e5c31af7Sopenharmony_ci 2335e5c31af7Sopenharmony_ci[NOTE] 2336e5c31af7Sopenharmony_ci.Note 2337e5c31af7Sopenharmony_ci==== 2338e5c31af7Sopenharmony_ciThe callback could be called from a background thread other than the thread 2339e5c31af7Sopenharmony_cicalling the Vulkan commands. 2340e5c31af7Sopenharmony_ci==== 2341e5c31af7Sopenharmony_ci 2342e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkDeviceDeviceMemoryReportCreateInfoEXT.adoc[] 2343e5c31af7Sopenharmony_ci-- 2344e5c31af7Sopenharmony_ci 2345e5c31af7Sopenharmony_ci[open,refpage='PFN_vkDeviceMemoryReportCallbackEXT',desc='Application-defined device memory report callback function',type='funcpointers'] 2346e5c31af7Sopenharmony_ci-- 2347e5c31af7Sopenharmony_ciThe prototype for the 2348e5c31af7Sopenharmony_cislink:VkDeviceDeviceMemoryReportCreateInfoEXT::pname:pfnUserCallback 2349e5c31af7Sopenharmony_cifunction implemented by the application is: 2350e5c31af7Sopenharmony_ci 2351e5c31af7Sopenharmony_ciinclude::{generated}/api/funcpointers/PFN_vkDeviceMemoryReportCallbackEXT.adoc[] 2352e5c31af7Sopenharmony_ci 2353e5c31af7Sopenharmony_ci * pname:pCallbackData contains all the callback related data in the 2354e5c31af7Sopenharmony_ci slink:VkDeviceMemoryReportCallbackDataEXT structure. 2355e5c31af7Sopenharmony_ci * pname:pUserData is the user data provided when the 2356e5c31af7Sopenharmony_ci slink:VkDeviceDeviceMemoryReportCreateInfoEXT was created. 2357e5c31af7Sopenharmony_ci 2358e5c31af7Sopenharmony_ciThe callback must: not make calls to any Vulkan commands. 2359e5c31af7Sopenharmony_ci-- 2360e5c31af7Sopenharmony_ci 2361e5c31af7Sopenharmony_ci[open,refpage='VkDeviceMemoryReportCallbackDataEXT',desc='Structure specifying parameters returned to the callback',type='structs'] 2362e5c31af7Sopenharmony_ci-- 2363e5c31af7Sopenharmony_ciThe definition of sname:VkDeviceMemoryReportCallbackDataEXT is: 2364e5c31af7Sopenharmony_ci 2365e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkDeviceMemoryReportCallbackDataEXT.adoc[] 2366e5c31af7Sopenharmony_ci 2367e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 2368e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 2369e5c31af7Sopenharmony_ci structure. 2370e5c31af7Sopenharmony_ci * pname:flags is 0 and reserved for future use. 2371e5c31af7Sopenharmony_ci * pname:type is a elink:VkDeviceMemoryReportEventTypeEXT type specifying 2372e5c31af7Sopenharmony_ci the type of event reported in this 2373e5c31af7Sopenharmony_ci sname:VkDeviceMemoryReportCallbackDataEXT structure. 2374e5c31af7Sopenharmony_ci * pname:memoryObjectId is the unique id for the underlying memory object 2375e5c31af7Sopenharmony_ci as described below. 2376e5c31af7Sopenharmony_ci * pname:size is the size of the memory object in bytes. 2377e5c31af7Sopenharmony_ci If pname:type is ename:VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT, 2378e5c31af7Sopenharmony_ci ename:VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT or 2379e5c31af7Sopenharmony_ci ename:VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT, 2380e5c31af7Sopenharmony_ci pname:size is a valid basetype:VkDeviceSize value. 2381e5c31af7Sopenharmony_ci Otherwise, pname:size is undefined:. 2382e5c31af7Sopenharmony_ci * pname:objectType is a elink:VkObjectType value specifying the type of 2383e5c31af7Sopenharmony_ci the object associated with this device memory report event. 2384e5c31af7Sopenharmony_ci If pname:type is ename:VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT, 2385e5c31af7Sopenharmony_ci ename:VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT, 2386e5c31af7Sopenharmony_ci ename:VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT, 2387e5c31af7Sopenharmony_ci ename:VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT or 2388e5c31af7Sopenharmony_ci ename:VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT, 2389e5c31af7Sopenharmony_ci pname:objectType is a valid elink:VkObjectType enum. 2390e5c31af7Sopenharmony_ci Otherwise, pname:objectType is undefined:. 2391e5c31af7Sopenharmony_ci * pname:objectHandle is the object this device memory report event is 2392e5c31af7Sopenharmony_ci attributed to. 2393e5c31af7Sopenharmony_ci If pname:type is ename:VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT, 2394e5c31af7Sopenharmony_ci ename:VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT, 2395e5c31af7Sopenharmony_ci ename:VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT or 2396e5c31af7Sopenharmony_ci ename:VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT, 2397e5c31af7Sopenharmony_ci pname:objectHandle is a valid Vulkan handle of the type associated with 2398e5c31af7Sopenharmony_ci pname:objectType as defined in the <<debugging-object-types, 2399e5c31af7Sopenharmony_ci `VkObjectType` and Vulkan Handle Relationship>> table. 2400e5c31af7Sopenharmony_ci Otherwise, pname:objectHandle is undefined:. 2401e5c31af7Sopenharmony_ci * pname:heapIndex describes which memory heap this device memory 2402e5c31af7Sopenharmony_ci allocation is made from. 2403e5c31af7Sopenharmony_ci If pname:type is ename:VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT 2404e5c31af7Sopenharmony_ci or ename:VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT, 2405e5c31af7Sopenharmony_ci pname:heapIndex corresponds to one of the valid heaps from the 2406e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceMemoryProperties structure. 2407e5c31af7Sopenharmony_ci Otherwise, pname:heapIndex is undefined:. 2408e5c31af7Sopenharmony_ci 2409e5c31af7Sopenharmony_cipname:memoryObjectId is used to avoid double-counting on the same memory 2410e5c31af7Sopenharmony_ciobject. 2411e5c31af7Sopenharmony_ci 2412e5c31af7Sopenharmony_ciIf an internally-allocated device memory object or a slink:VkDeviceMemory 2413e5c31af7Sopenharmony_cicannot: be exported, pname:memoryObjectId must: be unique in the 2414e5c31af7Sopenharmony_cislink:VkDevice. 2415e5c31af7Sopenharmony_ci 2416e5c31af7Sopenharmony_ciIf an internally-allocated device memory object or a slink:VkDeviceMemory 2417e5c31af7Sopenharmony_cisupports being exported, pname:memoryObjectId must: be unique system wide. 2418e5c31af7Sopenharmony_ci 2419e5c31af7Sopenharmony_ciIf an internal device memory object or a slink:VkDeviceMemory is backed by 2420e5c31af7Sopenharmony_cian imported external memory object, pname:memoryObjectId must: be unique 2421e5c31af7Sopenharmony_cisystem wide. 2422e5c31af7Sopenharmony_ci 2423e5c31af7Sopenharmony_ciifdef::implementation-guide[] 2424e5c31af7Sopenharmony_ci.Implementor's Note 2425e5c31af7Sopenharmony_ci**** 2426e5c31af7Sopenharmony_ciIf the heap backing an internally-allocated device memory cannot: be used to 2427e5c31af7Sopenharmony_ciback slink:VkDeviceMemory, implementations can: advertise that heap with no 2428e5c31af7Sopenharmony_citypes. 2429e5c31af7Sopenharmony_ci**** 2430e5c31af7Sopenharmony_ciendif::implementation-guide[] 2431e5c31af7Sopenharmony_ci 2432e5c31af7Sopenharmony_ci[NOTE] 2433e5c31af7Sopenharmony_ci.Note 2434e5c31af7Sopenharmony_ci==== 2435e5c31af7Sopenharmony_ciThis structure should only be considered valid during the lifetime of the 2436e5c31af7Sopenharmony_citriggered callback. 2437e5c31af7Sopenharmony_ci 2438e5c31af7Sopenharmony_ciFor ename:VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT and 2439e5c31af7Sopenharmony_ciename:VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT events, 2440e5c31af7Sopenharmony_cipname:objectHandle usually will not yet exist when the application or tool 2441e5c31af7Sopenharmony_cireceives the callback. 2442e5c31af7Sopenharmony_cipname:objectHandle will only exist when the create or allocate call that 2443e5c31af7Sopenharmony_citriggered the event returns, and if the allocation or import ends up failing 2444e5c31af7Sopenharmony_cipname:objectHandle will not ever exist. 2445e5c31af7Sopenharmony_ci==== 2446e5c31af7Sopenharmony_ci 2447e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkDeviceMemoryReportCallbackDataEXT.adoc[] 2448e5c31af7Sopenharmony_ci-- 2449e5c31af7Sopenharmony_ci 2450e5c31af7Sopenharmony_ci[open,refpage='VkDeviceMemoryReportFlagsEXT',desc='Reserved for future use',type='flags'] 2451e5c31af7Sopenharmony_ci-- 2452e5c31af7Sopenharmony_ciinclude::{generated}/api/flags/VkDeviceMemoryReportFlagsEXT.adoc[] 2453e5c31af7Sopenharmony_ci 2454e5c31af7Sopenharmony_citname:VkDeviceMemoryReportFlagsEXT is a bitmask type for setting a mask, but 2455e5c31af7Sopenharmony_ciis currently reserved for future use. 2456e5c31af7Sopenharmony_ci-- 2457e5c31af7Sopenharmony_ci 2458e5c31af7Sopenharmony_ci[open,refpage='VkDeviceMemoryReportEventTypeEXT',desc='Events that can occur on a device memory object',type='enums'] 2459e5c31af7Sopenharmony_ci-- 2460e5c31af7Sopenharmony_ciPossible values of slink:VkDeviceMemoryReportCallbackDataEXT::pname:type, 2461e5c31af7Sopenharmony_cispecifying event types which cause the device driver to call the callback, 2462e5c31af7Sopenharmony_ciare: 2463e5c31af7Sopenharmony_ci 2464e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkDeviceMemoryReportEventTypeEXT.adoc[] 2465e5c31af7Sopenharmony_ci 2466e5c31af7Sopenharmony_ci * ename:VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT specifies this 2467e5c31af7Sopenharmony_ci event corresponds to the allocation of an internal device memory object 2468e5c31af7Sopenharmony_ci or a slink:VkDeviceMemory. 2469e5c31af7Sopenharmony_ci * ename:VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT specifies this event 2470e5c31af7Sopenharmony_ci corresponds to the deallocation of an internally-allocated device memory 2471e5c31af7Sopenharmony_ci object or a slink:VkDeviceMemory. 2472e5c31af7Sopenharmony_ci * ename:VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT specifies this event 2473e5c31af7Sopenharmony_ci corresponds to the import of an external memory object. 2474e5c31af7Sopenharmony_ci * ename:VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT specifies this 2475e5c31af7Sopenharmony_ci event is the release of an imported external memory object. 2476e5c31af7Sopenharmony_ci * ename:VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT specifies 2477e5c31af7Sopenharmony_ci this event corresponds to the failed allocation of an internal device 2478e5c31af7Sopenharmony_ci memory object or a slink:VkDeviceMemory. 2479e5c31af7Sopenharmony_ci-- 2480e5c31af7Sopenharmony_ciendif::VK_EXT_device_memory_report[] 2481e5c31af7Sopenharmony_ci 2482e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_private_data[] 2483e5c31af7Sopenharmony_ci[open,refpage='VkDevicePrivateDataCreateInfo',desc='Reserve private data slots',type='structs',alias='VkDevicePrivateDataCreateInfoEXT'] 2484e5c31af7Sopenharmony_ci-- 2485e5c31af7Sopenharmony_ciTo reserve private data storage slots, add a 2486e5c31af7Sopenharmony_cislink:VkDevicePrivateDataCreateInfo structure to the pname:pNext chain of 2487e5c31af7Sopenharmony_cithe slink:VkDeviceCreateInfo structure. 2488e5c31af7Sopenharmony_ciReserving slots in this manner is not strictly necessary, but doing so may: 2489e5c31af7Sopenharmony_ciimprove performance. 2490e5c31af7Sopenharmony_ci 2491e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkDevicePrivateDataCreateInfo.adoc[] 2492e5c31af7Sopenharmony_ci 2493e5c31af7Sopenharmony_ciifdef::VK_EXT_private_data[] 2494e5c31af7Sopenharmony_cior the equivalent 2495e5c31af7Sopenharmony_ci 2496e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkDevicePrivateDataCreateInfoEXT.adoc[] 2497e5c31af7Sopenharmony_ciendif::VK_EXT_private_data[] 2498e5c31af7Sopenharmony_ci 2499e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 2500e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 2501e5c31af7Sopenharmony_ci structure. 2502e5c31af7Sopenharmony_ci * pname:privateDataSlotRequestCount is the amount of slots to reserve. 2503e5c31af7Sopenharmony_ci 2504e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkDevicePrivateDataCreateInfo.adoc[] 2505e5c31af7Sopenharmony_ci-- 2506e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_private_data[] 2507e5c31af7Sopenharmony_ci 2508e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 2509e5c31af7Sopenharmony_ci 2510e5c31af7Sopenharmony_ci[open,refpage='VkDeviceObjectReservationCreateInfo',desc='Request memory reservation',type='structs'] 2511e5c31af7Sopenharmony_ci-- 2512e5c31af7Sopenharmony_ciData structures for objects are reserved by the implementation at device 2513e5c31af7Sopenharmony_cicreation time. 2514e5c31af7Sopenharmony_ciThe application must: provide upper bounds on numbers of objects and other 2515e5c31af7Sopenharmony_cilimits at device creation time. 2516e5c31af7Sopenharmony_ciTo reserve data structures for use by objects created from this device, add 2517e5c31af7Sopenharmony_cia slink:VkDeviceObjectReservationCreateInfo structure to the pname:pNext 2518e5c31af7Sopenharmony_cichain of the slink:VkDeviceCreateInfo structure. 2519e5c31af7Sopenharmony_ci 2520e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkDeviceObjectReservationCreateInfo.adoc[] 2521e5c31af7Sopenharmony_ci 2522e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 2523e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 2524e5c31af7Sopenharmony_ci structure. 2525e5c31af7Sopenharmony_ci * pname:pipelineCacheCreateInfoCount is the length of the 2526e5c31af7Sopenharmony_ci pname:pPipelineCacheCreateInfos array. 2527e5c31af7Sopenharmony_ci * pname:pPipelineCacheCreateInfos is a pointer to an array of 2528e5c31af7Sopenharmony_ci slink:VkPipelineCacheCreateInfo structures that contain the creation 2529e5c31af7Sopenharmony_ci information of the pipeline caches that can: be created on this device. 2530e5c31af7Sopenharmony_ci * pname:pipelinePoolSizeCount is the length of the 2531e5c31af7Sopenharmony_ci pname:pPipelinePoolSizes array. 2532e5c31af7Sopenharmony_ci * pname:pPipelinePoolSizes is a pointer to an array of 2533e5c31af7Sopenharmony_ci slink:VkPipelinePoolSize structures requesting memory be reserved for 2534e5c31af7Sopenharmony_ci pipelines of the specified sizes. 2535e5c31af7Sopenharmony_ci * pname:semaphoreRequestCount is the requested maximum number of 2536e5c31af7Sopenharmony_ci sname:VkSemaphore objects that can: exist at the same time. 2537e5c31af7Sopenharmony_ci * pname:commandBufferRequestCount is the requested maximum number of 2538e5c31af7Sopenharmony_ci sname:VkCommandBuffer objects that can: be reserved by all 2539e5c31af7Sopenharmony_ci sname:VkCommandPool objects. 2540e5c31af7Sopenharmony_ci * pname:fenceRequestCount is the requested maximum number of sname:VkFence 2541e5c31af7Sopenharmony_ci objects that can: exist at the same time. 2542e5c31af7Sopenharmony_ci * pname:deviceMemoryRequestCount is the requested maximum number of 2543e5c31af7Sopenharmony_ci sname:VkDeviceMemory objects that can: exist at the same time. 2544e5c31af7Sopenharmony_ci * pname:bufferRequestCount is the requested maximum number of 2545e5c31af7Sopenharmony_ci sname:VkBuffer objects that can: exist at the same time. 2546e5c31af7Sopenharmony_ci * pname:imageRequestCount is the requested maximum number of sname:VkImage 2547e5c31af7Sopenharmony_ci objects that can: exist at the same time. 2548e5c31af7Sopenharmony_ci * pname:eventRequestCount is the requested maximum number of sname:VkEvent 2549e5c31af7Sopenharmony_ci objects that can: exist at the same time. 2550e5c31af7Sopenharmony_ci * pname:queryPoolRequestCount is the requested maximum number of 2551e5c31af7Sopenharmony_ci sname:VkQueryPool objects that can: exist at the same time. 2552e5c31af7Sopenharmony_ci * pname:bufferViewRequestCount is the requested maximum number of 2553e5c31af7Sopenharmony_ci sname:VkBufferView objects that can: exist at the same time. 2554e5c31af7Sopenharmony_ci * pname:imageViewRequestCount is the requested maximum number of 2555e5c31af7Sopenharmony_ci sname:VkImageView objects that can: exist at the same time. 2556e5c31af7Sopenharmony_ci * pname:layeredImageViewRequestCount is the requested maximum number 2557e5c31af7Sopenharmony_ci sname:VkImageView objects created with 2558e5c31af7Sopenharmony_ci slink:VkImageViewCreateInfo::pname:subresourceRange.layerCount greater 2559e5c31af7Sopenharmony_ci than `1` that can: exist at the same time. 2560e5c31af7Sopenharmony_ci * pname:pipelineCacheRequestCount is the requested maximum number of 2561e5c31af7Sopenharmony_ci sname:VkPipelineCache objects that can: exist at the same time. 2562e5c31af7Sopenharmony_ci * pname:pipelineLayoutRequestCount is the requested maximum number of 2563e5c31af7Sopenharmony_ci sname:VkPipelineLayout objects that can: exist at the same time. 2564e5c31af7Sopenharmony_ci * pname:renderPassRequestCount is the requested maximum number of 2565e5c31af7Sopenharmony_ci sname:VkRenderPass objects that can: exist at the same time. 2566e5c31af7Sopenharmony_ci * pname:graphicsPipelineRequestCount is the requested maximum number of 2567e5c31af7Sopenharmony_ci graphics sname:VkPipeline objects that can: exist at the same time. 2568e5c31af7Sopenharmony_ci * pname:computePipelineRequestCount is the requested maximum number of 2569e5c31af7Sopenharmony_ci compute sname:VkPipeline objects that can: exist at the same time. 2570e5c31af7Sopenharmony_ci * pname:descriptorSetLayoutRequestCount is the requested maximum number of 2571e5c31af7Sopenharmony_ci sname:VkDescriptorSetLayout objects that can: exist at the same time. 2572e5c31af7Sopenharmony_ci * pname:samplerRequestCount is the requested maximum number of 2573e5c31af7Sopenharmony_ci sname:VkSampler objects that can: exist at the same time. 2574e5c31af7Sopenharmony_ci * pname:descriptorPoolRequestCount is the requested maximum number of 2575e5c31af7Sopenharmony_ci sname:VkDescriptorPool objects that can: exist at the same time. 2576e5c31af7Sopenharmony_ci * pname:descriptorSetRequestCount is the requested maximum number of 2577e5c31af7Sopenharmony_ci sname:VkDescriptorSet objects that can: exist at the same time. 2578e5c31af7Sopenharmony_ci * pname:framebufferRequestCount is the requested maximum number of 2579e5c31af7Sopenharmony_ci sname:VkFramebuffer objects that can: exist at the same time. 2580e5c31af7Sopenharmony_ci * pname:commandPoolRequestCount is the requested maximum number of 2581e5c31af7Sopenharmony_ci sname:VkCommandPool objects that can: exist at the same time. 2582e5c31af7Sopenharmony_ci * pname:samplerYcbcrConversionRequestCount is the requested maximum number 2583e5c31af7Sopenharmony_ci of sname:VkSamplerYcbcrConversion objects that can: exist at the same 2584e5c31af7Sopenharmony_ci time. 2585e5c31af7Sopenharmony_ci * pname:surfaceRequestCount is deprecated and implementations must: ignore 2586e5c31af7Sopenharmony_ci it. 2587e5c31af7Sopenharmony_ci * pname:swapchainRequestCount is the requested maximum number of 2588e5c31af7Sopenharmony_ci sname:VkSwapchainKHR objects that can: exist at the same time. 2589e5c31af7Sopenharmony_ci * pname:displayModeRequestCount is deprecated and implementations must: 2590e5c31af7Sopenharmony_ci ignore it. 2591e5c31af7Sopenharmony_ci * pname:subpassDescriptionRequestCount is the requested maximum sum of all 2592e5c31af7Sopenharmony_ci slink:VkRenderPassCreateInfo2::pname:subpassCount values across all 2593e5c31af7Sopenharmony_ci sname:VkRenderPass objects that can: exist at the same time. 2594e5c31af7Sopenharmony_ci * pname:attachmentDescriptionRequestCount is the requested maximum sum of 2595e5c31af7Sopenharmony_ci all slink:VkRenderPassCreateInfo2::pname:attachmentCount values across 2596e5c31af7Sopenharmony_ci all sname:VkRenderPass objects that can: exist at the same time. 2597e5c31af7Sopenharmony_ci * pname:descriptorSetLayoutBindingRequestCount is the requested maximum 2598e5c31af7Sopenharmony_ci sum of all slink:VkDescriptorSetLayoutCreateInfo::pname:bindingCount 2599e5c31af7Sopenharmony_ci values across all sname:VkDescriptorSetLayout objects that can: exist at 2600e5c31af7Sopenharmony_ci the same time. 2601e5c31af7Sopenharmony_ci * pname:descriptorSetLayoutBindingLimit is one greater than the maximum 2602e5c31af7Sopenharmony_ci value of slink:VkDescriptorSetLayoutBinding::pname:binding that can: be 2603e5c31af7Sopenharmony_ci used. 2604e5c31af7Sopenharmony_ci * pname:maxImageViewMipLevels is the maximum value of 2605e5c31af7Sopenharmony_ci slink:VkImageViewCreateInfo::pname:subresourceRange.levelCount that can: 2606e5c31af7Sopenharmony_ci be used. 2607e5c31af7Sopenharmony_ci * pname:maxImageViewArrayLayers is the maximum value of 2608e5c31af7Sopenharmony_ci slink:VkImageViewCreateInfo::pname:subresourceRange.layerCount that can: 2609e5c31af7Sopenharmony_ci be used. 2610e5c31af7Sopenharmony_ci * pname:maxLayeredImageViewMipLevels is the maximum value of 2611e5c31af7Sopenharmony_ci slink:VkImageViewCreateInfo::pname:subresourceRange.levelCount that can: 2612e5c31af7Sopenharmony_ci be used when 2613e5c31af7Sopenharmony_ci slink:VkImageViewCreateInfo::pname:subresourceRange.layerCount is 2614e5c31af7Sopenharmony_ci greater than `1`. 2615e5c31af7Sopenharmony_ci * pname:maxOcclusionQueriesPerPool is the requested maximum number of 2616e5c31af7Sopenharmony_ci ename:VK_QUERY_TYPE_OCCLUSION queries that can: exist at the same time 2617e5c31af7Sopenharmony_ci in a single query pool. 2618e5c31af7Sopenharmony_ci * pname:maxPipelineStatisticsQueriesPerPool is the requested maximum 2619e5c31af7Sopenharmony_ci number of ename:VK_QUERY_TYPE_PIPELINE_STATISTICS queries that can: 2620e5c31af7Sopenharmony_ci exist at the same time in a single query pool. 2621e5c31af7Sopenharmony_ci * pname:maxTimestampQueriesPerPool is the requested maximum number of 2622e5c31af7Sopenharmony_ci ename:VK_QUERY_TYPE_TIMESTAMP queries that can: exist at the same time 2623e5c31af7Sopenharmony_ci in a single query pool. 2624e5c31af7Sopenharmony_ci * pname:maxImmutableSamplersPerDescriptorSetLayout is the requested 2625e5c31af7Sopenharmony_ci maximum number of immutable samplers that can be used across all 2626e5c31af7Sopenharmony_ci bindings in a descriptor set layout. 2627e5c31af7Sopenharmony_ci 2628e5c31af7Sopenharmony_ciMultiple sname:VkDeviceObjectReservationCreateInfo structures can: be 2629e5c31af7Sopenharmony_cichained together. 2630e5c31af7Sopenharmony_ciThe maximum value from all instances of pname:maxImageViewMipLevels, 2631e5c31af7Sopenharmony_cipname:maxImageViewArrayLayers, pname:maxLayeredImageViewMipLevels, 2632e5c31af7Sopenharmony_cipname:descriptorSetLayoutBindingLimit, pname:maxOcclusionQueriesPerPool, 2633e5c31af7Sopenharmony_cipname:maxPipelineStatisticsQueriesPerPool, pname:maxTimestampQueriesPerPool, 2634e5c31af7Sopenharmony_ciand pname:maxImmutableSamplersPerDescriptorSetLayout will be reserved. 2635e5c31af7Sopenharmony_ciFor the remaining members, the sum of the requested resources from all 2636e5c31af7Sopenharmony_ciinstances of sname:VkDeviceObjectReservationCreateInfo will be reserved. 2637e5c31af7Sopenharmony_ci 2638e5c31af7Sopenharmony_ciIf 2639e5c31af7Sopenharmony_cislink:VkPhysicalDeviceVulkanSC10Properties::<<limits-deviceDestroyFreesMemory, 2640e5c31af7Sopenharmony_cipname:deviceDestroyFreesMemory>> is ename:VK_TRUE, the reserved memory is 2641e5c31af7Sopenharmony_cireturned to the system when the device is destroyed, otherwise it may: not 2642e5c31af7Sopenharmony_cibe returned to the system until the process is terminated. 2643e5c31af7Sopenharmony_ci 2644e5c31af7Sopenharmony_ciifdef::hidden[] 2645e5c31af7Sopenharmony_ci// tag::scaddition[] 2646e5c31af7Sopenharmony_ci * slink:VkDeviceObjectReservationCreateInfo <<SCID-4>> 2647e5c31af7Sopenharmony_ci// end::scaddition[] 2648e5c31af7Sopenharmony_ciendif::hidden[] 2649e5c31af7Sopenharmony_ci 2650e5c31af7Sopenharmony_ci.Valid Usage 2651e5c31af7Sopenharmony_ci**** 2652e5c31af7Sopenharmony_ci * [[VUID-VkDeviceObjectReservationCreateInfo-maxImageViewArrayLayers-05014]] 2653e5c31af7Sopenharmony_ci pname:maxImageViewArrayLayers must: be less than or equal to 2654e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceLimits::pname:maxImageArrayLayers 2655e5c31af7Sopenharmony_ci * [[VUID-VkDeviceObjectReservationCreateInfo-maxImageViewMipLevels-05015]] 2656e5c31af7Sopenharmony_ci pname:maxImageViewMipLevels must: be less than or equal to the number of 2657e5c31af7Sopenharmony_ci levels in the complete mipmap chain based on the maximum of 2658e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceLimits::pname:maxImageDimension1D, 2659e5c31af7Sopenharmony_ci pname:maxImageDimension2D, pname:maxImageDimension3D, and 2660e5c31af7Sopenharmony_ci pname:maxImageDimensionCube 2661e5c31af7Sopenharmony_ci * [[VUID-VkDeviceObjectReservationCreateInfo-maxLayeredImageViewMipLevels-05016]] 2662e5c31af7Sopenharmony_ci pname:maxLayeredImageViewMipLevels must: be less than or equal to the 2663e5c31af7Sopenharmony_ci number of levels in the complete mipmap chain based on 2664e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceLimits::pname:maxImageDimension1D, 2665e5c31af7Sopenharmony_ci pname:maxImageDimension2D, pname:maxImageDimension3D, and 2666e5c31af7Sopenharmony_ci pname:maxImageDimensionCube 2667e5c31af7Sopenharmony_ci * [[VUID-VkDeviceObjectReservationCreateInfo-subpassDescriptionRequestCount-05017]] 2668e5c31af7Sopenharmony_ci pname:subpassDescriptionRequestCount must: be less than or equal to 2669e5c31af7Sopenharmony_ci pname:renderPassRequestCount multiplied by 2670e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceVulkanSC10Properties::pname:maxRenderPassSubpasses 2671e5c31af7Sopenharmony_ci * [[VUID-VkDeviceObjectReservationCreateInfo-attachmentDescriptionRequestCount-05018]] 2672e5c31af7Sopenharmony_ci pname:attachmentDescriptionRequestCount must: be less than or equal to 2673e5c31af7Sopenharmony_ci pname:renderPassRequestCount multiplied by 2674e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceVulkanSC10Properties::pname:maxFramebufferAttachments 2675e5c31af7Sopenharmony_ci**** 2676e5c31af7Sopenharmony_ci 2677e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkDeviceObjectReservationCreateInfo.adoc[] 2678e5c31af7Sopenharmony_ci-- 2679e5c31af7Sopenharmony_ci 2680e5c31af7Sopenharmony_ciifdef::VK_KHR_performance_query[] 2681e5c31af7Sopenharmony_ci[open,refpage='VkPerformanceQueryReservationInfoKHR',desc='Request memory reservation',type='structs'] 2682e5c31af7Sopenharmony_ci-- 2683e5c31af7Sopenharmony_ciIf the pname:pNext chain of slink:VkDeviceObjectReservationCreateInfo 2684e5c31af7Sopenharmony_ciincludes a slink:VkPerformanceQueryReservationInfoKHR structure, then the 2685e5c31af7Sopenharmony_cistructure indicates upper bounds on the number of performance queries that 2686e5c31af7Sopenharmony_cican: exist at the same time in a query pool. 2687e5c31af7Sopenharmony_ci 2688e5c31af7Sopenharmony_ciThe sname:VkPerformanceQueryReservationInfoKHR structure is defined as: 2689e5c31af7Sopenharmony_ci 2690e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPerformanceQueryReservationInfoKHR.adoc[] 2691e5c31af7Sopenharmony_ci 2692e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 2693e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 2694e5c31af7Sopenharmony_ci structure. 2695e5c31af7Sopenharmony_ci * pname:maxPerformanceQueriesPerPool is the requested maximum number of 2696e5c31af7Sopenharmony_ci ename:VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR queries that can: exist at the 2697e5c31af7Sopenharmony_ci same time in a single query pool. 2698e5c31af7Sopenharmony_ci 2699e5c31af7Sopenharmony_ciIf the sname:VkDeviceObjectReservationCreateInfo::pname:pNext chain does not 2700e5c31af7Sopenharmony_ciinclude this structure, then pname:maxPerformanceQueriesPerPool defaults to 2701e5c31af7Sopenharmony_ci`0`. 2702e5c31af7Sopenharmony_ci 2703e5c31af7Sopenharmony_ciMultiple sname:VkPerformanceQueryReservationInfoKHR structures can be 2704e5c31af7Sopenharmony_cichained together. 2705e5c31af7Sopenharmony_ciThe maximum value from all instances of pname:maxPerformanceQueriesPerPool 2706e5c31af7Sopenharmony_ciwill be reserved. 2707e5c31af7Sopenharmony_ci 2708e5c31af7Sopenharmony_ciifdef::hidden[] 2709e5c31af7Sopenharmony_ci// tag::scaddition[] 2710e5c31af7Sopenharmony_ciifdef::VK_KHR_performance_query[] 2711e5c31af7Sopenharmony_ci * slink:VkPerformanceQueryReservationInfoKHR <<SCID-4>> 2712e5c31af7Sopenharmony_ciendif::VK_KHR_performance_query[] 2713e5c31af7Sopenharmony_ci// end::scaddition[] 2714e5c31af7Sopenharmony_ciendif::hidden[] 2715e5c31af7Sopenharmony_ci 2716e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPerformanceQueryReservationInfoKHR.adoc[] 2717e5c31af7Sopenharmony_ci-- 2718e5c31af7Sopenharmony_ciendif::VK_KHR_performance_query[] 2719e5c31af7Sopenharmony_ci 2720e5c31af7Sopenharmony_ciifdef::VK_NV_external_sci_sync2[] 2721e5c31af7Sopenharmony_ci[open,refpage='VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV',desc='Request memory reservation',type='structs'] 2722e5c31af7Sopenharmony_ci-- 2723e5c31af7Sopenharmony_ciIf the pname:pNext chain of slink:VkDeviceObjectReservationCreateInfo 2724e5c31af7Sopenharmony_ciincludes a slink:VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV 2725e5c31af7Sopenharmony_cistructure, then the structure indicates the maximum number of 2726e5c31af7Sopenharmony_cislink:VkSemaphoreSciSyncPoolNV objects that can: exist at the same time. 2727e5c31af7Sopenharmony_ci 2728e5c31af7Sopenharmony_ciThe sname:VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV structure is 2729e5c31af7Sopenharmony_cidefined as: 2730e5c31af7Sopenharmony_ci 2731e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV.adoc[] 2732e5c31af7Sopenharmony_ci 2733e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 2734e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 2735e5c31af7Sopenharmony_ci structure. 2736e5c31af7Sopenharmony_ci * pname:semaphoreSciSyncPoolRequestCount is the requested maximum number 2737e5c31af7Sopenharmony_ci of slink:VkSemaphoreSciSyncPoolNV objects that can: exist at the same 2738e5c31af7Sopenharmony_ci time. 2739e5c31af7Sopenharmony_ci 2740e5c31af7Sopenharmony_ciIf the sname:VkDeviceObjectReservationCreateInfo::pname:pNext chain does not 2741e5c31af7Sopenharmony_ciinclude this structure, then pname:semaphoreSciSyncPoolRequestCount defaults 2742e5c31af7Sopenharmony_cito `0`. 2743e5c31af7Sopenharmony_ci 2744e5c31af7Sopenharmony_ciMultiple sname:VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV 2745e5c31af7Sopenharmony_cistructures can: be chained together. 2746e5c31af7Sopenharmony_ciThe sum of the pname:semaphoreSciSyncPoolRequestCount values from all 2747e5c31af7Sopenharmony_ciinstances of sname:VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV will 2748e5c31af7Sopenharmony_cibe reserved. 2749e5c31af7Sopenharmony_ci 2750e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV.adoc[] 2751e5c31af7Sopenharmony_ci-- 2752e5c31af7Sopenharmony_ciendif::VK_NV_external_sci_sync2[] 2753e5c31af7Sopenharmony_ci 2754e5c31af7Sopenharmony_ci[open,refpage='VkPipelinePoolSize',desc='Request memory for pipelines',type='structs'] 2755e5c31af7Sopenharmony_ci-- 2756e5c31af7Sopenharmony_ciMemory for pipelines is reserved by the implementation at device creation 2757e5c31af7Sopenharmony_citime. 2758e5c31af7Sopenharmony_ciThe application specifies sizes to be reserved and a count for each size, 2759e5c31af7Sopenharmony_ciand when a pipeline is created the application specifies which size to use. 2760e5c31af7Sopenharmony_ci 2761e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPipelinePoolSize.adoc[] 2762e5c31af7Sopenharmony_ci 2763e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 2764e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 2765e5c31af7Sopenharmony_ci structure. 2766e5c31af7Sopenharmony_ci * pname:poolEntrySize is the size to reserve for each entry. 2767e5c31af7Sopenharmony_ci * pname:poolEntryCount is the number of entries to reserve. 2768e5c31af7Sopenharmony_ci 2769e5c31af7Sopenharmony_ciifdef::hidden[] 2770e5c31af7Sopenharmony_ci// tag::scaddition[] 2771e5c31af7Sopenharmony_ci * slink:VkPipelinePoolSize <<SCID-4>> 2772e5c31af7Sopenharmony_ci// end::scaddition[] 2773e5c31af7Sopenharmony_ciendif::hidden[] 2774e5c31af7Sopenharmony_ci 2775e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPipelinePoolSize.adoc[] 2776e5c31af7Sopenharmony_ci-- 2777e5c31af7Sopenharmony_ci 2778e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 2779e5c31af7Sopenharmony_ci 2780e5c31af7Sopenharmony_ciifdef::VK_ARM_scheduling_controls[] 2781e5c31af7Sopenharmony_ciThe number of shader cores used by all the queues of a device can: be 2782e5c31af7Sopenharmony_cicontrolled by adding a sname:VkDeviceQueueShaderCoreControlCreateInfoARM 2783e5c31af7Sopenharmony_cistructure to the pname:pNext chain of the slink:VkDeviceCreateInfo 2784e5c31af7Sopenharmony_cistructure. 2785e5c31af7Sopenharmony_ciendif::VK_ARM_scheduling_controls[] 2786e5c31af7Sopenharmony_ci 2787e5c31af7Sopenharmony_ci[[devsandqueues-use]] 2788e5c31af7Sopenharmony_ci=== Device Use 2789e5c31af7Sopenharmony_ci 2790e5c31af7Sopenharmony_ciThe following is a high-level list of sname:VkDevice uses along with 2791e5c31af7Sopenharmony_cireferences on where to find more information: 2792e5c31af7Sopenharmony_ci 2793e5c31af7Sopenharmony_ci * Creation of queues. 2794e5c31af7Sopenharmony_ci See the <<devsandqueues-queues,Queues>> section below for further 2795e5c31af7Sopenharmony_ci details. 2796e5c31af7Sopenharmony_ci * Creation and tracking of various synchronization constructs. 2797e5c31af7Sopenharmony_ci See <<synchronization,Synchronization and Cache Control>> for further 2798e5c31af7Sopenharmony_ci details. 2799e5c31af7Sopenharmony_ci * Allocating, freeing, and managing memory. 2800e5c31af7Sopenharmony_ci See <<memory,Memory Allocation>> and <<resources,Resource Creation>> for 2801e5c31af7Sopenharmony_ci further details. 2802e5c31af7Sopenharmony_ci * Creation and destruction of command buffers and command buffer pools. 2803e5c31af7Sopenharmony_ci See <<commandbuffers,Command Buffers>> for further details. 2804e5c31af7Sopenharmony_ci * Creation, destruction, and management of graphics state. 2805e5c31af7Sopenharmony_ci See <<pipelines,Pipelines>> and <<descriptorsets,Resource Descriptors>>, 2806e5c31af7Sopenharmony_ci among others, for further details. 2807e5c31af7Sopenharmony_ci 2808e5c31af7Sopenharmony_ci 2809e5c31af7Sopenharmony_ci[[devsandqueues-lost-device]] 2810e5c31af7Sopenharmony_ci=== Lost Device 2811e5c31af7Sopenharmony_ci 2812e5c31af7Sopenharmony_ciA logical device may: become _lost_ for a number of implementation-specific 2813e5c31af7Sopenharmony_cireasons, indicating that pending and future command execution may: fail and 2814e5c31af7Sopenharmony_cicause resources and backing memory to become undefined:. 2815e5c31af7Sopenharmony_ci 2816e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 2817e5c31af7Sopenharmony_ci[NOTE] 2818e5c31af7Sopenharmony_ci.Note 2819e5c31af7Sopenharmony_ci==== 2820e5c31af7Sopenharmony_ci<<fault-handling>> can be used by the implementation to provide more 2821e5c31af7Sopenharmony_ciinformation on the cause of a device becoming _lost_. 2822e5c31af7Sopenharmony_ciAllowing applications to take appropriate corrective behavior for the cause 2823e5c31af7Sopenharmony_ciof the device lost. 2824e5c31af7Sopenharmony_ci==== 2825e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 2826e5c31af7Sopenharmony_ci 2827e5c31af7Sopenharmony_ci[NOTE] 2828e5c31af7Sopenharmony_ci.Note 2829e5c31af7Sopenharmony_ci==== 2830e5c31af7Sopenharmony_ciTypical reasons for device loss will include things like execution timing 2831e5c31af7Sopenharmony_ciout (to prevent denial of service), power management events, platform 2832e5c31af7Sopenharmony_ciresource management, implementation errors. 2833e5c31af7Sopenharmony_ci 2834e5c31af7Sopenharmony_ciApplications not adhering to <<fundamentals-validusage, valid usage>> may 2835e5c31af7Sopenharmony_cialso result in device loss being reported, however this is not guaranteed. 2836e5c31af7Sopenharmony_ciEven if device loss is reported, the system may be in an unrecoverable 2837e5c31af7Sopenharmony_cistate, and further usage of the API is still considered invalid. 2838e5c31af7Sopenharmony_ci==== 2839e5c31af7Sopenharmony_ci 2840e5c31af7Sopenharmony_ciWhen this happens, certain commands will return ename:VK_ERROR_DEVICE_LOST. 2841e5c31af7Sopenharmony_ciAfter any such event, the logical device is considered _lost_. 2842e5c31af7Sopenharmony_ciIt is not possible to reset the logical device to a non-lost state, however 2843e5c31af7Sopenharmony_cithe lost state is specific to a logical device (sname:VkDevice), and the 2844e5c31af7Sopenharmony_cicorresponding physical device (sname:VkPhysicalDevice) may: be otherwise 2845e5c31af7Sopenharmony_ciunaffected. 2846e5c31af7Sopenharmony_ci 2847e5c31af7Sopenharmony_ciIn some cases, the physical device may: also be lost, and attempting to 2848e5c31af7Sopenharmony_cicreate a new logical device will fail, returning ename:VK_ERROR_DEVICE_LOST. 2849e5c31af7Sopenharmony_ciThis is usually indicative of a problem with the underlying implementation, 2850e5c31af7Sopenharmony_cior its connection to the host. 2851e5c31af7Sopenharmony_ciIf the physical device has not been lost, and a new logical device is 2852e5c31af7Sopenharmony_cisuccessfully created from that physical device, it must: be in the non-lost 2853e5c31af7Sopenharmony_cistate. 2854e5c31af7Sopenharmony_ci 2855e5c31af7Sopenharmony_ci[NOTE] 2856e5c31af7Sopenharmony_ci.Note 2857e5c31af7Sopenharmony_ci==== 2858e5c31af7Sopenharmony_ciWhilst logical device loss may: be recoverable, in the case of physical 2859e5c31af7Sopenharmony_cidevice loss, it is unlikely that an application will be able to recover 2860e5c31af7Sopenharmony_ciunless additional, unaffected physical devices exist on the system. 2861e5c31af7Sopenharmony_ciThe error is largely informational and intended only to inform the user that 2862e5c31af7Sopenharmony_cia platform issue has occurred, and should: be investigated further. 2863e5c31af7Sopenharmony_ciFor example, underlying hardware may: have developed a fault or become 2864e5c31af7Sopenharmony_ciphysically disconnected from the rest of the system. 2865e5c31af7Sopenharmony_ciIn many cases, physical device loss may: cause other more serious issues 2866e5c31af7Sopenharmony_cisuch as the operating system crashing; in which case it may: not be reported 2867e5c31af7Sopenharmony_civia the Vulkan API. 2868e5c31af7Sopenharmony_ci==== 2869e5c31af7Sopenharmony_ci 2870e5c31af7Sopenharmony_ciWhen a device is lost, its child objects are not implicitly destroyed and 2871e5c31af7Sopenharmony_citheir handles are still valid. 2872e5c31af7Sopenharmony_ciThose objects must: still be destroyed before their parents or the device 2873e5c31af7Sopenharmony_cican: be destroyed (see the <<fundamentals-objectmodel-lifetime,Object 2874e5c31af7Sopenharmony_ciLifetime>> section). 2875e5c31af7Sopenharmony_ciThe host address space corresponding to device memory mapped using 2876e5c31af7Sopenharmony_ciflink:vkMapMemory is still valid, and host memory accesses to these mapped 2877e5c31af7Sopenharmony_ciregions are still valid, but the contents are undefined:. 2878e5c31af7Sopenharmony_ciIt is still legal to call any API command on the device and child objects. 2879e5c31af7Sopenharmony_ci 2880e5c31af7Sopenharmony_ciOnce a device is lost, command execution may: fail, and certain commands 2881e5c31af7Sopenharmony_cithat return a elink:VkResult may: return ename:VK_ERROR_DEVICE_LOST. 2882e5c31af7Sopenharmony_ciThese commands can be identified by the inclusion of 2883e5c31af7Sopenharmony_ciename:VK_ERROR_DEVICE_LOST in the Return Codes section for each command. 2884e5c31af7Sopenharmony_ciCommands that do not allow runtime errors must: still operate correctly for 2885e5c31af7Sopenharmony_civalid usage and, if applicable, return valid data. 2886e5c31af7Sopenharmony_ci 2887e5c31af7Sopenharmony_ciCommands that wait indefinitely for device execution (namely 2888e5c31af7Sopenharmony_ciflink:vkDeviceWaitIdle, flink:vkQueueWaitIdle, flink:vkWaitForFences 2889e5c31af7Sopenharmony_ciifdef::VK_KHR_swapchain[] 2890e5c31af7Sopenharmony_cior flink:vkAcquireNextImageKHR 2891e5c31af7Sopenharmony_ciendif::VK_KHR_swapchain[] 2892e5c31af7Sopenharmony_ciwith a maximum pname:timeout, and flink:vkGetQueryPoolResults with the 2893e5c31af7Sopenharmony_ciename:VK_QUERY_RESULT_WAIT_BIT bit set in pname:flags) must: return in 2894e5c31af7Sopenharmony_cifinite time even in the case of a lost device, and return either 2895e5c31af7Sopenharmony_ciename:VK_SUCCESS or ename:VK_ERROR_DEVICE_LOST. 2896e5c31af7Sopenharmony_ciFor any command that may: return ename:VK_ERROR_DEVICE_LOST, for the purpose 2897e5c31af7Sopenharmony_ciof determining whether a command buffer is in the 2898e5c31af7Sopenharmony_ci<<commandbuffers-lifecycle, pending state>>, or whether resources are 2899e5c31af7Sopenharmony_ciconsidered in-use by the device, a return value of 2900e5c31af7Sopenharmony_ciename:VK_ERROR_DEVICE_LOST is equivalent to ename:VK_SUCCESS. 2901e5c31af7Sopenharmony_ci 2902e5c31af7Sopenharmony_ciifdef::VK_KHR_maintenance5[] 2903e5c31af7Sopenharmony_ciIf a device was created with the <<features-maintenance5, 2904e5c31af7Sopenharmony_cipname:maintenance5>> feature enabled, and any device command returns 2905e5c31af7Sopenharmony_ciename:VK_ERROR_DEVICE_LOST, then all device commands for which 2906e5c31af7Sopenharmony_ciename:VK_ERROR_DEVICE_LOST is a valid return value and which happen-after it 2907e5c31af7Sopenharmony_cion the same host thread must: return ename:VK_ERROR_DEVICE_LOST. 2908e5c31af7Sopenharmony_ci 2909e5c31af7Sopenharmony_ciDevice commands executing on other threads must: begin returning 2910e5c31af7Sopenharmony_ciename:VK_ERROR_DEVICE_LOST within finite time. 2911e5c31af7Sopenharmony_ciendif::VK_KHR_maintenance5[] 2912e5c31af7Sopenharmony_ci 2913e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1,VK_KHR_external_memory[] 2914e5c31af7Sopenharmony_ci 2915e5c31af7Sopenharmony_ciThe content of any external memory objects that have been exported from or 2916e5c31af7Sopenharmony_ciimported to a lost device become undefined:. 2917e5c31af7Sopenharmony_ciObjects on other logical devices or in other APIs which are associated with 2918e5c31af7Sopenharmony_cithe same underlying memory resource as the external memory objects on the 2919e5c31af7Sopenharmony_cilost device are unaffected other than their content becoming undefined:. 2920e5c31af7Sopenharmony_ciThe layout of subresources of images on other logical devices that are bound 2921e5c31af7Sopenharmony_cito sname:VkDeviceMemory objects associated with the same underlying memory 2922e5c31af7Sopenharmony_ciresources as external memory objects on the lost device becomes 2923e5c31af7Sopenharmony_ciename:VK_IMAGE_LAYOUT_UNDEFINED. 2924e5c31af7Sopenharmony_ci 2925e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1,VK_KHR_external_memory[] 2926e5c31af7Sopenharmony_ci 2927e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1,VK_KHR_external_semaphore[] 2928e5c31af7Sopenharmony_ci 2929e5c31af7Sopenharmony_ciThe state of sname:VkSemaphore objects on other logical devices created by 2930e5c31af7Sopenharmony_ci<<synchronization-semaphores-importing,importing a semaphore payload>> with 2931e5c31af7Sopenharmony_citemporary permanence which was exported from the lost device is undefined:. 2932e5c31af7Sopenharmony_ciThe state of sname:VkSemaphore objects on other logical devices that 2933e5c31af7Sopenharmony_cipermanently share a semaphore payload with a sname:VkSemaphore object on the 2934e5c31af7Sopenharmony_cilost device is undefined:, and remains undefined: following any subsequent 2935e5c31af7Sopenharmony_cisignal operations. 2936e5c31af7Sopenharmony_ciImplementations must: ensure pending and subsequently submitted wait 2937e5c31af7Sopenharmony_cioperations on such semaphores behave as defined in 2938e5c31af7Sopenharmony_ci<<synchronization-semaphores-waiting-state,Semaphore State Requirements For 2939e5c31af7Sopenharmony_ciWait Operations>> for external semaphores not in a valid state for a wait 2940e5c31af7Sopenharmony_cioperation. 2941e5c31af7Sopenharmony_ci 2942e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1,VK_KHR_external_semaphore[] 2943e5c31af7Sopenharmony_ci 2944e5c31af7Sopenharmony_ciifdef::editing-notes[] 2945e5c31af7Sopenharmony_ci[NOTE] 2946e5c31af7Sopenharmony_ci.editing-note 2947e5c31af7Sopenharmony_ci==== 2948e5c31af7Sopenharmony_ciTODO (piman) - I do not think we are very clear about what "`in-use by the 2949e5c31af7Sopenharmony_cidevice`" means. 2950e5c31af7Sopenharmony_ci==== 2951e5c31af7Sopenharmony_ciendif::editing-notes[] 2952e5c31af7Sopenharmony_ci 2953e5c31af7Sopenharmony_ci 2954e5c31af7Sopenharmony_ci[[devsandqueues-destruction]] 2955e5c31af7Sopenharmony_ci=== Device Destruction 2956e5c31af7Sopenharmony_ci 2957e5c31af7Sopenharmony_ci[open,refpage='vkDestroyDevice',desc='Destroy a logical device',type='protos'] 2958e5c31af7Sopenharmony_ci-- 2959e5c31af7Sopenharmony_ciTo destroy a device, call: 2960e5c31af7Sopenharmony_ci 2961e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkDestroyDevice.adoc[] 2962e5c31af7Sopenharmony_ci 2963e5c31af7Sopenharmony_ci * pname:device is the logical device to destroy. 2964e5c31af7Sopenharmony_ci * pname:pAllocator controls host memory allocation as described in the 2965e5c31af7Sopenharmony_ci <<memory-allocation, Memory Allocation>> chapter. 2966e5c31af7Sopenharmony_ci 2967e5c31af7Sopenharmony_ciTo ensure that no work is active on the device, flink:vkDeviceWaitIdle can: 2968e5c31af7Sopenharmony_cibe used to gate the destruction of the device. 2969e5c31af7Sopenharmony_ciPrior to destroying a device, an application is responsible for 2970e5c31af7Sopenharmony_cidestroying/freeing any Vulkan objects that were created using that device as 2971e5c31af7Sopenharmony_cithe first parameter of the corresponding ftext:vkCreate* or 2972e5c31af7Sopenharmony_ciftext:vkAllocate* command. 2973e5c31af7Sopenharmony_ci 2974e5c31af7Sopenharmony_ci[NOTE] 2975e5c31af7Sopenharmony_ci.Note 2976e5c31af7Sopenharmony_ci==== 2977e5c31af7Sopenharmony_ciThe lifetime of each of these objects is bound by the lifetime of the 2978e5c31af7Sopenharmony_cisname:VkDevice object. 2979e5c31af7Sopenharmony_ciTherefore, to avoid resource leaks, it is critical that an application 2980e5c31af7Sopenharmony_ciexplicitly free all of these resources prior to calling 2981e5c31af7Sopenharmony_cifname:vkDestroyDevice. 2982e5c31af7Sopenharmony_ci==== 2983e5c31af7Sopenharmony_ci 2984e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 2985e5c31af7Sopenharmony_ciIf 2986e5c31af7Sopenharmony_cislink:VkPhysicalDeviceVulkanSC10Properties::<<limits-deviceDestroyFreesMemory, 2987e5c31af7Sopenharmony_cipname:deviceDestroyFreesMemory>> is ename:VK_TRUE, the reserved memory for 2988e5c31af7Sopenharmony_cichild objects without explicit free or destroy commands is returned to the 2989e5c31af7Sopenharmony_cisystem when the device is destroyed, otherwise it may: not be returned to 2990e5c31af7Sopenharmony_cithe system until the process is terminated. 2991e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 2992e5c31af7Sopenharmony_ci 2993e5c31af7Sopenharmony_ci.Valid Usage 2994e5c31af7Sopenharmony_ci**** 2995e5c31af7Sopenharmony_ci * [[VUID-vkDestroyDevice-device-05137]] 2996e5c31af7Sopenharmony_ci All child objects created on pname:device 2997e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 2998e5c31af7Sopenharmony_ci , except those with no explicit <<fundamentals-objectmodel-no-destroy, 2999e5c31af7Sopenharmony_ci free or destroy command>>, 3000e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 3001e5c31af7Sopenharmony_ci must: have been destroyed prior to destroying pname:device 3002e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 3003e5c31af7Sopenharmony_ci * [[VUID-vkDestroyDevice-device-00379]] 3004e5c31af7Sopenharmony_ci If sname:VkAllocationCallbacks were provided when pname:device was 3005e5c31af7Sopenharmony_ci created, a compatible set of callbacks must: be provided here 3006e5c31af7Sopenharmony_ci * [[VUID-vkDestroyDevice-device-00380]] 3007e5c31af7Sopenharmony_ci If no sname:VkAllocationCallbacks were provided when pname:device was 3008e5c31af7Sopenharmony_ci created, pname:pAllocator must: be `NULL` 3009e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 3010e5c31af7Sopenharmony_ci**** 3011e5c31af7Sopenharmony_ci 3012e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkDestroyDevice.adoc[] 3013e5c31af7Sopenharmony_ci-- 3014e5c31af7Sopenharmony_ci 3015e5c31af7Sopenharmony_ci 3016e5c31af7Sopenharmony_ci[[devsandqueues-queues]] 3017e5c31af7Sopenharmony_ci== Queues 3018e5c31af7Sopenharmony_ci 3019e5c31af7Sopenharmony_ci 3020e5c31af7Sopenharmony_ci[[devsandqueues-queueprops]] 3021e5c31af7Sopenharmony_ci=== Queue Family Properties 3022e5c31af7Sopenharmony_ci 3023e5c31af7Sopenharmony_ciAs discussed in the <<devsandqueues-physical-device-enumeration,Physical 3024e5c31af7Sopenharmony_ciDevice Enumeration>> section above, the 3025e5c31af7Sopenharmony_ciflink:vkGetPhysicalDeviceQueueFamilyProperties command is used to retrieve 3026e5c31af7Sopenharmony_cidetails about the queue families and queues supported by a device. 3027e5c31af7Sopenharmony_ci 3028e5c31af7Sopenharmony_ciEach index in the pname:pQueueFamilyProperties array returned by 3029e5c31af7Sopenharmony_ciflink:vkGetPhysicalDeviceQueueFamilyProperties describes a unique queue 3030e5c31af7Sopenharmony_cifamily on that physical device. 3031e5c31af7Sopenharmony_ciThese indices are used when creating queues, and they correspond directly 3032e5c31af7Sopenharmony_ciwith the pname:queueFamilyIndex that is passed to the flink:vkCreateDevice 3033e5c31af7Sopenharmony_cicommand via the slink:VkDeviceQueueCreateInfo structure as described in the 3034e5c31af7Sopenharmony_ci<<devsandqueues-queue-creation,Queue Creation>> section below. 3035e5c31af7Sopenharmony_ci 3036e5c31af7Sopenharmony_ciGrouping of queue families within a physical device is 3037e5c31af7Sopenharmony_ciimplementation-dependent. 3038e5c31af7Sopenharmony_ci 3039e5c31af7Sopenharmony_ci[NOTE] 3040e5c31af7Sopenharmony_ci.Note 3041e5c31af7Sopenharmony_ci==== 3042e5c31af7Sopenharmony_ciThe general expectation is that a physical device groups all queues of 3043e5c31af7Sopenharmony_cimatching capabilities into a single family. 3044e5c31af7Sopenharmony_ciHowever, while implementations should: do this, it is possible that a 3045e5c31af7Sopenharmony_ciphysical device may: return two separate queue families with the same 3046e5c31af7Sopenharmony_cicapabilities. 3047e5c31af7Sopenharmony_ci==== 3048e5c31af7Sopenharmony_ci 3049e5c31af7Sopenharmony_ciOnce an application has identified a physical device with the queue(s) that 3050e5c31af7Sopenharmony_ciit desires to use, it will create those queues in conjunction with a logical 3051e5c31af7Sopenharmony_cidevice. 3052e5c31af7Sopenharmony_ciThis is described in the following section. 3053e5c31af7Sopenharmony_ci 3054e5c31af7Sopenharmony_ci 3055e5c31af7Sopenharmony_ci[[devsandqueues-queue-creation]] 3056e5c31af7Sopenharmony_ci=== Queue Creation 3057e5c31af7Sopenharmony_ci 3058e5c31af7Sopenharmony_ci[open,refpage='VkQueue',desc='Opaque handle to a queue object',type='handles'] 3059e5c31af7Sopenharmony_ci-- 3060e5c31af7Sopenharmony_ciCreating a logical device also creates the queues associated with that 3061e5c31af7Sopenharmony_cidevice. 3062e5c31af7Sopenharmony_ciThe queues to create are described by a set of slink:VkDeviceQueueCreateInfo 3063e5c31af7Sopenharmony_cistructures that are passed to flink:vkCreateDevice in 3064e5c31af7Sopenharmony_cipname:pQueueCreateInfos. 3065e5c31af7Sopenharmony_ci 3066e5c31af7Sopenharmony_ciQueues are represented by sname:VkQueue handles: 3067e5c31af7Sopenharmony_ci 3068e5c31af7Sopenharmony_ciinclude::{generated}/api/handles/VkQueue.adoc[] 3069e5c31af7Sopenharmony_ci-- 3070e5c31af7Sopenharmony_ci 3071e5c31af7Sopenharmony_ci[open,refpage='VkDeviceQueueCreateInfo',desc='Structure specifying parameters of a newly created device queue',type='structs'] 3072e5c31af7Sopenharmony_ci-- 3073e5c31af7Sopenharmony_ciThe sname:VkDeviceQueueCreateInfo structure is defined as: 3074e5c31af7Sopenharmony_ci 3075e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkDeviceQueueCreateInfo.adoc[] 3076e5c31af7Sopenharmony_ci 3077e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 3078e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 3079e5c31af7Sopenharmony_ci structure. 3080e5c31af7Sopenharmony_ciifndef::VK_VERSION_1_1[] 3081e5c31af7Sopenharmony_ci * pname:flags is reserved for future use. 3082e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1[] 3083e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1[] 3084e5c31af7Sopenharmony_ci * pname:flags is a bitmask indicating behavior of the queues. 3085e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1[] 3086e5c31af7Sopenharmony_ci * pname:queueFamilyIndex is an unsigned integer indicating the index of 3087e5c31af7Sopenharmony_ci the queue family in which to create the queues on this device. 3088e5c31af7Sopenharmony_ci This index corresponds to the index of an element of the 3089e5c31af7Sopenharmony_ci pname:pQueueFamilyProperties array that was returned by 3090e5c31af7Sopenharmony_ci fname:vkGetPhysicalDeviceQueueFamilyProperties. 3091e5c31af7Sopenharmony_ci * pname:queueCount is an unsigned integer specifying the number of queues 3092e5c31af7Sopenharmony_ci to create in the queue family indicated by pname:queueFamilyIndex, and 3093e5c31af7Sopenharmony_ci with the behavior specified by pname:flags. 3094e5c31af7Sopenharmony_ci * pname:pQueuePriorities is a pointer to an array of pname:queueCount 3095e5c31af7Sopenharmony_ci normalized floating point values, specifying priorities of work that 3096e5c31af7Sopenharmony_ci will be submitted to each created queue. 3097e5c31af7Sopenharmony_ci See <<devsandqueues-priority,Queue Priority>> for more information. 3098e5c31af7Sopenharmony_ci 3099e5c31af7Sopenharmony_ci.Valid Usage 3100e5c31af7Sopenharmony_ci**** 3101e5c31af7Sopenharmony_ci * [[VUID-VkDeviceQueueCreateInfo-queueFamilyIndex-00381]] 3102e5c31af7Sopenharmony_ci pname:queueFamilyIndex must: be less than 3103e5c31af7Sopenharmony_ci pname:pQueueFamilyPropertyCount returned by 3104e5c31af7Sopenharmony_ci fname:vkGetPhysicalDeviceQueueFamilyProperties 3105e5c31af7Sopenharmony_ci * [[VUID-VkDeviceQueueCreateInfo-queueCount-00382]] 3106e5c31af7Sopenharmony_ci pname:queueCount must: be less than or equal to the pname:queueCount 3107e5c31af7Sopenharmony_ci member of the sname:VkQueueFamilyProperties structure, as returned by 3108e5c31af7Sopenharmony_ci fname:vkGetPhysicalDeviceQueueFamilyProperties in the 3109e5c31af7Sopenharmony_ci pname:pQueueFamilyProperties[queueFamilyIndex] 3110e5c31af7Sopenharmony_ci * [[VUID-VkDeviceQueueCreateInfo-pQueuePriorities-00383]] 3111e5c31af7Sopenharmony_ci Each element of pname:pQueuePriorities must: be between `0.0` and `1.0` 3112e5c31af7Sopenharmony_ci inclusive 3113e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1[] 3114e5c31af7Sopenharmony_ci * [[VUID-VkDeviceQueueCreateInfo-flags-02861]] 3115e5c31af7Sopenharmony_ci If the <<features-protectedMemory, pname:protectedMemory>> feature is 3116e5c31af7Sopenharmony_ci not enabled, the ename:VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT bit of 3117e5c31af7Sopenharmony_ci pname:flags must: not be set 3118e5c31af7Sopenharmony_ci * [[VUID-VkDeviceQueueCreateInfo-flags-06449]] 3119e5c31af7Sopenharmony_ci If pname:flags includes ename:VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT, 3120e5c31af7Sopenharmony_ci pname:queueFamilyIndex must: be the index of a queue family that 3121e5c31af7Sopenharmony_ci includes the ename:VK_QUEUE_PROTECTED_BIT capability 3122e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1[] 3123e5c31af7Sopenharmony_ciifdef::VK_ARM_scheduling_controls[] 3124e5c31af7Sopenharmony_ci * [[VUID-VkDeviceQueueCreateInfo-pNext-09398]] 3125e5c31af7Sopenharmony_ci If the pname:pNext chain includes a 3126e5c31af7Sopenharmony_ci slink:VkDeviceQueueShaderCoreControlCreateInfoARM structure then 3127e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceSchedulingControlsPropertiesARM::pname:schedulingControlsFlags 3128e5c31af7Sopenharmony_ci must: contain 3129e5c31af7Sopenharmony_ci ename:VK_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM. 3130e5c31af7Sopenharmony_ciendif::VK_ARM_scheduling_controls[] 3131e5c31af7Sopenharmony_ci**** 3132e5c31af7Sopenharmony_ci 3133e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkDeviceQueueCreateInfo.adoc[] 3134e5c31af7Sopenharmony_ci-- 3135e5c31af7Sopenharmony_ci 3136e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1[] 3137e5c31af7Sopenharmony_ci[open,refpage='VkDeviceQueueCreateFlagBits',desc='Bitmask specifying behavior of the queue',type='enums'] 3138e5c31af7Sopenharmony_ci-- 3139e5c31af7Sopenharmony_ciBits which can: be set in slink:VkDeviceQueueCreateInfo::pname:flags, 3140e5c31af7Sopenharmony_cispecifying usage behavior of a queue, are: 3141e5c31af7Sopenharmony_ci 3142e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkDeviceQueueCreateFlagBits.adoc[] 3143e5c31af7Sopenharmony_ci 3144e5c31af7Sopenharmony_ci * ename:VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT specifies that the device 3145e5c31af7Sopenharmony_ci queue is a protected-capable queue. 3146e5c31af7Sopenharmony_ci-- 3147e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1[] 3148e5c31af7Sopenharmony_ci 3149e5c31af7Sopenharmony_ci[open,refpage='VkDeviceQueueCreateFlags',desc='Bitmask of VkDeviceQueueCreateFlagBits',type='flags'] 3150e5c31af7Sopenharmony_ci-- 3151e5c31af7Sopenharmony_ciinclude::{generated}/api/flags/VkDeviceQueueCreateFlags.adoc[] 3152e5c31af7Sopenharmony_ci 3153e5c31af7Sopenharmony_ciifndef::VK_VERSION_1_1[] 3154e5c31af7Sopenharmony_citname:VkDeviceQueueCreateFlags is a bitmask type for setting a mask, but is 3155e5c31af7Sopenharmony_cicurrently reserved for future use. 3156e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1[] 3157e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1[] 3158e5c31af7Sopenharmony_citname:VkDeviceQueueCreateFlags is a bitmask type for setting a mask of zero 3159e5c31af7Sopenharmony_cior more elink:VkDeviceQueueCreateFlagBits. 3160e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1[] 3161e5c31af7Sopenharmony_ci-- 3162e5c31af7Sopenharmony_ci 3163e5c31af7Sopenharmony_ciifdef::VK_EXT_global_priority,VK_KHR_global_priority[] 3164e5c31af7Sopenharmony_ci[open,refpage='VkDeviceQueueGlobalPriorityCreateInfoKHR',desc='Specify a system wide priority',type='structs',alias='VkDeviceQueueGlobalPriorityCreateInfoEXT'] 3165e5c31af7Sopenharmony_ci-- 3166e5c31af7Sopenharmony_ciQueues can: be created with a system-wide priority by adding a 3167e5c31af7Sopenharmony_cisname:VkDeviceQueueGlobalPriorityCreateInfoKHR structure to the pname:pNext 3168e5c31af7Sopenharmony_cichain of slink:VkDeviceQueueCreateInfo. 3169e5c31af7Sopenharmony_ci 3170e5c31af7Sopenharmony_ciThe sname:VkDeviceQueueGlobalPriorityCreateInfoKHR structure is defined as: 3171e5c31af7Sopenharmony_ci 3172e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkDeviceQueueGlobalPriorityCreateInfoKHR.adoc[] 3173e5c31af7Sopenharmony_ci 3174e5c31af7Sopenharmony_ciifdef::VK_EXT_global_priority[] 3175e5c31af7Sopenharmony_cior the equivalent 3176e5c31af7Sopenharmony_ci 3177e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkDeviceQueueGlobalPriorityCreateInfoEXT.adoc[] 3178e5c31af7Sopenharmony_ciendif::VK_EXT_global_priority[] 3179e5c31af7Sopenharmony_ci 3180e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 3181e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 3182e5c31af7Sopenharmony_ci structure. 3183e5c31af7Sopenharmony_ci * pname:globalPriority is the system-wide priority associated to these 3184e5c31af7Sopenharmony_ci queues as specified by elink:VkQueueGlobalPriorityEXT 3185e5c31af7Sopenharmony_ci 3186e5c31af7Sopenharmony_ciQueues created without specifying 3187e5c31af7Sopenharmony_cisname:VkDeviceQueueGlobalPriorityCreateInfoKHR will default to 3188e5c31af7Sopenharmony_ciename:VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR. 3189e5c31af7Sopenharmony_ci 3190e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkDeviceQueueGlobalPriorityCreateInfoKHR.adoc[] 3191e5c31af7Sopenharmony_ci-- 3192e5c31af7Sopenharmony_ci 3193e5c31af7Sopenharmony_ci[open,refpage='VkQueueGlobalPriorityKHR',desc='Values specifying a system-wide queue priority',type='enums',alias='VkQueueGlobalPriorityEXT'] 3194e5c31af7Sopenharmony_ci-- 3195e5c31af7Sopenharmony_ciPossible values of 3196e5c31af7Sopenharmony_cislink:VkDeviceQueueGlobalPriorityCreateInfoKHR::pname:globalPriority, 3197e5c31af7Sopenharmony_cispecifying a system-wide priority level are: 3198e5c31af7Sopenharmony_ci 3199e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkQueueGlobalPriorityKHR.adoc[] 3200e5c31af7Sopenharmony_ci 3201e5c31af7Sopenharmony_ciifdef::VK_EXT_global_priority[] 3202e5c31af7Sopenharmony_cior the equivalent 3203e5c31af7Sopenharmony_ci 3204e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkQueueGlobalPriorityEXT.adoc[] 3205e5c31af7Sopenharmony_ciendif::VK_EXT_global_priority[] 3206e5c31af7Sopenharmony_ci 3207e5c31af7Sopenharmony_ciPriority values are sorted in ascending order. 3208e5c31af7Sopenharmony_ciA comparison operation on the enum values can be used to determine the 3209e5c31af7Sopenharmony_cipriority order. 3210e5c31af7Sopenharmony_ci 3211e5c31af7Sopenharmony_ci * ename:VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR is below the system default. 3212e5c31af7Sopenharmony_ci Useful for non-interactive tasks. 3213e5c31af7Sopenharmony_ci * ename:VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR is the system default 3214e5c31af7Sopenharmony_ci priority. 3215e5c31af7Sopenharmony_ci * ename:VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR is above the system default. 3216e5c31af7Sopenharmony_ci * ename:VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR is the highest priority. 3217e5c31af7Sopenharmony_ci Useful for critical tasks. 3218e5c31af7Sopenharmony_ci-- 3219e5c31af7Sopenharmony_ci 3220e5c31af7Sopenharmony_ciQueues with higher system priority may: be allotted more processing time 3221e5c31af7Sopenharmony_cithan queues with lower priority. 3222e5c31af7Sopenharmony_ciAn implementation may: allow a higher-priority queue to starve a 3223e5c31af7Sopenharmony_cilower-priority queue until the higher-priority queue has no further commands 3224e5c31af7Sopenharmony_cito execute. 3225e5c31af7Sopenharmony_ci 3226e5c31af7Sopenharmony_ciPriorities imply no ordering or scheduling constraints. 3227e5c31af7Sopenharmony_ci 3228e5c31af7Sopenharmony_ciNo specific guarantees are made about higher priority queues receiving more 3229e5c31af7Sopenharmony_ciprocessing time or better quality of service than lower priority queues. 3230e5c31af7Sopenharmony_ci 3231e5c31af7Sopenharmony_ciThe global priority level of a queue takes precedence over the per-process 3232e5c31af7Sopenharmony_ciqueue priority (slink:VkDeviceQueueCreateInfo::pname:pQueuePriorities). 3233e5c31af7Sopenharmony_ci 3234e5c31af7Sopenharmony_ciAbuse of this feature may: result in starving the rest of the system of 3235e5c31af7Sopenharmony_ciimplementation resources. 3236e5c31af7Sopenharmony_ciTherefore, the driver implementation may: deny requests to acquire a 3237e5c31af7Sopenharmony_cipriority above the default priority 3238e5c31af7Sopenharmony_ci(ename:VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR) if the caller does not have 3239e5c31af7Sopenharmony_cisufficient privileges. 3240e5c31af7Sopenharmony_ciIn this scenario ename:VK_ERROR_NOT_PERMITTED_KHR is returned. 3241e5c31af7Sopenharmony_ci 3242e5c31af7Sopenharmony_ciThe driver implementation may: fail the queue allocation request if 3243e5c31af7Sopenharmony_ciresources required to complete the operation have been exhausted (either by 3244e5c31af7Sopenharmony_cithe same process or a different process). 3245e5c31af7Sopenharmony_ciIn this scenario ename:VK_ERROR_INITIALIZATION_FAILED is returned. 3246e5c31af7Sopenharmony_ci 3247e5c31af7Sopenharmony_ciifdef::VK_EXT_global_priority_query,VK_KHR_global_priority[] 3248e5c31af7Sopenharmony_ciIf the <<features-globalPriorityQuery, pname:globalPriorityQuery>> feature 3249e5c31af7Sopenharmony_ciis enabled and the requested global priority is not reported via 3250e5c31af7Sopenharmony_cislink:VkQueueFamilyGlobalPriorityPropertiesKHR, the driver implementation 3251e5c31af7Sopenharmony_cimust: fail the queue creation. 3252e5c31af7Sopenharmony_ciIn this scenario, ename:VK_ERROR_INITIALIZATION_FAILED is returned. 3253e5c31af7Sopenharmony_ciendif::VK_EXT_global_priority_query,VK_KHR_global_priority[] 3254e5c31af7Sopenharmony_ciendif::VK_EXT_global_priority,VK_KHR_global_priority[] 3255e5c31af7Sopenharmony_ci 3256e5c31af7Sopenharmony_ciifdef::VK_ARM_scheduling_controls[] 3257e5c31af7Sopenharmony_ci[open,refpage='VkDeviceQueueShaderCoreControlCreateInfoARM',desc='Control the number of shader cores used by queues',type='structs'] 3258e5c31af7Sopenharmony_ci-- 3259e5c31af7Sopenharmony_ciThe number of shader cores used by a queue can: be controlled by adding a 3260e5c31af7Sopenharmony_cisname:VkDeviceQueueShaderCoreControlCreateInfoARM structure to the 3261e5c31af7Sopenharmony_cipname:pNext chain of slink:VkDeviceQueueCreateInfo structures. 3262e5c31af7Sopenharmony_ci 3263e5c31af7Sopenharmony_ciThe sname:VkDeviceQueueShaderCoreControlCreateInfoARM structure is defined 3264e5c31af7Sopenharmony_cias: 3265e5c31af7Sopenharmony_ci 3266e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkDeviceQueueShaderCoreControlCreateInfoARM.adoc[] 3267e5c31af7Sopenharmony_ci 3268e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 3269e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 3270e5c31af7Sopenharmony_ci structure. 3271e5c31af7Sopenharmony_ci * pname:shaderCoreCount is the number of shader cores this queue uses. 3272e5c31af7Sopenharmony_ci 3273e5c31af7Sopenharmony_ciQueues created without specifying 3274e5c31af7Sopenharmony_cisname:VkDeviceQueueShaderCoreControlCreateInfoARM will default to using all 3275e5c31af7Sopenharmony_cithe shader cores available. 3276e5c31af7Sopenharmony_ci 3277e5c31af7Sopenharmony_ci.Valid Usage 3278e5c31af7Sopenharmony_ci**** 3279e5c31af7Sopenharmony_ci * [[VUID-VkDeviceQueueShaderCoreControlCreateInfoARM-shaderCoreCount-09399]] 3280e5c31af7Sopenharmony_ci pname:shaderCoreCount must: be greater than 0 and less than or equal to 3281e5c31af7Sopenharmony_ci the total number of shader cores as reported via 3282e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM::pname:shaderCoreCount. 3283e5c31af7Sopenharmony_ci**** 3284e5c31af7Sopenharmony_ci 3285e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkDeviceQueueShaderCoreControlCreateInfoARM.adoc[] 3286e5c31af7Sopenharmony_ci-- 3287e5c31af7Sopenharmony_ciendif::VK_ARM_scheduling_controls[] 3288e5c31af7Sopenharmony_ci 3289e5c31af7Sopenharmony_ci[open,refpage='vkGetDeviceQueue',desc='Get a queue handle from a device',type='protos'] 3290e5c31af7Sopenharmony_ci-- 3291e5c31af7Sopenharmony_ciTo retrieve a handle to a slink:VkQueue object, call: 3292e5c31af7Sopenharmony_ci 3293e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkGetDeviceQueue.adoc[] 3294e5c31af7Sopenharmony_ci 3295e5c31af7Sopenharmony_ci * pname:device is the logical device that owns the queue. 3296e5c31af7Sopenharmony_ci * pname:queueFamilyIndex is the index of the queue family to which the 3297e5c31af7Sopenharmony_ci queue belongs. 3298e5c31af7Sopenharmony_ci * pname:queueIndex is the index within this queue family of the queue to 3299e5c31af7Sopenharmony_ci retrieve. 3300e5c31af7Sopenharmony_ci * pname:pQueue is a pointer to a slink:VkQueue object that will be filled 3301e5c31af7Sopenharmony_ci with the handle for the requested queue. 3302e5c31af7Sopenharmony_ci 3303e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1[] 3304e5c31af7Sopenharmony_cifname:vkGetDeviceQueue must: only be used to get queues that were created 3305e5c31af7Sopenharmony_ciwith the pname:flags parameter of slink:VkDeviceQueueCreateInfo set to zero. 3306e5c31af7Sopenharmony_ciTo get queues that were created with a non-zero pname:flags parameter use 3307e5c31af7Sopenharmony_ciflink:vkGetDeviceQueue2. 3308e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1[] 3309e5c31af7Sopenharmony_ci 3310e5c31af7Sopenharmony_ci.Valid Usage 3311e5c31af7Sopenharmony_ci**** 3312e5c31af7Sopenharmony_ci * [[VUID-vkGetDeviceQueue-queueFamilyIndex-00384]] 3313e5c31af7Sopenharmony_ci pname:queueFamilyIndex must: be one of the queue family indices 3314e5c31af7Sopenharmony_ci specified when pname:device was created, via the 3315e5c31af7Sopenharmony_ci slink:VkDeviceQueueCreateInfo structure 3316e5c31af7Sopenharmony_ci * [[VUID-vkGetDeviceQueue-queueIndex-00385]] 3317e5c31af7Sopenharmony_ci pname:queueIndex must: be less than the value of 3318e5c31af7Sopenharmony_ci slink:VkDeviceQueueCreateInfo::pname:queueCount for the queue family 3319e5c31af7Sopenharmony_ci indicated by pname:queueFamilyIndex when pname:device was created 3320e5c31af7Sopenharmony_ci * [[VUID-vkGetDeviceQueue-flags-01841]] 3321e5c31af7Sopenharmony_ci slink:VkDeviceQueueCreateInfo::pname:flags must: have been set to zero 3322e5c31af7Sopenharmony_ci when pname:device was created 3323e5c31af7Sopenharmony_ci**** 3324e5c31af7Sopenharmony_ci 3325e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkGetDeviceQueue.adoc[] 3326e5c31af7Sopenharmony_ci-- 3327e5c31af7Sopenharmony_ci 3328e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1[] 3329e5c31af7Sopenharmony_ci[open,refpage='vkGetDeviceQueue2',desc='Get a queue handle from a device',type='protos'] 3330e5c31af7Sopenharmony_ci-- 3331e5c31af7Sopenharmony_ciTo retrieve a handle to a slink:VkQueue object with specific 3332e5c31af7Sopenharmony_citlink:VkDeviceQueueCreateFlags creation flags, call: 3333e5c31af7Sopenharmony_ci 3334e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkGetDeviceQueue2.adoc[] 3335e5c31af7Sopenharmony_ci 3336e5c31af7Sopenharmony_ci * pname:device is the logical device that owns the queue. 3337e5c31af7Sopenharmony_ci * pname:pQueueInfo is a pointer to a slink:VkDeviceQueueInfo2 structure, 3338e5c31af7Sopenharmony_ci describing parameters of the device queue to be retrieved. 3339e5c31af7Sopenharmony_ci * pname:pQueue is a pointer to a slink:VkQueue object that will be filled 3340e5c31af7Sopenharmony_ci with the handle for the requested queue. 3341e5c31af7Sopenharmony_ci 3342e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkGetDeviceQueue2.adoc[] 3343e5c31af7Sopenharmony_ci-- 3344e5c31af7Sopenharmony_ci 3345e5c31af7Sopenharmony_ci[open,refpage='VkDeviceQueueInfo2',desc='Structure specifying the parameters used for device queue creation',type='structs'] 3346e5c31af7Sopenharmony_ci-- 3347e5c31af7Sopenharmony_ciThe sname:VkDeviceQueueInfo2 structure is defined as: 3348e5c31af7Sopenharmony_ci 3349e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkDeviceQueueInfo2.adoc[] 3350e5c31af7Sopenharmony_ci 3351e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 3352e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 3353e5c31af7Sopenharmony_ci structure. 3354e5c31af7Sopenharmony_ci The pname:pNext chain of sname:VkDeviceQueueInfo2 can: be used to 3355e5c31af7Sopenharmony_ci provide additional device queue parameters to fname:vkGetDeviceQueue2. 3356e5c31af7Sopenharmony_ci * pname:flags is a tlink:VkDeviceQueueCreateFlags value indicating the 3357e5c31af7Sopenharmony_ci flags used to create the device queue. 3358e5c31af7Sopenharmony_ci * pname:queueFamilyIndex is the index of the queue family to which the 3359e5c31af7Sopenharmony_ci queue belongs. 3360e5c31af7Sopenharmony_ci * pname:queueIndex is the index of the queue to retrieve from within the 3361e5c31af7Sopenharmony_ci set of queues that share both the queue family and flags specified. 3362e5c31af7Sopenharmony_ci 3363e5c31af7Sopenharmony_ciThe queue returned by fname:vkGetDeviceQueue2 must: have the same 3364e5c31af7Sopenharmony_cipname:flags value from this structure as that used at device creation time 3365e5c31af7Sopenharmony_ciin a slink:VkDeviceQueueCreateInfo structure. 3366e5c31af7Sopenharmony_ci 3367e5c31af7Sopenharmony_ci[NOTE] 3368e5c31af7Sopenharmony_ci.Note 3369e5c31af7Sopenharmony_ci==== 3370e5c31af7Sopenharmony_ciNormally, if you create both protected-capable and non-protected-capable 3371e5c31af7Sopenharmony_ciqueues with the same family, they are treated as separate lists of queues 3372e5c31af7Sopenharmony_ciand pname:queueIndex is relative to the start of the list of queues 3373e5c31af7Sopenharmony_cispecified by both pname:queueFamilyIndex and pname:flags. 3374e5c31af7Sopenharmony_ciHowever, for historical reasons, some implementations may exhibit different 3375e5c31af7Sopenharmony_cibehavior. 3376e5c31af7Sopenharmony_ciThese divergent implementations instead concatenate the lists of queues and 3377e5c31af7Sopenharmony_citreat pname:queueIndex as relative to the start of the first list of queues 3378e5c31af7Sopenharmony_ciwith the given pname:queueFamilyIndex. 3379e5c31af7Sopenharmony_ciThis only matters in cases where an application has created both 3380e5c31af7Sopenharmony_ciprotected-capable and non-protected-capable queues from the same queue 3381e5c31af7Sopenharmony_cifamily. 3382e5c31af7Sopenharmony_ci 3383e5c31af7Sopenharmony_ciFor such divergent implementations, the maximum value of pname:queueIndex is 3384e5c31af7Sopenharmony_ciequal to the sum of slink:VkDeviceQueueCreateInfo::pname:queueCount minus 3385e5c31af7Sopenharmony_cione, for all slink:VkDeviceQueueCreateInfo structures that share a common 3386e5c31af7Sopenharmony_cipname:queueFamilyIndex. 3387e5c31af7Sopenharmony_ci 3388e5c31af7Sopenharmony_ciSuch implementations will return `NULL` for either the protected or 3389e5c31af7Sopenharmony_ciunprotected queues when calling `vkGetDeviceQueue2` with pname:queueIndex in 3390e5c31af7Sopenharmony_cithe range zero to slink:VkDeviceQueueCreateInfo::pname:queueCount minus one. 3391e5c31af7Sopenharmony_ciIn cases where these implementations returned `NULL`, the corresponding 3392e5c31af7Sopenharmony_ciqueues are instead located in the extended range described in the preceding 3393e5c31af7Sopenharmony_citwo paragraphs. 3394e5c31af7Sopenharmony_ci 3395e5c31af7Sopenharmony_ciThis behaviour will not be observed on any driver that has passed Vulkan 3396e5c31af7Sopenharmony_ciconformance test suite version 1.3.3.0, or any subsequent version. 3397e5c31af7Sopenharmony_ciThis information can be found by querying 3398e5c31af7Sopenharmony_cisname:VkPhysicalDeviceDriverProperties::pname:conformanceVersion. 3399e5c31af7Sopenharmony_ci==== 3400e5c31af7Sopenharmony_ci 3401e5c31af7Sopenharmony_ci.Valid Usage 3402e5c31af7Sopenharmony_ci**** 3403e5c31af7Sopenharmony_ci * [[VUID-VkDeviceQueueInfo2-queueFamilyIndex-01842]] 3404e5c31af7Sopenharmony_ci pname:queueFamilyIndex must: be one of the queue family indices 3405e5c31af7Sopenharmony_ci specified when pname:device was created, via the 3406e5c31af7Sopenharmony_ci slink:VkDeviceQueueCreateInfo structure 3407e5c31af7Sopenharmony_ci * [[VUID-VkDeviceQueueInfo2-flags-06225]] 3408e5c31af7Sopenharmony_ci pname:flags must: be equal to slink:VkDeviceQueueCreateInfo::pname:flags 3409e5c31af7Sopenharmony_ci for a slink:VkDeviceQueueCreateInfo structure for the queue family 3410e5c31af7Sopenharmony_ci indicated by pname:queueFamilyIndex when pname:device was created 3411e5c31af7Sopenharmony_ci * [[VUID-VkDeviceQueueInfo2-queueIndex-01843]] 3412e5c31af7Sopenharmony_ci pname:queueIndex must: be less than 3413e5c31af7Sopenharmony_ci slink:VkDeviceQueueCreateInfo::pname:queueCount for the corresponding 3414e5c31af7Sopenharmony_ci queue family and flags indicated by pname:queueFamilyIndex and 3415e5c31af7Sopenharmony_ci pname:flags when pname:device was created 3416e5c31af7Sopenharmony_ci**** 3417e5c31af7Sopenharmony_ci 3418e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkDeviceQueueInfo2.adoc[] 3419e5c31af7Sopenharmony_ci-- 3420e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1[] 3421e5c31af7Sopenharmony_ci 3422e5c31af7Sopenharmony_ci 3423e5c31af7Sopenharmony_ci[[devsandqueues-index]] 3424e5c31af7Sopenharmony_ci=== Queue Family Index 3425e5c31af7Sopenharmony_ci 3426e5c31af7Sopenharmony_ciThe queue family index is used in multiple places in Vulkan in order to tie 3427e5c31af7Sopenharmony_cioperations to a specific family of queues. 3428e5c31af7Sopenharmony_ci 3429e5c31af7Sopenharmony_ciWhen retrieving a handle to the queue via fname:vkGetDeviceQueue, the queue 3430e5c31af7Sopenharmony_cifamily index is used to select which queue family to retrieve the 3431e5c31af7Sopenharmony_cisname:VkQueue handle from as described in the previous section. 3432e5c31af7Sopenharmony_ci 3433e5c31af7Sopenharmony_ciWhen creating a sname:VkCommandPool object (see 3434e5c31af7Sopenharmony_ci<<commandbuffers-pools,Command Pools>>), a queue family index is specified 3435e5c31af7Sopenharmony_ciin the slink:VkCommandPoolCreateInfo structure. 3436e5c31af7Sopenharmony_ciCommand buffers from this pool can: only be submitted on queues 3437e5c31af7Sopenharmony_cicorresponding to this queue family. 3438e5c31af7Sopenharmony_ci 3439e5c31af7Sopenharmony_ciWhen creating sname:VkImage (see <<resources-images,Images>>) and 3440e5c31af7Sopenharmony_cisname:VkBuffer (see <<resources-buffers,Buffers>>) resources, a set of queue 3441e5c31af7Sopenharmony_cifamilies is included in the slink:VkImageCreateInfo and 3442e5c31af7Sopenharmony_cislink:VkBufferCreateInfo structures to specify the queue families that can: 3443e5c31af7Sopenharmony_ciaccess the resource. 3444e5c31af7Sopenharmony_ci 3445e5c31af7Sopenharmony_ciWhen inserting a slink:VkBufferMemoryBarrier or slink:VkImageMemoryBarrier 3446e5c31af7Sopenharmony_ci(see <<synchronization-pipeline-barriers>>), a source and destination queue 3447e5c31af7Sopenharmony_cifamily index is specified to allow the ownership of a buffer or image to be 3448e5c31af7Sopenharmony_citransferred from one queue family to another. 3449e5c31af7Sopenharmony_ciSee the <<resources-sharing,Resource Sharing>> section for details. 3450e5c31af7Sopenharmony_ci 3451e5c31af7Sopenharmony_ci 3452e5c31af7Sopenharmony_ci[[devsandqueues-priority]] 3453e5c31af7Sopenharmony_ci=== Queue Priority 3454e5c31af7Sopenharmony_ci 3455e5c31af7Sopenharmony_ciEach queue is assigned a priority, as set in the 3456e5c31af7Sopenharmony_cislink:VkDeviceQueueCreateInfo structures when creating the device. 3457e5c31af7Sopenharmony_ciThe priority of each queue is a normalized floating point value between 0.0 3458e5c31af7Sopenharmony_ciand 1.0, which is then translated to a discrete priority level by the 3459e5c31af7Sopenharmony_ciimplementation. 3460e5c31af7Sopenharmony_ciHigher values indicate a higher priority, with 0.0 being the lowest priority 3461e5c31af7Sopenharmony_ciand 1.0 being the highest. 3462e5c31af7Sopenharmony_ci 3463e5c31af7Sopenharmony_ciWithin the same device, queues with higher priority may: be allotted more 3464e5c31af7Sopenharmony_ciprocessing time than queues with lower priority. 3465e5c31af7Sopenharmony_ciThe implementation makes no guarantees with regards to ordering or 3466e5c31af7Sopenharmony_cischeduling among queues with the same priority, other than the constraints 3467e5c31af7Sopenharmony_cidefined by any <<synchronization, explicit synchronization primitives>>. 3468e5c31af7Sopenharmony_ciThe implementation makes no guarantees with regards to queues across 3469e5c31af7Sopenharmony_cidifferent devices. 3470e5c31af7Sopenharmony_ci 3471e5c31af7Sopenharmony_ciAn implementation may: allow a higher-priority queue to starve a 3472e5c31af7Sopenharmony_cilower-priority queue on the same sname:VkDevice until the higher-priority 3473e5c31af7Sopenharmony_ciqueue has no further commands to execute. 3474e5c31af7Sopenharmony_ciThe relationship of queue priorities must: not cause queues on one 3475e5c31af7Sopenharmony_cisname:VkDevice to starve queues on another sname:VkDevice. 3476e5c31af7Sopenharmony_ci 3477e5c31af7Sopenharmony_ciNo specific guarantees are made about higher priority queues receiving more 3478e5c31af7Sopenharmony_ciprocessing time or better quality of service than lower priority queues. 3479e5c31af7Sopenharmony_ci 3480e5c31af7Sopenharmony_ci 3481e5c31af7Sopenharmony_ci[[devsandqueues-submission]] 3482e5c31af7Sopenharmony_ci=== Queue Submission 3483e5c31af7Sopenharmony_ci 3484e5c31af7Sopenharmony_ciWork is submitted to a queue via _queue submission_ commands such as 3485e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_KHR_synchronization2[] 3486e5c31af7Sopenharmony_ciflink:vkQueueSubmit2 or 3487e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_KHR_synchronization2[] 3488e5c31af7Sopenharmony_ciflink:vkQueueSubmit. 3489e5c31af7Sopenharmony_ciQueue submission commands define a set of _queue operations_ to be executed 3490e5c31af7Sopenharmony_ciby the underlying physical device, including synchronization with semaphores 3491e5c31af7Sopenharmony_ciand fences. 3492e5c31af7Sopenharmony_ci 3493e5c31af7Sopenharmony_ciSubmission commands take as parameters a target queue, zero or more 3494e5c31af7Sopenharmony_ci_batches_ of work, and an optional: fence to signal upon completion. 3495e5c31af7Sopenharmony_ciEach batch consists of three distinct parts: 3496e5c31af7Sopenharmony_ci 3497e5c31af7Sopenharmony_ci . Zero or more semaphores to wait on before execution of the rest of the 3498e5c31af7Sopenharmony_ci batch. 3499e5c31af7Sopenharmony_ci ** If present, these describe a <<synchronization-semaphores-waiting, 3500e5c31af7Sopenharmony_ci semaphore wait operation>>. 3501e5c31af7Sopenharmony_ci . Zero or more work items to execute. 3502e5c31af7Sopenharmony_ci ** If present, these describe a _queue operation_ matching the work 3503e5c31af7Sopenharmony_ci described. 3504e5c31af7Sopenharmony_ci . Zero or more semaphores to signal upon completion of the work items. 3505e5c31af7Sopenharmony_ci ** If present, these describe a <<synchronization-semaphores-signaling, 3506e5c31af7Sopenharmony_ci semaphore signal operation>>. 3507e5c31af7Sopenharmony_ci 3508e5c31af7Sopenharmony_ciIf a fence is present in a queue submission, it describes a 3509e5c31af7Sopenharmony_ci<<synchronization-fences-signaling, fence signal operation>>. 3510e5c31af7Sopenharmony_ci 3511e5c31af7Sopenharmony_ciAll work described by a queue submission command must: be submitted to the 3512e5c31af7Sopenharmony_ciqueue before the command returns. 3513e5c31af7Sopenharmony_ci 3514e5c31af7Sopenharmony_ci 3515e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 3516e5c31af7Sopenharmony_ci[[devsandqueues-sparsebinding]] 3517e5c31af7Sopenharmony_ci==== Sparse Memory Binding 3518e5c31af7Sopenharmony_ci 3519e5c31af7Sopenharmony_ciIn Vulkan it is possible to sparsely bind memory to buffers and images as 3520e5c31af7Sopenharmony_cidescribed in the <<sparsememory,Sparse Resource>> chapter. 3521e5c31af7Sopenharmony_ciSparse memory binding is a queue operation. 3522e5c31af7Sopenharmony_ciA queue whose flags include the ename:VK_QUEUE_SPARSE_BINDING_BIT must: be 3523e5c31af7Sopenharmony_ciable to support the mapping of a virtual address to a physical address on 3524e5c31af7Sopenharmony_cithe device. 3525e5c31af7Sopenharmony_ciThis causes an update to the page table mappings on the device. 3526e5c31af7Sopenharmony_ciThis update must: be synchronized on a queue to avoid corrupting page table 3527e5c31af7Sopenharmony_cimappings during execution of graphics commands. 3528e5c31af7Sopenharmony_ciBy binding the sparse memory resources on queues, all commands that are 3529e5c31af7Sopenharmony_cidependent on the updated bindings are synchronized to only execute after the 3530e5c31af7Sopenharmony_cibinding is updated. 3531e5c31af7Sopenharmony_ciSee the <<synchronization,Synchronization and Cache Control>> chapter for 3532e5c31af7Sopenharmony_cihow this synchronization is accomplished. 3533e5c31af7Sopenharmony_ci 3534e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 3535e5c31af7Sopenharmony_ci 3536e5c31af7Sopenharmony_ci[[devsandqueues-queuedestruction]] 3537e5c31af7Sopenharmony_ci=== Queue Destruction 3538e5c31af7Sopenharmony_ci 3539e5c31af7Sopenharmony_ciQueues are created along with a logical device during fname:vkCreateDevice. 3540e5c31af7Sopenharmony_ciAll queues associated with a logical device are destroyed when 3541e5c31af7Sopenharmony_cifname:vkDestroyDevice is called on that device. 3542