Commit Graph
14017 Commits
Author SHA1 Message Date
Santhosh Kumar 0a059a9365 feat(libSceFreeType): load glyphs by character code 2026-10-21 15:33:39 +05:30
milescovielloandClaude Opus 5.5 7bf7be589d test(agc): cover range-limited depth plane stores
DepthPlanePartialStore draws depth 0.5 into a 384x200 D32 Z_X plane (3x2
64 KiB tiles, the last row 72 texels high) over memory filled with 1.0 and
checks the plane's memory unit by unit:

- a read ending 3 KiB into the plane stores unit 0 alone (one store, one
  unit, 64 KiB counted) and leaves the plane stale; the same read again
  stores nothing;
- a read of the whole plane stores the other five units, the edge tiles
  holding 128x72 depth values with their padding left as it was;
- a guest write into unit 4 after unit 0 was stored wins in unit 4 only:
  a later whole read stores the four other stale units over 1.0, and a
  LESS draw at 0.6 passes exactly over unit 4 (the plane-wide generation
  synced every unit from memory instead);
- the retire of a surface the guest wrote into, through a view with two
  levels, stores its stale units the guest did not write;
- a color target over unit 5 retires the surface after storing units 1-4;
- over unwatched memory a partial store leaves the other units on the GPU,
  so a LESS draw at 0.6 passes nowhere.

