From: Gilad S. Date: Sun, 26 Oct 2025 04:37:38 +0000 (+0200) Subject: vulkan: deduplicate Microsoft Direct3D12 devices (#16689) X-Git-Tag: upstream/0.0.7011~171 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=3cfa9c3f125763305b4226bc032f1954f08990dc;p=pkg%2Fggml%2Fsources%2Fllama.cpp vulkan: deduplicate Microsoft Direct3D12 devices (#16689) * fix: deduplicate and deprioritize Microsoft Direct3D12 vulkan devices from the `vulkan-dozen` driver * style: indent * fix: decrease priority * fix: switch to `||` --- diff --git a/ggml/src/ggml-vulkan/ggml-vulkan.cpp b/ggml/src/ggml-vulkan/ggml-vulkan.cpp index 94d76c7e..b783f780 100644 --- a/ggml/src/ggml-vulkan/ggml-vulkan.cpp +++ b/ggml/src/ggml-vulkan/ggml-vulkan.cpp @@ -4733,7 +4733,14 @@ static void ggml_vk_instance_init() { vk::PhysicalDeviceIDProperties old_id; old_props.pNext = &old_id; devices[k].getProperties2(&old_props); - return std::equal(std::begin(old_id.deviceUUID), std::end(old_id.deviceUUID), std::begin(new_id.deviceUUID)); + + bool equals = std::equal(std::begin(old_id.deviceUUID), std::end(old_id.deviceUUID), std::begin(new_id.deviceUUID)); + equals = equals || ( + old_id.deviceLUIDValid && new_id.deviceLUIDValid && + std::equal(std::begin(old_id.deviceLUID), std::end(old_id.deviceLUID), std::begin(new_id.deviceLUID)) + ); + + return equals; } ); if (old_device == vk_instance.device_indices.end()) { @@ -4771,6 +4778,7 @@ static void ggml_vk_instance_init() { #endif break; } + driver_priorities[vk::DriverId::eMesaDozen] = 100; if (driver_priorities.count(old_driver.driverID)) { old_priority = driver_priorities[old_driver.driverID];