Commit Graph
20967 Commits
Author SHA1 Message Date
milescovielloandClaude Opus 5.5 a265527c4d test(libSceFont): cover the terminate code and position a font string records
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 04:19:46 +00:00
Yunus Shaikh 163f88e7fa feat(libSceImeDialog): drive the dialog from the pad
sceImeDialogInit opens the pad keyboard beside the host-text sink and
registers the pad sink and the keyboard view; Finish, Term and
ForceClose release all three. Pad edits go through the same text,
caret and cap as host text: Done copies the text and its terminator
and ends Ok, Cancel ends UserCanceled with the buffer untouched, as
Enter and Escape do. Typed characters end a one-shot shift only when
they fit.

The options follow the dialog's parameters: the multiline option,
the supported languages' currency, the enter label, the extended
parameters' starting page and shift lock (SET_PRIORITY,
PRIORITY_SHIFT), and disable_device, whose controller bit keeps the
pad from editing.
2026-10-27 05:19:41 +01:00
Yunus Shaikh 57d3669f11 feat(libSceIme): route a captured pad to the dialog
An open dialog can now take the pad the way it takes host text: a pad
sink it sets, ImePublishPad_nid_postfix forwarding each pad sample to
it, and ImeCapturesPad_nid_postfix telling the pad's owner that the
dialog has it. A keyboard view provider lets the presentation thread
read the text, caret and key grid it draws. Each is modelled on the
host-text sink: an atomic pointer the dialog sets and clears.
2026-10-27 05:19:41 +01:00
Yunus Shaikh d1d104d67b feat(libSceImeDialog): add the pad keyboard model
A pure model of the controller keyboard: the Latin, Symbols and
Specials pages with their spanned keys, and a step function from pad
samples to edits. It follows shadPS4 30f4170896's on-screen keyboard
(ime_ui_shared.cpp:805-887, ime_dialog_ui.cpp and ime_kb_layout.cpp):

- Cross activates the selected key, armed once Cross is seen up, and
  repeats only the editing keys; the D-pad and left stick move on the
  grid and wrap, a held direction waits half a second at the edge.
- The shortcuts run only when the grid did nothing, in the source's
  order: L2+Triangle symbols, Triangle space (not while L2 is held),
  L3 specials, R2 done, L1+Square clear, Square backspace, L1 and R1
  caret, R3, L2 shift; Circle cancels and loses to Done.
- L2 cycles lower, one-shot upper and caps lock, re-armed once the
  trigger is back at 0.20.
- Repeats use ImGui's default delay and rate, 0.275 s and 0.05 s.

