Commit Graph
146 Commits
Author SHA1 Message Date
Dean e464198a81 Merge pull request #14954 from BunnyFl/feat/videoout-fw1342-sysmode
feat(libSceVideoOut): answer the mode helpers as firmware 13.42 does
2026-11-06 14:25:12 +13:00
Dean 9805c44768 Merge pull request #14941 from BunnyFl/feat/videoout-fw1342-constants
feat(libSceVideoOut): answer seven inventory calls as firmware 13.42 does
2026-11-06 10:29:01 +13:00
Dean GalvinandBunnyFl 2b0592386a fix(libSceVideoOut): count the remaining additional exports as 170
The branch removes twelve rows from the inventory table, the seven of #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 #14941.

Co-authored-by: BunnyFl <[email protected]>
2026-11-06 08:43:29 +13:00
Dean be9b38d939 Merge pull request #9880 from ntamas94/fix/ps4-videoout-device-capability
feat(libSceVideoOut): add the PS4 device capability and ModeSetAny exports
2026-11-06 00:03:50 +13:00
LeandroLP23andClaude Opus 5.5 d7fb2a3ec3 fix(pad): restore the DualSense haptics configuration after a rumble stops
SDL sends scePadSetVibration rumble as report 0x31 with audio haptics
turned off. Once the rumble stopped, the stream's haptics came back at a
different strength than before it. The stream thread now sends its
configuration report 0x31 again 100 ms after slot 0's rumble stops, which
brought the haptics back to their level before the rumble.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-04 21:47:03 +01:00
LeandroLP23andClaude Opus 5.5 986ae87c8a fix(pad): pace Bluetooth DualSense haptics reports and keep a failed stream silent
The worker sent a backlog of buffered blocks back to back. It now sends at
most one report 0x32 per 10.67 ms, the length of one 32-frame block at
3 kHz, without a catch-up burst after a pause.

A failed report write cleared the stream-open flag, which sent the vibration
ports to motor rumble. The flag now stays set until the controller
disconnects, so the ports stay silent while the stream is stopped.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-04 21:47:03 +01:00
e0b0f2b91d fix(pad): send a DualSense haptics report once two blocks are buffered
The 10.672 ms timer took a block only when it fired, so audio arriving in
blocks smaller than 32 haptic frames (16 from a 256-frame legacy port)
regularly found fewer than 32 frames and the report was skipped; catching
up after falling behind sent two reports back to back and left a ~21 ms
hole. The controller, asked to queue only 16 frames, then ran dry, and
the haptics dropped out about once per second on hardware.

The stream thread now waits on a condition variable until two blocks are
buffered and sends one, so reports follow the audio clock, and report
0x32 asks the controller to queue 64 frames (21 ms) to absorb Bluetooth
jitter and the difference between the title's rate and the controller's
crystal. Closing the stream wakes the waiting thread before the join.

