Skip to content

Commit dec1500

Browse files
committed
fix(examples): offscreen stops naming a dependency its dependency already declares
`compat.vulkan` declares `compat.vulkan-runtime` itself on Linux. Naming it here too pinned one version in two places, in two repositories, with nothing enforcing that they agree -- and they drifted three times in one day: the farm moved its key, this file moved its own, and a runner holding an installed `compat.vulkan` still recorded the previous one. Each time the build stopped with `irreconcilable versions` and each time the repair was to edit the other place. Measured after removing it: the example still receives the farm -- `library_dirs` names `compat-x-vulkan-runtime/2026.09.11`, and the record reads members 56, walked 56, no findings -- because the package that needs the adapter is the package that says so. The comment that explained why the adapter exists stays, and now explains why this file does not name it.
1 parent 7f6684f commit dec1500

1 file changed

Lines changed: 15 additions & 6 deletions

File tree

examples/10-graphics/offscreen/mcpp.toml

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,21 @@ plugins = { version = "0.5.2", features = ["rules-spirv"], host-module = true }
3030
[dependencies.compat]
3131
vulkan = "1.4.357.2"
3232

33-
# The adapter that makes the host's own ICDs reachable from a binary running
34-
# under mcpp's private loader. An OS predicate, which IS allowed, and a Linux
35-
# concern by construction: macOS resolves through dyld and Windows through the
36-
# PE loader, and neither has a private loader to work around.
37-
[target.'cfg(linux)'.dependencies.compat]
38-
vulkan-runtime = "2026.09.11"
33+
# THE ADAPTER IS NOT NAMED HERE, AND THAT IS THE POINT.
34+
#
35+
# `compat.vulkan` declares `compat.vulkan-runtime` itself on Linux -- the
36+
# adapter that makes the host's own ICDs reachable from a binary running under
37+
# mcpp's private loader, which macOS and Windows do not need because dyld and
38+
# the PE loader have no private-loader problem to work around.
39+
#
40+
# Naming it here as well pinned one version in two places, in two repositories,
41+
# with nothing enforcing that they agree. They drifted three times in one day:
42+
# the loader package moved its pin, this file moved its own, and an installed
43+
# copy of `compat.vulkan` still recorded the previous one -- each time the build
44+
# stopped with `irreconcilable versions`, and each time the fix was to edit the
45+
# other place. A dependency that another dependency already declares is a
46+
# second copy of a decision; the version it needs is the one that package says
47+
# it needs.
3948

4049
# A Vulkan device that needs no GPU, so this example runs on a machine that has
4150
# none. It is a DEVICE and therefore a payload; the drivers a real GPU needs are

0 commit comments

Comments
 (0)