Commit Graph
82 Commits
Author SHA1 Message Date
Adrià 086adee5e3 Merge pull request #12379 from MarcZX10/feat/msgdialog-overlay
feat(overlay): show PS5 system dialogs as real PC dialogs
2026-10-30 02:04:23 +01:00
xXPBSXxandClaude Opus 5.5 b03fa1a977 docs(debt): name what the emulators do when a video bus is opened twice
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 15:29:17 +01:00
MarcZX10 eb3c77d921 docs(libSceVideoOut): record the bound on a dialog that no flip draws
The entry said a title that stops flipping never gets an answer. A dialog that
was never drawn is now dropped after three seconds with the automatic answer;
the bound is a host choice.
2026-10-29 14:06:18 +00:00
MarcZX10 faa571d15e docs(libSceVideoOut): record when the overlay dialog is drawn and who gets the input
The dialog needs a window and a title that keeps flipping, the IME keyboard has
priority over it, and the title's input is withheld while it is shown.
2026-10-29 14:06:16 +00:00
MarcZX10 c6aaf7f1b4 docs(libSceVideoOut): record the unmeasured inputs of the overlay dialog
The key, mouse and pad inputs that drive the message dialog are a host choice.
The mouse has no hit test, and Cross confirms whatever the confirm-button
setting of the console.
2026-10-29 14:06:14 +00:00
Dean ca6987de8a Merge pull request #11414 from p3n1cillin/claude/videoout-register-past-last-buffer
fix(libSceVideoOut): return INVALID_VALUE for a registration past the last buffer as the console does
2026-10-30 03:00:15 +13:00
Adrià b9246db364 Merge pull request #11853 from ionut27001/fix/wf-videoout-flipmaster-measured-codes
fix(libSceVideoOut): answer the flip-master calls as measured on a PS5
2026-10-29 12:57:56 +01:00
Dean 46a49a1978 Merge pull request #11502 from milescoviello/docs/videoout-vblank-status-readers
docs(libSceVideoOut): note that four titles never read the vblank status's third word
2026-10-29 12:04:35 +13:00
p3nicillinandClaude Opus 5.5 cce9311f34 fix(libSceVideoOut): answer 0 and UNAVAILABLE_OUTPUT_MODE when the output 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 <[email protected]>
2026-10-28 13:48:19 +00:00
p3nicillinandClaude Opus 5.5 60c8b94725 test(libSceVideoOut): move the past-last-buffer check away from the slot check
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-28 13:48:16 +00:00
p3nicillinandClaude Opus 5.5 338ea713f2 fix(libSceVideoOut): return INVALID_VALUE for a registration past the last buffer
PS5_Vulkan measured on a PS5 (firmware 13.40) that
sceVideoOutRegisterBuffers2 refuses a set at buffers 15 to 19 with
0x80290001. The call threw instead. The other out-of-range arguments
keep throwing.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-28 13:48:15 +00:00
Adrià e21640c216 Merge pull request #11933 from milescoviello/docs/videoout-open-param-titles
docs(libSceVideoOut): note which open params ten titles pass to sceVideoOutOpen
2026-10-28 14:46:55 +01:00
Dean 2227f13661 Merge pull request #11516 from Lindamea1/fix/videoout-event-getters-invalid-event
fix(libSceVideoOut): return INVALID_EVENT from the event getters for an event of another filter
2026-10-29 00:35:41 +13:00
milescovielloandClaude Opus 5.5 6e58d5b0b6 docs(libSceVideoOut): note which open params ten titles pass to sceVideoOutOpen
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 13:02:40 +00:00
ionut27001 7af0c1dc60 fix(libSceVideoOut): answer flip-master calls only on a handle that never had buffers 2026-10-27 14:40:31 +02:00
ionut27001 5b1ddb48e3 fix(libSceVideoOut): answer the flip-master calls as measured on a PS5 2026-10-27 14:40:31 +02:00
Adrià a49b5aa216 Merge pull request #11496 from milescoviello/docs/videoout-open-call-sites
docs(libSceVideoOut): note how seven titles call sceVideoOutOpen
2026-10-27 12:00:07 +01:00
Adrià 5d92321d8c Merge pull request #10840 from xXPBSXx/docs/debt-videoout-setfliprate-title
docs(debt): note how a title calls sceVideoOutSetFlipRate
2026-10-27 04:50:25 +01:00
Dean e55c69f1fd Merge pull request #8927 from ionut27001/fix/videoout-cursor-flip-status
fix(libSceVideoOut): answer the cursor, flip status and pending-flip calls as measured on a PS5
2026-10-27 14:57:01 +13:00
Lindamea1andClaude Opus 5.5 0f871ec673 fix(libSceVideoOut): return INVALID_EVENT from the event getters for an event of another filter
sceVideoOutGetEventId, sceVideoOutGetEventData and sceVideoOutGetEventCount
threw for an event whose filter is not EVFILT_VIDEO_OUT, and
sceVideoOutGetEventId also threw for a VideoOut id this library never
registers. A title that asks for the id of each event in a queue that
also holds other events stopped there. PPSA28180 compares the result
with VIDEO_OUT_ERROR_INVALID_EVENT, as reported in #11376 (item 6).

