Commit Graph
6138 Commits
Author SHA1 Message Date
Chad 7a3c38c005 fix(agc): name the group counts of a dispatch past the device limits 2026-10-10 14:58:18 -05:00
Chad 9cb2bf8de5 fix(agc): stop the dispatch look-ahead before indirect arguments an earlier dispatch may write 2026-10-10 14:58:18 -05:00
Dean 17d73d7fe7 Merge pull request #2896 from MarcZX100/fix/avplayer-autostart-race
fix(avplayer): keep title-started playback running
2026-10-11 08:58:15 +13:00
Chad 27e1ddca99 fix(recompiler): read SRT words through a null user-data pointer as zero 2026-10-10 14:51:20 -05:00
mugurc 92b20608e8 feat(relinker): convert for Rosetta with --to-rosetta
Rosetta runs AVX2, FMA, BMI1/2, F16C and MOVBE, but, unlike an Intel
host, it has neither RDSEED, CLWB nor RDPID. --to-rosetta converts
everything --to-intel does and lowers these three as well:

- RDSEED becomes RDRAND (the /6 form of the same opcode), which also
  returns a random value and sets CF.
- CLWB only writes a cache line back, so it becomes a NOP of the same
  length.
- RDPID becomes a load of 0 through an optional stub: Rosetta's TSC_AUX
  is a constant, not a processor index, so every thread reports
  processor 0. A site with no movable instruction after it for the jump
  is kept.

The flag implies --to-intel and conflicts with --windows. It is
independent of --macos: it only changes what the conversion produces, so
--macos alone leaves these instructions as they are, as on an Intel Mac,
and a title for Rosetta is relinked with --macos --to-rosetta. Intel
output is unchanged: the target is a parameter of the converter, Intel by
default.
2026-10-10 22:46:45 +03:00
Dean 9206c3e621 Merge pull request #2791 from alfalfa-star/perf/agc-storage-baseline-settled
perf(agc): take a storage image's generation baseline only when its guest bytes are settled
2026-10-11 08:45:14 +13:00
2f3f1a9c41 fix(shader): flush scalar f16 add/mul/sub denormals to signed zero
Scalar f16 add/mul/sub ignore FLOAT_MODE denorm16 flush bits on main.
Flush inputs when bit 0 is clear and results when bit 1 is clear at
nearest-even. Multiply checks tininess after 11-bit rounding
(0x387ff000); add/sub use 0x38800000.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-authored-by: Cursor <[email protected]>
2026-10-10 15:44:41 -04:00
Doston AbdullayevandClaude Opus 5.5 b1f0f1bff7 test(relinker): convert the non-ASCII working directory case in an ASCII directory
The relinker reads its arguments as narrow strings, so on a Windows
system whose ANSI code page cannot represent the directory it cannot
open the input, and the windows_working_directory case failed before
reaching the executable. Convert the case under an ASCII name and rename
the directory before starting the executable.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 19:42:28 +00:00
Doston AbdullayevandClaude Opus 5.5 28b1f1578f fix(relinker): walk Windows dependency diagnostics through the wide API
The --windows-diagnostics walker looked up modules and directories with
GetModuleHandleA, LoadLibraryExA, GetFileAttributesA,
GetModuleFileNameA and GetSystemDirectoryA, so under a directory outside
the ANSI code page it failed with "dependency diagnostics Windows API
failed" instead of naming the missing dependency.

Keep the walker's paths in UTF-8 and convert them at the Windows API
calls, which now use the wide functions. The entry stub passes it, and
prints, its paths as UTF-8 instead of the ANSI code page. The dependency
diagnostics test now builds its fixtures under a non-ASCII directory.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 19:42:28 +00:00
Doston AbdullayevandClaude Opus 5.5 19803c0086 fix(relinker): start Windows executables from directories outside the ANSI code page
The Windows entry stub read its path with GetModuleFileNameA, which
turns every character the ANSI code page cannot represent into '?', and
then used it with SetCurrentDirectoryA and LoadLibraryExA. A converted
executable in such a directory (Japanese on a Western-locale system, an
emoji, a script without an ANSI code page) stopped at start-up with
ERROR_INVALID_NAME.

