fix(build): invalidate DLSS objects when SDK headers change #1648

Merged
Arkex-ai merged 2 commits from fix/dlss-sdk-object-cache into main 2026-11-10 13:48:54 +00:00
Arkex-ai commented 2026-11-10 12:05:36 +00:00 (Migrated from github.com)

DLSS compilation jobs omitted NVIDIA SDK headers from their cache dependencies, while object keys deliberately discard include paths. Changing an SDK header could therefore reuse DLSS code compiled against the previous contents; include the SDK header tree only in the DLSS object's dependencies.

The same header bytes still reuse objects after SDK relocation, and SDK changes do not invalidate unrelated backend objects or builds without NGX. No proprietary files are included.

Validation:

  • Execute the actual Vulkan job producer and dependency/key functions with authored headers and a real compiler: main reuses an executable returning 11 after the included SDK header changes to 22; the candidate recompiles and returns 22.
  • Covers nested headers, content restoration, SDK relocation, disabled NGX, unrelated objects and existing backend-header dependencies. Four compiled behavioral mutation controls fail the expected assertions.
  • Windows LLVM and Linux GCC checks pass. The complete local suite is 236 passed / 2 failed / 20 skipped, versus main 235 / the same 2 / 20. Shared local failures are Windows symlink privilege and unavailable Windows SDK headers.

Base main ba40a1a; candidate ef0432c. Exact-head fork source, Windows, AppImage and optional NVIDIA DLSS backend/link CIs passed (linked below). The production change affects build cache dependencies; no DLSS GPU quality or performance result is claimed.

AI assistance: OpenAI Codex.

Exact-head fork CI

Head ef0432c6cdff89f8d3b0c8b1b0502dfa8c0602ca. Fork runs do not replace upstream maintainer approval.

DLSS compilation jobs omitted NVIDIA SDK headers from their cache dependencies, while object keys deliberately discard include paths. Changing an SDK header could therefore reuse DLSS code compiled against the previous contents; include the SDK header tree only in the DLSS object's dependencies. The same header bytes still reuse objects after SDK relocation, and SDK changes do not invalidate unrelated backend objects or builds without NGX. No proprietary files are included. Validation: - Execute the actual Vulkan job producer and dependency/key functions with authored headers and a real compiler: main reuses an executable returning 11 after the included SDK header changes to 22; the candidate recompiles and returns 22. - Covers nested headers, content restoration, SDK relocation, disabled NGX, unrelated objects and existing backend-header dependencies. Four compiled behavioral mutation controls fail the expected assertions. - Windows LLVM and Linux GCC checks pass. The complete local suite is 236 passed / 2 failed / 20 skipped, versus main 235 / the same 2 / 20. Shared local failures are Windows symlink privilege and unavailable Windows SDK headers. Base main ba40a1a; candidate ef0432c. Exact-head fork source, Windows, AppImage and optional NVIDIA DLSS backend/link CIs passed (linked below). The production change affects build cache dependencies; no DLSS GPU quality or performance result is claimed. AI assistance: OpenAI Codex. <!-- dlss-current-ci --> ## Exact-head fork CI - [Vulkan back end with NVIDIA DLSS](https://github.com/Arkex-ai/Hookshot/actions/runs/42812879929): success. - [Linux AppImage](https://github.com/Arkex-ai/Hookshot/actions/runs/42812875669): success. - [Windows builder](https://github.com/Arkex-ai/Hookshot/actions/runs/42812871016): success. - [Game-free source regressions](https://github.com/Arkex-ai/Hookshot/actions/runs/42812867209): success. Head `ef0432c6cdff89f8d3b0c8b1b0502dfa8c0602ca`. Fork runs do not replace upstream maintainer approval.
Arkex-ai commented 2026-11-10 12:27:15 +00:00 (Migrated from github.com)

CI follow-up for commit ef0432c6cdff89f8d3b0c8b1b0502dfa8c0602ca: all four fork runs completed successfully:

