fix(hdr, fsr): HDR with an upscaler or Sharpness reads a sampleable picture; native HDR images RGB10A2 from the start (#2038); FSR 3.1 above Quality #2147
No reviewers
Labels
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
question
testing wanted
wontfix
No milestone
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Hookshot!2147
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/hdr-scaled-sampled"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Three fixes from tonight's player reports: "HDR is broken, turning Sharpness to 0 fixes it", and "FSR only shows lower resolutions".
HDR black, grey or purple unless Sharpness is 0
With HDR on, the present runs the scale pass (any upscaler, or a Sharpness above 0; every preset sets one) and hands its output to the HDR encode, which samples it (
framegen_hdr,hdr_encode.comp, a combined image sampler). That output image was made withSTORAGE | TRANSFER_SRConly. WithoutVK_IMAGE_USAGE_SAMPLED_BIT, sampling it is undefined (and a validation error). Sharpness 0 with no upscaler skips the scale pass, so the HDR pass sampled the game's own image and looked right. The scaled image now has the sampled usage too. This matches the 2.1.0 reports in #2038's comments (a black screen in both HDR modes; purple or blue on a 4090).Native HDR flickering grey one frame in three (#2038, moosky73's fix)
format_classgave RGBA8 and RGB10A2 the same class. The game's window textures are RGBA8 until it learns its display is HDR10, then RGB10A2 at the same addresses. The one made before the switch kept its RGBA8 image, and the native-HDR check (tex->format == A2B10G10R10) sent that frame through the SDR-to-HDR pass. RGB10A2 now has its own class. This is the reporter's one-line fix (their commit b04f99a), credited as co-author.FSR 3.1 stopped at Quality (67 %)
DLSS and FSR 4 have the full Render resolution slider (Native as DLAA or FSR 4 Native AA, then 92 % to 33 %). FSR 3.1 has no Native choice of its own, so it fell back to AMD's four modes only. FSR 3.1's steps are now Auto, 100 % (its native AA; FSR 3.1 takes any render size up to the output), 92, 83 and 75 %, then AMD's modes. Help text is added for the new stops.
tests/test_upscaler_rows.cppis updated (passes locally).Checked
G:\hk-b2from this branch.🤖 Generated with Claude Code
github-sync referenced this pull request2026-11-12 06:22:54 +00:00