radv: generate same device UUID as radeonsi
This is required for interop use cases. The same device must report identical UUIDs through the GL and Vulkan APIs so that users can identify when it is safe to perform a memory object import. v2: use ac helpers to calculate the uuid Signed-off-by: Andres Rodriguez <andresx7@gmail.com> Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
This commit is contained in:
committed by
Timothy Arceri
parent
059d82c1c2
commit
f8ea71f047
@@ -63,12 +63,9 @@ radv_device_get_cache_uuid(enum radeon_family family, void *uuid)
|
||||
}
|
||||
|
||||
static void
|
||||
radv_get_device_uuid(drmDevicePtr device, void *uuid) {
|
||||
memset(uuid, 0, VK_UUID_SIZE);
|
||||
memcpy((char*)uuid + 0, &device->businfo.pci->domain, 2);
|
||||
memcpy((char*)uuid + 2, &device->businfo.pci->bus, 1);
|
||||
memcpy((char*)uuid + 3, &device->businfo.pci->dev, 1);
|
||||
memcpy((char*)uuid + 4, &device->businfo.pci->func, 1);
|
||||
radv_get_device_uuid(struct radeon_info *info, void *uuid)
|
||||
{
|
||||
ac_compute_device_uuid(info, uuid, VK_UUID_SIZE);
|
||||
}
|
||||
|
||||
static const VkExtensionProperties instance_extensions[] = {
|
||||
@@ -338,7 +335,7 @@ radv_physical_device_init(struct radv_physical_device *device,
|
||||
fprintf(stderr, "WARNING: radv is not a conformant vulkan implementation, testing use only.\n");
|
||||
device->name = get_chip_name(device->rad_info.family);
|
||||
|
||||
radv_get_device_uuid(drm_device, device->device_uuid);
|
||||
radv_get_device_uuid(&device->rad_info, &device->device_uuid);
|
||||
|
||||
if (device->rad_info.family == CHIP_STONEY ||
|
||||
device->rad_info.chip_class >= GFX9) {
|
||||
|
||||
Reference in New Issue
Block a user