Skip to content

feat(videoout): allow forcing SDR output - #7480

Merged
oneandonlydean merged 4 commits into
boykopovar:mainfrom
Scramblrrrr:codex/videoout-force-sdr-main
Oct 20, 2026
Merged

oneandonlydean merged 4 commits into
boykopovar:mainfrom
Scramblrrrr:codex/videoout-force-sdr-main

Conversation

@Scramblrrrr

@Scramblrrrr Scramblrrrr commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

What

On an HDR desktop, a title can select a floating-point BT.2100 PQ display format that VideoOut currently refuses. Add the opt-in APS5_FORCE_SDR environment option to suppress advertised HDR availability and let titles select the existing SDR path. The detected display and surface capabilities are retained, and the normal availability/generation bookkeeping still applies. With the variable absent, behavior is unchanged.

This is an output compatibility option. Floating-point PQ formats remain unsupported; there is no guessed conversion, title-specific branch, host display change or performance claim. The synthetic test covers suppressed availability, retained host capabilities, SDR reference white and restoration after the override is removed and the surface is republished.

Tested

Current head 0a7cb2fca merges main 3e3e8b905 and adds the newly required environment-reference row. The production fix and fixture are unchanged from the tested head below. The updated conventions check passes. A fresh native run on this latest merge is pending while a separate title test uses the GPU.

Windows 11 Pro 26200, GCC 15.2, Release, SPIRV-Tools OFF, RTX 5070 Ti / NVIDIA 617.42.

  • Main-only production/test change 5a35a7111 on main e5c2b3c325: all four HDR controls pass, zero skips, 2.69 s: agc_host_hdr, guest_video_out_hdr, video_out_hdr_probe, video_out_hdr_present. The latter executes Vulkan presentation. Final head only moves the documentation next to the existing HDR entry; production/test code is unchanged.
  • Separate 007 First Light integration 87f94c64b4d4 on the same main: without the option, registration stops at unsupported display pixel format 0xc001070722000000 while host HDR is advertised. With the option, startup notices, title art and the offline main menu render correctly. This title test needs the public boot/resource stack listed in the tracking update; it is not a main-only title result. No executable patches or time scaling. The run was stopped intentionally after measurement, with no runtime fatal error.
  • Conventions and diff checks pass. The overlap check initially found unrelated debt entries appended at the same location; this entry now sits next to HDR presentation. No overlapping implementation found.

Not tested: the full suite, other hardware/operating systems, or title gameplay from this option alone. Raw title assets, code, descriptors, requests and logs remain local.

