docs(vulkan): the cross-platform closure as implemented and measured - #397
Merged
Conversation
Design only -- nothing implemented. Written for review. Separates the three runtime layers (loader / ICD / layer) because the whole problem comes from conflating them: a missing loader kills the process before main (0xC0000135), a missing ICD merely enumerates zero devices. The goal is to make every failure the second kind. Records the inventory finding that makes this small: every payload already exists -- xim:vulkan-loader (linux + windows), xim:moltenvk (macosx), xim:mesa-lavapipe (linux + windows) -- and mcpp already deploys a dependency's *.dll beside the executable and already treats vulkan-1.dll as must-ship in pack. Only the mcpp-index wiring is missing. Also records what not to retry: the xpm.<platform>.deps route produced three runs with no loader and no diagnostic, and that path is used by 2 windows packages in the whole index, neither of them tested on Windows. Co-authored-by: sunrisepeak <x.d2learn.org@gmail.com>
Rewrites the design written for review earlier today into a record of what was done, what was measured, where it departs from the design, and why. The headline: a Windows machine with no GPU driver no longer dies before `main` (0xC0000135). compat.vulkan 1.4.357.3 ships the loader DLL and mcpp deploys it beside every consuming executable. Measured on `windows-2022` with no system loader for `mcpp build`, `mcpp test`, and `mcpp pack` followed by a run from a clean directory; transitive consumers (eui-neo's vulkan feature) included. Departures from the design, each with its reason in the doc: no new `compat.vulkan-loader` package (compat.openblas already had the exact shape); the `xpm.<platform>.deps` route abandoned (three runs, no loader, no diagnostic); versions bumped rather than pins moved (warm stores record pins); khronos.vulkan-hpp split into a follow-up (a member gets one project index, and the two-index failure still reproduces on 2026.9.11.2 although mcpp#238 and xlings#374 are closed); no `vulkan.loader` capability (mcpp does not error on an unserved one); CI provisioning of the DLL dropped (it would pass whether or not the package works). macOS, measured on `macos-15`: without MoltenVK nothing crashes; with `libMoltenVK.dylib` and `vulkan/icd.d/MoltenVK_icd.json` beside the executable (relative library_path) a real device enumerates, and the layout survives copying bin/ elsewhere. What is missing is mcpp deploying those two files -- filed as mcpp-community/mcpp#615. `mcpp pack` also refuses Mach-O programs today, which is recorded as the mcpp limitation it is. Also records the two install hooks found deriving paths from the version (eui-neo, xim:vulkan-loader) and the stray gitcode asset from a misnamed upload. Co-authored-by: sunrisepeak <x.d2learn.org@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Record of the Vulkan cross-platform work: what was implemented (#395, #394, #392, openxlings/xim-pkgindex#821), what was measured (windows-2022 with no system loader: build / test / pack + clean-dir run; macos-15: ICD discovery beside the executable), where it departs from the reviewed design and why, and what remains (mcpp-community/mcpp#615 for macOS deployment;
mcpp packrefusing Mach-O programs; the two-project-index failure still reproducing). Docs only —.agents/*selects no workspace member.