Commit Graph
153 Commits
Author SHA1 Message Date
MarcZX10 e1dd271db6 test(libSceVideoOut): cover the mouse button reset and the dropped releases
video_out_mouse_tests holds a button, opens a dialog and releases it: the title
receives one reset instead of the release, later presses and releases are
dropped, and both reach the title again once the dialog closed.
2026-10-29 14:06:13 +00:00
MarcZX10 f1bd41962d test(libSceVideoOut): cover mouse button presses while a dialog is shown
video_out_mouse_tests checks that a button press made while a dialog is shown
produces no mouse data, and that presses and releases reach the title once the
dialog closed.
2026-10-29 14:06:13 +00:00
MarcZX10 f27176100f test(libSceVideoOut): cover mouse motion and wheel while a dialog is shown
video_out_mouse_tests checks that the wheel reaches the title without a dialog,
that motion and wheel produce no mouse data while a dialog is shown, and that
motion is delivered again once it closed.
2026-10-29 14:06:13 +00:00
MarcZX10 3ba1c9510f test(libSceVideoOut): cover the pad hand-off to a modal dialog
pad_sdl_tests opens a two-button dialog with a virtual controller: the title reads
only the neutral intercepted state while it is shown, a Cross press answers it
with the focused button, the same press stays hidden from the title until it is
released, and the next press reaches the title.
2026-10-29 14:06:13 +00:00
MarcZX10 22f89eecae test(libSceVideoOut): cover the modal dialog keyboard and mouse input
video_out_dialog_input_tests feeds synthetic SDL events to DialogInput with a
three-button dialog open: every focus key and the wheel, the confirming and
cancelling keys and buttons, repeats, events for another window, unmapped keys
and buttons, and events while no dialog is open.
2026-10-29 14:06:13 +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
Adrià 2a90fb105b Merge pull request #9431 from Get-fix/ps4/agc-gcn
feat(libSceAgcDriver): draw PS4 (GCN) command buffers
2026-10-29 09:31:13 +01: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
Get-fix d64ae425c2 test(libSceVideoOut): expect the PS4 alignment message in the PS4 flip test
The 4 KiB display buffer alignment check now names linear and PS4
buffers, because PS4 tiled display buffers may be 4 KiB aligned too.
video_out_flip_ps4 still looked for the old text when a PS4 buffer set
is changed to the PS5 tiled layout, so it failed although the change is
still refused.
2026-10-28 13:01:27 +01: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à d410ce253f Merge pull request #11207 from EagleBearerYS/feat/imedialog-pad-keyboard
feat(libSceImeDialog): type with the controller on an on-screen keyboard
2026-10-27 12:00:58 +01:00
Adrià 5c356f41c3 Merge pull request #11048 from imellag/feat/libkernel-macos-main-thread
feat(libkernel): start the guest off the main thread on macOS
2026-10-27 08:27:20 +01:00
Yunus Shaikh 30d2ca3492 fix(libScePad): keep presses from before a capture out of the intercepted reads
A press published before the keyboard captured the pad stayed in the
read latch and in the sample queue. The first ReadState after the
handoff returned it beside the Intercepted bit, and Read drained the
queued samples from before the capture unmasked. Clear both when a
sample starts the capture, so every read while it lasts holds only the
Intercepted bit.

Found by MarcZX10's review.
2026-10-27 05:20:10 +01:00
Yunus Shaikh 2a3cd39882 feat(libSceVideoOut): hand the pad to an open keyboard and hold back the game's reads 2026-10-27 05:19:49 +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
Adrià afc780e681 Merge pull request #10507 from orezraey/feat/videoout-composite-overlay
feat(videoout): composite the overlay bus over the main output
2026-10-26 20:00:54 +01:00
Dean ca6e29e836 Merge pull request #10924 from Jishnuraj07/fix/pad-sdl-host-controllers
test(pad): skip pad_sdl when host controllers are connected
2026-10-27 05:32:38 +13:00
Dean Galvin 231bbbce92 Merge branch 'main' into fix/videoout-cursor-flip-status 2026-10-27 04:20:52 +13:00
Dean Galvin 96f404d73d test(videoout): stop pinning results for unimplemented cursor and flip status calls
The removed checks asserted the exact failure text of cursor image, image
address and index calls and of a null flip status output. Those calls are
still not implemented and still refuse explicitly; the tests no longer pin
what they answer.
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
Jishnuraj07andClaude Opus 5.5 2b884749fa fix(pad): fail pad_sdl when SDL_NumJoysticks reports an error
SDL_NumJoysticks returns a negative value on error, which the host
controller check turned into exit code 77 and CTest reported as a
skip. A negative count now fails the test with SDL_GetError, and only
a positive count skips it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 11:26:25 +05:30
Dean 9f386f3a29 Merge pull request #9157 from shanu337/videoout-color-space-wrappers
refactor(libSceVideoOut): consolidate color space wrappers and add Flip tests
2026-10-26 15:32:59 +13: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 487a08e600 Merge pull request #8654 from xXPBSXx/test/video-out-telemetry-windows
test(libSceVideoOut): run the telemetry tests on Windows
2026-10-26 11:03:02 +13:00
Dean Galvin b7c91d3372 fix(libSceVideoOut): declare the sized color wrappers once in VideoOut.hpp 2026-10-26 10:31:23 +13:00
Dean Galvin 0a52fdf083 Merge branch 'main' into videoout-color-space-wrappers 2026-10-26 10:30:44 +13:00
Emanueleandmugurc 30cc4ea2e6 feat(libkernel): start the guest off the main thread on macOS
AppKit, which SDL uses for windows, Metal surfaces, event pumping and game
controllers, works only on the main thread, and a guest never hands its
thread back. The macOS relinker emits a call to Aps5StartGuest as the
entry of a relinked executable; no library provided it.

