VkPhysicalDeviceProperties
The VkPhysicalDeviceProperties structure is defined as:
typedef struct VkPhysicalDeviceProperties {
uint32_t apiVersion;
uint32_t driverVersion;
uint32_t vendorID;
uint32_t deviceID;
VkPhysicalDeviceType deviceType;
char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
uint8_t pipelineCacheUUID[VK_UUID_SIZE];
VkPhysicalDeviceLimits limits;
VkPhysicalDeviceSparseProperties sparseProperties;
} VkPhysicalDeviceProperties;
pub struct PhysicalDeviceProperties {
api_version: u32,
driver_version: u32,
vendor_id: u32,
device_id: u32,
device_type: vk::PhysicalDeviceType,
device_name: [c_char; VK_MAX_PHYSICAL_DEVICE_NAME_SIZE],
pipeline_cache_uuid: [u8; VK_UUID_SIZE],
limits: vk::PhysicalDeviceLimits,
sparse_properties: vk::PhysicalDeviceSparseProperties,
}
apiVersionis the version of Vulkan supported by the device, encoded as described in Version Numbers.driverVersionis the vendor-specified version of the driver.vendorIDis a unique identifier for the vendor (see below) of the physical device.deviceIDis a unique identifier for the physical device among devices available from the vendor.deviceTypeis a VkPhysicalDeviceType specifying the type of device.deviceNameis an array ofVK_MAX_PHYSICAL_DEVICE_NAME_SIZEcharcontaining a null-terminated UTF-8 string which is the name of the device.pipelineCacheUUIDis an array ofVK_UUID_SIZEuint8_tvalues representing a universally unique identifier for the device.limitsis the VkPhysicalDeviceLimits structure specifying device-specific limits of the physical device. See Limits for details.sparsePropertiesis the VkPhysicalDeviceSparseProperties structure specifying various sparse related properties of the physical device. See Sparse Properties for details.
apiVersionmay be different than the version returned by
vkEnumerateInstanceVersion; either higher or lower.
In such cases, the application must not use functionality that exceeds the
version of Vulkan associated with a given object.
The pApiVersion parameter returned by vkEnumerateInstanceVersion
is the version associated with a VkInstance and its children, except
for a VkPhysicalDevice and its children.
VkPhysicalDeviceProperties::apiVersion is the version associated
with a VkPhysicalDevice and its children.driverVersion is implementation-defined.
It may not use the same encoding as apiVersion.
Applications should follow information from the vendor on how to extract
the version information from driverVersion.On implementations that claim support for the Roadmap 2022
profile, the major and minor version expressed by apiVersion must be
at least Vulkan 1.3.
The vendorID and deviceID fields are provided to allow
applications to adapt to device characteristics that are not adequately
exposed by other Vulkan queries.
The vendor identified by vendorID is the entity responsible for the
most salient characteristics of the underlying implementation of the
VkPhysicalDevice being queried.
If the vendor has a PCI
vendor ID, the low 16 bits of vendorID must contain that PCI vendor
ID, and the remaining bits must be zero.
Otherwise, the value returned must be a valid Khronos vendor ID, obtained
as described in the Vulkan Documentation and Extensions:
Procedures and Conventions document in the section Registering a Vendor ID with Khronos.
Khronos vendor IDs are allocated starting at 0x10000, to distinguish them
from the PCI vendor ID namespace.
Khronos vendor IDs are symbolically defined in the VkVendorId type.
The vendor is also responsible for the value returned in deviceID.
If the implementation is driven primarily by a PCI
device with a PCI device ID, the low 16 bits of
deviceID must contain that PCI device ID, and the remaining bits
must be zero.
Otherwise, the choice of what values to return may be dictated by operating
system or platform policies - but should uniquely identify both the device
version and any major configuration options (for example, core count in the
case of multicore devices).