Read the path with GetModuleFileNameW and enter the directory and load
the libraries with SetCurrentDirectoryW and LoadLibraryExW, with library
paths stored as UTF-16. Messages and the --windows-diagnostics walker
still get the paths in the ANSI code page, as recorded in TechnicalDebt.

Fixes #2640

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 19:42:28 +00:00
Dean 8559ba7de1 Merge pull request #2758 from TheAggie/fix/libkernel-reserve-virtual-hint
fix(libkernel): place sceKernelReserveVirtualRange at its address hint
2026-10-11 08:41:52 +13:00
Dean cfa47a0f31 Merge pull request #2869 from MarcZX100/fix/agc-lto-layout-lifetime
fix(agc): keep pipeline layout alive during background LTO
2026-10-11 08:41:42 +13:00
MrMha 72f623197a fix(agc): keep polling unsatisfied memory waits after diagnostics
Keep WAIT_REG_MEM diagnostic timeouts from completing unsatisfied waits.
Register the existing gated-dispatch capture test with a 1ms diagnostic
timeout and document the missing-producer limitation.
2026-10-10 23:39:36 +04:00
MarcZX100 c0610950d7 fix(agc): ignore unchanged imported texture blocks 2026-10-10 19:37:13 +00:00
Sanjaysrinivas 982f7d7817 test(libkernel): cover cancellation recovery
Refs #1668. Complements #1141 with resource ownership and lifecycle regressions.
2026-10-10 21:27:49 +02:00
Get-fix fb380440d7 feat(libSceSystemService): select the console language with ANYPS5_LANGUAGE
sceSystemServiceParamGetInt always reported English (United States) as
the console language, so a title that follows the console's language,
such as Jelly5 (PPSA99505) with its Arabic text, can only show English.
ANYPS5_LANGUAGE now selects a console language number from 0 to 30
(21 is Arabic). Unset or empty keeps English (United States); any other
value throws at the language query instead of being ignored.