Checklist

  • Based on current main; no other open PR implements the same functions
  • One topic per PR; follow-ups go in a new PR
  • No comments in code except technical debt
  • Unimplemented paths throw (NotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file
  • No notes, investigation .md files or images added to the repository (attach them to this PR)
  • New third-party code is a submodule built from source
  • Generic behaviour, not specific to one title
  • Depends on: none
  • Fixes: none
  • Unblocks: PPSA11386 HDR startup path, discussion 007 First Light (PPSA11386) #5714; combined stack only, no gameplay claim
  • GPUs tested: NVIDIA GeForce RTX 5070 Ti, NVIDIA 617.42, Windows 11 Pro 26200
  • AI-assisted: yes (Codex)

@github-actions

github-actions Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.

Pull request Conflicting files (lines on main) Same exports Same new files
PR 7896 docs/dev/debt/libSceAgcDriver.md L156-157

Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.

Pull request Shared files not compared
PR 2434 docs/dev/debt/libSceAgcDriver.md
PR 4448 docs/dev/debt/libSceAgcDriver.md
PR 4449 docs/dev/debt/libSceAgcDriver.md
PR 5058 docs/dev/debt/libSceAgcDriver.md
PR 5372 docs/dev/debt/libSceAgcDriver.md
PR 5431 docs/dev/ENVIRONMENT.md
PR 5499 docs/dev/debt/libSceAgcDriver.md
PR 5925 docs/dev/debt/libSceAgcDriver.md
PR 6146 docs/dev/debt/libSceAgcDriver.md
PR 6185 docs/dev/ENVIRONMENT.md
PR 6186 docs/dev/ENVIRONMENT.md
PR 6194 docs/dev/debt/libSceAgcDriver.md
PR 6223 docs/dev/debt/libSceAgcDriver.md
PR 6273 docs/dev/debt/libSceAgcDriver.md
PR 6280 docs/dev/debt/libSceAgcDriver.md
PR 6300 docs/dev/debt/libSceAgcDriver.md
PR 6412 docs/dev/debt/libSceAgcDriver.md
PR 6481 docs/dev/debt/libSceAgcDriver.md
PR 6548 docs/dev/debt/libSceAgcDriver.md
PR 6636 docs/dev/ENVIRONMENT.md
docs/dev/debt/libSceAgcDriver.md
PR 6683 docs/dev/debt/libSceAgcDriver.md
PR 6804 docs/dev/debt/libSceAgcDriver.md
PR 6808 docs/dev/debt/libSceAgcDriver.md
PR 6867 docs/dev/debt/libSceAgcDriver.md
PR 6868 docs/dev/debt/libSceAgcDriver.md
PR 6879 docs/dev/ENVIRONMENT.md
PR 6924 docs/dev/ENVIRONMENT.md
PR 6926 docs/dev/debt/libSceAgcDriver.md
PR 6946 docs/dev/ENVIRONMENT.md
docs/dev/debt/libSceAgcDriver.md
PR 6947 docs/dev/ENVIRONMENT.md
docs/dev/debt/libSceAgcDriver.md
PR 6977 docs/dev/debt/libSceAgcDriver.md
PR 7002 docs/dev/debt/libSceAgcDriver.md
PR 7085 docs/dev/debt/libSceAgcDriver.md
PR 7256 docs/dev/debt/libSceAgcDriver.md
PR 7446 docs/dev/debt/libSceAgcDriver.md
PR 7449 docs/dev/debt/libSceAgcDriver.md
PR 7464 docs/dev/ENVIRONMENT.md
PR 7484 docs/dev/ENVIRONMENT.md
PR 7505 docs/dev/debt/libSceAgcDriver.md
PR 7604 docs/dev/ENVIRONMENT.md
docs/dev/debt/libSceAgcDriver.md
PR 7642 docs/dev/ENVIRONMENT.md
docs/dev/debt/libSceAgcDriver.md
PR 7800 docs/dev/debt/libSceAgcDriver.md
PR 7922 docs/dev/ENVIRONMENT.md
PR 8004 docs/dev/ENVIRONMENT.md
PR 8077 docs/dev/ENVIRONMENT.md
PR 8206 docs/dev/ENVIRONMENT.md
docs/dev/debt/libSceAgcDriver.md
PR 8423 docs/dev/debt/libSceAgcDriver.md
PR 8484 docs/dev/ENVIRONMENT.md

@github-actions github-actions Bot added docs agc libSceAgc* labels Oct 18, 2026
@savvaniss

Copy link
Copy Markdown
Contributor

Intel and AMD Windows data: agc_host_hdr fails on main and passes with this PR, on an Intel UHD 770 and an AMD RX 9070 XT.

Windows 11 Pro 26300, WinLibs GCC 15.2.0 r7, Release, every execution test built, ANYPS5_NO_SHADER_CACHE=1, serial CTest. Intel UHD Graphics 770 (8086:a780), driver 32.0.101.7088. AMD Radeon RX 9070 XT (1002:7550), driver 32.0.31041.1004, with VkCache emptied first. This head 0a7cb2fca merged into main 07377573f. "Without" means this PR's test files on main 07377573f, with none of its other changes.

Tests, ×3 UHD 770 RX 9070 XT
This head: agc_host_hdr pass pass
Without fails fails

I also ran full CTest with this PR and the 13 other open AGC and shader PRs I tested in the same batch merged together (#7668, #7659, #7504, #7432, #7426, #7413, #7465, #7466, #7464, #7449, #7489, #7673, #7560). Neither GPU showed a failure beyond main's own: the five image-table tests (#6647) and agc_driver_sample_multisample_target (#6957) on the UHD 770, and agc_driver_layered_volume_vertex_no_gpl (#4768) on the RX 9070 XT.

AI-assisted: yes (Claude Code)

@Scramblrrrr

Copy link
Copy Markdown
Contributor Author

@savvaniss Thank you for the paired Windows Intel/AMD runs. This adds useful cross-vendor evidence: unchanged agc_host_hdr fails on main07377573f and passes with0a7cb2fca, three executions per vendor. I am treating the larger multi-PR suite separately; its results do not isolate this PR. Our earlier Windows/NVIDIA paired test remains the third-vendor result. No title FPS benefit is claimed for the HDR override.

AI-assisted: yes (Codex).

@adriadam10 adriadam10 self-assigned this Oct 19, 2026
@oneandonlydean
oneandonlydean merged commit 926ed2e into boykopovar:main Oct 20, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agc libSceAgc* docs unblocks title Names a title ID on the Unblocks line

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants