Commit Graph
176 Commits
Author SHA1 Message Date
Dean 2d16248a25 Merge pull request #6153 from MarcZX100/codex/fix-toggle-mouse-capture
fix(libSceVideoOut): preserve mouse-to-stick relative mode
2026-10-17 14:36:50 +13:00
Adrià b1cb3ed43b Merge pull request #5991 from Get-fix/ps4/videoout-ps4-buffers
feat(libSceVideoOut): register PS4 display buffers
2026-10-17 02:44:59 +02:00
Adrià f0a1e3443b Merge pull request #5691 from xXPBSXx/fix/video-out-flip-rate-error-v2
fix(libSceVideoOut): return VIDEO_OUT_ERROR_INVALID_VALUE for a flip rate outside 0..2
2026-10-15 14:59:01 +02:00
MarcZX100 df4350f3ae fix(libSceVideoOut): preserve relative mouse mode for mouse-to-stick 2026-10-14 23:40:49 +00:00
Dean 6229879f79 Merge pull request #5936 from hossiendehghan989/fix/mouse-internal-helper-nids
fix(videoout): keep mouse helpers out of NID exports
2026-10-15 07:00:35 +13:00
Get-fix 901b92c794 feat(libSceVideoOut): register PS4 display buffers
Add the PS4 functions sceVideoOutSetBufferAttribute and
sceVideoOutRegisterBuffers on top of the existing registration. The PS4
call uses the first free attribute set and returns its index. It
accepts linear A8R8G8B8_SRGB and A8B8G8R8_SRGB buffers, which map to the
PS5 B8G8R8A8 and R8G8B8A8 formats. It throws for tiled buffers, whose
PS4 layout differs from the PS5 one. Linear PS4 buffers may be 4 KiB
aligned: the OpenOrbis graphics sample places its second 1920x1080
buffer 8,294,400 bytes after the first. PS5 buffers keep the 64 KiB
rule. A handle with PS4 buffers writes the PS4 flip status (64 bytes)
and vblank status (32 bytes). Writing the 128-byte PS5 flip status into
the sample's stack structure overwrote its saved frame pointer.
2026-10-14 20:52:00 +03:00
AlxcBTWandClaude Opus 5.5 b8ed78902f fix(input): read the input file from paths with non-ASCII characters
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 18:52:30 +02:00
hossiendehghan989 f6e9cd6ea5 fix(videoout): keep mouse helpers out of NID exports 2026-10-14 16:02:27 +00:00
Adrià ef4d09d22a Merge pull request #5697 from gjonn/hdr-output
feat(videoout): present PQ display buffers through an HDR10 swapchain
2026-10-14 16:27:11 +02:00
Adrià 937cd6cab2 Merge pull request #5539 from JJenkx/feat/videoout-eop-flips
feat(videoout): present reserved flips from tagged GPU completion
2026-10-14 15:04:12 +02:00
Gjon Gojcevic 4e27d8d753 fix(videoout): keep the output SDR on hosts without a monitor HDR report
A Vulkan surface can offer HDR10 formats while the display is not in
HDR (KDE Wayland with RADV lists them with the output's HDR disabled),
so on hosts other than Windows the probe now reports an SDR monitor and
HDR output stays off until an output-state signal exists. A probe test
checks that a window without a Windows monitor report reads as SDR with
an HDR10 surface.

The HDR10 present test now also changes the monitor's luminance while
presenting HDR10, and the presenter logs the HDR metadata it sets.

AI-assisted: yes
2026-10-14 08:55:18 -04:00
Adrià 8bbed135fa Merge pull request #5592 from JJenkx/feat/videoout-buffer-labels
feat(videoout): expose buffer labels and release replaced frames
2026-10-14 14:50:50 +02:00
JJenkx 8c0c449173 feat(videoout): present reserved flips from tagged GPU completion
Rebased onto main as one commit (conflicts in debt notes, Presentation.cpp includes and Submission.cpp helpers).
2026-10-14 14:22:36 +02:00
Joel Fernandes dcfabcc579 feat(pad): bridge controller audio haptics to motor rumble 2026-10-14 13:45:00 +02:00
Adrià 1594e5aee8 Merge pull request #4756 from p3n1cillin/claude/ime-host-keyboard
feat(libSceIme): open a panel-less IME fed by the host keyboard
2026-10-14 12:57:32 +02:00
p3nicillinandClaude Opus 5.5 435be9905d feat(libSceIme): open a panel-less IME fed by the host keyboard
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 08:49:04 +01:00
hossiendehghan989 5dc7111924 fix(libSceVideoOut): export unknown Onimusha import NID 2026-10-14 20:04:08 +13:00
Gjon Gojcevic c9ba43bfb7 feat(videoout): present PQ display buffers through an HDR10 swapchain
Detect HDR output on the host: on Windows the monitor showing the window
must run in HDR10 (DXGI IDXGIOutput6), and on every host the window's
Vulkan surface must offer a 10-bit VK_COLOR_SPACE_HDR10_ST2084_EXT
swapchain with VK_EXT_swapchain_colorspace and VK_EXT_hdr_metadata. The
monitor's luminance comes from DXGI; hosts that report none get 1000
nits peak and full frame, 0 nits black.

While HDR output is available, sceVideoOutGetOutputStatus reports
dynamic range 2 and flag bit 0, sceSystemServiceGetHdrToneMapLuminance
reports the monitor's luminance, and every open port's output mode
event fires when that changes. PQ display buffers are presented
unchanged through an HDR10 swapchain with HDR metadata; any other
display buffer switches back to the SDR swapchain. Without HDR output
the PQ to SDR conversion uses the peak the title was last told as its
white level.

AI-assisted: yes
2026-10-14 02:55:21 -04:00
xXPBSXxandClaude Sonnet 5.5 a1c56b59e1 fix(libSceVideoOut): return VIDEO_OUT_ERROR_INVALID_VALUE for a flip rate outside 0..2
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 08:32:36 +02:00
alfalfa-starandClaude Opus 5.5 040873f9dc feat(videoout): use native Wayland on Linux
Build SDL's Wayland backend next to X11 and ask SDL for "wayland,x11"
on Linux, so the window runs natively under a Wayland compositor instead
of through XWayland. SDL loads libwayland, xkbcommon and libdecor at run
time, so systems without them, or sessions without WAYLAND_DISPLAY, keep
using X11. SDL_VIDEODRIVER still overrides the choice.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 07:24:34 +02:00
ThatsLeo 9828710a38 feat(videoout): implement sceVideoOutGetOutputStatusWithVrr
Writes the 80-byte status described in #2746: the sceVideoOutGetOutputStatus
fields followed by zeros, with the documented codes for a null status and an
unknown handle.

(cherry picked from commit e893efad2d0a7b90243d07bf6669cc9b5f540432)
2026-10-14 16:37:40 +13:00
Dean 970316ae04 Merge pull request #4704 from AlxcBTW/feat/input-mouse-look
feat(input): turn mouse speed into a smooth right-stick tilt
2026-10-14 15:55:08 +13:00
Dean 1e277eef6e Merge pull request #4930 from MarcZX100/fix/videoout-frame-dump-linear
fix(videoout): dump linear display buffers
2026-10-14 15:37:10 +13:00
Dean 11b24ee816 Merge pull request #4863 from babyhuey/feat/libscevideoout-busy-open
fix(libSceVideoOut): return RESOURCE_BUSY when a bus is opened twice
2026-10-14 14:33:15 +13:00
Tenith01 e94f12bd17 fix(videoout): disable DirectInput joystick enumeration on Windows 2026-10-14 13:14:15 +13:00
JJenkx d1de55fb33 test(videoout): register label modes independently of flip-master tests 2026-10-13 20:14:13 -04:00
JJenkx aaa5fd9c60 test(videoout): separate label cases from EOP additions 2026-10-13 20:13:38 -04:00
JJenkx d946b57909 Merge current main into feat/videoout-buffer-labels 2026-10-13 11:57:53 -04:00
adriadam10andClaude bc568a1f6f fix(input): MouseModeEnabled reads the keyboard/mouse state
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-13 17:00:28 +02:00
AlxcBTWandClaude Opus 5.5 38bc0fd348 feat(input): turn mouse speed into a smooth right-stick tilt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 17:00:20 +02:00
Mouad-Scriptz-0andClaude Fable 5.1 94087d08b0 feat(libSceVideoOut): capture the host cursor for guest mice and scale their deltas
The console's mouse reports relative motion, so the host cursor can never line
up with the cursor a title draws. While a title has a mouse open and the
window is focused the host cursor is hidden and captured, released on focus
loss or while the pad's mouse-to-stick toggle is on. Motion deltas are scaled
from the presented image's size in window units to the title's display
resolution with sub-pixel carry, so the title's cursor travels as far as the
host pointer would, on scaled desktops and letterboxed windows alike.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-13 14:05:52 +00:00
MarcZX100 c1bcd0b697 fix(videoout): dump linear display buffers 2026-10-13 05:05:31 +00:00
JJenkx aef1b2989c feat(videoout): expose buffer labels and release replaced frames 2026-10-12 23:13:18 -04:00
Nicolas FalesyandClaude Opus 5.5 6f284b8298 feat(libSceVideoOut): implement sceVideoOutDeleteVrrActiveStatusEvent
The NID -q-vbO859Tw, declared as sceVideoOutUnknown_q_vbO859Tw for
PPSA02530, hashes to sceVideoOutDeleteVrrActiveStatusEvent. It removes the
handle's VRR status registration from the queue like the other Delete*Event
calls, the counterpart of sceVideoOutAddVrrActiveStatusEvent.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017WeVmjnnPPKdxVTpr2Vjtw
2026-10-12 23:04:58 -04:00
babyhuey c15e9f2a37 fix(libSceVideoOut): return RESOURCE_BUSY when a bus is opened twice 2026-10-12 20:26:26 -04:00
Dean 22bb451c9f Merge pull request #3799 from xXPBSXx/fix/export-ppsa02530-imports-v4
fix(exports): export the calls PPSA02530 imports
2026-10-13 10:00:34 +13:00
Dean 307c0a3afb Merge pull request #3819 from xXPBSXx/fix/export-ppsa29866-imports-v4
fix(exports): export the calls PPSA29866 imports
2026-10-13 09:59:30 +13:00
xXPBSXxandClaude Sonnet 5.5 147c0db150 fix(exports): export the calls PPSA02530 imports
PPSA02530 (PRAGMATA) fails to load without these imports that no library exports. Their signatures are unknown, so they are declared without parameters and throw until they are implemented. Adds a TechnicalDebt entry.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-12 21:51:36 +02:00
xXPBSXxandClaude Sonnet 5.5 0485570577 fix(exports): export the calls PPSA29866 imports
PPSA29866 (Tomba! 2) fails to load without these imports that no library exports. Their signatures are unknown, so they are declared without parameters and throw until they are implemented. Adds a TechnicalDebt entry.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-12 21:32:38 +02:00
PrintOrb 9c007805d6 Merge branch 'main' into fix/videoout-high-frame-rate 2026-10-12 11:15:48 -05:00
Dean 9fca13b538 Merge pull request #4009 from dantdmdarealguy/feat/input-deadzone-sensitivity
feat(input): configure stick deadzones and mouse sensitivity
2026-10-12 23:51:54 +13:00
Dean f55e1117d4 Merge pull request #4058 from ee6aba54/fix/videoout-event-unopened-port
fix(libSceVideoOut): return INVALID_HANDLE for events on ports that are not open
2026-10-12 23:47:16 +13:00
Dean Galvin abc1cfa57d fix(agc-driver): queue frame dumps at the dump scale
A frame presented from guest memory with APS5_DUMP_FRAMES is read back
at the size of the display buffer, and that whole copy went into the
dump writer's queue with the scale beside it (31.6 MiB for a 3840x2160
buffer). The queue holds 64 MiB, so the third frame the writer had not
finished ended the run with "frame dump queue exceeded 64 MiB". A frame
blitted from the resident image is already reduced on the GPU and queued
at the reduced size.