They return VIDEO_OUT_ERROR_INVALID_EVENT (0x8029000D) instead, before
sceVideoOutGetEventData writes its output, as the PS4 libraries of
shadPS4 and fpPS4 do. The id is compared in full, so an id above 32
bits is no longer read as a registered one. A null pointer still
throws. The PS5 result is unverified and recorded in the libSceVideoOut
debt.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 17:42:26 +00:00
milescovielloandClaude Opus 5.5 2430e3478d docs(libSceVideoOut): note that four titles never read the vblank status's third word
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 17:31:39 +00:00
milescovielloandClaude Opus 5.5 3742a5365d docs(libSceVideoOut): note how seven titles call sceVideoOutOpen
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 17:28:24 +00:00
Dean Galvin 231bbbce92 Merge branch 'main' into fix/videoout-cursor-flip-status 2026-10-27 04:20:52 +13:00
orezraeyandClaude Opus 5.5 f34c280578 Merge main into feat/videoout-composite-overlay
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 03:06:04 -03:00
orezraeyandClaude Opus 5.5 655d0f3f32 Merge main into feat/videoout-composite-overlay
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 21:51:50 -03:00
Dean Galvin 0a52fdf083 Merge branch 'main' into videoout-color-space-wrappers 2026-10-26 10:30:44 +13:00
xXPBSXxandClaude Sonnet 5.5 06eb1f5c14 docs(debt): note that a title ignores the sceVideoOutSetFlipRate result
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-25 03:59:45 +01:00
orezraeyandClaude Opus 5.5 948e969ba0 feat(videoout): blend the overlay plane into frame dumps and screenshots
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 13:03:12 -03:00
ionut27001 983a81d91b fix(libSceVideoOut): add APS5_OUTPUT_RESOLUTION to override the reported output resolution 2026-10-24 12:42:14 +02:00
ionut27001 bfeeed4ef4 fix(libSceVideoOut): report the output resolution from the host display as measured on a PS5
sceVideoOutGetOutputStatus derived resolution from the size of the
registered buffers, so a title that reads it right after sceVideoOutOpen
got 1 (1080p) whatever the display. In a payload process on a PS5
(firmware 12.70), with no buffer registered, the field changed with the
console's resolution setting: 2 with it on Automatic on a 4K display, 1
with it set to 1080p. Read it from the display mode SDL reports for the
window's display, next to the refresh rate, and keep it independent of
the registered buffers.
2026-10-24 12:42:08 +02:00
Adrià bed6e7258f Merge pull request #8451 from thuanquang/docs/debt-buffer-label-eop-flip
docs(videoout): point the buffer label entry at sceVideoOutSubmitEopFlip
2026-10-24 11:24:53 +02:00
orezraeyandClaude Opus 5.5 5515884034 docs(videoout): state the overlay upload memory bound
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 03:43:15 -03:00
orezraeyandClaude Opus 5.5 ded043d552 feat(videoout): composite the overlay bus over the main output
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 02:43:21 -03:00
shanu337 f24320dc1c refactor(libSceVideoOut): consolidate color space wrappers and add Flip tests 2026-10-23 19:00:18 +05:30
frankea 41d551eb60 Merge branch 'main' of https://github.com/boykopovar/AnyPS5 into ps5-measured-1340
# Conflicts:
#	core/libs/prx/libSceSystemService/Export.cpp
2026-10-21 17:37:31 -04:00
boykopovar 61a44c79e2 fix(videoout): restore flip master handle arguments 2026-10-21 21:53:26 +03:00
xdCloudy 947b3ba6a0 feat(libSceVideoOut): declare pending PS5 exports 2026-10-21 08:01:08 +01:00
ionut27001 51d561a551 fix(libSceVideoOut): answer the cursor, flip status and pending-flip calls as measured on a PS5 2026-10-21 09:28:51 +03:00
frankea 62b29b6e77 docs(debt): say where the 13.40 values were measured without naming the title 2026-10-20 22:10:29 -04:00
frankea 78926e215c Merge branch 'main' of https://github.com/boykopovar/AnyPS5 into ps5-measured-1340
# Conflicts:
#	docs/dev/debt/libSceVideoOut.md
2026-10-20 22:01:26 -04:00
Dean 20de55550f Merge pull request #8095 from Unkown607/fix/videoout-119hz-display-fallback
fix(libSceVideoOut): fall back to 59.94 Hz when display drops below 120 Hz
2026-10-21 14:59:25 +13:00
frankea 73bc20e93d Merge branch 'main' of https://github.com/boykopovar/AnyPS5 into ps5-measured-1340
# Conflicts:
#	docs/dev/debt/libSceAgcDriver.md
2026-10-20 09:21:31 -04:00
thuanquangandClaude 66a2bfe4c2 docs(videoout): point the buffer label entry at sceVideoOutSubmitEopFlip
Co-Authored-By: Claude <[email protected]>
2026-10-20 19:40:34 +07:00
Adam Franke 9a027c0c0d Merge branch 'main' of https://github.com/boykopovar/AnyPS5 into ps5-measured-1340
# Conflicts:
#	docs/dev/debt/shader.md
2026-10-20 00:03:49 -04:00
Dean Galvin f26445217f Merge main into pr-7690
# Conflicts:
#	docs/dev/debt/libSceHmd2.md
2026-10-20 16:54:12 +13:00
Adrià 049a826e95 Merge pull request #7786 from T3cm0/feat/videoout-hmd2-bus
feat(libSceVideoOut): answer the HMD2 bus open as the console does
2026-10-20 03:25:32 +02:00
Dean 0393728fd3 Merge pull request #7005 from TheSovietWaffle/fix/videoout-disable-sdl-wgi
fix(libSceVideoOut): add APS5_NO_WGI to turn off SDL's Windows.Gaming.Input backend
2026-10-20 11:53:01 +13:00
wsjardijn dd523997da fix(libSceVideoOut): fall back to 59.94 Hz when display drops below 120 Hz
When a title has configured 119.88 Hz output (mode 15) and the window moves
to a display below 120 Hz, the presenter fell back to std::terminate via a
require() call. Replace the abort with a graceful fallback: reset outputMode
to mode 1 (59.94 Hz), fire the output-mode event so the title is notified,
and continue presenting.

