Repository navigation
feat(libSceVideoOut): answer the mode helpers as firmware 13.42 does - #14954
Conversation
…does sceVideoOutAddBufferHdrPrivilege, sceVideoOutRazorRecallCallbacks and sceVideoOutSysUpdateRenderingMode return 0, sceVideoOutCurveSamplePointsCalc_ returns 0x8029001C, sceVideoOutDriverGetLatestEopHandle 0x802900FF and sceVideoOutSysGetMonitorInfo_ -1, and sceVideoOutSysModeIsVr returns bit 1 of the dword at offset 0x20 of its argument, as firmware 13.42's libSceVideoOut does (read to the return, disassembly only, not measured on a console). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ck its pointer Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
sceVideoOutSysInitMode, sceVideoOutSysModeIsSystemDefault, sceVideoOutSysModeIsHdr, sceVideoOutSysModeIsVrLegacy and sceVideoOutSysModeIsVrNative read or fill the mode structure as firmware 13.42's libSceVideoOut does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Progress report (2d6957c → 2b05923)📈 System libraries: 27.1% (+0.03%, +12 implemented functions) ✅ 12 implemented
⚪ 6 behaviourally empty (constant return or throw)
Changed libraries (implemented exports)
|
|
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.
|
✅ NVIDIA GPU test: passedPR head
Intermittent validation messages (1, seen once in the parallel run, not reproduced when the test was re-run alone 2 times; not counted against this PR)Unstable on main (3, these also failed in recent main runs on this machine; not counted against this PR)Failing on main too (2, not counted against this PR)Validation IDs already present on main (5 IDs in 605 tests)Skipped (7)ReproduceAutomated build and test on a contributor's NVIDIA machine; it does not replace upstream CI. A new comment is posted for each new push. Full logs. |
The branch removes twelve rows from the inventory table, the seven of boykopovar#14941 and the five mode helpers, so the table holds 170 of the original 182 rows and the file has 178 throwing bodies, 170 for the table and 8 outside it. The line still carried the 175 left by boykopovar#14941. Co-authored-by: BunnyFl <166477956+BunnyFl@users.noreply.github.com>
|
Hi @BunnyFl, I pushed one small commit on top of yours ( |
|
@oneandonlydean thanks for fixing it. You're right: at AI-assisted: yes (Claude Code) |
✅ NVIDIA GPU test: passedPR head
Unstable on main (1, these also failed in recent main runs on this machine; not counted against this PR)Failing on main too (1, not counted against this PR)Validation IDs already present on main (9 IDs in 765 tests)Skipped (11)ReproduceAutomated build and test on a contributor's NVIDIA machine; it does not replace upstream CI. A new comment is posted for each new push. Full logs. |
✅ AMD GPU test: passedPR head
Unstable on main (1, these also failed in recent main runs on this machine; not counted against this PR)Failing on main too (11, not counted against this PR)Validation IDs already present on main (4 IDs in 765 tests)Skipped (19)ReproduceAutomated build and test on a contributor's AMD machine; it does not replace upstream CI. A new comment is posted for each new push. Full logs. |
What
Five more libSceVideoOut mode helpers threw. They now read or fill the mode structure as firmware 13.42's libSceVideoOut does. They sit next to
sceVideoOutSysModeIsVrfrom #14941 and read the same dword at offset 0x20, so this builds on that PR:sceVideoOutSysInitMode(void* mode)(9cmjhjqa7Sg) fills bytes 0 to 0x1F with 0xFF, then stores 0x20 in the first dword. It writes nothing past 0x20 bytes and leaves EAX unset, so it is declaredvoid.sceVideoOutSysModeIsSystemDefault(const void* mode)(5Y8uUbGMio0): 1 when bit 0 of the dword at 0x20 is clear.sceVideoOutSysModeIsVrNative(const void* mode)(SgA2MtojPto): 1 when bits 2:1 of that dword are01.sceVideoOutSysModeIsVrLegacy(const void* mode)(zecl8Gox+P0): 1 when bits 1 and 2 are both set.sceVideoOutSysModeIsHdr(const void* mode)(I7-lGGvFgBM): 1 when byte 6 is from 12 to 17. The module computes(uint8_t)(byte - 12) < 6, and the code does the same instd::uint8_t.sceVideoOutSysModeIsVrnow shares the dword read with these. Its behaviour is unchanged.None of the five checks its pointer, so a null argument faults on the console as it does here. What the fields mean is unknown, and the new debt entry says so.
Source
Firmware 13.42
libSceVideoOut.sprx, sha256975b229324655a2d2a945c755fc0339e7feecb62863efc28ad3b2d91a95ad215. Each function was read to its return, from disassembly only, not measured on a console. All five are leaves: no calls, no global data.Tested
Windows 11, WinLibs GCC 15.2.0 r7, Release, on #14941's head 072371a (main 93dbd0f):
guest_video_out_firmware_answerspasses. It checks:IsHdr;InitModewrites exactly 0x20 bytes over a 0x5A-filled buffer.IsVrLegacyaccepting either bit;IsVrNativecomparing with 4;IsSystemDefaultinverted;IsHdrwith<= 6;InitModefilling 0x24 bytes.InventoryExports.cpp/.hpp, the test doesn't compile, because these exports still have the placeholder no-argumentintsignatures there.public_headers(65 tests) passes.ANYPS5_REQUIRE_VULKAN=1 ANYPS5_NO_SHADER_CACHE=1 VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation ctest -Vforvideo_out_flip_controls,_cpuflip,_eop,_fresh,_deferred,_backtobackandvideo_out_output_mode_policy;VUID-or aSYNC-HAZARDID.python3 tools/check_conventions.py --base upstream/main: all checks pass.python3 tools/pr_overlap.py --branch feat/videoout-fw1342-sysmode: no confirmed overlap. It could not compare feat(videoout): apply the output gamma from sceVideoOutAdjustColor #4040, feat(aot): consolidate native ARM64 compiler, runtime and consumers #5021, feat: run PS4 games on the AGC driver — Limbo (CUSA01664) in game (integration branch) #6977, feat(libSceGnmDriver): build PS4 command buffers and submit them #9432, feat(libSceVideoOut): add the PS4 device capability and ModeSetAny exports #9880, feat(pad): complete DualSense adaptive trigger support #10112, feat(libSceVideoOut): opt-in host pause with a key or on focus loss #12863 and docs(debt): separate entries with blank lines and drop derived export totals #14212, which conflict with main and shareCMakeLists.txtor the debt file. None of their changed lines names these five exports or their NIDs.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