The description now records these results. Current main is d448ccc988082de44360f26fb47a497f76644048; its two commits since this PR's base touch menu code/tests and the README, with no overlap in this PR's changed paths. These results validate the PR head, not a new integration build against that main. No code changes were needed for this follow-up. No game/GPU runtime test was performed, and these fork results do not replace upstream review or required checks.

CI follow-up for commit `ef0432c6cdff89f8d3b0c8b1b0502dfa8c0602ca`: all four fork runs completed successfully: - [Vulkan backend with NVIDIA DLSS / link check](https://github.com/Arkex-ai/Hookshot/actions/runs/42812879929) - [Linux AppImage](https://github.com/Arkex-ai/Hookshot/actions/runs/42812875669) - [Windows builder](https://github.com/Arkex-ai/Hookshot/actions/runs/42812871016) - [Game-free source regressions](https://github.com/Arkex-ai/Hookshot/actions/runs/42812867209) The description now records these results. Current main is `d448ccc988082de44360f26fb47a497f76644048`; its two commits since this PR's base touch menu code/tests and the README, with no overlap in this PR's changed paths. These results validate the PR head, not a new integration build against that main. No code changes were needed for this follow-up. No game/GPU runtime test was performed, and these fork results do not replace upstream review or required checks.
NotRexed commented 2026-11-10 13:16:28 +00:00 (Migrated from github.com)

Thanks! This now conflicts with main after #1643, only in tests/run_all.py: both PRs add an entry at the same place (test_builder_dlss_update.py from #1643, test_dlss_sdk_cache.py here). Could you rebase or merge main and keep both lines? Then it can go in.

Thanks! This now conflicts with `main` after #1643, only in `tests/run_all.py`: both PRs add an entry at the same place (`test_builder_dlss_update.py` from #1643, `test_dlss_sdk_cache.py` here). Could you rebase or merge `main` and keep both lines? Then it can go in.
Arkex-ai commented 2026-11-10 13:28:06 +00:00 (Migrated from github.com)

Merged current main (d8f0513f4555d3f6fa2a6d2df6fa76015ee17dbc) into this PR in c6854305c5c78e52945aa6419670b9df0d911ad0, preserving the existing DLSS SDK cache fix and both runner entries in tests/run_all.py: test_builder_dlss_update.py and test_dlss_sdk_cache.py. GitHub now reports the PR as mergeable.

Local validation: the actual Builder DLSS update fixture and byte-compilation of every tracked Python file both passed; git diff --check passed. The first sandboxed fixture attempt could not write its temporary directory; rerunning outside that restriction passed. The DLSS C++ cache fixture was skipped locally because no C++ compiler is on PATH.

All four fork CI runs completed successfully for this exact commit (verified after completion):

No game/GPU runtime test was performed. These fork runs do not replace upstream required checks or review.

Merged current main (`d8f0513f4555d3f6fa2a6d2df6fa76015ee17dbc`) into this PR in `c6854305c5c78e52945aa6419670b9df0d911ad0`, preserving the existing DLSS SDK cache fix and both runner entries in `tests/run_all.py`: `test_builder_dlss_update.py` and `test_dlss_sdk_cache.py`. GitHub now reports the PR as mergeable. Local validation: the actual Builder DLSS update fixture and byte-compilation of every tracked Python file both passed; `git diff --check` passed. The first sandboxed fixture attempt could not write its temporary directory; rerunning outside that restriction passed. The DLSS C++ cache fixture was skipped locally because no C++ compiler is on PATH. All four fork CI runs completed successfully for this exact commit (verified after completion): - [Game-free source regressions](https://github.com/Arkex-ai/Hookshot/actions/runs/42824701659) - [Vulkan DLSS compile/link check](https://github.com/Arkex-ai/Hookshot/actions/runs/42824705855) - [Windows builder](https://github.com/Arkex-ai/Hookshot/actions/runs/42824709586) - [Linux AppImage](https://github.com/Arkex-ai/Hookshot/actions/runs/42824714251) No game/GPU runtime test was performed. These fork runs do not replace upstream required checks or review.
Commenting is not possible because the repository is archived.
No description provided.