Co-authored-by: seradavid <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-04 21:46:45 +01:00
115c187398 feat(pad): stream vibration ports to a Bluetooth DualSense as haptics reports
Co-Authored-By: beecrepaldi-afk <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-04 21:46:30 +01:00
ntamas94 0ee4601bf6 fix(libSceVideoOut): merge main and remove obsolete flip-master debt 2026-11-03 21:41:02 +01:00
Savvanis SpyrosandClaude Opus 5.5 f160886325 Merge main into perf/agc-stores-without-drains
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-03 17:37:34 +02:00
Savvanis SpyrosandClaude Opus 5.5 f070b16201 Merge main into perf/agc-stores-without-drains
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-03 09:18:32 +02:00
B-HowellandClaude Opus 5.5 fbd82632e4 feat(libSceVideoOut): declare later callable exports
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-02 20:03:55 -05:00
Dean f6b6491c08 Merge pull request #13041 from wrocketdev/fix/videoout-delete-event-handle
fix(libSceVideoOut): return INVALID_HANDLE when deleting events on ports that are not open
2026-11-03 06:26:20 +13:00
Dean 8c581d2926 Merge pull request #12596 from MarcZX10/feat/ime-composition-clipboard
feat(ime): show host IME composition in the dialog and paste the clipboard
2026-11-03 02:38:26 +13:00
Dean 8cf4d1ebf0 Merge pull request #14974 from xXPBSXx/docs-videoout-change-attr2
docs(debt): say that sceVideoOutSubmitChangeBufferAttribute2 throws for a bad set index or option
2026-11-02 23:30:44 +13:00
Dean 504d1217be Merge pull request #11220 from p3n1cillin/claude/videoout-register-slot-occupied
fix(libSceVideoOut): return SLOT_OCCUPIED for a registration over registered buffers as the console does
2026-11-02 23:27:18 +13:00
xXPBSXxandClaude Sonnet 5.5 c0703637ba docs(debt): say that sceVideoOutSubmitChangeBufferAttribute2 throws for a bad set index or option
A set index outside 0 to 3, a set that is not registered and an option
other than null throw. The new entry says so and what the titles
checked pass for the two arguments.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-11-02 06:44:29 +01:00
BunnyFlandClaude Opus 5.5 05a1773f84 feat(libSceVideoOut): answer the mode helpers as firmware 13.42 does
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 <[email protected]>
2026-11-02 05:12:52 +01:00
xXPBSXxandClaude Opus 5.5 0413746515 docs(debt): name the flip mode above 6 that one title passes
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-02 04:22:18 +01:00
BunnyFlandClaude Opus 5.5 072371afe9 docs(libSceVideoOut): record that sceVideoOutSysModeIsVr does not check its pointer
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-02 03:56:22 +01:00
BunnyFlandClaude Opus 5.5 50327e7c8c feat(libSceVideoOut): answer seven inventory calls as firmware 13.42 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 <[email protected]>
2026-11-02 03:39:59 +01:00
Dean 198e13c75e Merge pull request #14395 from xXPBSXx/docs/vrr-peg-constant-args
docs(debt): say that titles pass zeros to the VRR peg call
2026-11-02 11:45:48 +13:00
Dean 9c6962c323 Merge pull request #8452 from thuanquang/docs/debt-mouse-to-stick-relative-mode
docs(videoout): say that mouse-to-stick keeps SDL relative mode on
2026-11-02 11:44:35 +13:00
Dean d097bfb93d Merge pull request #12721 from JJenkx/windows/docs-videoout-flip-rate-debt
docs(debt): list sceVideoOutSetFlipRate under unknown function info
2026-11-02 11:14:09 +13:00
Savvanis SpyrosandClaude Opus 5.5 a814af06ee Merge main into perf/agc-stores-without-drains
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-01 21:06:53 +02:00
thuanquangandClaude 400fa6066c Merge main (f2d874c1fd) into docs/debt-mouse-to-stick-relative-mode
#11854 rewrote the HDR output entry next to this PR's line in docs/dev/debt/libSceVideoOut.md. Main's entry is kept; this PR still changes only the mouse capture entry's release clause.

