From 3e9cbea34e7b40e002a9b984136ea8a49ced7930 Mon Sep 17 00:00:00 2001 From: Aitor Camacho Date: Thu, 13 Nov 2025 20:27:34 +0900 Subject: [PATCH] kk: Fill driverUUID Acked-by: Erik Faye-Lund Part-of: --- src/kosmickrisp/vulkan/kk_instance.c | 24 +++++++++++++++++++++--- src/kosmickrisp/vulkan/kk_instance.h | 2 +- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/kosmickrisp/vulkan/kk_instance.c b/src/kosmickrisp/vulkan/kk_instance.c index a51f2fd958b..4d7193da386 100644 --- a/src/kosmickrisp/vulkan/kk_instance.c +++ b/src/kosmickrisp/vulkan/kk_instance.c @@ -114,15 +114,33 @@ kk_CreateInstance(const VkInstanceCreateInfo *pCreateInfo, instance->vk.physical_devices.enumerate = kk_enumerate_physical_devices; instance->vk.physical_devices.destroy = kk_physical_device_destroy; - /* TODO_KOSMICKRISP We need to fill instance->driver_build_sha */ + const struct build_id_note *note = + build_id_find_nhdr_for_addr(kk_CreateInstance); + if (!note) { + result = vk_errorf(NULL, VK_ERROR_INITIALIZATION_FAILED, + "Failed to find build-id"); + goto fail_init; + } + + unsigned build_id_len = build_id_length(note); + if (build_id_len != VK_UUID_SIZE) { + result = vk_errorf( + NULL, VK_ERROR_INITIALIZATION_FAILED, + "build-id size does not match expected size (VK_UUID_SIZE which is 16 bytes)"); + goto fail_init; + } + + static_assert(sizeof(instance->driver_build_sha) == VK_UUID_SIZE, + "UUID size mismatch"); + memcpy(instance->driver_build_sha, build_id_data(note), VK_UUID_SIZE); kk_process_debug_variable(); *pInstance = kk_instance_to_handle(instance); return VK_SUCCESS; -// fail_init: -// vk_instance_finish(&instance->vk); +fail_init: + vk_instance_finish(&instance->vk); fail_alloc: vk_free(pAllocator, instance); diff --git a/src/kosmickrisp/vulkan/kk_instance.h b/src/kosmickrisp/vulkan/kk_instance.h index 0afbb29a55e..c77a2e4d028 100644 --- a/src/kosmickrisp/vulkan/kk_instance.h +++ b/src/kosmickrisp/vulkan/kk_instance.h @@ -16,7 +16,7 @@ struct kk_instance { struct vk_instance vk; - uint8_t driver_build_sha[20]; + uint8_t driver_build_sha[VK_UUID_SIZE]; uint32_t force_vk_vendor; };