Every button and stick direction held in the first sample is ignored
until it is released, so nothing held when the dialog opens types,
deletes or repeats. The keyboard, menu and R3 mode keys of the source
are left empty, and the currency key and the Done label follow the
dialog's languages and enter label.
2026-10-27 05:19:40 +01:00
Jota 5414390409 test(agc): load the Vulkan loader by its macOS name in the host import and producer gate helpers
The guest memory lifetime tests' host import query and the indirect
arguments pending producer gate opened libvulkan.so.1 on every
non-Windows host, so on macOS they failed with "cannot load Vulkan"
before running. They now open libvulkan.1.dylib there, as the other
driver tests do.
2026-10-27 01:16:35 -03:00
Jota be7db251ad fix(agc): check the deferred destruction resolver only against live devices
The deferred destruction registry kept the first device's
vkGetDeviceProcAddr after that device was destroyed. VulkanDevice
unloads the Vulkan loader with the device, and on macOS the next load
can map it at another address, so every later device in the process
failed with "deferred destruction found two different device
resolvers". The check now applies only while another device is still
registered; the new device's resolver replaces the old one.
2026-10-27 01:15:07 -03:00
milescovielloandClaude Opus 5.5 9c3ad7d55d test(agc): cover the graphics and compute ATOMIC_MEM packets
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 04:13:11 +00:00
milescovielloandClaude Opus 5.5 ed2d385b9a test(agc): cover the REWIND packet and its rewind state patches
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 04:11:22 +00:00
JJenkx bde84e5289 test(agc): skip unsupported sRGB multisample counts 2026-10-27 00:09:24 -04:00
JJenkx c3fd587c23 fix(agc): accept exact sRGB multisample DCC clear endpoints 2026-10-27 00:09:24 -04:00
JJenkx d7afc36cf0 test(agc): cover exact sRGB multisample DCC clears 2026-10-27 00:09:24 -04:00
orezraeyandClaude Opus 5.5 8f16195370 Merge main into docs/libkernel-sync-timeouts-eventflag-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 01:08:10 -03:00
milescovielloandClaude Opus 5.5 e64d31b0b9 test(agc): cover sceAgcCreateShader's relative pointers, program address patch and registration
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 04:07:04 +00:00
milescovielloandClaude Opus 5.5 db9877a539 docs(libSceSaveData.native): add sceSaveDataCommit to the silent stub entry and its call sites
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 04:00:51 +00:00
Jota e331f3b8e0 test(agc): give the read-only depth plane flush test a texture detiler
TestReadOnlyStalePlaneFlush flushes a stale depth plane, which creates
the plane's mirror with StorageTexture::Create(context, *context.detiler).
The fixture's context has no detiler, so the reference is bound to a
null pointer, which UBSan reports and stops agc_driver_graphics and
agc_driver_graphics_maps_fallback on. The device always creates its
detiler, so this only happens in the test. Give the test's context a
detiler built over stub entry points.
2026-10-27 00:53:31 -03:00
Adrià b986c11a34 Merge pull request #10543 from maximilianfv/fix/libkernel-macos-append-positioned-writes
fix(libkernel): append positioned writes on an O_APPEND descriptor on macOS
2026-10-27 04:52:27 +01:00
Adrià 5caff281bd Merge pull request #10540 from maximilianfv/fix/agc-macos-build-frame-recorder
fix(agc): build the frame recorder and the resident heap mirror test on macOS
2026-10-27 04:52:21 +01:00
Adrià 742f41d381 Merge pull request #10131 from orezraey/fix/librtc-rfc3339-precise-measured-ps5
fix(libSceRtc): range-check the precise RFC 3339 formatters as measured on a PS5
2026-10-27 04:52:15 +01:00
Adrià cd9e3f0982 Merge pull request #10519 from shurhundo/fix/check-compile-response-files
fix(check-compile): expand response files before syntax checks
2026-10-27 04:52:09 +01:00
Adrià 4c486ca322 Merge pull request #10515 from JJenkx/fix/agc-two-sample-dithered-a2c
fix(agc): emulate two-sample DB_ALPHA_TO_MASK 0xe701 dithered alpha-to-coverage
2026-10-27 04:52:02 +01:00
Adrià 60bb466419 Merge pull request #10505 from maximilianfv/fix/libkernel-macos-itimer-terminate
fix(libkernel): reach the guest terminate handler from an ITIMER_REAL expiry on macOS
2026-10-27 04:51:54 +01:00
Adrià f80ce6cec1 Merge pull request #11169 from xXPBSXx/docs/debt-agc-cbmemsetexclusive-title
docs(debt): note the call sites of sceAgcCbMemsetExclusive in six titles
2026-10-27 04:51:45 +01:00
Adrià 71a20013cd Merge pull request #11164 from orezraey/docs/libc-hardware-concurrency-measured-ps5
docs(libc): record std::thread::hardware_concurrency as measured on a PS5
2026-10-27 04:51:40 +01:00
Adrià 9a32d83b65 Merge pull request #11155 from xXPBSXx/docs/debt-net-ntoamultiplerecords-title
docs(debt): note how titles call sceNetResolverStartNtoaMultipleRecords
2026-10-27 04:51:35 +01:00
Adrià a71c28c352 Merge pull request #11123 from orezraey/docs/libscesystemservice-bgm-measured-ps5
docs(libSceSystemService): record sceSystemServiceIsBgmPlaying as measured on a PS5
2026-10-27 04:51:29 +01:00
Adrià 1d667d5f52 Merge pull request #11121 from orezraey/docs/libc-fenv-setlocale-strcasecmp-measured-ps5
docs(libc): record feholdexcept, fegetexcept, setlocale and strcasecmp as measured on a PS5
2026-10-27 04:51:24 +01:00
Adrià 244bc628fd Merge pull request #11116 from orezraey/docs/libkernel-version-boottime-socpower-measured-ps5
docs(libkernel): record the version stubs, kern.boottime and the SoC power block as measured on a PS5
2026-10-27 04:51:20 +01:00
Dean 5782d0fcf3 Merge pull request #10883 from natreal/fix/stubgen-reject-invalid-db-rows
fix(tools): reject malformed NID database rows in stubgen
2026-10-27 16:51:12 +13:00
Adrià 4026c14b22 Merge pull request #11093 from xXPBSXx/docs/debt-savedata-mount3-title
docs(debt): note how a title handles a failed sceSaveDataMount3
2026-10-27 04:51:08 +01:00
Adrià 7e6f0d6214 Merge pull request #8434 from Cabreira97/docs/readme-translations
docs(readme): add pt-BR, es, zh-CN and ru translations
2026-10-27 04:51:03 +01:00
Adrià 0754512dc1 Merge pull request #11012 from akkadbakkad89/docs/agc-font-stub-evidence
docs(debt): record recovered evidence for CbMemsetExclusive and font drawup fills
2026-10-27 04:50:58 +01:00
Adrià a17e484891 Merge pull request #10919 from AlexFigas/docs/agc-debug-exception-call-site
docs(debt): add call-site evidence for the arguments of sceAgcDebugRaiseException
2026-10-27 04:50:53 +01:00
Adrià 33d2affaa6 Merge pull request #10901 from EagleBearerYS/docs/debt-gaps-bf208
docs(debt): bring five libraries' debt files in line with the tree
2026-10-27 04:50:47 +01:00
Adrià 65c03f43b2 Merge pull request #10850 from xXPBSXx/docs/debt-savedata-initialize3-title
docs(debt): note how a title and its plugin call sceSaveDataInitialize3 and Terminate
2026-10-27 04:50:41 +01:00
Dean 5b161a686c Merge pull request #5883 from AnzouBelilita/fix/agc-recorder-pending-write-proof-test
test(agc): account for unknown pending DCC key writes
2026-10-27 16:50:38 +13:00
Adrià c93ba3b5a3 Merge pull request #10848 from xXPBSXx/docs/debt-kernel-getoperationmode-title
docs(debt): note what a title does with the sceKernelGetOperationMode values
2026-10-27 04:50:35 +01:00
Adrià 056acea649 Merge pull request #10842 from xXPBSXx/docs/debt-userservice-getagelevel-title
docs(debt): note how a title calls sceUserServiceGetAgeLevel
2026-10-27 04:50:29 +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
Adrià 02f66c4e97 Merge pull request #10826 from xXPBSXx/docs/debt-kernel-createeventflag-title
docs(debt): note how titles call sceKernelCreateEventFlag
2026-10-27 04:50:20 +01:00
Adrià b8b079c271 Merge pull request #10824 from xXPBSXx/docs/debt-convertkeycode-virtualkeycode-title
docs(debt): note how titles call sceConvertKeycodeGetVirtualKeycode
2026-10-27 04:50:15 +01:00
Adrià 10a5931994 Merge pull request #10822 from xXPBSXx/docs/debt-agcdriver-registerdefaultowner-title
docs(debt): note how a title calls sceAgcDriverRegisterDefaultOwner
2026-10-27 04:50:09 +01:00
Adrià e1ddfeba16 Merge pull request #10820 from xXPBSXx/docs/debt-agc-waituntilsafe-title
docs(debt): note how a title calls sceAgcAcbWaitUntilSafeForRendering
2026-10-27 04:50:04 +01:00
Adrià 247cd1596f Merge pull request #10687 from xXPBSXx/docs/debt-ajm-resample-flags
docs(debt): note how titles pass the Ajm resample flags
2026-10-27 04:49:59 +01:00
milescovielloandClaude Opus 5.5 10b21dfb3a docs(libSceSaveData.native): list sceSaveDataPrepare as a silent stub and note how six titles use its result
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 03:48:42 +00:00
StoneDC 29e43ebd5b fix(ci): preserve intentional CTest skips 2026-10-27 11:46:00 +08:00
dantdmdarealguy 36277c4b44 perf(agc): keep recently sampled depth plane copies up to twice the budget
The depth plane copy budget (APS5_DEPTH_PLANE_COPY_MIB, 256 MiB) evicted
the least recently used copy even when it had been sampled in the same
frame. When one frame samples more than the budget, every use evicts a
copy the next use needs, so each copy is made and refilled again on every
use. ASTRO BOT (PPSA21564) samples a 1536x1536x16 D32 copy (288 MiB with
its staging buffer) and a 2048x2048x3 D16 copy (48 MiB) alternately in
its intro and thrashes this way.

