From d08df319ca8f03bd98ce0cac37214e374607dc3d Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Wed, 27 Sep 2023 12:45:39 -0500 Subject: [PATCH] nvk: Store a 20-bit driver_build_sha in nvk_instance Part-of: --- src/nouveau/vulkan/nvk_instance.c | 7 ++++--- src/nouveau/vulkan/nvk_instance.h | 2 +- src/nouveau/vulkan/nvk_physical_device.c | 3 ++- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/nouveau/vulkan/nvk_instance.c b/src/nouveau/vulkan/nvk_instance.c index 1fa5e41..e37b648 100644 --- a/src/nouveau/vulkan/nvk_instance.c +++ b/src/nouveau/vulkan/nvk_instance.c @@ -10,6 +10,7 @@ #include "vulkan/wsi/wsi_common.h" #include "util/build_id.h" +#include "util/mesa-sha1.h" VKAPI_ATTR VkResult VKAPI_CALL nvk_EnumerateInstanceVersion(uint32_t *pApiVersion) @@ -152,14 +153,14 @@ nvk_CreateInstance(const VkInstanceCreateInfo *pCreateInfo, } unsigned build_id_len = build_id_length(note); - if (build_id_len < 20) { + if (build_id_len < SHA1_DIGEST_LENGTH) { result = vk_errorf(NULL, VK_ERROR_INITIALIZATION_FAILED, "build-id too short. It needs to be a SHA"); goto fail_init; } - assert(build_id_len >= VK_UUID_SIZE); - memcpy(instance->driver_uuid, build_id_data(note), VK_UUID_SIZE); + STATIC_ASSERT(sizeof(instance->driver_build_sha) == SHA1_DIGEST_LENGTH); + memcpy(instance->driver_build_sha, build_id_data(note), SHA1_DIGEST_LENGTH); *pInstance = nvk_instance_to_handle(instance); return VK_SUCCESS; diff --git a/src/nouveau/vulkan/nvk_instance.h b/src/nouveau/vulkan/nvk_instance.h index 9623467..705f3ef 100644 --- a/src/nouveau/vulkan/nvk_instance.h +++ b/src/nouveau/vulkan/nvk_instance.h @@ -12,7 +12,7 @@ struct nvk_instance { struct vk_instance vk; - uint8_t driver_uuid[VK_UUID_SIZE]; + uint8_t driver_build_sha[20]; }; VK_DEFINE_HANDLE_CASTS(nvk_instance, vk.base, VkInstance, VK_OBJECT_TYPE_INSTANCE) diff --git a/src/nouveau/vulkan/nvk_physical_device.c b/src/nouveau/vulkan/nvk_physical_device.c index dcf2c82..ff9f693 100644 --- a/src/nouveau/vulkan/nvk_physical_device.c +++ b/src/nouveau/vulkan/nvk_physical_device.c @@ -619,7 +619,8 @@ nvk_get_device_properties(const struct nvk_instance *instance, }; STATIC_ASSERT(sizeof(dev_uuid) == VK_UUID_SIZE); memcpy(properties->deviceUUID, &dev_uuid, VK_UUID_SIZE); - memcpy(properties->driverUUID, instance->driver_uuid, VK_UUID_SIZE); + STATIC_ASSERT(sizeof(instance->driver_build_sha) >= VK_UUID_SIZE); + memcpy(properties->driverUUID, instance->driver_build_sha, VK_UUID_SIZE); snprintf(properties->driverName, VK_MAX_DRIVER_NAME_SIZE, "NVK"); snprintf(properties->driverInfo, VK_MAX_DRIVER_INFO_SIZE, -- 2.7.4