Class VkPhysicalDeviceProperties

  • All Implemented Interfaces:
    java.lang.AutoCloseable, org.lwjgl.system.NativeResource, org.lwjgl.system.Pointer

    public class VkPhysicalDeviceProperties
    extends org.lwjgl.system.Struct
    implements org.lwjgl.system.NativeResource
    Structure specifying physical device properties.
    Description
    Note

    The value of apiVersion may be different than the version returned by EnumerateInstanceVersion; 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 EnumerateInstanceVersion 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.

    The vendorID and deviceID fields are provided to allow applications to adapt to device characteristics that are not adequately exposed by other Vulkan queries.

    Note

    These may include performance profiles, hardware errata, or other characteristics.

    The vendor identified by vendorID is the entity responsible for the most salient characteristics of the underlying implementation of the VkPhysicalDevice being queried.

    Note

    For example, in the case of a discrete GPU implementation, this should be the GPU chipset vendor. In the case of a hardware accelerator integrated into a system-on-chip (SoC), this should be the supplier of the silicon IP used to create the accelerator.

    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 set to 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 set to 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).

    Note

    The same device ID should be used for all physical implementations of that device version and configuration. For example, all uses of a specific silicon IP GPU version and configuration should use the same device ID, even if those uses occur in different SoCs.

    See Also

    VkPhysicalDeviceLimits, VkPhysicalDeviceProperties2, VkPhysicalDeviceSparseProperties, GetPhysicalDeviceProperties

    Member documentation

    • apiVersion – the version of Vulkan supported by the device, encoded as described in Version Numbers.
    • driverVersion – the vendor-specified version of the driver.
    • vendorID – a unique identifier for the vendor (see below) of the physical device.
    • deviceID – a unique identifier for the physical device among devices available from the vendor.
    • deviceType – a VkPhysicalDeviceType specifying the type of device.
    • deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE] – a null-terminated UTF-8 string containing the name of the device.
    • pipelineCacheUUID[VK_UUID_SIZE] – an array of size UUID_SIZE, containing 8-bit values that represent a universally unique identifier for the device.
    • limits – the VkPhysicalDeviceLimits structure which specifies device-specific limits of the physical device. See Limits for details.
    • sparseProperties – the VkPhysicalDeviceSparseProperties structure which specifies various sparse related properties of the physical device. See Sparse Properties for details.

    Layout

    
     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;
     }
    • Field Detail

      • SIZEOF

        The struct size in bytes.
      • ALIGNOF

        The struct alignment in bytes.
      • APIVERSION, DRIVERVERSION, VENDORID, DEVICEID, DEVICETYPE, DEVICENAME, PIPELINECACHEUUID, LIMITS, SPARSEPROPERTIES

        The struct member offsets.
    • Constructor Detail

      • VkPhysicalDeviceProperties

        public VkPhysicalDeviceProperties​(java.nio.ByteBuffer container)
        Creates a VkPhysicalDeviceProperties instance at the current position of the specified ByteBuffer container. Changes to the buffer's content will be visible to the struct instance and vice versa.

        The created instance holds a strong reference to the container object.

    • Method Detail

      • sizeof

        public int sizeof()
        Specified by:
        sizeof in class org.lwjgl.system.Struct
      • apiVersion

        public int apiVersion()
        Returns the value of the apiVersion field.
      • driverVersion

        public int driverVersion()
        Returns the value of the driverVersion field.
      • vendorID

        public int vendorID()
        Returns the value of the vendorID field.
      • deviceID

        public int deviceID()
        Returns the value of the deviceID field.
      • deviceType

        public int deviceType()
        Returns the value of the deviceType field.
      • deviceName

        public java.nio.ByteBuffer deviceName()
        Returns a ByteBuffer view of the deviceName field.
      • deviceNameString

        public java.lang.String deviceNameString()
        Decodes the null-terminated string stored in the deviceName field.
      • pipelineCacheUUID

        public java.nio.ByteBuffer pipelineCacheUUID()
        Returns a ByteBuffer view of the pipelineCacheUUID field.
      • pipelineCacheUUID

        public byte pipelineCacheUUID​(int index)
        Returns the value at the specified index of the pipelineCacheUUID field.
      • malloc

        public static VkPhysicalDeviceProperties malloc()
        Returns a new VkPhysicalDeviceProperties instance allocated with memAlloc. The instance must be explicitly freed.
      • calloc

        public static VkPhysicalDeviceProperties calloc()
        Returns a new VkPhysicalDeviceProperties instance allocated with memCalloc. The instance must be explicitly freed.
      • create

        public static VkPhysicalDeviceProperties create()
        Returns a new VkPhysicalDeviceProperties instance allocated with BufferUtils.
      • create

        public static VkPhysicalDeviceProperties create​(long address)
        Returns a new VkPhysicalDeviceProperties instance for the specified memory address.
      • mallocStack

        public static VkPhysicalDeviceProperties mallocStack()
        Returns a new VkPhysicalDeviceProperties instance allocated on the thread-local MemoryStack.
      • callocStack

        public static VkPhysicalDeviceProperties callocStack()
        Returns a new VkPhysicalDeviceProperties instance allocated on the thread-local MemoryStack and initializes all its bits to zero.
      • mallocStack

        public static VkPhysicalDeviceProperties mallocStack​(org.lwjgl.system.MemoryStack stack)
        Returns a new VkPhysicalDeviceProperties instance allocated on the specified MemoryStack.
        Parameters:
        stack - the stack from which to allocate
      • callocStack

        public static VkPhysicalDeviceProperties callocStack​(org.lwjgl.system.MemoryStack stack)
        Returns a new VkPhysicalDeviceProperties instance allocated on the specified MemoryStack and initializes all its bits to zero.
        Parameters:
        stack - the stack from which to allocate
      • callocStack

        public static VkPhysicalDeviceProperties.Buffer callocStack​(int capacity,
                                                                    org.lwjgl.system.MemoryStack stack)
        Returns a new VkPhysicalDeviceProperties.Buffer instance allocated on the specified MemoryStack and initializes all its bits to zero.
        Parameters:
        stack - the stack from which to allocate
        capacity - the buffer capacity
      • napiVersion

        public static int napiVersion​(long struct)
        Unsafe version of apiVersion().
      • ndriverVersion

        public static int ndriverVersion​(long struct)
        Unsafe version of driverVersion().
      • nvendorID

        public static int nvendorID​(long struct)
        Unsafe version of vendorID().
      • ndeviceID

        public static int ndeviceID​(long struct)
        Unsafe version of deviceID().
      • ndeviceType

        public static int ndeviceType​(long struct)
        Unsafe version of deviceType().
      • ndeviceName

        public static java.nio.ByteBuffer ndeviceName​(long struct)
        Unsafe version of deviceName().
      • ndeviceNameString

        public static java.lang.String ndeviceNameString​(long struct)
        Unsafe version of deviceNameString().
      • npipelineCacheUUID

        public static java.nio.ByteBuffer npipelineCacheUUID​(long struct)
        Unsafe version of pipelineCacheUUID().
      • npipelineCacheUUID

        public static byte npipelineCacheUUID​(long struct,
                                              int index)
        Unsafe version of pipelineCacheUUID.