Skip to content

compat.vulkan-runtime 2026.09.06: declare the payloads the farm substitutes - #350

Merged
Sunrisepeak merged 2 commits into
mainfrom
feat/vulkan-runtime-declared-payloads
Sep 5, 2026
Merged

compat.vulkan-runtime 2026.09.06: declare the payloads the farm substitutes#350
Sunrisepeak merged 2 commits into
mainfrom
feat/vulkan-runtime-declared-payloads

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

What this changes

compat.vulkan-runtime gains version 2026.09.06, whose payload set is declared rather than discovered.

Until this version the substitution pass took a payload only when some earlier, unrelated install had already placed it in the store. The same package therefore produced a farm of twenty payload libraries on a developer machine and a farm of one in a fresh subos, and the report read no installed payload provides this soname for sonames this index does publish. Measured 2026-09-05 in a fresh subos: 30 host entries, against 8 on the machine that happened to have the stack installed.

The declaration and its reader

The payload set is now xpm.linux.deps.runtime, at platform level because a per-version deps table parses and is then not applied (compat.glx-runtime records that measurement). PAYLOAD_PACKAGES maps each soname to the package declared for it, and is the reader that keeps the two lists honest: a soname it maps whose package is absent is reported as a declaration that did not take effect, rather than silently farmed from the host.

xim:icu and xim:libedit are deliberately absent: their sonames (78, 0) differ from the ones a host Mesa built against Ubuntu 24.04 asks for (libicuuc.so.74, libedit.so.2), and a different soname is a different ABI. xim:libllvm and xim:libxml2 are absent for the reason the symbol test already records, being 12215 and 195 symbols short of the host copies.

The machine guard

Both runtime adapters gain an ELF machine guard. nm reads a foreign object without complaint and reports a covering symbol set, so the symbol test alone would substitute an x86_64 payload into an aarch64 farm, which is the store every aarch64 machine has today, since every Linux payload in this index publishes one x86_64 artifact. The Vulkan adapter also gains the aarch64 multiarch directories, whose absence made its farm empty on a Debian-family aarch64 machine.

Measured

On this host with the new version, against a project-local index:

2026.09.05 2026.09.06
payload substitutions 20 24
host entries 11 7

The remaining seven are libdrm_amdgpu, libLLVM, libtinfo and libxml2 (symbol-test gaps, recorded with counts), and libedit, libicuuc, libicudata (different soname, different ABI). A Vulkan probe built against the new version still enumerates two devices, and compat.vulkan moves its pin to the new runtime version in the same change.

…substitutes

Until this version the substitution pass took a payload only when some
earlier, unrelated install had already placed it in the store. The same
package therefore produced a farm of twenty payload libraries on a
developer machine and a farm of one in a fresh subos, and the report read
"no installed payload provides this soname" for sonames this index does
publish. Measured 2026-09-05: 30 host entries in a fresh subos against 8
on a machine that happened to have the stack installed.

The payload set is now declared as xpm.linux.deps.runtime, at platform
level because a per-version deps table parses and is then not applied.
PAYLOAD_PACKAGES maps each soname to the package declared for it and is
the reader that keeps the two lists honest: a soname it maps whose
package is absent is reported as a declaration that did not take effect
rather than silently farmed from the host.

xim:icu and xim:libedit are deliberately absent. Their sonames (78, 0)
differ from the ones a host Mesa built against Ubuntu 24.04 asks for
(libicuuc.so.74, libedit.so.2), and a different soname is a different
ABI. xim:libllvm and xim:libxml2 are absent for the reason the symbol
test already records: their payloads are 12215 and 195 symbols short of
the host copies.

Both adapters gain an ELF machine guard. nm reads a foreign object
without complaint and reports a covering symbol set, so the symbol test
alone would substitute an x86_64 payload into an aarch64 farm, which is
the store every aarch64 machine has today. The Vulkan adapter also gains
the aarch64 multiarch directories, whose absence made its farm empty on a
Debian-family aarch64 machine.

Measured on this host with the new version: 24 substitutions against 20,
seven host entries against eleven, and a Vulkan probe still enumerating
two devices.
An unreadable ELF header -- a dangling farm link, a file the reader
cannot open -- is not evidence of a foreign machine. Reporting it as one
would put a wrong reason in the record; the symbol test then rejects it
for the reason that applies.
@Sunrisepeak
Sunrisepeak merged commit 0bbf3ad into main Sep 5, 2026
11 checks passed
@Sunrisepeak
Sunrisepeak deleted the feat/vulkan-runtime-declared-payloads branch September 5, 2026 16:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants