Repository navigation
feat(libSceVideoOut): answer seven inventory calls as firmware 13.42 does - #14941
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>
Progress report (be24202 → 072371a)📈 System libraries: 26.35% (+0.02%, +7 implemented functions) ✅ 7 implemented
⚪ 6 behaviourally empty (constant return or throw)
Changed libraries (implemented exports)
|
|
Thanks for this. The answers and the At For the six constant-return exports, please show the instructions establishing the return value and absence of argument checks or output writes. For Small point: |
…ck its pointer Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@oneandonlydean Thanks. I've added the excerpts to the description, and they're here too: Source: firmware 13.42 The six constant returns read no argument register and write no memory. On the null pointer: as the excerpt shows, the module doesn't check it either. |
|
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
Unstable on main (2, 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. |
✅ NVIDIA GPU test: passedPR head
Unstable on main (2, 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>
What
Seven throwing inventory exports in
libSceVideoOut/InventoryExports.cppnow return what firmware 13.42's libSceVideoOut returns:sceVideoOutAddBufferHdrPrivilegeVAlir52gpQIsceVideoOutRazorRecallCallbackshGcTks-qqIUsceVideoOutSysUpdateRenderingMode4G37EIMMD+QsceVideoOutCurveSamplePointsCalc_kazBRXPqR7csceVideoOutDriverGetLatestEopHandleGL8+3RHW5vksceVideoOutSysGetMonitorInfo_vMLWuJckGv0sceVideoOutSysModeIsVrQEiuHxjungcEach export is a defined entry in the module's dynamic symbol table, and each body is a single path with no calls, syscalls or globals. Read to the return, disassembly only, not measured on a console.
sceVideoOutSysModeIsVrgains aconst void*parameter, since the code reads throughrdi. The other parameter lists stay as they were, because the code reads no arguments.The seven rows leave the inventory table in
docs/dev/debt/libSceVideoOut.md, and a new entry records what stays unverified (parameter lists, and the layout of the structuresceVideoOutSysModeIsVrreads apart from that dword).sceVideoOutDebugAddVrrPrivilege, which sets a module flag, is left throwing. The debt entry also records thatsceVideoOutSysModeIsVrdoes not check its pointer.Source: firmware 13.42
libSceVideoOut.sprx(sha256975b229324655a2d2a945c755fc0339e7feecb62863efc28ad3b2d91a95ad215). Each NID is a defined entry at the address shown, and these are the complete bodies, each a single path:The six constant returns read no argument register and write no memory.
sceVideoOutSysModeIsVrhas no check or branch before the load:bextrwith control 0x101 (start 1, length 1) extracts bit 1 of the 32-bit value atrdi+0x20. A null argument therefore faults in the module as well.Tested
Windows 11, WinLibs GCC 15.2.0 r7, Release, on upstream/main 93dbd0f:
guest_video_out_firmware_answerspasses. It checks each return value, and forsceVideoOutSysModeIsVrbit 1 set and clear, with every other bit and every byte outside the dword at 0x20 set.InventoryExports.cppandInventoryExports.hppaborts withsceVideoOutAddBufferHdrPrivilege not implemented.public_headerspasses.python3 tools/check_conventions.py --base upstream/main: all checks pass.python3 tools/pr_overlap.py --branch feat/videoout-fw1342-constants: 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 diffs names these seven exports or their NIDs.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: 7/7 pass on both, none skipped. Neither log has the missing-layer message, aVUID-or aSYNC-HAZARDID.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