A copy sampled in the current or the previous present now stays while
all copies hold at most twice the budget. Past that, the least recently
used copies leave whenever they were sampled, so the copies never hold
more than twice the budget, or the one copy being sampled if it is
larger. Older copies still leave first by least recent use down to the
budget.

DepthPlaneCopyBytes reports the bytes the copies hold, for the tests.
The pooled-memory rounds of agc_driver_depth_plane_guest_layers now
advance two presents between samples, since two copies sampled in one
present may now be kept together.
2026-10-26 22:31:18 -05:00
Filip Michalski 9c5397dc27 perf(shader): reuse starting pixel lane predicates 2026-10-27 04:31:07 +01:00
StoneDC 2f52282590 fix(ci): reject tests that were not run before skip exemptions 2026-10-27 11:30:40 +08:00
Dean 09f9a63f6b Merge pull request #11619 from MaxLikesCode/fix/net-recvmsg-iovec-snapshot
fix(libSceNet): receive sceNetRecvmsg through the iovecs it had at entry
2026-10-27 16:26:53 +13:00
thuanquangandClaude 3f130031d8 perf(libc): keep no per-page physical state for resident guest pages on Windows
A resident direct memory mapping created a SharedPage, a Physical, a
physical map node and an aliases buffer for every 16 KiB page, about
18 MiB of heap per GiB mapped, although a page mapped once holds no
state there. Resident pages now keep only their View, with pins and the
compare-when-shared mark in it; an index from (section, offset) to the
resident run finds a live resident mapping of a physical page, and the
shared state is created when a run is demoted, or when it is evicted
with data or a compare mark. ForgetSection drops the index entries of
the section's runs.

guest_memory on Windows 11 26200 (Ryzen 5 5600X): private memory per
GiB mapped at map time drops from 30.9 MiB to 13.4 MiB.

Co-Authored-By: Claude <[email protected]>
2026-10-27 04:24:13 +01:00