Repository navigation
fix(ci): repin Vulkan SDK to 1.4.309.0 + runtime to v2.7.1, and guard the two pins against drift - #3
Merged
Conversation
….7.1 LunarG ages out old SDK installers (1.3.283.0 is already a hard 404; 1.3.296.0 is next), and 'version: latest' is a trap: from 1.4.313.0 on the repackaged installer makes the action's 7z x extract Bin/ only, so the step stays green and the build dies at find_package(Vulkan). 1.4.309.0 is the newest complete SDK. Also parameterises the runtime checkout through a job-level RUNTIME_REF and adds the Rule-5 ABI pin self-check (mirroring displayxr-leia-plugin) so RUNTIME_REF and CMakeLists.txt DXR_RUNTIME_GIT_TAG cannot drift, and follows the runtime's own CI to OpenXR loader 1.1.51.
Matches RUNTIME_REF in build-windows.yml, which the new Rule-5 self-check now asserts. No separate ABI-floor constant needs touching: the plug-in reports XRT_PLUGIN_API_VERSION_CURRENT from the fetched runtime's own headers, so the tag bump re-pairs the ABI by construction.
The unanchored pattern matched the illustrative placeholder inside the comment that the new check itself added to CMakeLists.txt, so the guard reported drift against 'vX.Y.Z'. Anchor on a line starting with the set() call.
Describe the anchored shape in prose instead of quoting an example tag next to DXR_RUNTIME_GIT_TAG, which is itself a matchable line.
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.
Two pieces of rot in the scaffold every new vendor display-processor repo is generated from. Anything stale here is copied into every future vendor repo, so both are fixed together.
1. Vulkan SDK pin (CI cannot pass)
LunarG serves only the ~16 newest SDK releases and deletes the installers for older ones. The template's original pin,
1.3.283.0, is now a hard 404 and broke six sibling repos on 2026-08-17 withcurl failed with error code: 22(fixed there by displayxr-demo-earthview#41, displayxr-demo-avatar#62, displayxr-demo-gaussiansplat#88, displayxr-demo-modelviewer#95, displayxr-demo-mediaplayer#48, displayxr-leia-plugin#149). The template had already been nudged to1.3.296.0in #2, which still resolves today but is next in line to age out.Repinned to 1.4.309.0, with the same explanatory comment the six sibling PRs carry. The load-bearing part of that comment:
Verified complete: 1.3.290.0, 1.4.304.0, 1.4.309.0. Verified
Bin/-only: 1.4.313.2, 1.4.321.1, 1.4.335.0, 1.4.357.0 (=latest). 1.4.309.0 is the newest version that still unpacks a complete SDK.The durable fix is to drop the LunarG action for vcpkg, as
displayxr-runtimealready has (vulkan-headers+vulkan-loader+glslang[tools]— immutable pins, cannot rot). Tracked in DisplayXR/displayxr-runtime#1029; the comment points there.2. Runtime tag pin (v1.27.0 → v2.7.1)
Both runtime-tag pins move to the current runtime release, v2.7.1:
CMakeLists.txt—DXR_RUNTIME_GIT_TAG "v1.27.0"→"v2.7.1".github/workflows/build-windows.yml— the sibling runtime checkout's hardcodedref: v1.27.0→ref: ${{ env.RUNTIME_REF }}, with a new job-levelRUNTIME_REF: v2.7.1Notes on what deliberately did not change:
XRT_PLUGIN_API_VERSION_CURRENTstraight from the headers of whichever runtime the tag fetches (src/drv_example/example_plugin.c), so bumping the tag re-pairs the ABI by construction. This is documented next to the pin now, so a vendor doesn't go hunting for a second number.displayxr-leia-plugindeliberately keepsDXR_RUNTIME_GIT_TAG_LINUX(v2.2.0) behind its Windows pin; the template has onlybuild-windows.ymland a single pin, so there is nothing to split and nothing was unified.5d90b0d5…) — it still matches the runtime's ownbuild-windows.ymlat v2.7.1.RUNTIME_REF, so the comment says to bump it alongside.3. Drift guard (the reason the two pins can't rot apart again)
The old "keep these in sync" comment was advisory, and it had in fact drifted (the template pinned the same tag in two files with nothing checking them). Added the Rule-5 ABI pin self-check step, copied from
displayxr-leia-plugin's proven implementation: it regexesDXR_RUNTIME_GIT_TAGout ofCMakeLists.txtand hard-fails if it differs fromRUNTIME_REF. Cheap, runs before anything is built, and gives every forked vendor repo the guard for free.Because the check regexes the literal
set(DXR_RUNTIME_GIT_TAG "vX.Y.Z"shape,CMakeLists.txtnow carries a comment saying to keep that shape (no computed value, no variable indirection) — the same constraint the leia-plugin CMakeLists documents.Verified before pushing
https://sdk.lunarg.com/sdk/download/1.4.309.0/windows/vulkan_sdk.exe→ 200openxr_loader_windows-1.1.51.zip→ 200v2.7.1is the currentdisplayxr-runtimereleasebuild-windows.ymluses vcpkg commit5d90b0d5…and OpenXR loader 1.1.51, and has no LunarG SDK step at allLeaving CI to prove the build. Do not merge until it is green.