Vulkan: deduplicate Microsoft Direct3D12 devices #16689
Open
+7
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
A Microsoft Direct3D12 device appears on some Windows machines, which comes from the Microsoft Dozen (Dzn) Vulkan driver that is built on top of Direct3D 12.
This PR fixes an issue where sometimes both the native device entry and the Direct3D12 device entry are picked up by llama.cpp, and since both point to the same underlying device, after using all the memory of the first device, buffer allocations on the second will always fail.
When a native Vulkan driver is already available for a given device, we now prioritize it over the Dozen driver for reduced overhead.
I found a note on VulkanHub about the Direct3D12 device that was helpful in figuring this out.
Before
After