Vulkan is never torn down: no engine calls coli_vk_shutdown (Metal is, in kimi_k3)
coli_vk_shutdown() is declared (c/backend_vulkan.h:20) and defined
(c/backend_vulkan.c:1536), but the only call site in the tree is inside the
#ifdef VK_TEST self-test main() (c/backend_vulkan.c:2163). No engine calls
it:
| engine | coli_vk_shutdown |
coli_metal_shutdown |
|---|---|---|
colibri.c |
0 | 0 |
glm53.c |
0 | 0 |
kimi_k3.c |
0 | 3 |
qwen36.c |
0 | 0 |
inkling.c |
0 | 0 |
So Metal is torn down, in kimi_k3.c (:3214, :3269, :3342), while Vulkan
never is anywhere.
For a CLI that exits this is harmless — the process teardown reclaims the device,
the arena blocks and the mapped memory. It seemed worth asking about because
mat_release's own comment raises exactly the case where it would matter:
Una CLI che finisce lascia fare al sistema operativo; un ospite che tiene piu' motori nello stesso processo no, e un motore che non si smonta diventa una perdita per richiesta.
Nothing in-tree hosts several engines in one process today, so this may well be deliberate — hence a question rather than a patch.
Is the asymmetry intentional? If engines should tear Vulkan down, it looks like a cross-cutting change (every engine with a Vulkan path, not one), and I'd be happy to send it as a separate PR if you'd like it done.
Observed on main @ a8f2ca6, v1.11.0.
Drafted with Claude Code
Source: JustVugg/colibri