- Aps5StartGuest runs the guest entry on a new thread with the stack size
  of the main thread (at least 8 MiB) and serves the main dispatch queue
  from the run loop of the main thread. The guest ends the process with
  exit; a guest entry that returns aborts.
- Aps5RunOnMainThread runs a function on the main thread and waits for it,
  or in place where the main thread is the caller or Aps5StartGuest was
  never called.
- libSceVideoOut sends its SDL calls through OnMainThread, which carries
  the exceptions back to the caller: the initialisation and shutdown of the
  video and game controller subsystems, the window, its Vulkan surface and
  drawable size, the event polling and the pad, mouse and keyboard input,
  which are created and destroyed there. On the other platforms the
  functions run in place.
- The flip test starts its tests through Aps5StartGuest on macOS, as a
  relinked guest does.

Co-authored-by: mugurc <[email protected]>
2026-10-25 16:02:42 +01:00
Jishnuraj07andClaude Opus 5.5 bdf5ab0e4a test(pad): skip pad_sdl when host controllers are connected
PadInput opens every joystick SDL sees, so a controller attached to
the host takes slot 0 and the slot checks abort. The test now exits
with 77, registered as SKIP_RETURN_CODE, when SDL sees any host
joystick before it attaches its virtual controllers.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 16:00:17 +05:30
boykopovar 2db4bb590b fix(sdk): restore linux and libc++ header compatibility 2026-10-25 00:02:51 +03:00
boykopovar f38d29fd08 refactor(sdk): add canonical headers for remaining libraries 2026-10-24 23:17:42 +03:00
Adrià FranchandClaude Sonnet 5.5 4fcaeba01d fix(pad): undef SDL's main redirect in pad_sdl_tests for MinGW
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-24 19:21:15 +02:00
SlugZero 05c177d2d4 test(pad): exercise PadInput slot lifecycle and pin single connected pad count 2026-10-24 19:21:15 +02: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
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
Dean f57ceaad6b Merge pull request #8370 from orezraey/fix/pad-test-unicode-config-path
test(pad): set the input mapping path through the wide environment on Windows
2026-10-23 11:28:44 +13:00
Dean 6d8f13207a Merge pull request #9608 from DavidSamir/test/videoout-flip-windows-driver
test(libSceVideoOut): run the VideoOut flip tests with SDL's windows driver on Windows
2026-10-22 17:59:50 +13:00
Dean 524398151f Merge pull request #8807 from ycbuzi/fix/agc-driver-frame-dump-wait
fix(agc-driver): make the presenter wait for a full frame dump queue
2026-10-22 17:50:26 +13:00
David f4f60cf277 test(libSceVideoOut): run the VideoOut flip tests with SDL's windows driver on Windows
ANYPS5_VIDEO_OUT_TEST_DRIVER defaulted to SDL's offscreen driver on every
host. That driver has no Vulkan on Windows, so all thirteen flip tests that
open a display skipped there. Windows now defaults to the windows driver.
A machine without a Vulkan driver makes DisplayWindow report that Vulkan
lacks VK_KHR_surface, so the flip tests also skip on a DisplayWindow error
that names Vulkan, as they do on offscreen's message.
2026-10-22 05:05:28 +01:00
David 0225ae65a7 test(libSceVideoOut): find the pre-vblank event among every queued event
The controls check read exactly two events after subscribing to pre-vblank
and waiting for one vblank, and expected one of them to be PRE_VBLANK_START.
The VideoOut filter queues every vblank of the earlier VBLANK registration,
and the queue returns one registration's events before the next, so when a
second vblank lands between the earlier read and the wait (a real display's
cadence), both events read are VBLANK and the pre-vblank event is the third.
The check now reads up to eight events and requires a VBLANK for the vblank
registration and a PRE_VBLANK_START with its own user data among them.
2026-10-22 05:03:59 +01:00
blu 445a549d88 Merge branch 'boykopovar:main' into fix/agc-driver-frame-dump-wait 2026-10-21 19:04:09 -07:00
Adrià ba6abe1fd4 Merge pull request #8418 from hypermoist/feat/videoout-remove-buffer-attribute-option
feat(libSceVideoOut): implement sceVideoOutRemoveBufferAttributeOption
2026-10-21 15:32:40 +02:00
blu 8fe945e590 Merge branch 'boykopovar:main' into fix/agc-driver-frame-dump-wait 2026-10-20 23:37:16 -07: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
Dean 69d0861755 Merge pull request #8494 from NumberGuan/codex/videoout-eop-test-chunks
test(videoout): split long GPU work into bounded dispatches
2026-10-21 17:43:04 +13:00