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

Open
nyannoying wants to merge 2 commits from nyannoying/Longshot:feat/xess-sr into main
First-time contributor

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.

What changed

  • 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.
  • 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 (new) and the upscaler rows, menu keys, temporal jitter, recorder sync and shader stamp checks updated for the two values.
  • docs: the README's Intel XeSS section, the RX_VK_XESS row in docs/development.md, a line in CONTRIBUTING.md.

Flags and settings

Flag What it does Default now Recommendation Helps on Doesn't help on Untested on
Upscaler: Intel XeSS (dlss=7), Intel XeSS Native AA (dlss=8) XeSS Super Resolution from the render size to the output, or at full size not chosen: the Upscaler keeps the player's value Off by default, the player's choice Arc B580 (runs, see below) Linux (Intel makes no XeSS library for it) Arc A-series, Intel iGPUs, AMD and NVIDIA GPUs (XeSS's own fallback path)
RX_VK_XESS=0/1/2 for one run: 0 never, Intel's library not even loaded; 1 XeSS; 2 its Native AA unset for testing — — —
RX_VK_XESS_DIR=<folder> another folder for libxess.dll unset: beside the exe, then the game folder for testing — — —
RX_VK_XESS_HDR=0 with native HDR: the colour cut at the paper white, as the other upscalers had it before unset: XeSS takes the HDR colour off unless the HDR picture is wrong — — HDR was not run

Measurements

main: cf605c85 (2026-11-14)
this PR: feat/xess-sr @ 9cd76bec
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: this PR @ 9cd76bec, RX_VK_XESS=0 (the game's own upscaler), the build with 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 has since been 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.

this PR @ 9cd76bec, RX_VK_XESS=0 (the game's own upscaler) this PR @ 9cd76bec, Intel XeSS (1366x768 -> 2048x1152) this PR @ 9cd76bec, Intel XeSS Native AA (2048x1152)
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.

Testing

Tested: Arc B580, 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 rebased head: 487 passed, 6 failed, 70 skipped; the failures are test_module_ids, test_pad_layout, test_tested_configurations, test_oot_state_tap, test_fpx_sticky and test_spawn_emit, which fail the same way on main here. python -I scripts/check_third_party.py passes with the new third_party/xess.

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); a Linux build (no Linux compiler on this PC; the Linux side is a stub, so the template's two-platform box is left out, not ticked).

Needs other testers:

  • Arc A-series or an Intel iGPU, Windows, with libxess.dll beside the game: Upscaler > Intel XeSS and Intel XeSS Native AA from the menu, expecting a right picture and the vk: Intel XeSS: lines in the log (T-UUJ4)
  • An AMD or NVIDIA GPU, Windows: the same, expecting XeSS to run on its fallback path or the row's hint to say why not, and the game to start either way (T-3X7L)
  • Any GPU on Linux: a build and a start, expecting the two rows to say XeSS is Windows only (T-3N56)

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).

Risk and rollback

Nothing changes until the player chooses XeSS and has put Intel's file beside the game: without the file the two rows say so. With the file there, its Vulkan extensions are asked for at start even when another upscaler is chosen (RX_VK_XESS=0 prevents the load). Windows only. Reverting the commit removes it.

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.
  • 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).

Issues

None.

Checklist

For everyone

  • One topic.
  • The title is a Conventional Commit (type(scope): description).
  • Rebased on current main.
  • python -I -B tests/run_all.py run and passing (any failure that also fails on main is named above).
  • Tested in the game, or what wasn't is named under Testing.
  • Testing filled in: what was tested, what wasn't, and what needs other testers (with test requests).
  • Measured: main and this PR at named commits, on the same PC, scene and settings, at least 2 interleaved runs each, the median reported.
  • 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.

If applicable

  • AI assistance recorded with Assisted-by: / Co-Authored-By: trailers.
  • Flags noted, and the switch reference updated (docs/development.md, the README).
  • Screenshots for a change that shows on screen.
  • A file in docs/tested/ for each new measured run (format in docs/tested-configurations.md; no appended row or assembled view).
  • A check under tests/ that reads changed source updated in this PR, not weakened.
  • Docs updated.

🤖 Generated with Claude Code

## 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. ## What changed - 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. - 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` (new) and the upscaler rows, menu keys, temporal jitter, recorder sync and shader stamp checks updated for the two values. - docs: the README's Intel XeSS section, the `RX_VK_XESS` row in `docs/development.md`, a line in `CONTRIBUTING.md`. ## Flags and settings | Flag | What it does | Default now | Recommendation | Helps on | Doesn't help on | Untested on | |---|---|---|---|---|---|---| | Upscaler: Intel XeSS (`dlss=7`), Intel XeSS Native AA (`dlss=8`) | XeSS Super Resolution from the render size to the output, or at full size | not chosen: the Upscaler keeps the player's value | Off by default, the player's choice | Arc B580 (runs, see below) | Linux (Intel makes no XeSS library for it) | Arc A-series, Intel iGPUs, AMD and NVIDIA GPUs (XeSS's own fallback path) | | `RX_VK_XESS=0/1/2` | for one run: 0 never, Intel's library not even loaded; 1 XeSS; 2 its Native AA | unset | for testing | — | — | — | | `RX_VK_XESS_DIR=<folder>` | another folder for `libxess.dll` | unset: beside the exe, then the game folder | for testing | — | — | — | | `RX_VK_XESS_HDR=0` | with native HDR: the colour cut at the paper white, as the other upscalers had it before | unset: XeSS takes the HDR colour | off unless the HDR picture is wrong | — | — | HDR was not run | ## Measurements main: cf605c85 (2026-11-14) this PR: feat/xess-sr @ 9cd76bec 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: this PR @ 9cd76bec, `RX_VK_XESS=0` (the game's own upscaler), the build with 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 has since been 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. | | this PR @ 9cd76bec, `RX_VK_XESS=0` (the game's own upscaler) | this PR @ 9cd76bec, Intel XeSS (1366x768 -> 2048x1152) | this PR @ 9cd76bec, Intel XeSS Native AA (2048x1152) | |---|---|---|---| | 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. ## Testing **Tested:** Arc B580, 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 rebased head: 487 passed, 6 failed, 70 skipped; the failures are `test_module_ids`, `test_pad_layout`, `test_tested_configurations`, `test_oot_state_tap`, `test_fpx_sticky` and `test_spawn_emit`, which fail the same way on main here. `python -I scripts/check_third_party.py` passes with the new `third_party/xess`. **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); a Linux build (no Linux compiler on this PC; the Linux side is a stub, so the template's two-platform box is left out, not ticked). **Needs other testers:** - Arc A-series or an Intel iGPU, Windows, with `libxess.dll` beside the game: Upscaler > Intel XeSS and Intel XeSS Native AA from the menu, expecting a right picture and the `vk: Intel XeSS:` lines in the log (T-UUJ4) - An AMD or NVIDIA GPU, Windows: the same, expecting XeSS to run on its fallback path or the row's hint to say why not, and the game to start either way (T-3X7L) - Any GPU on Linux: a build and a start, expecting the two rows to say XeSS is Windows only (T-3N56) ## 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). ## Risk and rollback Nothing changes until the player chooses XeSS and has put Intel's file beside the game: without the file the two rows say so. With the file there, its Vulkan extensions are asked for at start even when another upscaler is chosen (`RX_VK_XESS=0` prevents the load). Windows only. Reverting the commit removes it. ## 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. - 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). ## Issues None. ## Checklist ### For everyone - [x] One topic. - [x] The title is a Conventional Commit (`type(scope): description`). - [x] Rebased on current `main`. - [x] `python -I -B tests/run_all.py` run and passing (any failure that also fails on `main` is named above). - [x] Tested in the game, or what wasn't is named under Testing. - [x] Testing filled in: what was tested, what wasn't, and what needs other testers (with test requests). - [x] Measured: main and this PR at named commits, on the same PC, scene and settings, at least 2 interleaved runs each, the median reported. - [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. ### If applicable - [x] AI assistance recorded with `Assisted-by:` / `Co-Authored-By:` trailers. - [x] Flags noted, and the switch reference updated (docs/development.md, the README). - [x] Screenshots for a change that shows on screen. - [x] A file in `docs/tested/` for each new measured run (format in `docs/tested-configurations.md`; no appended row or assembled view). - [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
First-time 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
First-time 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 are pending
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
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
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 9s
Website / Website on Cloudflare (pull_request_target) Has been skipped
2026-11-14 15:30:45 +00:00
Compare
Author
First-time 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.
Some checks are pending
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
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
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 9s
Website / Website on Cloudflare (pull_request_target) Has been skipped
This pull request doesn't have enough approvals yet. 0 of 1 approvals granted.
Some workflows are waiting to be reviewed.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u 'feat/xess-sr:nyannoying-feat/xess-sr'
git switch 'nyannoying-feat/xess-sr'
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
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.