Co-Authored-By: Claude <[email protected]>
2026-11-02 00:50:49 +07:00
Dean d5ec8e6575 Merge pull request #11854 from ionut27001/fix/wf-videoout-outputstatus-hdr-flags-zero
fix(videoout): report output status flags 0 with HDR output
2026-11-01 23:35:45 +13:00
xXPBSXxandClaude Opus 5.5 b179e53c8d docs(debt): say that titles pass zeros to the VRR peg call
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-01 10:20:29 +01:00
Savvanis SpyrosandClaude Opus 5.5 87e6918b69 Merge main into perf/agc-stores-without-drains
Recorder keeps both this branch's LookupStoredBytes and main's UnlandedOwnLabel, with both test groups in --completion-labels-only and the full recorder run.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-01 09:16:31 +02:00
Savvanis SpyrosandClaude Opus 5.5 bebaf6e59d Merge main into perf/agc-stores-without-drains
main moved the AGC test registrations into tests/cmake; tools/agc_test_split.py resolve moved this branch's lines to their fragments.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-01 02:33:42 +02:00
MarcZX10 fd07d1c8d8 docs(libSceVideoOut): record the SDL text editing limits of the IME forwarder 2026-11-01 00:29:12 +00:00
MarcZX10 773ceee535 docs(debt): record the untested interaction with the DualSense haptics path 2026-11-01 00:04:38 +01:00
MarcZX10 fc64a6f872 docs(debt): record that the identification pulse has no on-request trigger 2026-11-01 00:04:38 +01:00
MarcZX10 f3cf65d9ad docs(debt): record the unmeasured identification pulse timing and strength 2026-11-01 00:04:38 +01:00
Adrià 3197f0ad06 Merge pull request #13705 from MarcZX10/fix/pad-port0-connected-state
feat(libScePad): report port 0 as connected only while its controller is present, opt-in with ANYPS5_PAD_PORT0_STATE
2026-10-31 20:50:35 +01:00
Kyon b0d9058d42 feat(libSceVideoOut): declare configuration mode export 2026-10-30 21:05:16 +00:00
Kyon 9aa490f583 feat(libSceVideoOut): declare older callable exports 2026-10-30 20:21:35 +00:00
JJenkxandClaude Opus 5.5 9614f3a030 docs(debt): record the PS4 Pro result for sceVideoOutSetFlipRate
ntamas94 measured sceVideoOutSetFlipRate on a PS4 Pro (firmware
10.71): rate 60 returns VIDEO_OUT_ERROR_INVALID_VALUE, only 0, 1 and
2 are accepted, an unopened handle returns
VIDEO_OUT_ERROR_INVALID_HANDLE, and the range check is in the display
driver the call forwards to. Record it in the entry; the PS5 result
and the effect on queued flips stay unverified.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 16:11:51 -04:00
ntamas94 4c50d02a53 Merge remote-tracking branch 'origin/main' into fix/ps4-videoout-device-capability
# Conflicts:
#	docs/dev/debt/libSceVideoOut.md
2026-10-30 17:11:07 +01:00
MarcZX10 be824022ad docs(debt): record the hold and the keyboard rule as AnyPS5 choices
The 500 ms hold and the rule that keyboard and mouse need a bound controller
in controller mode are AnyPS5 choices; the console's reaction to a removed
pad is not measured.
2026-10-30 14:03:58 +00:00
Savvanis SpyrosandClaude Opus 5.5 fb1551442b Merge main into perf/agc-stores-without-drains
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 14:18:23 +02:00
Adrià 63970eded4 Merge pull request #13123 from kyon-eth/feat/video-out-320-exports
feat(libSceVideoOut): declare 182 callable exports
2026-10-30 12:46:18 +01:00
Savvanis SpyrosandClaude Opus 5.5 70d8cce27d fix(libSceVideoOut): wait for GPU work before replacing a closed port's configuration
A label into a port's bufferLabels can be a GPU store in flight, and only
its import is kept with the batch, not the VideoOutConfig that holds the
memory. processFlip releases a request on a closed port without waiting
for the GPU, and Open on the same bus replaces contexts[handle], so a
close and reopen with a flip in flight could free the configuration
before the store ran.

Open now waits for the driver (AgcDriverWaitIdle) before it replaces a
previous configuration. The wait runs without the driver mutex, and Open
checks the port again afterwards, since another Open may have run
meanwhile. video_out_flip_reopen reopens on a second thread with a flip
and a label store gated behind the queue, and checks that Open has not
returned before the gate opens and that the store landed before it did.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 12:34:29 +02:00
Adrià 65df5a3630 Merge pull request #13008 from relativespace2K/feat/videoout-cursor-set2x-magnify
feat(libSceVideoOut): export sceVideoOutCursorSet2xMagnify
2026-10-30 10:42:00 +01:00
Adrià 7d4006607a Merge pull request #11196 from p3n1cillin/claude/videoout-unregister-busy
fix(libSceVideoOut): refuse to unregister the buffer set on screen as the console does
2026-10-30 06:21:30 +01:00
Kyon 9c74b6d890 docs(libSceVideoOut): clarify image provenance 2026-10-30 02:57:56 +00:00
Kyon 28e6ef73d2 docs(libSceVideoOut): record export identities 2026-10-30 02:46:36 +00:00
Kyon a19a8b5501 refactor(libSceVideoOut): exclude overlapping export 2026-10-30 02:46:03 +00:00
Kyon d1c779a8a3 refactor(libSceVideoOut): defer mismatched identity 2026-10-30 02:45:33 +00:00
Kyon a5c690355b Merge remote-tracking branch 'origin/main' into feat/video-out-320-exports 2026-10-30 02:43:38 +00:00