If the VkPhysicalDeviceIDProperties structure is included in the pNext chain of the VkPhysicalDeviceProperties2 structure passed to GetPhysicalDeviceProperties2, it is filled in with each corresponding implementation-dependent property.
deviceUUID must be immutable for a given device across instances, processes, driver APIs, driver versions, and system reboots.
Applications can compare the driverUUID value across instance and process boundaries, and can make similar queries in external APIs to determine whether they are capable of sharing memory objects and resources using them with the device.
deviceUUID and/or driverUUID must be used to determine whether a particular external object can be shared between driver components, where such a restriction exists as defined in the compatibility table for the particular object type:
If deviceLUIDValid is FALSE, the values of deviceLUID and deviceNodeMask are undefined. If deviceLUIDValid is TRUE and Vulkan is running on the Windows operating system, the contents of deviceLUID can be cast to an LUID object and must be equal to the locally unique identifier of a IDXGIAdapter1 object that corresponds to physicalDevice. If deviceLUIDValid is TRUE, deviceNodeMask must contain exactly one bit. If Vulkan is running on an operating system that supports the Direct3D 12 API and physicalDevice corresponds to an individual device in a linked device adapter, deviceNodeMask identifies the Direct3D 12 node corresponding to physicalDevice. Otherwise, deviceNodeMask must be 1.
Although they have identical descriptions, VkPhysicalDeviceIDProperties::deviceUUID may differ from VkPhysicalDeviceProperties2::pipelineCacheUUID. The former is intended to identify and correlate devices across API and driver boundaries, while the latter is used to identify a compatible device and driver combination to use when serializing and de-serializing pipeline state.
Implementations should return deviceUUID values which are likely to be unique even in the presence of multiple Vulkan implementations (such as a GPU driver and a software renderer; two drivers for different GPUs; or the same Vulkan driver running on two logically different devices).
Khronos' conformance testing is unable to guarantee that deviceUUID values are actually unique, so implementors should make their own best efforts to ensure this. In particular, hard-coded deviceUUID values, especially all-0 bits, should never be used.
A combination of values unique to the vendor, the driver, and the hardware environment can be used to provide a deviceUUID which is unique to a high degree of certainty. Some possible inputs to such a computation are:
GetPhysicalDevicePropertiesWhile VkPhysicalDeviceIDProperties::deviceUUID is specified to remain consistent across driver versions and system reboots, it is not intended to be usable as a serializable persistent identifier for a device. It may change when a device is physically added to, removed from, or moved to a different connector in a system while that system is powered down. Further, there is no reasonable way to verify with conformance testing that a given device retains the same UUID in a given system across all driver versions supported in that system. While implementations should make every effort to report consistent device UUIDs across driver versions, applications should avoid relying on the persistence of this value for uses other than identifying compatible devices for external object sharing purposes.
sType must be STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES
struct VkPhysicalDeviceIDProperties {
VkStructureType sType;
void * pNext;
uint8_t deviceUUID[VK_UUID_SIZE];
uint8_t driverUUID[VK_UUID_SIZE];
uint8_t deviceLUID[VK_LUID_SIZE];
uint32_t deviceNodeMask;
VkBool32 deviceLUIDValid;
}
| Modifier and Type | Class and Description |
|---|---|
| public static class | VkPhysicalDeviceIDProperties.
An array of |
| Modifier and Type | Field and Description |
|---|---|
| public static final int | ALIGNOF
The struct alignment in bytes. |
| public static final int | DEVICELUID
The struct member offsets. |
| public static final int | DEVICELUIDVALID
The struct member offsets. |
| public static final int | DEVICENODEMASK
The struct member offsets. |
| public static final int | DEVICEUUID
The struct member offsets. |
| public static final int | DRIVERUUID
The struct member offsets. |
| public static final int | PNEXT
The struct member offsets. |
| public static final int | SIZEOF
The struct size in bytes. |
| public static final int | STYPE
The struct member offsets. |
| Access | Constructor and Description |
|---|---|
| protected | |
| public | VkPhysicalDeviceIDProperties(ByteBuffer container)
Creates a |
| Modifier and Type | Method and Description |
|---|---|
| public static VkPhysicalDeviceIDProperties | |
| public static VkPhysicalDeviceIDProperties. | calloc(int
the buffer capacity capacity)Returns a new |
| public static VkPhysicalDeviceIDProperties | calloc(MemoryStack
the stack from which to allocate stack)Returns a new |
| public static VkPhysicalDeviceIDProperties. | calloc(int
the buffer capacity capacity, MemoryStack the stack from which to allocate stack)Returns a new |
| public static VkPhysicalDeviceIDProperties | |
| public static VkPhysicalDeviceIDProperties | |
| public static VkPhysicalDeviceIDProperties. | |
| public static VkPhysicalDeviceIDProperties. | |
| protected VkPhysicalDeviceIDProperties | create(long
the struct memory address address, ByteBuffer an optional container buffer, to be referenced strongly by the struct instance. container)Implements abstract org. the constructor, but returns the exact type of the Struct subclass.
|
| public static VkPhysicalDeviceIDProperties | |
| public static VkPhysicalDeviceIDProperties | create(long address)
Returns a new |
| public static VkPhysicalDeviceIDProperties. | create(int
the buffer capacity capacity)Returns a new |
| public static VkPhysicalDeviceIDProperties. | create(long
the memory address address, int the buffer capacity capacity)Create a |
| public static VkPhysicalDeviceIDProperties | |
| public static VkPhysicalDeviceIDProperties. | |
| public ByteBuffer | deviceLUID()
an array of |
| public byte | deviceLUID(int index)
an array of |
| public boolean | deviceLUIDValid()
a boolean value that will be |
| public int | deviceNodeMask()
a |
| public ByteBuffer | deviceUUID()
an array of |
| public byte | deviceUUID(int index)
an array of |
| public ByteBuffer | driverUUID()
an array of |
| public byte | driverUUID(int index)
an array of |
| public static VkPhysicalDeviceIDProperties | |
| public static VkPhysicalDeviceIDProperties. | malloc(int
the buffer capacity capacity)Returns a new |
| public static VkPhysicalDeviceIDProperties | malloc(MemoryStack
the stack from which to allocate stack)Returns a new |
| public static VkPhysicalDeviceIDProperties. | malloc(int
the buffer capacity capacity, MemoryStack the stack from which to allocate stack)Returns a new |
| public static VkPhysicalDeviceIDProperties | |
| public static VkPhysicalDeviceIDProperties | |
| public static VkPhysicalDeviceIDProperties. | |
| public static VkPhysicalDeviceIDProperties. | |
| public static ByteBuffer | |
| public static byte | |
| public static int | |
| public static int | |
| public static ByteBuffer | |
| public static byte | |
| public static ByteBuffer | |
| public static byte | |
| public static long | |
| public static void | |
| public static int | |
| public static void | |
| public long | |
| public VkPhysicalDeviceIDProperties | |
| public VkPhysicalDeviceIDProperties | |
| public VkPhysicalDeviceIDProperties | Returns: this structthe source struct src)Copies the specified struct data to this struct. |
| public int | |
| public int | |
| public VkPhysicalDeviceIDProperties | |
| public VkPhysicalDeviceIDProperties |
| ALIGNOF | back to summary |
|---|---|
| public static final int ALIGNOF The struct alignment in bytes. | |
| DEVICELUID | back to summary |
|---|---|
| public static final int DEVICELUID The struct member offsets. | |
| DEVICELUIDVALID | back to summary |
|---|---|
| public static final int DEVICELUIDVALID The struct member offsets. | |
| DEVICENODEMASK | back to summary |
|---|---|
| public static final int DEVICENODEMASK The struct member offsets. | |
| DEVICEUUID | back to summary |
|---|---|
| public static final int DEVICEUUID The struct member offsets. | |
| DRIVERUUID | back to summary |
|---|---|
| public static final int DRIVERUUID The struct member offsets. | |
| PNEXT | back to summary |
|---|---|
| public static final int PNEXT The struct member offsets. | |
| SIZEOF | back to summary |
|---|---|
| public static final int SIZEOF The struct size in bytes. | |
| STYPE | back to summary |
|---|---|
| public static final int STYPE The struct member offsets. | |
| VkPhysicalDeviceIDProperties | back to summary |
|---|---|
| protected VkPhysicalDeviceIDProperties(long address, ByteBuffer container) | |
| VkPhysicalDeviceIDProperties | back to summary |
|---|---|
| public VkPhysicalDeviceIDProperties(ByteBuffer container) Creates a The created instance holds a strong reference to the container object. | |
| calloc | back to summary |
|---|---|
| public static VkPhysicalDeviceIDProperties calloc() Returns a new | |
| calloc | back to summary |
|---|---|
| public static VkPhysicalDeviceIDProperties. Returns a new
| |
| calloc | back to summary |
|---|---|
| public static VkPhysicalDeviceIDProperties calloc(MemoryStack stack) Returns a new
| |
| calloc | back to summary |
|---|---|
| public static VkPhysicalDeviceIDProperties. Returns a new
| |
| callocStack | back to summary |
|---|---|
| public static VkPhysicalDeviceIDProperties callocStack()
Deprecated
Deprecated for removal in 3.4.0. Use
| |
| callocStack | back to summary |
|---|---|
| public static VkPhysicalDeviceIDProperties callocStack(MemoryStack stack)
Deprecated
Deprecated for removal in 3.4.0. Use
| |
| callocStack | back to summary |
|---|---|
| public static VkPhysicalDeviceIDProperties. Deprecated
Deprecated for removal in 3.4.0. Use
| |
| callocStack | back to summary |
|---|---|
| public static VkPhysicalDeviceIDProperties. Deprecated
Deprecated for removal in 3.4.0. Use
| |
| create | back to summary |
|---|---|
| protected VkPhysicalDeviceIDProperties create(long address, ByteBuffer container) Implements abstract org. Doc from org. Similar to Effectively, every
| |
| create | back to summary |
|---|---|
| public static VkPhysicalDeviceIDProperties create() Returns a new | |
| create | back to summary |
|---|---|
| public static VkPhysicalDeviceIDProperties create(long address) Returns a new | |
| create | back to summary |
|---|---|
| public static VkPhysicalDeviceIDProperties. Returns a new
| |
| create | back to summary |
|---|---|
| public static VkPhysicalDeviceIDProperties. Create a
| |
| createSafe | back to summary |
|---|---|
| public static VkPhysicalDeviceIDProperties createSafe(long address) Like
| |
| createSafe | back to summary |
|---|---|
| public static VkPhysicalDeviceIDProperties. Like
| |
| deviceLUID | back to summary |
|---|---|
| public ByteBuffer deviceLUID() an array of
| |
| deviceLUID | back to summary |
|---|---|
| public byte deviceLUID(int index) an array of
| |
| deviceLUIDValid | back to summary |
|---|---|
| public boolean deviceLUIDValid() a boolean value that will be
| |
| deviceNodeMask | back to summary |
|---|---|
| public int deviceNodeMask() a
| |
| deviceUUID | back to summary |
|---|---|
| public ByteBuffer deviceUUID() an array of
| |
| deviceUUID | back to summary |
|---|---|
| public byte deviceUUID(int index) an array of
| |
| driverUUID | back to summary |
|---|---|
| public ByteBuffer driverUUID() an array of
| |
| driverUUID | back to summary |
|---|---|
| public byte driverUUID(int index) an array of
| |
| malloc | back to summary |
|---|---|
| public static VkPhysicalDeviceIDProperties malloc() Returns a new | |
| malloc | back to summary |
|---|---|
| public static VkPhysicalDeviceIDProperties. Returns a new
| |
| malloc | back to summary |
|---|---|
| public static VkPhysicalDeviceIDProperties malloc(MemoryStack stack) Returns a new
| |
| malloc | back to summary |
|---|---|
| public static VkPhysicalDeviceIDProperties. Returns a new
| |
| mallocStack | back to summary |
|---|---|
| public static VkPhysicalDeviceIDProperties mallocStack()
Deprecated
Deprecated for removal in 3.4.0. Use
| |
| mallocStack | back to summary |
|---|---|
| public static VkPhysicalDeviceIDProperties mallocStack(MemoryStack stack)
Deprecated
Deprecated for removal in 3.4.0. Use
| |
| mallocStack | back to summary |
|---|---|
| public static VkPhysicalDeviceIDProperties. Deprecated
Deprecated for removal in 3.4.0. Use
| |
| mallocStack | back to summary |
|---|---|
| public static VkPhysicalDeviceIDProperties. Deprecated
Deprecated for removal in 3.4.0. Use
| |
| ndeviceLUID | back to summary |
|---|---|
| public static ByteBuffer ndeviceLUID(long struct) Unsafe version of | |
| ndeviceLUID | back to summary |
|---|---|
| public static byte ndeviceLUID(long struct, int index) Unsafe version of | |
| ndeviceLUIDValid | back to summary |
|---|---|
| public static int ndeviceLUIDValid(long struct) Unsafe version of | |
| ndeviceNodeMask | back to summary |
|---|---|
| public static int ndeviceNodeMask(long struct) Unsafe version of | |
| ndeviceUUID | back to summary |
|---|---|
| public static ByteBuffer ndeviceUUID(long struct) Unsafe version of | |
| ndeviceUUID | back to summary |
|---|---|
| public static byte ndeviceUUID(long struct, int index) Unsafe version of | |
| ndriverUUID | back to summary |
|---|---|
| public static ByteBuffer ndriverUUID(long struct) Unsafe version of | |
| ndriverUUID | back to summary |
|---|---|
| public static byte ndriverUUID(long struct, int index) Unsafe version of | |
| npNext | back to summary |
|---|---|
| public static long npNext(long struct) Unsafe version of | |
| npNext | back to summary |
|---|---|
| public static void npNext(long struct, long value) Unsafe version of | |
| nsType | back to summary |
|---|---|
| public static int nsType(long struct) Unsafe version of | |
| nsType | back to summary |
|---|---|
| public static void nsType(long struct, int value) Unsafe version of | |
| pNext | back to summary |
|---|---|
| public long pNext()
| |
| pNext | back to summary |
|---|---|
| public VkPhysicalDeviceIDProperties pNext(long value) Sets the specified value to the | |
| set | back to summary |
|---|---|
| public VkPhysicalDeviceIDProperties set(int sType, long pNext) Initializes this struct with the specified values. | |
| set | back to summary |
|---|---|
| public VkPhysicalDeviceIDProperties set(VkPhysicalDeviceIDProperties src) Copies the specified struct data to this struct.
| |
| sizeof | back to summary |
|---|---|
| public int sizeof() Implements abstract org. Doc from org. Returns
| |
| sType | back to summary |
|---|---|
| public int sType() a
| |
| sType | back to summary |
|---|---|
| public VkPhysicalDeviceIDProperties sType(int value) Sets the specified value to the | |
| sType$Default | back to summary |
|---|---|
| public VkPhysicalDeviceIDProperties sType$Default() Sets the | |
VkPhysicalDeviceIDProperties structs.
| Modifier and Type | Field and Description |
|---|---|
| private static final VkPhysicalDeviceIDProperties |
| Access | Constructor and Description |
|---|---|
| public | Buffer(ByteBuffer container)
Creates a new |
| public | |
| pack-priv |
| Modifier and Type | Method and Description |
|---|---|
| public ByteBuffer | |
| public byte | Returns: the value at the specified index of theVkPhysicalDeviceIDProperties#deviceLUID field.
|
| public boolean | |
| public int | |
| public ByteBuffer | |
| public byte | Returns: the value at the specified index of theVkPhysicalDeviceIDProperties#deviceUUID field.
|
| public ByteBuffer | |
| public byte | Returns: the value at the specified index of theVkPhysicalDeviceIDProperties#driverUUID field.
|
| protected VkPhysicalDeviceIDProperties | |
| public long | |
| public VkPhysicalDeviceIDProperties. | |
| protected VkPhysicalDeviceIDProperties. | |
| public int | |
| public VkPhysicalDeviceIDProperties. | |
| public VkPhysicalDeviceIDProperties. | sType$Default()
Sets the |
| ELEMENT_FACTORY | back to summary |
|---|---|
| private static final VkPhysicalDeviceIDProperties ELEMENT_FACTORY | |
| Buffer | back to summary |
|---|---|
| public Buffer(ByteBuffer container) Creates a new Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
by The created buffer instance holds a strong reference to the container object. | |
| Buffer | back to summary |
|---|---|
| public Buffer(long address, int cap) | |
| Buffer | back to summary |
|---|---|
| pack-priv Buffer(long address, ByteBuffer container, int mark, int pos, int lim, int cap) | |
| deviceLUID | back to summary |
|---|---|
public ByteBuffer deviceLUID()
| |
| deviceLUID | back to summary |
|---|---|
public byte deviceLUID(int index)
| |
| deviceLUIDValid | back to summary |
|---|---|
public boolean deviceLUIDValid()
| |
| deviceNodeMask | back to summary |
|---|---|
public int deviceNodeMask()
| |
| deviceUUID | back to summary |
|---|---|
public ByteBuffer deviceUUID()
| |
| deviceUUID | back to summary |
|---|---|
public byte deviceUUID(int index)
| |
| driverUUID | back to summary |
|---|---|
public ByteBuffer driverUUID()
| |
| driverUUID | back to summary |
|---|---|
public byte driverUUID(int index)
| |
| getElementFactory | back to summary |
|---|---|
| protected VkPhysicalDeviceIDProperties getElementFactory() Implements abstract org.
| |
| pNext | back to summary |
|---|---|
public long pNext()
| |
| pNext | back to summary |
|---|---|
| public VkPhysicalDeviceIDProperties. Sets the specified value to the | |
| self | back to summary |
|---|---|
| protected VkPhysicalDeviceIDProperties. Implements abstract org.
| |
| sType | back to summary |
|---|---|
public int sType()
| |
| sType | back to summary |
|---|---|
| public VkPhysicalDeviceIDProperties. Sets the specified value to the | |
| sType$Default | back to summary |
|---|---|
| public VkPhysicalDeviceIDProperties. Sets the | |