fix(vk): decode gameplay RGB9E5 upscale fallback #1552

Merged
Brett-D merged 2 commits from fix/deck-rgb9e5-upscale into main 2026-11-10 16:48:36 +00:00
Brett-D commented 2026-11-10 07:44:00 +00:00 (Migrated from github.com)

A failed gameplay upscale can receive RGB9E5 data in an R11G11B10 image, so the existing blit can interpret the pixel bits incorrectly and produce rainbow colors.

This extends the existing, narrowly guarded RGB9E5 typed fallback to the affected gameplay network. It also checks both image-view handles before invoking the typed path; if the path is unavailable, the existing blit remains in place and the gameplay case emits a warning. This is a fallback, not an implementation of the original temporal upscaler.

Testing

  • Synthetic upscale regression: 23 cases passed on Linux and Windows MSVC, including failed input and output views.
  • Game-free suite on Ubuntu 24.04: 230 passed, 15 skipped (shader tools or game/platform-specific requirements).
  • The exact pull-request branch has not yet been retested in gameplay.
A failed gameplay upscale can receive RGB9E5 data in an R11G11B10 image, so the existing blit can interpret the pixel bits incorrectly and produce rainbow colors. This extends the existing, narrowly guarded RGB9E5 typed fallback to the affected gameplay network. It also checks both image-view handles before invoking the typed path; if the path is unavailable, the existing blit remains in place and the gameplay case emits a warning. This is a fallback, not an implementation of the original temporal upscaler. ### Testing - Synthetic upscale regression: 23 cases passed on Linux and Windows MSVC, including failed input and output views. - Game-free suite on Ubuntu 24.04: 230 passed, 15 skipped (shader tools or game/platform-specific requirements). - The exact pull-request branch has not yet been retested in gameplay.
Brett-D commented 2026-11-10 07:44:28 +00:00 (Migrated from github.com)

@NotRexed When you have time, could you please review this PR and the two separately scoped fixes in #1553 and #1554? Thank you!

@NotRexed When you have time, could you please review this PR and the two separately scoped fixes in #1553 and #1554? Thank you!
hckrman101 (Migrated from github.com) approved these changes 2026-11-10 16:38:55 +00:00
hckrman101 (Migrated from github.com) left a comment

Looks good. The change is small and well guarded: only the fd029a31 gameplay TAAU key joins the existing narrow RGB9E5-in-R11 typed fallback (the 9dc9 network stays excluded), and the new null-view check on input_view/output_view is a sensible hardening of the existing path. I checked the diff against current main and the upscale_stub code matches what it patches. The blit fallback is unchanged when the typed path isn't available, with a one-time warning. The test matrix covers the new fd cases, null views and the log/warn counters, and test_upscale_fallback.py is already registered in run_all.py. The cl branch for the test compiler is a nice touch.

Nit: as the description says, this hasn't been retested in gameplay on this exact branch, so worth a quick confirm before merging. No CI checks ran on the branch.

Looks good. The change is small and well guarded: only the fd029a31 gameplay TAAU key joins the existing narrow RGB9E5-in-R11 typed fallback (the 9dc9 network stays excluded), and the new null-view check on input_view/output_view is a sensible hardening of the existing path. I checked the diff against current main and the upscale_stub code matches what it patches. The blit fallback is unchanged when the typed path isn't available, with a one-time warning. The test matrix covers the new fd cases, null views and the log/warn counters, and test_upscale_fallback.py is already registered in run_all.py. The cl branch for the test compiler is a nice touch. Nit: as the description says, this hasn't been retested in gameplay on this exact branch, so worth a quick confirm before merging. No CI checks ran on the branch.
Commenting is not possible because the repository is archived.
No description provided.