The readback is now reduced by the dump scale when the slot retires and
queued at that size, the same pixels the writer kept before. With
APS5_DUMP_SCALE=1 nothing is reduced and the limit is reached as before.

video_out_frame_dump_queue presents four 3840x2160 frames from guest
memory while the writer is held on the first file and compares every
dump with the decoded display buffer.
2026-10-12 18:54:34 +13:00
Dean 5aa0e15a4f Merge pull request #3867 from tv7/fix/videoout-attribute-change-pending-flip
fix(videoout): accept a buffer attribute change while a flip is pending
2026-10-12 17:28:15 +13:00
Simon 43573fd48a fix(libSceVideoOut): return INVALID_HANDLE for events on ports that are not open
Registering a flip or vblank event on a handle that sceVideoOutOpen never
created, or that was closed, threw, which ended titles that register
their flip event before they open the port and ignore the result. The
documented error SCE_VIDEO_OUT_ERROR_INVALID_HANDLE is returned instead,
the same check sceVideoOutSetFlipRate and the other output calls use.

The flip test program gains an "unopened" mode.
2026-10-12 00:21:47 +02:00
PrintOrb 665cca43a0 Merge branch 'main' into fix/videoout-high-frame-rate 2026-10-11 17:21:16 -05:00
Adrià 5317eeb54e Merge pull request #3817 from omurc4/feat/videoout-add-buffer-attribute-option
feat(libSceVideoOut): export sceVideoOutAddBufferAttributeOption
2026-10-12 00:06:21 +02:00
dantdmdarealguy 3c581619d3 feat(input): configure stick deadzones and mouse sensitivity
anyps5-input.ini accepts LeftStickDeadzone and RightStickDeadzone (whole
percent, 0 to 90), a radial deadzone on the controller sticks whose
remaining travel is rescaled to the full range, and MouseSensitivity
(above 0, at most 10), which replaces the fixed factor of 1 for mouse
look. The defaults keep the current mapping exactly.
2026-10-11 15:57:12 -05:00
PrintOrb cef97424a8 test(videoout): pin high-frame-rate display rejection 2026-10-11 14:46:14 -05:00
PrintOrb 63434686bf fix(videoout): support permitted high-frame-rate output 2026-10-11 13:40:31 -05:00