(cherry picked from commit 9bcf196daa01b07a22be876a7f1143149503e054)
2026-10-10 19:25:39 +00:00
MarcZX100 02941b8e3f fix(tools): detect non-void stub wrappers 2026-10-10 19:24:18 +00:00
JAB-devandClaude Opus 5.5 bddcc71ea9 test(agc): require a repeated draw to reuse the cached draw
Submit the same vertex and pixel draw twice through the driver and
require the second one to hit the draw cache, with graphics pipeline
libraries and with APS5_NO_GPL=1. With pipeline libraries the pixel
stage is cached at its fixed push slot, so a lookup at the stacked
offset misses every draw on its layout. The driver exposes a copy of
its draw-cache counters for the test.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 21:24:11 +02:00
Hannah Lyons 8da88ad3ac feat(libSceAudioOut): export the sceAudioOutSys HDMI output functions 2026-10-10 15:23:02 -04:00
Hannah Lyons 5a43c9b0b9 feat(libkernel): implement pthread_rwlockattr_init and pthread_rwlockattr_destroy 2026-10-10 15:07:43 -04:00
Dean 4a747c4872 Merge pull request #2882 from MarcZX100/codex/relinker-nonascii-2692
fix(relinker): handle Unicode paths on Windows
2026-10-11 07:56:44 +13:00
Dean 3cb317fcfd Merge pull request #2893 from LeandroLP23/docs/environ-technical-debt
docs(libkernel): record that environ is not libc's environment
2026-10-11 07:50:13 +13:00
Dean 29380369ad Merge pull request #2890 from CnRJay/feat/audioout2-enable-chat
feat(audioout): declare sceAudioOut2EnableChat
2026-10-11 07:43:41 +13:00
Dean 1789305d7f Merge pull request #2900 from JAB-dev/fix/agc-draw-cache-fixed-push-slot
fix(agc): look up cached draws at the fixed pixel push slot
2026-10-11 07:43:31 +13:00
QRMOE f153c28b52 docs(libc): record the fixed guest hostname policy
AI-assisted: yes. Record that gethostname exposes AnyPS5 rather than the native machine name. Console hostname configuration, sysctl integration and name resolution remain unverified and unimplemented. This one-line note is placed beside an unchanged libc compatibility entry so the branch merges cleanly into tested main 5edae3536.
2026-10-10 14:42:50 -04:00
QRMOE 3eb52310b6 fix(libc): keep the guest hostname independent of the host
AI-assisted: yes. Return AnyPS5 without reading the native machine name, hostname environment or network configuration. Preserve FreeBSD bounded-copy behavior, guest ENAMETOOLONG, null queries and success errno. The final tree passes a complete Windows Release build and guest_hostname/guest_errors repeated five times each on main 5edae3536. No new Linux or title test is claimed.
2026-10-10 14:42:43 -04:00
QRMOE 01072bfe97 test(libc): require a stable guest hostname
AI-assisted: yes. Verify AnyPS5 rather than the native PC hostname. Cover buffer capacities, guard bytes, maximum size_t capacity, null queries, success errno and thread-local isolation. The old implementation fails this regression; the final fixed tree passes the complete Windows build and five repeated runs each of guest_hostname and guest_errors on main 5edae3536. Linux and title tests of this new revision are pending.
2026-10-10 14:42:43 -04:00
QRMOE 8f32b6eca0 build(libc): avoid descriptor PR test registration overlap
AI-assisted: yes. Moves hostname test registration to avoid #2170 overlap. The full current-main build and focused Windows tests pass; implementation and test source are unchanged.
2026-10-10 14:42:43 -04:00
QRMOE 55075d1302 test(libc): cover hostname bounds and guest errno
AI-assisted: yes. Validates native hostname, every boundary capacity, buffer guards, truncation, null queries and thread-local errno.
2026-10-10 14:42:43 -04:00
QRMOE fb1b524415 build(libc): register guest hostname implementation and test
AI-assisted: yes. Builds the implementation and registers guest_hostname with a 20-second timeout.
2026-10-10 14:42:43 -04:00
QRMOE 2ed75efdcc feat(libc): implement guest gethostname
AI-assisted: yes. Implements the reported homebrew import with FreeBSD buffer behavior and the host hostname.
2026-10-10 14:42:43 -04:00
QRMOE 71ff6079cc test(libSceLibcInternal): regress successful utime errno changes
AI-assisted: yes. Add a deterministic backend that overwrites errno on success; verify restoration on success and retained failure errors. Extend native tests for current-time errno preservation. The new regression fails on original ca87abb and passes with this fix.
2026-10-10 14:42:36 -04:00
QRMOE da26c7e86e fix(libSceLibcInternal): preserve errno after successful utime
AI-assisted: yes. Restore guest errno only on successful utimes forwarding and retain delegated failure errors. Register the controlled-backend regression test. Windows library build and focused tests pass; Linux rerun pending.
2026-10-10 14:42:35 -04:00
QRMOE 858e9350aa test(libSceLibcInternal): verify guest utime with native timestamps
AI-assisted: yes. Checks independent native file times, null/current times, guest errno and rejected paths.
2026-10-10 14:42:35 -04:00
QRMOE 71040b6df5 feat(libSceLibcInternal): implement guest utime
AI-assisted: yes. Preserves the guest 64-bit time ABI and forwards through the existing utimes path. Registers guest_utime.
2026-10-10 14:42:35 -04:00
Dean 43e1425ba8 Merge pull request #2888 from CnRJay/feat/psml-mfsr-1300
feat(psml): declare scePsmlMfsrCreateContext1300 and scePsmlMfsrGetDispatchMfsrPacket1300
2026-10-11 07:40:19 +13:00
Chad 54b30588fd fix(recompiler): merge a loop selection whose arm leaves the iteration where its arms rejoin 2026-10-10 13:39:58 -05:00
Jan ŠléglandClaude Opus 5.5 60148c0e96 fix(libSceSharePlay): accept a null heap in sceSharePlayInitialize
PPSA11386 calls sceSharePlayInitialize(NULL, 0x1800) at start-up and stops
on any non-zero result, so the console accepts a null heap. The library
keeps no state and does not use the heap; a zero size still throws, as its
error is unknown. libSceSharePlay gets its own CMakeLists for the test.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 20:38:56 +02:00
Dean Galvin 696b93a107 fix(shader): drop s_barrier in vertex programs that share nothing between waves
An NGG passthrough program on the vertex path whose s_barrier only orders wave 0's GS_ALLOC_REQ produced a workgroup OpControlBarrier, which the Vertex execution model does not allow; SPIR-V validation rejected the module at the program's first draw. In a Vertex-stage program the barrier now emits nothing when the program has no LDS or GDS access and no memory write or atomic, so no wave can observe another. With any of those it throws.
2026-10-11 07:32:30 +13:00
Dean Galvin 27353e16b7 fix(shader): give an emulated comparison of a 2D-array access a plain 2D mode
A comparison sample with a 2D-array address on a plain 2D color T# takes the emulated comparison, whose runtime modes were only the 2D-array and cube ones. No mode matched, and materialization threw that the image descriptor was incompatible with the static runtime image interface. The emulated comparison now also gets a 2D mode, as the native modes of a 2D-array access already have; the slice is ignored.
2026-10-11 07:32:16 +13:00
ThatsLeo 028b5c0e1f fix(agc): drain the device only when the swapchain is recreated
Resize drained the device before reading the surface extent, so a drawable
size that never matches the surface, as with fractional scaling, drained it
on every present.

