Commit Graph
14017 Commits
Author SHA1 Message Date
Adrià 3aa4448ed3 Merge pull request #7479 from ErenYeager1836/fix/web-browser-dialog-close-status
fix(libSceWebBrowserDialog): transition to finished on dialog close
2026-10-20 00:30:11 +02:00
xXPBSXxandClaude Sonnet 5.5 8609309863 fix(tools): match import_audit module names like the relinker
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 00:27:22 +02:00
raghav314andClaude Opus 5.5 5892c846c7 test(agc): a pixel stage that adds a user word read straight from its SGPR follows a change of that word
The word reaches the data-only mask through userDataRegisterReads (the stage
layout's user-data registers). Dropping those bits from the mask makes the
draw reuse the old stage (it writes 127, expected 191) and verify mode abort.

LLM assistance used.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 03:57:03 +05:30
JJenkx 16acce08df test(shader): round-trip full user-word dependency masks 2026-10-20 03:57:03 +05:30
JJenkx 5bfd1b43a6 test(agc): admit the serial draw key before testing data-only hits 2026-10-20 03:57:03 +05:30
raghav314andClaude Opus 5.5 6bfb4c5a63 perf(agc): data-only draw hits compare only the user words a stage reads
A data-only hit (#494) reused a cached stage only when every user data word
of the stage was unchanged. A stage records the user words it depends on when
it is captured: the words its SRT walk reads as values or bases
(SrtUserDataUse), the words its binding layout forwards into shader data
(userDataRegisterReads), and the vertex fetch table words of its vertex stage
info. A cached stage is now a candidate when only words outside that set
changed; its captured memory is validated as before.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 03:57:03 +05:30
Alexandros Pournaras 0018091176 fix(libSceVideoOut): count window-title FPS on the host clock 2026-10-20 01:23:46 +03:00
David a42118dc45 docs(debt): list the Videodec2 exports that report not implemented 2026-10-20 02:21:10 +04:00
David 5032fa60f5 test(libSceVideodec2): check that the thirteen exports report not implemented 2026-10-20 02:20:55 +04:00
SuarezPM bf47697ec0 feat(relinker): lower MCOMMIT and RDPRU for Intel with execution tests
MCOMMIT becomes STC plus NOP padding and RDPRU goes through a
runtime-checked stub returning the host TSC for MPERF/APERF while
other selectors yield zero, with converter and execution tests.

docs/dev/debt/relinker.md records the new lowering and its unverified
assumptions.
2026-10-19 19:19:31 -03:00
Adrià 0d8c51a54e Merge pull request #7478 from ErenYeager1836/fix/cdlg-player-review-close-status
fix(libSceCdlgPlayerReview): transition to finished on dialog close
2026-10-20 00:18:56 +02:00
David b2ce42ff1a feat(libSceVideodec2): export the decoder preset and HEVC functions as not implemented 2026-10-20 02:18:32 +04:00
Adrià efd81c3690 Merge pull request #7503 from milescoviello/perf/reclaim-owned-marks
perf(shader): mark live values of a reclaimed program without a hash set
2026-10-20 00:17:55 +02:00
Adrià 9b4b3cf463 Merge pull request #6941 from kq62/fix/mesh-barycentric-emulation
feat(shader): emulate barycentrics and per-vertex parameters on the mesh path
2026-10-20 00:17:49 +02:00
David 2534c106c6 feat(libSceVideodec2): export the library and memory functions as not implemented 2026-10-20 02:16:23 +04:00
Nicolas AboschandClaude Sonnet 5.5 60d5149efa test(libkernel): run guest_sleep_wake_coarse on Windows only
APS5_COARSE_TIMED_WAITS is read under _WIN32 only; on Linux the condition
variable path always ends a sleep when a completion arrives.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-19 19:15:28 -03:00
Savvanis SpyrosandClaude Opus 5.5 1027bfbce1 feat(libs): declare sceGameLiveStreamingEnableLiveStreaming and sceKernelPrintBacktraceWithModuleInfo
PS4 titles import both and do not load without them; every call throws and
the debt files list them.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 01:14:16 +03:00
Joey Fisher 3c43ce33a0 test(agc): templates over a released or changed sampled lookup must rebuild
agc_driver_resource_cache_replaced_texture clears the sampled cache
under a template that takes the fast proof and requires the next proof
to fail. agc_driver_resource_cache_lookup_changed checks that a proof
past the audit interval takes the full walk and keeps an unchanged
template, then host-imports the surface (no lookup runs) and requires
the template to stop proving current. Both run over a write-watched
surface so the template takes the fast proof.
2026-10-19 16:13:56 -06:00
Joey Fisher b4cd843324 fix(agc): fail a template's proof on a released texture and audit it with the full walk
The fast proof of a cached ShaderResources proves each sampled texture
from write stamps, keys and the pending registry. It never asks whether
the sampled lookup would still return the bound Texture, so a template
whose surface memory is unchanged keeps binding an old object:

- After the sampled cache drops or replaces the entry (#6492 marks the
  texture released), Find keeps serving the template until the next
  Insert, and its fast proof passes.
- When the lookup's answer changes without any lookup running (a
  snapshot whose surface became host-imported is viewed through its
  storage image from then on), nothing replaces the entry and the
  template keeps the snapshot until it leaves the resource cache.

The fast proof now fails with 'replaced texture' when a bound texture
is released. A template whose last full walk is older than
APS5_TEMPLATE_AUDIT_MS (default 1000, 0 turns it off) takes the full
walk instead of the fast proof ('audit'), so a different lookup answer
fails the proof and the template is rebuilt.
2026-10-19 16:13:56 -06:00
davidamsellem 5882b2d449 docs: cite the gfx1031 image atomic measurement, float atomics included 2026-10-20 00:09:52 +02:00
davidamsellemandClaude Opus 5.5 e91d7a16bb docs: measure integer image atomics on 32-bit surfaces on gfx1100
The entry stated that image atomics on 32_SINT and 32_FLOAT act on the
raw dword with no measurement behind it. On gfx1100 the 13 integer image
atomics return and store the same raw-dword results on 32_UINT, 32_SINT
and 32_FLOAT, while 16_UINT and 8_8_8_8_UINT controls differ. gfx1100
has no float image atomics, so that part stays open.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-20 00:09:34 +02:00
Adrià 0929be5e8d Merge pull request #7463 from T3cm0/bionic/vrtracker2-before-init
feat(libSceVrTracker2): answer as the console's module before initialization
2026-10-20 00:08:50 +02:00
Adrià 138199da67 Merge pull request #7491 from milescoviello/perf/mse-skip-empty-families
perf(shader): skip masked-select families that have no candidate select
2026-10-20 00:08:44 +02:00
simonbronk 2b991e8751 fix(json2): keep numeric conversion independent of host locale
Prevent decimal-comma LC_NUMERIC from emitting invalid JSON and silently truncating decimal-point input. Keep 17-digit output, signed underflow and overflow rejection without changing the process locale.

AI-assisted: yes (OpenAI Codex). Windows WinLibs GCC15.2 Release: original shared Json2 fails the final locale regression; fixed guest_json and guest_json_numeric_locale pass (2/2, no skips). Final conventions pass. Only relevant runtime/test targets built; full build/full suite and game/console/Linux/macOS behavior unverified. No performance or coverage increase claimed.
2026-10-20 00:07:10 +02:00
Savvanis SpyrosandClaude Opus 5.5 d42fb3130d feat(libSceNpManager): answer the PS4 account queries for a signed-out user
sceNpGetAccountCountry, sceNpGetAccountDateOfBirth, sceNpGetAccountLanguage
and sceNpGetParentalControlInfo take an online id that matches no user,
sceNpGetUserIdByOnlineId and sceNpCheckPlus report NP as signed out, and
sceNpNotifyPlusFeature is declared and throws.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 01:04:01 +03:00
Dean Galvin 8ea85e6d55 Merge main into pr-7579
# Conflicts:
#	core/libs/prx/libSceAgcDriver/Graphics/include/TextureTiling.hpp
#	core/libs/prx/libSceAgcDriver/Graphics/src/TextureTiling.cpp
#	docs/dev/debt/libSceAgcDriver.md
2026-10-20 11:01:23 +13:00
erickerxhalliandClaude Opus 5.5 13227a33ed fix(libSceMove): throw for a handle that is not open
Track the handles sceMoveOpen issues. A handle that was never opened,
is closed or was opened before sceMoveTerm now throws instead of
succeeding, since the console's INVALID_HANDLE result and its order
against INVALID_ARG are not known. List the no-controller path under
Silent stubs, as libSceHmd and libSceBluetoothHid do, and check the
handle values in the test.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Arbzg9c2DA4DEFKVSvRgYv
2026-10-19 21:58:05 +00:00
Adrià a30f58a42c Merge pull request #7486 from ErenYeager1836/test/savedata-dialog-validation-coverage
test(libSceSaveDataDialog.native): cover uninitialized open and null arguments in guest test
2026-10-19 23:57:19 +02:00
Ishmam Ahmed 78634fb0a9 feat(relinker): support --trace-imports for Linux output
The Linux entry stub now passes each traced import through libc.prx's
TraceImport_nid_no_patch before it calls the guest entry, and stores the
returned thunk in the import's slot. The same imports are traced as on
Windows: functions bound through a PLT slot or a GOT slot, without an
addend, and not weak. TraceImport_nid_no_patch is bound eagerly through
an added GLOB_DAT relocation, so a libc.prx without it fails at load.
Each slot's page is made writable with mprotect first, so slots inside a
PT_GNU_RELRO range can be replaced.

--trace-imports now requires libc.prx among the libraries on Linux too,
and is refused with --macos.
2026-10-19 22:56:03 +01:00
Ishmam Ahmed 0bad015e21 fix(libc): keep the Linux call trace report when two threads abort
A thread that lost the race to write the report passed SIGABRT on straight away, and the default action ended the process while the first thread was still writing. It now waits for the report to finish, polling with nanosleep for at most 2 seconds, before it chains. guest_call_trace_abort_race aborts from two threads at once and checks the whole report; it failed 35 times in 50 without the wait. Reported by jotitadev.
2026-10-19 22:56:02 +01:00
Ishmam Ahmed 0454726744 fix(libc): write the Linux call trace report with signal-safe calls only
The SIGABRT handler used stdio and dladdr, so an abort raised while another thread held the stderr lock or the loader lock hung instead of ending. The report is now formatted into a stack buffer and written with write(2). Callers are named from a module list taken with dl_iterate_phdr when imports are traced, and import counts are read without a lock from a fixed record array. The abort test now holds the stderr lock in another thread, which timed out before this change.
2026-10-19 22:55:08 +01:00
Ishmam Ahmed d128ce7bb8 feat(libc): record traced system library calls on Linux
Build the call tracer for Linux as well as Windows. The thunk area is a
memfd mapped twice, writable and executable, and threads are named by
gettid. Linux has no crash report, so the first traced import installs a
SIGABRT handler that prints the last calls and the most called imports,
then passes the signal on to the previous handler.

guest_call_trace and guest_call_trace_abort now run on Linux too.
2026-10-19 22:55:07 +01:00
Adrià eaa5c92386 Merge pull request #7482 from ErenYeager1836/test/content-delete-error-paths
test(libSceContentDelete): cover null param and uninitialized terminate in guest test
2026-10-19 23:51:07 +02:00
Adrià 7c43dc6bfc Merge pull request #7453 from Agnibha007/fix/unused-filter-fallthrough-padding-abort
fix(relinker): stop the unused-filter CFG walk before trailing zero padding
2026-10-19 23:51:02 +02:00
juanpimg 90acb96a2e docs(debt): name the declared exports and state the ABI caveat 2026-10-19 23:46:13 +02:00
Adrià 903cbbd5ba Merge pull request #7483 from ErenYeager1836/test/convert-keycode-null-character
test(libSceConvertKeycode): cover null character buffer in guest test
2026-10-19 23:45:51 +02:00
Ararararagi c136ffa1a9 fix(libSceNpCppWebApi): name the exports the NID database resolves
The 73 sceNpCppWebApiUnknown<nn> stubs carried an APS5_EXPORT alias because their
names were placeholders. aerolib names all of them, and each name recomputes to
the NID a title imports, so the alias is dropped and the loader derives the NID
from the real symbol name, as the rest of the library does. Behaviour is
unchanged: every one of them throws.

The stubs are ordered by demangled name instead of by NID, so the Common template
instantiations and the V1/V5 accessors sit together, as the rest of the file
does. No symbol changes: the built .prx exports the same 359 NIDs as main.
2026-10-19 22:44:05 +01:00
Adrià a01b3287c6 Merge pull request #7432 from MarcZX10/codex/7017-failed-collect-unwatch
fix(agc): save pending results when a fresh write collect fails
2026-10-19 23:43:48 +02:00
zaryabzip afcfe2d9e2 fix(agc): join and count the Windows shader preparation threads
The Windows pool closed each thread handle at creation, so Close() joined
no thread and liveWorkers was never raised before each worker lowered it.
Keep the handle and thread id, wait for the handle in Close(), and raise
liveWorkers like the POSIX path. The stack test now checks the live count
before and after CloseRegistrationPreparation().
2026-10-20 02:42:16 +05:00
Claude 25434db37d docs(libkernel): mark pipe read events as the exception to sockets-only
The entry before it still says sceKernelAddReadEvent and
sceKernelAddWriteEvent take only guest sockets. The pipe entry now says it
is the exception, without editing that entry, which an open change to the
shared-memory entry next to it would conflict with.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-19 21:41:26 +00:00
milescovielloandClaude Opus 5.5 871b2076d5 fix(agc): end a pipelined submission's EndSubmission time before its REWIND tail runs
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 21:40:49 +00:00
zaryabzip bf608ca8be fix(agc): reserve the shader preparation thread stacks on Windows instead of committing them
The registration preparation and library prebuild pools ask for 64 MiB stacks through
pthread_attr_setstacksize. With winpthreads that size reaches _beginthreadex as the initial
commit, so every pool thread commits its whole 64 MiB up front: 7 threads and 448 MiB on a
12-thread job, 9 threads and 576 MiB on the 16-thread i7-11800H, before any shader is prepared.

On Windows the pool threads are now created with STACK_SIZE_PARAM_IS_A_RESERVATION, which
keeps the 64 MiB reservation and commits pages as the stack grows. The pool code is host code
built with stack probes, so on-demand growth is safe there. Guest threads are unchanged.

agc_driver_registration_prepare_stack measures a pool thread's stack from inside a task: at
least 64 MiB reserved everywhere, and at most 8 MiB committed on Windows. On main it fails with
"registration preparation thread commits 64 MiB of its 64 MiB stack up front".
2026-10-20 02:39:51 +05:00
juanpimg 148e5024b7 feat(prx): drop the exports that main and open pull requests provide
The overlap audit against origin/main and the open pull requests found 39 of
the 193 declared exports that must not be declared here:

- 14 that origin/main already exports. The nid_patcher computes the NID of a
  symbol from its name, and a name ending in _nid_postfix exports the NID of
  the base name, so scePadOpen, sceNetInit and the rest are already there.
- 23 that an open pull request provides: #6832, #6847, #6852, #7846, #7881,
  #7889, #7890, #6977 and #7690.
- 2 whose technical-debt file an open pull request creates: #7463 and #8094.

The scope is now 30 libraries and 154 exports.
2026-10-19 23:37:57 +02:00
Adrià a700809679 Merge pull request #7448 from Tamalero/fix/libkernel-release-direct-memory-order
fix(libkernel): unmap released direct memory views before freeing the physical range
2026-10-19 23:27:29 +02:00
Adrià ae1ad35c42 Merge pull request #7442 from MrMha/feat/oracle-difference-limit-20261018
feat: bound hardware-oracle comparison diagnostics
2026-10-19 23:27:23 +02:00
Adrià 7f54f514cf Merge pull request #7441 from MrMha/feat/progress-history-cache-20261018
feat: cache progress history by commit and counting rules
2026-10-19 23:27:18 +02:00
Adrià ddd2ff864a Merge pull request #7439 from MrMha/feat/nid-symbol-input-files-20261018
feat: compute NIDs from UTF-8 symbol files or stdin
2026-10-19 23:27:13 +02:00
klosixgaming-arch 4e897c120b fix(libc): name guest assert/break in Windows crash reports
Guest SCE_BREAK assertions and debug breaks terminate in int 0x41 (0xcd 0x41), which Windows reports as a read access violation of ~0ull. Name this trap in the crash report alongside int 0x45 (abort).
2026-10-19 16:26:09 -05:00
milescovielloandClaude Opus 5.5 d6cd6de586 fix(agc): tie comp-to-single clear records to the image and its mapping
A recorded comp-to-single clear stayed valid for its surface address,
size and sample count until another recognized clear replaced it, so a
surface freed and reallocated on the same memory could import the old
color for its 0x10 DCC keys. The record now also carries the image's
pipe-bank XOR, which RADV assigns per image, and is dropped when an
unmap or allocation removal covers the surface's base.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 21:23:58 +00:00
milescovielloandClaude Opus 5.5 b97a3da15c feat(agc): take comp-to-single clears of 64- and 128-bit texels
RADV's comp-to-single shader stores user data 5 to 8 as the four dwords of
sample 0's texel: v0 from s5, v1 and v2 from s[6:7] through a 64-bit shift by
zero, and v3 from s8. RADV binds the image through a uint view of the texel's
size, up to R32G32B32A32_UINT, so a 64-bit texel takes the first two dwords
and a 128-bit texel all four. 0x10 keys of RGBA16F and RGBA32F targets now
import as a clear to the recorded color instead of being refused.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 21:23:58 +00:00