feat(vk): Intel XeSS Super Resolution as a temporal upscaler (Vulkan, the player's libxess.dll) #459

Merged
llun merged 3 commits from nyannoying/Longshot:feat/xess-sr into main 2026-11-15 20:42:45 +00:00
Contributor

Type: feat · Risk: low · Tested on: Windows 11, Intel Arc B580 (driver 32.0.101.9154) · Needs: Windows with an Arc A-series card or an Intel iGPU; Windows with an AMD or NVIDIA GPU; a Linux build

Why

Intel Arc owners have no upscaler made for their GPU: DLSS needs an NVIDIA card and FSR 4 an RDNA 4 one. Intel's XeSS Super Resolution has a Vulkan API, so it can sit on Longshot's frame chain beside them.

No issue is linked: the description before this one listed none.

What changed

The Upscaler row gets two new values, "Intel XeSS" and "Intel XeSS Native AA". They run Intel's XeSS Super Resolution through its Vulkan API, from the libxess.dll the player puts beside the game, or that the build downloads on the player's PC when asked (make_game.py --fetch-xess-runtime --accept-intel-license, RecompLauncher's Intel XeSS tick); Longshot holds only Intel's MIT-licensed API headers. Without Intel's file, or on Linux, the game starts as before.

  • vk: gpu/vk/vk_xess.cpp (new) loads the player's libxess.dll with LoadLibraryExA, resolves its functions by name, asks it for the Vulkan instance extensions, device extensions and features it needs before the instance and the device are made, and runs XeSS on the temporal chain. gpu/vk/xess_rules.h (new) chooses the preset for a render size. vk_temporal.cpp, vk_main.cpp and vk_draw.cpp call it; on Linux it is a stub that says why.
  • menu: two new Upscaler values, "Intel XeSS" (7) and "Intel XeSS Native AA" (8), after Off, so saved options keep their meaning (upscaler_rows.h, vk_menu.cpp, auto_settings.h). When Intel's file or something it needs is missing, the row's hint says what; the game starts as before.
  • third_party: third_party/xess holds Intel's MIT-licensed API headers only (xess.h, xess_vk.h, MIT.txt) with a PROVENANCE.md. libxess.dll is Intel's, under Intel's own licence, and is never in the repository or a build: the player puts it beside the game, or the build downloads it on the player's PC (next point).
  • prepare (for the launchers): scripts/xess_sdk.py (new) and make_game.py --fetch-xess-runtime --accept-intel-license (Windows) download libxess.dll 2.0.2.68 (78 MB, signed by Intel) with Intel's licence and third-party notices from intel/xess at de0fb9c1, the commit the headers come from, each file checked against its SHA-256, into LONGSHOT_XESS_SDK (default work/xess-sdk) before the build and into the game folder after it. Nothing is downloaded without Intel's licence accepted (the flag, or a typed yes). A libxess.dll the player put in the game folder that is not this one is left alone, and the build says so. It works as AMD's FSR runtime fetch does (scripts/ffx_sdk.py, --fetch-fsr-runtime). recomplauncher.json gets an Intel XeSS tick (Windows, off until Intel's licence is accepted), and the Builder's --cli drops LONGSHOT_XESS_SDK as it drops the DLSS and FSR SDK folders. The Longshot Launcher's switch, which passes the same two flags, is LongshotLauncher#110.
  • build: nx2/build.py, nx2/pipeline_share.py and scripts/dev_packs.py know the new file; no shader-stamp input changed.
  • tests: tests/test_xess_rules.py and tests/test_xess_sdk.py (new; the second without the network), the upscaler rows, menu keys, temporal jitter, recorder sync and shader stamp checks updated for the two values, main's history-reset fixture (tests/test_temporal_history.py) given XeSS's reset, and the Builder's --cli check (tests/builder_cli) given LONGSHOT_XESS_SDK.
  • docs: the README's Intel XeSS section (with the download), the RX_VK_XESS row in docs/development.md, XeSS in docs/temporal-history.md's PsychoV35 and history-reset text, a line in CONTRIBUTING.md.

Reviewer notes:

  • The licence line: only the MIT headers are vendored, from intel/xess de0fb9c1 (the v3.0.2 tag's headers still carry the proprietary notice; third_party/xess/PROVENANCE.md has the blob ids). libxess.dll is loaded by name at run time and the import library is not linked.
  • Conventions, from Intel's XeSS-SR developer guide: motion vectors in pixels from the current frame to the previous one, jitter in pixels in [-0.5, 0.5], both scales 1.
  • The download: Intel's licence for libxess.dll (the Intel Simplified Software License, LICENSE.txt at de0fb9c1) allows using and redistributing it unmodified in binary form with its notice kept. The build still only downloads it on the player's PC once the player has accepted that licence, as for AMD's and NVIDIA's files, and keeps the licence and Intel's third-party notices beside it.
  • PsychoV35 (#608, now on main): XeSS takes the Native HDR PsychoV35 scene as the other chain engines do (upscaler_rows.h takes_psychov35), behind its HDR context (RX_VK_XESS_HDR=0 prevents it). Not run in the game.
  • XeSS Frame Generation and XeLL are not part of this: Intel's SDK 3.0.2 has them for Direct3D 12 only (https://github.com/intel/xess/issues/60 is the open request).

Measurements

Verdict: it works on the Arc B580: Intel XeSS and its Native AA both run every frame with a right picture. XeSS costs about 1.7 ms of GPU time a frame more than the game's own upscaler at the same render size, Native AA 3.6 ms more; the frame rate is about the same three ways, because the CPU limits the frame at this spot. Not compared with main (see Baseline).

main when measured: cf605c85 (2026-11-14)
this PR when the description was written: feat/xess-sr @ 9cd76bec; the build that ran: b46daa73
Hardware: Intel Arc B580 12 GB, driver 32.0.101.9154; Core i5-13600K; 64 GB; Windows 11 Pro (26100-series Insider, 10.0.29704)
Scene: Kokiri Forest (child), the spawn spot on Link's balcony after the opening, standing still; 2048x1152 output, render size 1366x768 (67%), frame generation off, uncapped (HOS_FPS_MAX=1000); libxess.dll from Intel's XeSS SDK 3.0.2 (it reports XeSS 2.0.2)
Method: 6 runs on one build, the upscaler alternated (off, XeSS, Native AA, off, XeSS, Native AA) with RX_VK_XESS=0/1/2, each about 50 s standing after the load; fps from the log's vi: ... frames presented (... fps over the last 5.0 s) lines (last 8 windows, their median), GPU time from vk: GPU time ... ms a frame (last 5 lines, their median).
How to reproduce: put libxess.dll beside the game, choose Upscaler > Intel XeSS in the Graphics tab (or RX_VK_XESS=1), stand in Kokiri Forest; the log says vk: Intel XeSS: 1366x768 -> 2048x1152 (Ultra Quality).

Baseline: the before column is this PR's own build with RX_VK_XESS=0 (the game's own upscaler), XeSS never loaded. main itself was not the comparison because on the B580 it loses the device entering Kokiri Forest (#444). The build that ran is b46daa73, this change on main cf605c85, with three more changes in: #444's float-add fix, the uniform snapshot of #446 and the split rule of #443. The branch was then rebased onto main 26a2eab0 (9cd76bec; one conflict, in scripts/dev_packs.py's list of renderer-only folders, where main's new lines are kept and third_party/xess/ added) and was not run in the game again: a main-based build has another shader stamp than this card's prepared caches. It has since been rebased again, onto main 2b1d38c6 (one conflict, in tests/test_shader_stamp_cache.py, both sides kept, no source line changed) onto main 7bacf846 (four conflicts, in upscaler_rows.h, vk_temporal.cpp, nx2/build.py and docs/development.md, where main's FSR 3.1 additions and PsychoV35 route touched the same lines: both sides kept, XeSS added beside FSR 3.1), and onto main bbe7a078 (one conflict, in nx2/make_game.py: Intel's library placed before main's new "swap and runtimes" timing mark); with the download added between those two. The game was not run after any rebase, so the numbers below are from b46daa73.

Before, RX_VK_XESS=0 (the game's own upscaler): this PR @ b46daa73 After, Intel XeSS (1366x768 -> 2048x1152): this PR @ b46daa73 After, Intel XeSS Native AA (2048x1152): this PR @ b46daa73
fps, median of each run 34.6, 38.0 35.3, 34.2 34.4, 34.2
GPU time a frame 11.7, 11.6 ms 13.3, 13.4 ms 15.1, 15.4 ms
X1 off  fps: 35.7 33.7 32.4 35.4 35.3 33.8 35.8 32.6  | GPU ms: 11.7 11.7 11.6 11.6 11.7
X2 xess fps: 35.1 35.5 35.3 35.6 35.3 35.0 35.7 34.7  | GPU ms: 13.4 13.3 13.3 13.3 13.3
X3 aa   fps: 34.0 34.6 34.3 34.7 33.9 35.0 34.1 34.4  | GPU ms: 15.2 15.1 15.2 15.1 15.1
X4 off  fps: 37.7 37.7 38.3 38.4 37.8 38.4 38.2 37.6  | GPU ms: 11.5 11.6 11.6 11.6 11.6
X5 xess fps: 35.3 34.9 35.5 33.8 31.0 32.2 33.6 34.6  | GPU ms: 13.4 13.5 13.5 13.3 13.4
X6 aa   fps: 33.1 34.4 34.2 34.5 34.2 33.3 33.7 34.3  | GPU ms: 15.4 15.4 15.3 15.3 15.4
[hos host] vk: Intel XeSS: XeSS 2.0.2
[hos Presentation Thread] vk: Intel XeSS: Ultra Quality made for outputs of 2048x1152, render sizes from 1366x768 (frame 5348, 19.1 ms of CPU; its temporary storage 86 MB)
[hos Presentation Thread] vk: Intel XeSS: 1366x768 -> 2048x1152 (Ultra Quality), jitter -0.000 +0.000 px (history reset)
[hos Presentation Thread] vk: Intel XeSS: Native AA made for outputs of 2048x1152, render sizes from 2048x1152 (frame 4535, 21.2 ms of CPU; its temporary storage 86 MB)

At this spot the frame is limited by the CPU (about 28 ms a frame against 12-15 ms of GPU time), so the frame rate is about the same three ways; what XeSS costs shows in the GPU time: about 1.7 ms a frame more than the game's own upscaler at the same render size, and 3.6 ms more for Native AA, which also renders at full size.

Screenshots: Kokiri Forest spawn, Arc B580, posted in the first comment (the game's own upscaler, Intel XeSS, Intel XeSS Native AA, from the measured runs).

Flags and settings

Two new values on the Upscaler menu row (saved under the options file's existing dlss key), three new switches for one run, and one build define.

Flag What it is Before this PR After this PR Effect Helps / doesn't help / untested Recommendation
Upscaler: Intel XeSS (dlss=7), Intel XeSS Native AA (dlss=8) menu row values, saved in longshot_options.ini not there: the row ended at Off (6) there, not chosen: the Upscaler keeps the player's value, and Auto (this PC) never chooses XeSS XeSS Super Resolution from the render size to the output, or at full size Helps: Arc B580 (runs, see above). Doesn't help: Linux (Intel makes no XeSS library for it). Untested: Arc A-series, Intel iGPUs, AMD and NVIDIA GPUs (XeSS's own fallback path) Off by default, the player's choice
RX_VK_XESS=0/1/2 switch, for one run not there unset 0 never, Intel's library not even loaded; 1 XeSS; 2 its Native AA - for testing
RX_VK_XESS_DIR=<folder> switch not there unset: beside the exe, then the game folder another folder for libxess.dll - for testing
RX_VK_XESS_HDR=0 switch not there unset: XeSS takes the HDR colour with native HDR: the colour cut at the paper white, as the other upscalers had it before Untested: HDR was not run off unless the HDR picture is wrong
make_game.py --fetch-xess-runtime --accept-intel-license build flags (Windows), for the launchers not there not given: nothing downloaded Intel's libxess.dll 2.0.2.68 and its notices into the game folder; without the second flag the build stops before downloading Helps: a player gets XeSS without finding Intel's file given by a launcher's tick, after its licence
RecompLauncher: Intel XeSS (recomplauncher.json) build tick, Windows not there off, until Intel's licence is accepted passes the two flags above Untested: RecompLauncher itself the player's choice
LONGSHOT_XESS_SDK=<folder> environment, for the build not there unset: work/xess-sdk where the download is kept between builds - as it is
-DLONGSHOT_XESS build define, set by nx2/build.py for vk_xess.cpp alone not there set in every Windows build, not on Linux Windows: the code that loads the player's libxess.dll; Linux: the stubs that say XeSS is Windows only - as it is: nothing to set by hand

Testing

Tested: Arc B580, driver 32.0.101.9154, Windows 11, Kokiri Forest: the six runs above (files in docs/tested/); XeSS and Native AA both make their context, run every frame and show a right picture (first comment). With RX_VK_XESS=0 Intel's library is not loaded. python -I -B tests/run_all.py: on the head as it was after the first rebase (9cd76bec), 487 passed, 6 failed, 70 skipped; the failures were test_module_ids, test_pad_layout, test_tested_configurations, test_oot_state_tap, test_fpx_sticky and test_spawn_emit, which failed the same way on main here. On the head as it is now: 15 checks fail on this Windows PC and fail the same on main 2b1d38c6 alone (test_fpx_sticky, test_appimage_player_build, test_cpm_discovery, test_crash_dialog, test_env_on, test_lift_cleanup_error, test_make_game_cache, test_linux_preflight, test_oot_state_tap, test_readback_late, test_spawn_emit, test_tested_configurations, test_vk_pgo, test_vram_budget_row, test_walk_key). python -I scripts/check_third_party.py passes with the new third_party/xess.

On the head as it is now (6a7f71be, on main bbe7a078): the renderer builds on Windows (llvm-mingw, 0 failed); tests/run_all.py gives 519 passed, 20 failed, 75 skipped, and the same 20 fail on main bbe7a078 alone here too (test_fpx_sticky, test_cpp_preflight, test_appimage_player_build, test_auto_handheld, test_crash_dialog, test_crt_options, test_env_on, test_lift_cleanup_error, test_make_game_prepare, test_make_game_cache, test_linux_preflight, test_missing_nup, test_options_budget_once, test_oot_state_tap, test_readback_late, test_spawn_emit, test_tested_configurations, test_vk_pgo, test_walk_key, test_vk_occlusion_queries). tests/test_xess_sdk.py (14 checks), tests/test_temporal_history.py (8,455 checks, XeSS's reset among them) and the Builder's --cli check (187 assertions, .NET 8) pass. The download for real: python -I scripts/xess_sdk.py --accept-intel-license --game <folder> fetched the three files in 26 s, each matched its SHA-256 (libxess.dll is the very file the measured runs loaded), a second run downloaded nothing, and without the licence accepted it downloaded nothing and exited 2.

Not tested: choosing the value in the menu in this session (the runs used RX_VK_XESS); native HDR with XeSS; the render sizes other than 67% and 100%; other areas; cutscenes; frame generation together with XeSS; GPUs other than the B580 (XeSS's path for non-Intel GPUs); a missing or old libxess.dll in the game; the rebased head in the game (see Baseline: the game was not run after either rebase); a Linux build (no Linux compiler on this PC; the Linux side is a stub, so the checklist's two-platform box is left out, not ticked); a whole game build with --fetch-xess-runtime (it would prepare this card's shaders again; the steps it adds are the ones checked above) and RecompLauncher's tick.

Must be tested:

  • Windows, an Arc A-series card or an Intel iGPU, with libxess.dll beside the game: choose Upscaler > Intel XeSS and then Intel XeSS Native AA from the menu, expecting a right picture and the vk: Intel XeSS: lines in the log (by hand: look at the picture and the log; test request T-UUJ4, open)
  • Windows, an AMD or NVIDIA GPU: the same steps, expecting XeSS to run on its fallback path or the row's hint to say why not, and the game to start either way (by hand: look at the picture, the row's hint and the log; test request T-3X7L, open)
  • Windows, any GPU: a build with RecompLauncher's Intel XeSS tick (or make_game.py --fetch-xess-runtime --accept-intel-license), expecting Intel's licence shown first, libxess.dll, LICENSE-INTEL-XESS-SDK.txt and THIRD-PARTY-INTEL-XESS-SDK.txt in the game folder after the build, and Intel XeSS offered in the Upscaler row on an Intel GPU (by hand: look at the game folder and the row)
  • Linux, any GPU: a build and a start, expecting the build to pass and Intel XeSS not to run there (the Upscaler row with its two XeSS choices: whether they are offered and what their help says; the README says a Linux build has no XeSS) (by hand: look at the build's result and the Upscaler row; test request T-3N56, open)

Risks

What could break: nothing until the player chooses Intel XeSS in the Upscaler row and has put Intel's libxess.dll in place. The file is looked for in RX_VK_XESS_DIR, beside the exe, then in the game folder (xess_rules.h library_dirs); without it the two values are not offered, the row's hint says the file was not found, and the game starts as before. With the file there, its Vulkan instance and device extensions and features are asked for at start even when another upscaler is chosen; when the driver lacks one, XeSS is left out with the reason in the log and the hint. Windows only: a Linux build compiles the stubs.

The download, only when a build is given --fetch-xess-runtime (a launcher's tick): 78 MB from github.com/intel/xess before the build starts; when it cannot be had or is not the file expected, the build stops there with the reason, as with AMD's FSR runtime.

Turning it off: RX_VK_XESS=0 (Intel's library is then not even loaded), or another Upscaler choice, or taking libxess.dll away; for the download, the tick left off. Reverting the commits removes it.

Compatibility: the options file gets no new key: the existing dlss key takes two more values, 7 and 8, added after Off (6), so saved options keep their meaning. The shader cache stamp does not change: the diff touches none of the stamp's files (gpu/vk/eden, sirit, compat, vk_shader.cpp, vk_bank.cpp, vk_state.h), so nothing is translated again because of this PR. MKWVK_API_VERSION does not change: gpu/vk/vk_api.h is not in the diff. The builder's tools: nx2/build.py compiles vk_xess.cpp with Intel's headers on Windows, nx2/pipeline_share.py knows the two new Upscaler names, scripts/dev_packs.py counts third_party/xess/ as renderer-only. Saves: the diff touches no save code.

Checklist

Everyone

  • One topic.
  • The title is a Conventional Commit (type(scope): description) of the status line's type.
  • Why gives the reason plainly and links the issues that fit (the tracker searched).
  • Measurements has a verdict, or one line saying why there is nothing to measure.
  • Testing names what was tested, what wasn't, and what must still be tested, where and how.
  • Rebased on current main.
  • python -I -B tests/run_all.py passes (any failure that also fails on main is named): 20 checks fail on this Windows PC and fail on main bbe7a078 alone too (named under Testing).
  • No game files, dumps, build output or generated files.
  • third_party/ untouched (a new folder with a PROVENANCE.md instead).
  • The license is OK: GPL-3.0-or-later, nothing incompatible and nothing decompiled.

When it applies

  • AI assistance recorded with Assisted-by: / Co-Authored-By: trailers.
  • Numbers from the same PC, scene and settings, at least 2 interleaved runs each, the median reported.
  • Switches documented (docs/development.md; the README for a menu row) and shipped at their recommended value.
  • Screenshots of the same spot, captioned like the Measurements columns, for a change that shows on screen.
  • A file in docs/tested/ for each new measured run (format in docs/tested-configurations.md).
  • A check under tests/ that reads changed source updated in this PR, not weakened.
  • Docs updated.

🤖 Generated with Claude Code

**Type:** feat · **Risk:** low · **Tested on:** Windows 11, Intel Arc B580 (driver 32.0.101.9154) · **Needs:** Windows with an Arc A-series card or an Intel iGPU; Windows with an AMD or NVIDIA GPU; a Linux build ## Why Intel Arc owners have no upscaler made for their GPU: DLSS needs an NVIDIA card and FSR 4 an RDNA 4 one. Intel's XeSS Super Resolution has a Vulkan API, so it can sit on Longshot's frame chain beside them. No issue is linked: the description before this one listed none. ## What changed The Upscaler row gets two new values, "Intel XeSS" and "Intel XeSS Native AA". They run Intel's XeSS Super Resolution through its Vulkan API, from the `libxess.dll` the player puts beside the game, or that the build downloads on the player's PC when asked (`make_game.py --fetch-xess-runtime --accept-intel-license`, RecompLauncher's Intel XeSS tick); Longshot holds only Intel's MIT-licensed API headers. Without Intel's file, or on Linux, the game starts as before. - vk: `gpu/vk/vk_xess.cpp` (new) loads the player's `libxess.dll` with `LoadLibraryExA`, resolves its functions by name, asks it for the Vulkan instance extensions, device extensions and features it needs before the instance and the device are made, and runs XeSS on the temporal chain. `gpu/vk/xess_rules.h` (new) chooses the preset for a render size. `vk_temporal.cpp`, `vk_main.cpp` and `vk_draw.cpp` call it; on Linux it is a stub that says why. - menu: two new Upscaler values, "Intel XeSS" (7) and "Intel XeSS Native AA" (8), after Off, so saved options keep their meaning (`upscaler_rows.h`, `vk_menu.cpp`, `auto_settings.h`). When Intel's file or something it needs is missing, the row's hint says what; the game starts as before. - third_party: `third_party/xess` holds Intel's MIT-licensed API headers only (`xess.h`, `xess_vk.h`, `MIT.txt`) with a `PROVENANCE.md`. `libxess.dll` is Intel's, under Intel's own licence, and is never in the repository or a build: the player puts it beside the game, or the build downloads it on the player's PC (next point). - prepare (for the launchers): `scripts/xess_sdk.py` (new) and `make_game.py --fetch-xess-runtime --accept-intel-license` (Windows) download `libxess.dll` 2.0.2.68 (78 MB, signed by Intel) with Intel's licence and third-party notices from intel/xess at de0fb9c1, the commit the headers come from, each file checked against its SHA-256, into `LONGSHOT_XESS_SDK` (default `work/xess-sdk`) before the build and into the game folder after it. Nothing is downloaded without Intel's licence accepted (the flag, or a typed yes). A `libxess.dll` the player put in the game folder that is not this one is left alone, and the build says so. It works as AMD's FSR runtime fetch does (`scripts/ffx_sdk.py`, `--fetch-fsr-runtime`). `recomplauncher.json` gets an Intel XeSS tick (Windows, off until Intel's licence is accepted), and the Builder's `--cli` drops `LONGSHOT_XESS_SDK` as it drops the DLSS and FSR SDK folders. The Longshot Launcher's switch, which passes the same two flags, is [LongshotLauncher#110](https://git.magicbean.dev/MagicBeanDev/LongshotLauncher/pulls/110). - build: `nx2/build.py`, `nx2/pipeline_share.py` and `scripts/dev_packs.py` know the new file; no shader-stamp input changed. - tests: `tests/test_xess_rules.py` and `tests/test_xess_sdk.py` (new; the second without the network), the upscaler rows, menu keys, temporal jitter, recorder sync and shader stamp checks updated for the two values, main's history-reset fixture (`tests/test_temporal_history.py`) given XeSS's reset, and the Builder's `--cli` check (`tests/builder_cli`) given `LONGSHOT_XESS_SDK`. - docs: the README's Intel XeSS section (with the download), the `RX_VK_XESS` row in `docs/development.md`, XeSS in `docs/temporal-history.md`'s PsychoV35 and history-reset text, a line in `CONTRIBUTING.md`. Reviewer notes: - The licence line: only the MIT headers are vendored, from intel/xess de0fb9c1 (the v3.0.2 tag's headers still carry the proprietary notice; `third_party/xess/PROVENANCE.md` has the blob ids). `libxess.dll` is loaded by name at run time and the import library is not linked. - Conventions, from Intel's XeSS-SR developer guide: motion vectors in pixels from the current frame to the previous one, jitter in pixels in [-0.5, 0.5], both scales 1. - The download: Intel's licence for `libxess.dll` (the Intel Simplified Software License, `LICENSE.txt` at de0fb9c1) allows using and redistributing it unmodified in binary form with its notice kept. The build still only downloads it on the player's PC once the player has accepted that licence, as for AMD's and NVIDIA's files, and keeps the licence and Intel's third-party notices beside it. - PsychoV35 (#608, now on main): XeSS takes the Native HDR PsychoV35 scene as the other chain engines do (`upscaler_rows.h` `takes_psychov35`), behind its HDR context (`RX_VK_XESS_HDR=0` prevents it). Not run in the game. - XeSS Frame Generation and XeLL are not part of this: Intel's SDK 3.0.2 has them for Direct3D 12 only (https://github.com/intel/xess/issues/60 is the open request). ## Measurements **Verdict:** it works on the Arc B580: Intel XeSS and its Native AA both run every frame with a right picture. XeSS costs about 1.7 ms of GPU time a frame more than the game's own upscaler at the same render size, Native AA 3.6 ms more; the frame rate is about the same three ways, because the CPU limits the frame at this spot. Not compared with main (see Baseline). main when measured: cf605c85 (2026-11-14) this PR when the description was written: feat/xess-sr @ 9cd76bec; the build that ran: b46daa73 Hardware: Intel Arc B580 12 GB, driver 32.0.101.9154; Core i5-13600K; 64 GB; Windows 11 Pro (26100-series Insider, 10.0.29704) Scene: Kokiri Forest (child), the spawn spot on Link's balcony after the opening, standing still; 2048x1152 output, render size 1366x768 (67%), frame generation off, uncapped (`HOS_FPS_MAX=1000`); `libxess.dll` from Intel's XeSS SDK 3.0.2 (it reports XeSS 2.0.2) Method: 6 runs on one build, the upscaler alternated (off, XeSS, Native AA, off, XeSS, Native AA) with `RX_VK_XESS=0/1/2`, each about 50 s standing after the load; fps from the log's `vi: ... frames presented (... fps over the last 5.0 s)` lines (last 8 windows, their median), GPU time from `vk: GPU time ... ms a frame` (last 5 lines, their median). How to reproduce: put `libxess.dll` beside the game, choose Upscaler > Intel XeSS in the Graphics tab (or `RX_VK_XESS=1`), stand in Kokiri Forest; the log says `vk: Intel XeSS: 1366x768 -> 2048x1152 (Ultra Quality)`. Baseline: the before column is this PR's own build with `RX_VK_XESS=0` (the game's own upscaler), XeSS never loaded. main itself was not the comparison because on the B580 it loses the device entering Kokiri Forest (https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/444). The build that ran is b46daa73, this change on main cf605c85, with three more changes in: #444's float-add fix, the uniform snapshot of https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/446 and the split rule of https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/443. The branch was then rebased onto main 26a2eab0 (9cd76bec; one conflict, in `scripts/dev_packs.py`'s list of renderer-only folders, where main's new lines are kept and `third_party/xess/` added) and was not run in the game again: a main-based build has another shader stamp than this card's prepared caches. It has since been rebased again, onto main 2b1d38c6 (one conflict, in `tests/test_shader_stamp_cache.py`, both sides kept, no source line changed) onto main 7bacf846 (four conflicts, in `upscaler_rows.h`, `vk_temporal.cpp`, `nx2/build.py` and `docs/development.md`, where main's FSR 3.1 additions and PsychoV35 route touched the same lines: both sides kept, XeSS added beside FSR 3.1), and onto main bbe7a078 (one conflict, in `nx2/make_game.py`: Intel's library placed before main's new "swap and runtimes" timing mark); with the download added between those two. The game was not run after any rebase, so the numbers below are from b46daa73. | | Before, `RX_VK_XESS=0` (the game's own upscaler): this PR @ b46daa73 | After, Intel XeSS (1366x768 -> 2048x1152): this PR @ b46daa73 | After, Intel XeSS Native AA (2048x1152): this PR @ b46daa73 | |---|---|---|---| | fps, median of each run | 34.6, 38.0 | 35.3, 34.2 | 34.4, 34.2 | | GPU time a frame | 11.7, 11.6 ms | 13.3, 13.4 ms | 15.1, 15.4 ms | ``` X1 off fps: 35.7 33.7 32.4 35.4 35.3 33.8 35.8 32.6 | GPU ms: 11.7 11.7 11.6 11.6 11.7 X2 xess fps: 35.1 35.5 35.3 35.6 35.3 35.0 35.7 34.7 | GPU ms: 13.4 13.3 13.3 13.3 13.3 X3 aa fps: 34.0 34.6 34.3 34.7 33.9 35.0 34.1 34.4 | GPU ms: 15.2 15.1 15.2 15.1 15.1 X4 off fps: 37.7 37.7 38.3 38.4 37.8 38.4 38.2 37.6 | GPU ms: 11.5 11.6 11.6 11.6 11.6 X5 xess fps: 35.3 34.9 35.5 33.8 31.0 32.2 33.6 34.6 | GPU ms: 13.4 13.5 13.5 13.3 13.4 X6 aa fps: 33.1 34.4 34.2 34.5 34.2 33.3 33.7 34.3 | GPU ms: 15.4 15.4 15.3 15.3 15.4 [hos host] vk: Intel XeSS: XeSS 2.0.2 [hos Presentation Thread] vk: Intel XeSS: Ultra Quality made for outputs of 2048x1152, render sizes from 1366x768 (frame 5348, 19.1 ms of CPU; its temporary storage 86 MB) [hos Presentation Thread] vk: Intel XeSS: 1366x768 -> 2048x1152 (Ultra Quality), jitter -0.000 +0.000 px (history reset) [hos Presentation Thread] vk: Intel XeSS: Native AA made for outputs of 2048x1152, render sizes from 2048x1152 (frame 4535, 21.2 ms of CPU; its temporary storage 86 MB) ``` At this spot the frame is limited by the CPU (about 28 ms a frame against 12-15 ms of GPU time), so the frame rate is about the same three ways; what XeSS costs shows in the GPU time: about 1.7 ms a frame more than the game's own upscaler at the same render size, and 3.6 ms more for Native AA, which also renders at full size. Screenshots: Kokiri Forest spawn, Arc B580, posted in the first comment (the game's own upscaler, Intel XeSS, Intel XeSS Native AA, from the measured runs). ### Flags and settings Two new values on the Upscaler menu row (saved under the options file's existing `dlss` key), three new switches for one run, and one build define. | Flag | What it is | Before this PR | After this PR | Effect | Helps / doesn't help / untested | Recommendation | |---|---|---|---|---|---|---| | Upscaler: Intel XeSS (`dlss=7`), Intel XeSS Native AA (`dlss=8`) | menu row values, saved in `longshot_options.ini` | not there: the row ended at Off (6) | there, not chosen: the Upscaler keeps the player's value, and Auto (this PC) never chooses XeSS | XeSS Super Resolution from the render size to the output, or at full size | Helps: Arc B580 (runs, see above). Doesn't help: Linux (Intel makes no XeSS library for it). Untested: Arc A-series, Intel iGPUs, AMD and NVIDIA GPUs (XeSS's own fallback path) | Off by default, the player's choice | | `RX_VK_XESS=0/1/2` | switch, for one run | not there | unset | 0 never, Intel's library not even loaded; 1 XeSS; 2 its Native AA | - | for testing | | `RX_VK_XESS_DIR=<folder>` | switch | not there | unset: beside the exe, then the game folder | another folder for `libxess.dll` | - | for testing | | `RX_VK_XESS_HDR=0` | switch | not there | unset: XeSS takes the HDR colour | with native HDR: the colour cut at the paper white, as the other upscalers had it before | Untested: HDR was not run | off unless the HDR picture is wrong | | `make_game.py --fetch-xess-runtime --accept-intel-license` | build flags (Windows), for the launchers | not there | not given: nothing downloaded | Intel's `libxess.dll` 2.0.2.68 and its notices into the game folder; without the second flag the build stops before downloading | Helps: a player gets XeSS without finding Intel's file | given by a launcher's tick, after its licence | | RecompLauncher: Intel XeSS (`recomplauncher.json`) | build tick, Windows | not there | off, until Intel's licence is accepted | passes the two flags above | Untested: RecompLauncher itself | the player's choice | | `LONGSHOT_XESS_SDK=<folder>` | environment, for the build | not there | unset: `work/xess-sdk` | where the download is kept between builds | - | as it is | | `-DLONGSHOT_XESS` | build define, set by `nx2/build.py` for `vk_xess.cpp` alone | not there | set in every Windows build, not on Linux | Windows: the code that loads the player's `libxess.dll`; Linux: the stubs that say XeSS is Windows only | - | as it is: nothing to set by hand | ## Testing **Tested:** Arc B580, driver 32.0.101.9154, Windows 11, Kokiri Forest: the six runs above (files in `docs/tested/`); XeSS and Native AA both make their context, run every frame and show a right picture (first comment). With `RX_VK_XESS=0` Intel's library is not loaded. `python -I -B tests/run_all.py`: on the head as it was after the first rebase (9cd76bec), 487 passed, 6 failed, 70 skipped; the failures were `test_module_ids`, `test_pad_layout`, `test_tested_configurations`, `test_oot_state_tap`, `test_fpx_sticky` and `test_spawn_emit`, which failed the same way on main here. On the head as it is now: 15 checks fail on this Windows PC and fail the same on main 2b1d38c6 alone (test_fpx_sticky, test_appimage_player_build, test_cpm_discovery, test_crash_dialog, test_env_on, test_lift_cleanup_error, test_make_game_cache, test_linux_preflight, test_oot_state_tap, test_readback_late, test_spawn_emit, test_tested_configurations, test_vk_pgo, test_vram_budget_row, test_walk_key). `python -I scripts/check_third_party.py` passes with the new `third_party/xess`. On the head as it is now (6a7f71be, on main bbe7a078): the renderer builds on Windows (llvm-mingw, 0 failed); `tests/run_all.py` gives 519 passed, 20 failed, 75 skipped, and the same 20 fail on main bbe7a078 alone here too (test_fpx_sticky, test_cpp_preflight, test_appimage_player_build, test_auto_handheld, test_crash_dialog, test_crt_options, test_env_on, test_lift_cleanup_error, test_make_game_prepare, test_make_game_cache, test_linux_preflight, test_missing_nup, test_options_budget_once, test_oot_state_tap, test_readback_late, test_spawn_emit, test_tested_configurations, test_vk_pgo, test_walk_key, test_vk_occlusion_queries). `tests/test_xess_sdk.py` (14 checks), `tests/test_temporal_history.py` (8,455 checks, XeSS's reset among them) and the Builder's `--cli` check (187 assertions, .NET 8) pass. The download for real: `python -I scripts/xess_sdk.py --accept-intel-license --game <folder>` fetched the three files in 26 s, each matched its SHA-256 (`libxess.dll` is the very file the measured runs loaded), a second run downloaded nothing, and without the licence accepted it downloaded nothing and exited 2. **Not tested:** choosing the value in the menu in this session (the runs used `RX_VK_XESS`); native HDR with XeSS; the render sizes other than 67% and 100%; other areas; cutscenes; frame generation together with XeSS; GPUs other than the B580 (XeSS's path for non-Intel GPUs); a missing or old `libxess.dll` in the game; the rebased head in the game (see Baseline: the game was not run after either rebase); a Linux build (no Linux compiler on this PC; the Linux side is a stub, so the checklist's two-platform box is left out, not ticked); a whole game build with `--fetch-xess-runtime` (it would prepare this card's shaders again; the steps it adds are the ones checked above) and RecompLauncher's tick. **Must be tested:** - Windows, an Arc A-series card or an Intel iGPU, with `libxess.dll` beside the game: choose Upscaler > Intel XeSS and then Intel XeSS Native AA from the menu, expecting a right picture and the `vk: Intel XeSS:` lines in the log (by hand: look at the picture and the log; test request T-UUJ4, open) - Windows, an AMD or NVIDIA GPU: the same steps, expecting XeSS to run on its fallback path or the row's hint to say why not, and the game to start either way (by hand: look at the picture, the row's hint and the log; test request T-3X7L, open) - Windows, any GPU: a build with RecompLauncher's Intel XeSS tick (or `make_game.py --fetch-xess-runtime --accept-intel-license`), expecting Intel's licence shown first, `libxess.dll`, `LICENSE-INTEL-XESS-SDK.txt` and `THIRD-PARTY-INTEL-XESS-SDK.txt` in the game folder after the build, and Intel XeSS offered in the Upscaler row on an Intel GPU (by hand: look at the game folder and the row) - Linux, any GPU: a build and a start, expecting the build to pass and Intel XeSS not to run there (the Upscaler row with its two XeSS choices: whether they are offered and what their help says; the README says a Linux build has no XeSS) (by hand: look at the build's result and the Upscaler row; test request T-3N56, open) ## Risks **What could break:** nothing until the player chooses Intel XeSS in the Upscaler row and has put Intel's `libxess.dll` in place. The file is looked for in `RX_VK_XESS_DIR`, beside the exe, then in the game folder (`xess_rules.h` `library_dirs`); without it the two values are not offered, the row's hint says the file was not found, and the game starts as before. With the file there, its Vulkan instance and device extensions and features are asked for at start even when another upscaler is chosen; when the driver lacks one, XeSS is left out with the reason in the log and the hint. Windows only: a Linux build compiles the stubs. The download, only when a build is given `--fetch-xess-runtime` (a launcher's tick): 78 MB from github.com/intel/xess before the build starts; when it cannot be had or is not the file expected, the build stops there with the reason, as with AMD's FSR runtime. **Turning it off:** `RX_VK_XESS=0` (Intel's library is then not even loaded), or another Upscaler choice, or taking `libxess.dll` away; for the download, the tick left off. Reverting the commits removes it. **Compatibility:** the options file gets no new key: the existing `dlss` key takes two more values, 7 and 8, added after Off (6), so saved options keep their meaning. The shader cache stamp does not change: the diff touches none of the stamp's files (`gpu/vk/eden`, `sirit`, `compat`, `vk_shader.cpp`, `vk_bank.cpp`, `vk_state.h`), so nothing is translated again because of this PR. `MKWVK_API_VERSION` does not change: `gpu/vk/vk_api.h` is not in the diff. The builder's tools: `nx2/build.py` compiles `vk_xess.cpp` with Intel's headers on Windows, `nx2/pipeline_share.py` knows the two new Upscaler names, `scripts/dev_packs.py` counts `third_party/xess/` as renderer-only. Saves: the diff touches no save code. ## Checklist ### Everyone - [x] One topic. - [x] The title is a Conventional Commit (`type(scope): description`) of the status line's type. - [x] Why gives the reason plainly and links the issues that fit (the tracker searched). - [x] Measurements has a verdict, or one line saying why there is nothing to measure. - [x] Testing names what was tested, what wasn't, and what must still be tested, where and how. - [x] Rebased on current `main`. - [x] `python -I -B tests/run_all.py` passes (any failure that also fails on `main` is named): 20 checks fail on this Windows PC and fail on main bbe7a078 alone too (named under Testing). - [x] No game files, dumps, build output or generated files. - [x] `third_party/` untouched (a new folder with a `PROVENANCE.md` instead). - [x] The license is OK: GPL-3.0-or-later, nothing incompatible and nothing decompiled. ### When it applies - [x] AI assistance recorded with `Assisted-by:` / `Co-Authored-By:` trailers. - [x] Numbers from the same PC, scene and settings, at least 2 interleaved runs each, the median reported. - [x] Switches documented (docs/development.md; the README for a menu row) and shipped at their recommended value. - [x] Screenshots of the same spot, captioned like the Measurements columns, for a change that shows on screen. - [x] A file in `docs/tested/` for each new measured run (format in `docs/tested-configurations.md`). - [x] A check under `tests/` that reads changed source updated in this PR, not weakened. - [x] Docs updated. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Intel Arc owners had no upscaler built for their GPU: DLSS needs NVIDIA and FSR 4 needs RDNA 4.
XeSS-SR has a Vulkan API, so it can run on Longshot's frame chain beside DLSS and FSR 4. It
appears as two new Upscaler values, "Intel XeSS" (7) and "Intel XeSS Native AA" (8). They come
after Off, so saved options keep their meaning.

Intel's runtime (libxess.dll) is under Intel's own licence and is never bundled. Only the MIT API
headers are vendored, from intel/xess de0fb9c1 (the v3.0.2 tag's headers carry a proprietary
notice). The DLL is looked for in RX_VK_XESS_DIR, then beside the exe, then in the game folder.
It is loaded with LoadLibraryExA and its functions are resolved by name; the import library is not
linked. The Vulkan instance extensions, device extensions and device features XeSS needs are asked
of the library before the instance and device are made. If anything is missing, XeSS is left out
and the reason is written to the log and shown in the menu hint; startup does not fail.

Conventions, from Intel's XeSS-SR developer guide:
- Motion vectors are in pixels, pointing from the current frame to the previous one.
- Jitter is in pixels in [-0.5, 0.5], the same convention FSR 4 uses.
- Both scales are therefore 1.
Since XeSS 1.3 each preset accepts any input size from its ratio up to the output. Each Render
resolution stop runs under the first preset whose range holds it. LDR input uses
LDR_INPUT_COLOR; HDR input uses auto-exposure (RX_VK_XESS_HDR=0 turns HDR off).

The engine is Windows only; on Linux it is a stub with the reason. XeSS Frame Generation and XeLL
are not implemented because they are Direct3D 12 only. No shader-stamp inputs, MkwVkHost or
MkwVkRenderer changed.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
docs(tested): the XeSS Super Resolution runs on an Arc B580, six files
Some checks failed
PR description / Description follows the template (pull_request_target) Successful in 4s
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
Website / Website on Cloudflare (pull_request) Has been cancelled
00458c6d1b
Co-Authored-By: Claude Fable 5.2 <[email protected]>
Author
Contributor

Kokiri Forest, the spawn spot, Arc B580 (101.9154), 2048x1152 output, from runs X4 to X6 of the Measurements (one build, only RX_VK_XESS differs; the scene moves a little between runs).

this PR @ c6df1074, RX_VK_XESS=0 (the game's own upscaler)

this PR @ c6df1074, Intel XeSS (1366x768 -> 2048x1152)

this PR @ c6df1074, Intel XeSS Native AA (2048x1152)

Kokiri Forest, the spawn spot, Arc B580 (101.9154), 2048x1152 output, from runs X4 to X6 of the Measurements (one build, only `RX_VK_XESS` differs; the scene moves a little between runs). ![this PR @ c6df1074, RX_VK_XESS=0 (the game's own upscaler)](https://git.magicbean.dev/attachments/8700a0d4-c0f4-4c53-9e3b-5d9618042c2f) ![this PR @ c6df1074, Intel XeSS (1366x768 -> 2048x1152)](https://git.magicbean.dev/attachments/0d8186d1-4f4b-4936-a257-7d2c6b10e7fa) ![this PR @ c6df1074, Intel XeSS Native AA (2048x1152)](https://git.magicbean.dev/attachments/c667867c-7377-4343-a97b-9762893ed8f9)
Author
Contributor

The three test requests are open (T-UUJ4: Arc A-series or an Intel iGPU; T-3X7L: an AMD or NVIDIA GPU; T-3N56: a Linux build) and named in the description; they wait for a maintainer's testing wanted label.

The three test requests are open (T-UUJ4: Arc A-series or an Intel iGPU; T-3X7L: an AMD or NVIDIA GPU; T-3N56: a Linux build) and named in the description; they wait for a maintainer's testing wanted label.
nyannoying changed title from WIP: feat(vk): Intel XeSS Super Resolution as a temporal upscaler (Vulkan, the player's libxess.dll) to feat(vk): Intel XeSS Super Resolution as a temporal upscaler (Vulkan, the player's libxess.dll) 2026-11-14 15:03:34 +00:00
nyannoying force-pushed feat/xess-sr from 00458c6d1b
Some checks failed
PR description / Description follows the template (pull_request_target) Successful in 4s
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
Website / Website on Cloudflare (pull_request) Has been cancelled
to 3fdd4ed8ee
Some checks failed
PR description / Description follows the template (pull_request_target) Successful in 9s
Website / Website on Cloudflare (pull_request_target) Has been skipped
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
Website / Website on Cloudflare (pull_request) Has been cancelled
2026-11-14 15:30:45 +00:00
Compare
Author
Contributor

Rebased onto main 26a2eab0 (it had moved; one conflict in scripts/dev_packs.py, main's new stamp lines kept and third_party/xess/ added to the renderer-only folders). The diff of the change is otherwise the same, so the measurements stand; the suite on the new head: 487 passed, 6 failed (the six that fail on main here), 70 skipped.

Rebased onto main 26a2eab0 (it had moved; one conflict in scripts/dev_packs.py, main's new stamp lines kept and third_party/xess/ added to the renderer-only folders). The diff of the change is otherwise the same, so the measurements stand; the suite on the new head: 487 passed, 6 failed (the six that fail on main here), 70 skipped.
Author
Contributor

Rebased onto main 2b1d38c6 (head ea138e60); it had stopped merging.

  • Conflict: tests/test_shader_stamp_cache.py only, where main's renderer profile tests (#569) and this PR's test_xess_reaches_only_vk_xess_on_windows were added at the same place. Both kept; no source line of the PR changed.
  • Checked after the rebase: the Windows build of the renderer (llvm-mingw, 0 failed) and tests/run_all.py: 494 passed, 15 failed, 70 skipped. The same 15 fail on main 2b1d38c6 alone on this PC (run one by one there), test_shader_stamp_cache.py is not among them.
  • Not run again: the game. The Measurements are from the commits named there (main cf605c85 with the open Arc fixes).
Rebased onto main 2b1d38c6 (head ea138e60); it had stopped merging. - **Conflict:** `tests/test_shader_stamp_cache.py` only, where main's renderer profile tests (#569) and this PR's `test_xess_reaches_only_vk_xess_on_windows` were added at the same place. Both kept; no source line of the PR changed. - **Checked after the rebase:** the Windows build of the renderer (llvm-mingw, 0 failed) and `tests/run_all.py`: 494 passed, 15 failed, 70 skipped. The same 15 fail on main 2b1d38c6 alone on this PC (run one by one there), `test_shader_stamp_cache.py` is not among them. - **Not run again:** the game. The Measurements are from the commits named there (main cf605c85 with the open Arc fixes).
nyannoying force-pushed feat/xess-sr from 3fdd4ed8ee
Some checks failed
PR description / Description follows the template (pull_request_target) Successful in 9s
Website / Website on Cloudflare (pull_request_target) Has been skipped
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
Website / Website on Cloudflare (pull_request) Has been cancelled
to ea138e608a
Some checks failed
PR description / Description follows the template (pull_request_target) Successful in 17s
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
Website / Website on Cloudflare (pull_request) Has been cancelled
2026-11-14 23:37:30 +00:00
Compare
Owner

Please rebase and add to launcher!

Please rebase and add to launcher!
Owner

This pull request now conflicts with main: files docs/development.md, gpu/vk/upscaler_rows.h, gpu/vk/vk_temporal.cpp and nx2/build.py, touched on main by #608, #577, #857, #629. Could you rebase it onto the current main? Thank you.

This pull request now conflicts with `main`: files docs/development.md, gpu/vk/upscaler_rows.h, gpu/vk/vk_temporal.cpp and nx2/build.py, touched on `main` by https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/608, https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/577, https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/857, https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/629. Could you rebase it onto the current `main`? Thank you.
nyannoying force-pushed feat/xess-sr from ea138e608a
Some checks failed
PR description / Description follows the template (pull_request_target) Successful in 17s
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
Website / Website on Cloudflare (pull_request) Has been cancelled
to 9dc5db0b4f
Some checks failed
PR description / Description follows the template (pull_request_target) Has been cancelled
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Guide screenshots / Guide images and local UI source review (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
Website / Website on Cloudflare (pull_request) Has been cancelled
2026-11-15 19:04:27 +00:00
Compare
Author
Contributor

Rebased onto main 7bacf846 (head 9dc5db0b), and the download added for the launchers.

  • Rebase: four conflicts (upscaler_rows.h, vk_temporal.cpp, nx2/build.py, docs/development.md), each where main's FSR 3.1 and PsychoV35 changes (#608 among them) touched the same lines. Both sides kept, XeSS added beside FSR 3.1 (takes_psychov35, the PsychoV35 wait and log lines, the docs). Main's new history-reset fixture (tests/test_temporal_history.py) now checks XeSS's reset too.
  • Launcher: make_game.py --fetch-xess-runtime --accept-intel-license downloads Intel's signed libxess.dll 2.0.2.68 with Intel's licence and third-party notices (intel/xess at de0fb9c1, the commit the headers come from, each file checked against its SHA-256) and puts them in the game folder, as --fetch-fsr-runtime does for AMD's runtime. Nothing is downloaded without Intel's licence accepted. recomplauncher.json gets an Intel XeSS tick. The Longshot Launcher's switch, passing the same two flags, is a pull request of its own in MagicBeanDev/LongshotLauncher.
  • Checked: the renderer builds (llvm-mingw, 0 failed). tests/run_all.py: 516 passed, 20 failed, 75 skipped; 19 of the 20 fail on main 7bacf846 here too, and the 20th only in the parallel run. tests/test_xess_sdk.py 14 of 14, the Builder's --cli check 187 assertions. A real download: 26 s, each file matched its SHA-256.
  • Not run: the game on this head (the Measurements stay those of b46daa73), and a whole game build with the new flag.
Rebased onto main 7bacf846 (head 9dc5db0b), and the download added for the launchers. - **Rebase:** four conflicts (`upscaler_rows.h`, `vk_temporal.cpp`, `nx2/build.py`, `docs/development.md`), each where main's FSR 3.1 and PsychoV35 changes (#608 among them) touched the same lines. Both sides kept, XeSS added beside FSR 3.1 (`takes_psychov35`, the PsychoV35 wait and log lines, the docs). Main's new history-reset fixture (`tests/test_temporal_history.py`) now checks XeSS's reset too. - **Launcher:** `make_game.py --fetch-xess-runtime --accept-intel-license` downloads Intel's signed `libxess.dll` 2.0.2.68 with Intel's licence and third-party notices (intel/xess at de0fb9c1, the commit the headers come from, each file checked against its SHA-256) and puts them in the game folder, as `--fetch-fsr-runtime` does for AMD's runtime. Nothing is downloaded without Intel's licence accepted. `recomplauncher.json` gets an Intel XeSS tick. The Longshot Launcher's switch, passing the same two flags, is a pull request of its own in MagicBeanDev/LongshotLauncher. - **Checked:** the renderer builds (llvm-mingw, 0 failed). `tests/run_all.py`: 516 passed, 20 failed, 75 skipped; 19 of the 20 fail on main 7bacf846 here too, and the 20th only in the parallel run. `tests/test_xess_sdk.py` 14 of 14, the Builder's `--cli` check 187 assertions. A real download: 26 s, each file matched its SHA-256. - **Not run:** the game on this head (the Measurements stay those of b46daa73), and a whole game build with the new flag.
nyannoying force-pushed feat/xess-sr from 9dc5db0b4f
Some checks failed
PR description / Description follows the template (pull_request_target) Has been cancelled
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Guide screenshots / Guide images and local UI source review (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
Website / Website on Cloudflare (pull_request) Has been cancelled
to 6a7f71beb3
Some checks are pending
CI / Conventional Commit title (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Blocked by required conditions
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Blocked by required conditions
CI / Workflow lint (actionlint) (pull_request) Blocked by required conditions
Guide screenshots / Guide images and local UI source review (pull_request) Blocked by required conditions
Third-party parts / The same as upstream (pull_request) Blocked by required conditions
Third-party parts / As their notes say (pull_request) Blocked by required conditions
Website / Website on Cloudflare (pull_request) Blocked by required conditions
PR description / Description follows the template (pull_request_target) Successful in 5s
Website / Website on Cloudflare (pull_request_target) Has been skipped
2026-11-15 19:08:51 +00:00
Compare
Author
Contributor

Main moved again during the push (6 commits): rebased onto bbe7a078, head 6a7f71be. One conflict, in nx2/make_game.py, where #631 added a timing mark after the runtimes are placed: Intel's library is placed before it, with the other runtimes. The renderer builds (0 failed); tests/run_all.py 519 passed, 20 failed, and the same 20 fail on main bbe7a078 alone on this PC (the list is under Testing).

Main moved again during the push (6 commits): rebased onto bbe7a078, head 6a7f71be. One conflict, in nx2/make_game.py, where #631 added a timing mark after the runtimes are placed: Intel's library is placed before it, with the other runtimes. The renderer builds (0 failed); tests/run_all.py 519 passed, 20 failed, and the same 20 fail on main bbe7a078 alone on this PC (the list is under Testing).
Author
Contributor

Added to the launcher: LongshotLauncher#110. Its build settings get an Intel XeSS switch (Windows, Intel graphics), which shows Intel's licence first and then passes --fetch-xess-runtime --accept-intel-license to this PR's make_game.py. It stays off for tools without scripts/xess_sdk.py, so either PR can be merged first.

Added to the launcher: [LongshotLauncher#110](https://git.magicbean.dev/MagicBeanDev/LongshotLauncher/pulls/110). Its build settings get an Intel XeSS switch (Windows, Intel graphics), which shows Intel's licence first and then passes `--fetch-xess-runtime --accept-intel-license` to this PR's `make_game.py`. It stays off for tools without `scripts/xess_sdk.py`, so either PR can be merged first.
llun approved these changes 2026-11-15 20:41:43 +00:00
llun merged commit b35943d2ca into main 2026-11-15 20:42:45 +00:00
Some checks are pending
CI / Conventional Commit title (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Blocked by required conditions
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Blocked by required conditions
CI / Workflow lint (actionlint) (pull_request) Blocked by required conditions
Guide screenshots / Guide images and local UI source review (pull_request) Blocked by required conditions
Third-party parts / The same as upstream (pull_request) Blocked by required conditions
Third-party parts / As their notes say (pull_request) Blocked by required conditions
Website / Website on Cloudflare (pull_request) Blocked by required conditions
PR description / Description follows the template (pull_request_target) Successful in 5s
Website / Website on Cloudflare (pull_request_target) Has been skipped
Some workflows are waiting to be reviewed.
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
3 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
MagicBeanDev/Longshot!459
No description provided.