(cherry picked from commit b4aae24676)
2026-10-10 18:30:51 +00:00
Dean 1476f76941 Merge pull request #2878 from MarcZX100/fix/videoout-test-isolation-current
test(videoout): isolate application fixtures
2026-10-11 07:30:35 +13:00
Dean 268db5469a Merge pull request #2818 from MarcZX100/codex/linux-test-pie-2803
fix(build): link Linux library tests as PIE
2026-10-11 07:30:25 +13:00
MarcZX100 70d4903158 fix(hw-oracle): batch wave64 probes into 512-row dispatches 2026-10-10 18:28:46 +00:00
Dean 7159f7f345 Merge pull request #2859 from babyhuey/feat/libkernel-cpuset-getaffinity
feat(libkernel): implement cpuset_getaffinity for the calling thread
2026-10-11 07:27:05 +13:00
Dean b78ced2b1e Merge pull request #2858 from babyhuey/feat/libkernel-fstatfs
feat(libkernel): implement _fstatfs
2026-10-11 07:26:56 +13:00
Dean ce9ca660aa Merge pull request #2857 from babyhuey/feat/libscehttp-recv-block-size
feat(libSceHttp): accept sceHttpSetRecvBlockSize
2026-10-11 07:26:46 +13:00
Achraf ReyaniandClaude Opus 5.5 fc828e19e7 feat(libc): implement nextafterf
Export it next to remainderf, stepping to the adjacent float in the
direction of the second argument.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-11 03:25:24 +09:00
Achraf ReyaniandClaude Opus 5.5 3c43198943 feat(libc): implement llroundf
Export it next to lroundf and llround, rounding halfway cases away
from zero into the 64-bit guest long long.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-11 03:25:23 +09:00
Achraf ReyaniandClaude Opus 5.5 909158503d feat(libc): implement atol and atoll
Both parse like strtol and strtoll in base 10. The guest long is 64
bits wide on every host, so atol uses strtoll rather than the host
atol, whose long is 32 bits on Windows.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-11 03:25:22 +09:00