This matches the HDMI output mode renegotiation a real display change
requires: the system falls back to a compatible mode and notifies the
title, rather than terminating the process.

After the fallback:
- sceVideoOutGetOutputStatus reports refreshRate 3 (59.94 Hz)
- sceVideoOutGetResolutionStatus reports refreshRate 3
- vblanks run at 59.94 Hz (every-other-tick skip resumes)
- sceVideoOutIsOutputSupported(mode=15) returns the unsupported error
- sceVideoOutConfigureOutput(mode=15) succeeds again once the window is
  on a 120 Hz display

The console's exact behaviour when a 120 Hz display is lost has not been
measured; this fallback is recorded as unverified in the debt file.

Fixes #7877
2026-10-19 23:21:16 +02:00
battleblob1andClaude Opus 5.5 a55dc4c535 fix(libSceVideoOut): turn SDL's Windows.Gaming.Input backend off only with APS5_NO_WGI
Windows.Gaming.Input stays on by default, so racing wheels, arcade and
flight sticks, HID pads without an HIDAPI driver and Xbox One/Series
trigger rumble keep working. Hosts where it faults at
Windows.Gaming.Input.dll+0x10a84 set APS5_NO_WGI to turn it off.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 21:12:22 +03:00
Adam Franke b95b9a4e6b docs(debt): record VideoOut, AGC driver and shader values measured on a PS5
Measured on firmware 13.40 inside Gran Turismo 7 through ptrace remote calls and GPU buffers submitted from the game.
2026-10-19 12:20:36 -04:00