TextureTiling checks that the 64KB Z_X equation of 4-byte elements reads
only x and y bits below 7, so each 64 KiB unit of a 3840x2160 D32 plane is
exactly one 128x128 tile.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 10:03:00 +00:00
milescovielloandClaude Opus 5.5 f57bbc936a perf(agc): store only the depth plane units a flush overlaps
A read of memory inside a stale D32 Z_X depth plane (FlushDepthPlanes) stored
the whole plane: a copy of the depth image into the mirror, MarkWholeWritten
and a write-back of every byte. In Super Meat Boy 3D (#8840) a read-only
buffer ending about 3 KiB inside a stale 3840x2160 plane makes
ShaderResources::Revalidate flush ~1000 times per 5 s, each one moving
31.9 MiB, bound by transfer bandwidth.

A depth surface now tracks its plane as 64 KiB units, each one 128x128 tile
of the mirror's block units: a stale bit and a write generation per unit
replace memoryStale and the plane-wide syncedGeneration.

- FlushDepthPlanes stores only the stale units the range overlaps: the depth
  to mirror copy takes one region per unit rectangle (UnitRects, from the
  mirror's slice windows), the mirror marks just those units written
  (MarkUnitsWritten) and the write-back covers their hull. The other units
  stay stale and the plane stays registered. Stale bits are cleared only
  after the copy was recorded, and the stored units' generations advance
  only when FlushPending stored them. A depth fast clear still pending at
  the store rewrites the whole image, so it makes every unit stale first.
- SyncFromMemory copies from the mirror only the units the guest wrote since
  their own generation (one ChangedBlocks scan; untracked memory counts as
  unwritten, as WrittenSince did), so a guest write into one unit no longer
  replaces GPU depth that is still unstored in the others.
- Flushes followed by a retire keep the whole-plane store: the color target
  flush in Draw and a written storage view (DepthPlaneScope::Whole). The
  retire of an overwritten surface in DepthSurfaceTexture first stores its
  remaining stale units the guest did not write.
- A mirror without block units (APS5_NO_BLOCK_TRACKING, unaligned base)
  falls back to the whole-plane copy, and APS5_DEPTH_PLANE_WHOLE_STORE=1
  tracks the plane as one unit, the previous behaviour.
- DepthPlaneStoreCounts reports stores, units and bytes stored.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 10:03:00 +00:00
Dean b6fe513b9a Merge pull request #8774 from al3w0f205/test/savedata-mountstatus-icon-null-coverage
test(libSceSaveData.native): cover sceSaveDataSaveIconByPath execution
2026-10-21 23:00:45 +13:00
Dean 1ebd80b152 Merge pull request #8772 from dantdmdarealguy/fix/ult-sync-test-runtime-size
test(libSceUlt): give the ulthread runtime of the sync test its 4096 bytes
2026-10-21 23:00:41 +13:00
Dean 1bd6c88dea Merge pull request #8769 from al3w0f205/test/truncate-negative-length-coverage
test(libkernel): cover truncate failure on negative lengths with EINVAL
2026-10-21 23:00:37 +13:00
Dean 7156315ef3 Merge pull request #8952 from xdCloudy/feat/ps5-ult-exports
feat(libSceUlt): declare PS5 pending exports
2026-10-21 23:00:33 +13:00
Dean 87e7bbc7e4 Merge pull request #8950 from xdCloudy/feat/ps5-savedata-exports
feat(libSceSaveData): declare PS5 pending exports
2026-10-21 23:00:29 +13:00
Dean add0185079 Merge pull request #8948 from xdCloudy/feat/ps5-npmanager-exports
feat(libSceNpManager): declare PS5 pending exports
2026-10-21 23:00:23 +13:00
xXPBSXxandClaude Sonnet 5.5 e8b9eb9323 test(libc): keep the abort-race flag of the call trace test alive until the process aborts
The detached thread of the abort-race case reads a flag that is a local
of the enclosing block, which ends before main calls std::abort(). Under
AddressSanitizer that read is reported as stack-use-after-scope. Make the
flag static.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-21 12:00:17 +02:00
Dean 8baf2b480d Merge pull request #8843 from christophermonterocortes-cr/feat/npcppwebapi-demangled-signatures
feat(libSceNpCppWebApi): align stub signatures with demangled symbols
2026-10-21 23:00:17 +13:00
Dean aa37bc7aef Merge pull request #6683 from EagleBearerYS/fix/agc-sample-location-grid-exact
fix(agc): keep the guest's sample order where pixel (0,0)'s locations stand in for a 2x2 grid
2026-10-21 23:00:12 +13:00
Adrià e05da53ef3 Merge pull request #9021 from adriadam10/docs/reverse-engineering-guide
docs(dev): guide to reading call sites and library disassembly
2026-10-21 11:58:07 +02:00
Adrià FranchandClaude 4c153eca53 docs(dev): guide to reading call sites and library disassembly
Co-Authored-By: Claude <[email protected]>
2026-10-21 11:56:11 +02:00
Santhosh Kumar 303f15c078 docs(libSceFreeType): clarify Windows memory face limits 2026-10-21 15:22:04 +05:30
Santhosh Kumar 9f311ca8c1 feat(libSceFreeType): support memory fonts and face cleanup 2026-10-21 15:19:12 +05:30
Dean 1381826358 Merge pull request #8776 from al3w0f205/test/savedata-dirname-search-validation
test(libSceSaveData.native): cover null arguments and invalid order in sceSaveDataDirNameSearch
2026-10-21 22:40:19 +13:00
milescovielloandClaude Opus 5.5 223e90289b test(agc): copy multisample depth at a count the device samples
The DB depth copy case drew a two-sample depth surface, which lavapipe
cannot sample (it samples depth at 1 and 4 samples only). The copy then
threw outside the expected-failure checks and the test crashed on exit.
Pick 2 samples when the device samples them, else 4, else skip the
multisample half, and copy every sample of that count.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 09:38:47 +00:00
Yossi Yadgar 1f407e5970 docs(debt): note where the new NpTus request checks come from 2026-10-21 12:33:20 +03:00
Yossi Yadgar 6c88a69a24 test(libSceNpTus): run every new request through its arguments and its signed-out result
Each asynchronous call must start with valid arguments and finish signed out, refuse an unknown request and a non-null option; each synchronous call must return SCE_NP_ERROR_SIGNED_OUT. Targeted cases cover empty virtual users, the operation and sort types and the slot, user, friend and TSS size limits.
2026-10-21 12:33:07 +03:00
Yossi Yadgar facfb24846 feat(libSceNpTus): check the arguments of the TSS small storage request and fail it signed out
sceNpTssGetSmallStorageAsync refuses an option and a size above 64 KiB as shadPS4 does, and sceNpTssGetSmallStorage waits for it.
2026-10-21 12:32:56 +03:00
Yossi Yadgar f4d740b8f3 feat(libSceNpTus): check the arguments of the data status requests and fail them signed out
The multi-slot, multi-user and friends data status calls run shadPS4's argument checks and finish with SCE_NP_ERROR_SIGNED_OUT.
2026-10-21 12:32:55 +03:00
Yossi Yadgar 943438f5f5 feat(libSceNpTus): check the arguments of the data requests and fail them signed out
The set, get and multi-slot delete data calls in all their forms run shadPS4's argument checks and finish with SCE_NP_ERROR_SIGNED_OUT.
2026-10-21 12:32:53 +03:00
Yossi Yadgar 6826a4bd9c feat(libSceNpTus): check the arguments of the variable requests and fail them signed out
The add-and-get, try-and-set, multi-user and friends variable calls (NpId, account, virtual user and cross-save forms) run shadPS4's argument checks and then finish with SCE_NP_ERROR_SIGNED_OUT like the multi-slot variable calls; the synchronous forms wait for their asynchronous ones.
2026-10-21 12:32:44 +03:00
Dragost 3b40961d5d fix(libSceAvPlayer): allow presenting video frames within sync tolerance 2026-10-21 11:32:33 +02:00
Dean b5d763770a Merge pull request #8955 from xdCloudy/feat/ps5-videoout-exports
feat(libSceVideoOut): declare PS5 pending exports
2026-10-21 22:20:56 +13:00
Dean 32f5424e80 Merge pull request #8954 from xdCloudy/feat/ps5-videocoreinterface-exports
feat(libSceVideoCoreInterface): declare PS5 pending exports
2026-10-21 22:20:52 +13:00
Dean 6f3b8e66be Merge pull request #8953 from xdCloudy/feat/ps5-urlconfigresolver-exports
feat(libSceUrlConfigResolver): declare PS5 pending exports
2026-10-21 22:20:48 +13:00
Dean 2ca8469e84 Merge pull request #8947 from xdCloudy/feat/ps5-imedialog-exports
feat(libSceImeDialog): declare PS5 pending exports
2026-10-21 22:20:44 +13:00
Dean e6ebe8a8b7 Merge pull request #8857 from Dripl1x/perf/direct-memory-section-pool
perf(libkernel): reuse released direct-memory sections that never held data
2026-10-21 22:20:39 +13:00
xdCloudy 48d9c8b6e7 fix(libSceNpSnsFacebookDialog): include stub declarations 2026-10-21 10:11:34 +01:00
xdCloudy 2ae6cd18bf feat(libSceNpManager): declare 150 pending exports 2026-10-21 10:09:38 +01:00
Dean Galvin 89c2393593 docs(dev): describe the unimplemented Videodec2 exports without naming a title
Name no title or title ID in the entry. The mechanism text is unchanged.
2026-10-21 22:05:51 +13:00
milescovielloandClaude Opus 5.5 127aba3ed6 fix(agc): order and address DB depth copies like the surfaces they read
- Drain the draw pipeline before recording the copy, as the CB metadata
  pass does, so the copy follows the queued draws that render the plane.
- Address the plane as decodeDepth registers it: a multisampled plane's
  pipe-bank XOR bits are stripped and a DB_DEPTH_VIEW slice is added.
  Mipmapped or partially resident planes are refused.
- Refuse a color target with CMASK fast clears, as the CB resolve does.
- Find the source through the depth owner (planeSurface) and require a
  32-bit float surface with the decoded sample count.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 08:54:50 +00:00
xdCloudy 411a8e7711 fix(libSceNpCommon): include export ABI declarations 2026-10-21 09:49:31 +01:00
xdCloudy 8648287a23 feat(libSceNpCommon): isolate 150 pending exports 2026-10-21 09:49:31 +01:00
xdCloudy bb8b215939 feat(libSceNpManager): declare 150 pending exports 2026-10-21 09:49:31 +01:00
xdCloudy 3e12ba183f feat(libSceNpCommon): declare 150 pending exports 2026-10-21 09:49:31 +01:00
David abe827df20 Merge remote-tracking branch 'origin/main' into feat/videodec2-unimplemented-exports
# Conflicts:
#	docs/dev/debt/libSceVideodec2.md
2026-10-21 12:41:51 +04:00
Dean Galvin 0f7241f3a7 Merge origin/main into PR 6519 2026-10-21 21:35:27 +13:00
Dean 27c88a8d75 Merge pull request #8224 from savvaniss/fix/agc-strided-overhang-render-target
fix(agc): bind a strided buffer's last record only up to the render target it runs into
2026-10-21 21:32:49 +13:00
Dean 14a903974e Merge pull request #8945 from xdCloudy/feat/ps5-httpcache-exports
feat(libSceHttpCache): declare PS5 pending exports
2026-10-21 21:32:24 +13:00
Dean 285e62dbe9 Merge pull request #8943 from xdCloudy/feat/ps5-acm-exports
feat(libSceAcm): declare PS5 pending exports
2026-10-21 21:32:20 +13:00
Dean d6ce027977 Merge pull request #8805 from ags-arnab/feat/nptus-multislot-variables
feat(libSceNpTus): run the remaining multi-slot variable calls offline
2026-10-21 21:32:16 +13:00
Dean 26d1065e25 Merge pull request #8803 from AMRYB/fix/self-overlapping-load-regions
fix(tools): preserve load ownership when unwrapping SELF
2026-10-21 21:32:12 +13:00
Dean ce9cf3feff Merge pull request #8305 from hypermoist/fix/utility-libs-console-results
fix(libs): return what the firmware returns from 24 utility calls it does not implement
2026-10-21 21:32:08 +13:00
Dean bf272df673 Merge pull request #8839 from JJenkx/windows/videodec2-generic-vp9-info
fix(libSceVideodec2): answer the generic picture query for VP9 pictures
2026-10-21 21:32:04 +13:00
Dean Galvin 2baa2b5a6e docs(dev): describe the missing-interpolator debt entry without naming a title
Name no title, title ID or shader address in the entry. The mechanism text is unchanged.
2026-10-21 21:16:31 +13:00
Dean Galvin efb4ac4773 Merge origin/main into PR 6604 2026-10-21 21:12:11 +13:00
JJenkxandClaude Opus 5.5 bcc36571bf test(agc): bind a misaligned sparse descriptor past its committed prefix without reading the tail
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 04:10:43 -04:00