Repository navigation
fix(libSceVideoOut): answer 0 and UNAVAILABLE_OUTPUT_MODE when the output has no 120 Hz, as the console does - #11405
Conversation
|
I verified the PR head's merge base: it is |
MarcZX10
left a comment
There was a problem hiding this comment.
Changes requested only for the current-main integration and test rerun noted in my comment. The behavior change and console evidence otherwise look consistent with the reviewed implementation.
|
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.
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.
|
c36f615 to
b38d72e
Compare
|
Rebased onto current
|
MarcZX10
left a comment
There was a problem hiding this comment.
Reviewed exact head b38d72e5c8509574cbef478bc772769913dad900. The hardware finding records mode 15 returning 0 when the console is configured to 1080p on a display that otherwise supports 144 Hz, and sceVideoOutConfigureOutput(15) returning 0x80290019; at 1440p it returns 1 and configures successfully. The helper preserves errors for unknown/invalid modes, maps only mode 15's unavailable-refresh case to 0, and the configure path distinguishes that from the title-attribute error. The test additions cover 59/60/119/120/144 Hz and verify the ordinary mode/error behavior remains unchanged.
The author reports all 33 focused VideoOut tests passing on both the change and tested main 4b1a9a3b2f with the Vulkan validation layer enabled on the same Windows machine/GPU, with no VUID errors. Current main is 2cce8bc51d64bfcff29b967e703d60f246357730; the intervening commits do not touch VideoOut files. I did not run the Windows suite locally. Hosted eligibility, conventions, labels and report checks pass; product/relinker jobs are skipped by path policy. The branch is mergeable, and I found no remaining blocker.
…tput has no 120 Hz PS5_Vulkan measured on a base PS5 set to 1080p output that sceVideoOutIsOutputSupported(15) answers 0, neither 1 nor an error, and that sceVideoOutConfigureOutput(15) then returns 0x80290019, in a title declaring high-frame-rate output. A host display below 120 Hz answered 0x80290016 to both instead. Titles that branch on the answer being 1 are unchanged; the undeclared-title answer stays 0x80290016. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
b38d72e to
cce9311
Compare
|
Rebased onto Rerun on that head and on
|
What
On a host display below 120 Hz,
sceVideoOutIsOutputSupported(15)andsceVideoOutConfigureOutput(15)both returned0x80290016(UNSUPPORTED_OUTPUT_MODE). The console answers differently.PS5_Vulkan measured it on a base PS5 with a 1440p display, in a title whose param.json declares high-frame-rate output (attribute3 0x80040) (HARDWARE_FINDINGS.md, 2026-10-10):
Unavailabe format):sceVideoOutIsOutputSupported(15)answered 0, "neither 1 nor an error code".sceVideoOutConfigureOutput(15), called anyway, returned0x80290019, and the vblank stayed at 16.68 ms.ConfigureOutput(15)returned0x80290016.The change:
sceVideoOutIsOutputSupported(15)answers 0 when the host display runs below 120 Hz. The other modes are unchanged: 1 answers 1, the unsupported selectors0x80290016, the unknown ones0x8029001E.sceVideoOutConfigureOutput(15)returnsUNAVAILABLE_OUTPUT_MODE(0x80290019, shadPS4's name; the constant already existed here) when the answer is 0.0x80290016, checked first. Which code the console gives when both apply isn't measured, and the debt entry says so.VideoOutOutputSupport_nid_no_patch(mode, options, refresh)holds the 1, 0 or error answer, so it can be tested at any refresh rate.IsOutputSupporteduses it.A title that tests for
== 1, as PPSA26344 does, behaves as before. A title that treats any negative answer as "no" now sees 0, as on the console.Tests:
video_out_output_mode_policy: checks the helper at 59, 60, 119, 120 and 144 Hz.guest_video_out_output_modeandvideo_out_flip_controls: accept 1 or 0 for mode 15.guest_video_out_high_frame_rate: its below-120 Hz branch now expects 0, then0x80290019fromConfigureOutput.Tested
Windows 11 Pro (26300), WinLibs GCC 15.2.0, Release, full build on
main1f68b1f:ANYPS5_VIDEO_OUT_TEST_DRIVER=windowson a separate desktop, so the flip tests run;guest_video_out_wqhd_detection_no_vulkanskips by design.ctest -V,VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation,ANYPS5_NO_SHADER_CACHE=1andANYPS5_REQUIRE_VULKAN=1, onmain1f68b1f and on this change, same machine and GPU (Vulkan SDK 1.4.363.0). The layer loads, neither log has thewas not foundmessage or anyVUID-error, and all 33 pass on both.guest_video_out_high_frame_ratetakes that branch on a slower display.tools/check_conventions.py --base origin/mainreports no errors; the warning is the existing length of thesceVideoOutIsOutputSupportedentry.tools/pr_overlap.pyfinds only a text conflict with my fix(libSceVideoOut): refuse to unregister the buffer set on screen as the console does #11196, in the neighbouring debt line. feat(videoout): apply the output gamma from sceVideoOutAdjustColor #4040 and fix(libSceVideoOut): answer the cursor, flip status and pending-flip calls as measured on a PS5 #8927, which it couldn't compare, don't change these two functions.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)🤖 Generated with Claude Code