Commit Graph
14017 Commits
Author SHA1 Message Date
Zinebyte f4d68f2883 docs(libkernel): clarify remaining sleep cancellation debt 2026-10-19 12:57:26 +02:00
Zinebyte 9895030146 fix(libkernel): wake POSIX sleep for thread cancellation 2026-10-19 12:57:09 +02:00
Dean f72c7aacfa Merge pull request #7506 from cadenasynyster/fix/libc-throw-bad-variant-access
feat(libc): implement std::__throw_bad_variant_access
2026-10-19 23:54:48 +13:00
Adrià 0fa6ddb137 Merge pull request #6802 from DavidSamir/feat/relinker-macos-fixed-base
feat(relinker): place macOS executables at a fixed base with --macos-fixed-base
2026-10-19 12:54:31 +02:00
Adrià 572130c764 Merge pull request #6767 from DavidSamir/fix/shader-interpolation-without-float64
fix(shader): interpolate 16-bit values with 64-bit integers on devices without Float64
2026-10-19 12:54:25 +02:00
Dean ff17d55ce9 Merge pull request #7745 from jotitadev/fix/agc-storage-file-write-test-hold-idle-store
test(agc): keep the queue-idle store out of the file write cases
2026-10-19 23:54:17 +13:00
Dean cd32b54c56 Merge pull request #7806 from fogydes/fix/libkernel-pipe-buffer-size
fix(libkernel): increase pipe buffer size to match FreeBSD BIG_PIPE_SIZE
2026-10-19 23:53:54 +13:00
Dean 1c2824c8de Merge pull request #7670 from thuanquang/test/kqueue-pipe-read-start
test(libkernel): time blocking waits from before the writer thread starts
2026-10-19 23:53:40 +13:00
Yossi Yadgar a23a24c1e7 test(libSceVideodec2): decode units whose start code and length prefix collide
Move the AVCC collision to the second unit, add an AVCC unit opening
00 00 01 23 among Annex-B units, and an Annex-B stream with 3-byte start
codes whose SPS and PPS unit, padded with trailing zero bytes, also reads
as one length prefix.
2026-10-19 13:53:35 +03:00
Yossi Yadgar f4f471f415 fix(libSceVideodec2): settle an access unit that reads as both Annex-B and AVCC
A unit opening with 00 00 01 xx can also tile as AVCC when its first NAL
is 0x1xx bytes long, in either direction. Annex-B requires a zero_byte
before the first NAL of an access unit, so a unit opening with a 3-byte
start code is taken as AVCC unless the decoder has already seen
unambiguous Annex-B units that open that way. A unit opening with
00 00 00 01 that also tiles keeps the framing of the last unambiguous unit,
Annex-B when there is none.

Media Player Classic PS5 sends Annex-B units with 4-byte start codes and
leaves exactly the colliding samples in AVCC, so the decoder's last framing
alone would choose wrong there.
2026-10-19 13:53:35 +03:00
Dean 42b7174190 Merge pull request #7669 from thuanquang/test/positioned-close-head-start
test(libkernel): give the positioned close test a real 300 us head start
2026-10-19 23:53:27 +13:00
Adrià FranchandClaude Sonnet 5.5 02c5470080 test(shader): drop the stencil operation value byte from the version 35 request
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-19 12:53:13 +02:00
Dean 72c2d5e582 Merge pull request #7774 from ionut27001/test/flip-stores-small-results-deadline
test(agc): give the flip store test the deadline its siblings use
2026-10-19 23:53:13 +13:00
Adrià FranchandClaude Sonnet 5.5 fd0b928fd3 test(agc): accept the folded stencil operation value when SPIR-V tools optimize the module
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-19 12:53:13 +02:00
simonbronkandClaude Opus 5.5 7563b4a480 fix(agc): replace with a stencil operation value the pixel shader exports
With DB_SHADER_CONTROL.STENCIL_OP_VAL_EXPORT_ENABLE the pixel shader
supplies the value that REPLACE_OP and the add and subtract operations
use in place of DB_STENCILREFMASK.STENCILOPVAL. The bit was refused as a
whole, which stopped Onimusha: Way of the Sword (PPSA27836) at a
DB_SHADER_CONTROL 0x45 draw with DB_STENCIL_CONTROL 0x40040 (REPLACE_OP
on depth pass, both faces), write mask 0xff and compare ALWAYS.

The export is accepted with the 32_GR and 32_ABGR Z formats. When no
reachable operation through a non-zero write mask reads the value, it
cannot change the result and is ignored. Without a test value export, a
reachable REPLACE_OP becomes REPLACE with the exported value as
FragStencilRefEXT (or the bounded replay on devices without the
extension), provided both faces compare without the test value and use
no ONES or REPLACE_TEST; early tests throw. The add and subtract
operations, and REPLACE_OP with a test value export, still throw.

The value is read from bits 8-15 of the second MRTZ channel: the
title's pixel shader shifts it left by 8 right before exp mrtz
(v_lshlrev_b32 v0, 8, v0). That is the only evidence for the layout and
it is listed as technical debt. The pixel stage info carries the new
flag into the cache key, the draw keys and request serialization
version 31.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 12:53:13 +02:00
Dean 7f6ef06348 Merge pull request #7813 from whamre/fix/windows-stdio-stream-limit
fix(libkernel): raise the Windows stdio stream limit to RLIMIT_NOFILE
2026-10-19 23:52:59 +13:00
Dean 95d08209cd Merge pull request #7779 from Antifrag/codex/http-cache-flush
fix(libSceHttp): add authentication and cookie cache flush exports
2026-10-19 23:52:45 +13:00
Dean efbca95809 Merge pull request #7824 from Rajkamalcode/fix/windows-kernel-sys-link-cleanup
test(libkernel_sys): remove links and the fixture without std::filesystem on Windows
2026-10-19 23:52:32 +13:00
Adrià 448aa33eb1 Merge pull request #6787 from al3w0f205/feat/keyboard-missing-firmware-exports
feat(libSceKeyboard): export missing firmware functions from database
2026-10-19 12:52:14 +02:00
Dean 1bb7656b23 Merge pull request #7676 from DavidAmsellem/test/agc-pipeline-cache-hit-detection
test(agc): measure pipeline cache hits against the bytes a pipeline adds
2026-10-19 23:52:09 +13:00
Dean b62e0a8a7d Merge pull request #7713 from joedeangelis533-bot/fix/unwrap-file-backed-segments
fix(tools): reject unbacked segment data when unwrapping SELF
2026-10-19 23:51:55 +13:00
SibteProf f9d6f3e932 feat(libSceCesCs): implement Unicode scalar conversions 2026-10-19 15:46:11 +05:00
Adrià ebf054c67f Merge pull request #6781 from XairRrR/fix/cmask-clear-host-stage
fix(agc): include the host stage in the CMASK clear's host-access barriers
2026-10-19 12:45:52 +02:00
Adrià 9d2d40f5ee Merge pull request #6714 from fogydes/feat/agc-cb-mem-semaphore
feat(libSceAgc): implement CB memory semaphore and unversioned payload address
2026-10-19 12:42:50 +02:00
LexroidandClaude Opus 5.5 4fe32a457c fix(libkernel): return EBADF from fstat on a descriptor that is not open on Windows
sceKernelFstat and fstat passed any descriptor to the UCRT's _fstat64, which
raises the invalid-parameter handler for one that is not open. The crash
report installs that handler as fatal, so the calling thread died where the
console returns EBADF. Dying Light 2 (PPSA02262) hits it on a loading thread
right after sign-in.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 12:42:34 +02:00
Adrià b364181076 Merge pull request #6776 from mopga/fix/windows-zips-and-tool-parsing
fix(web): accept ZIPs made on Windows
2026-10-19 12:38:57 +02:00
Federico Marras 682bb3b15d test(libSceNet): skip IPv6 datagram receive cases without an IPv6 loopback
guest_datagram_* failed with "bind loopback sockets" on hosts where the
kernel has IPv6 but ::1 is unusable (net.ipv6.conf.lo.disable_ipv6=1):
socket creation succeeds and bind fails with EADDRNOTAVAIL. Skip the
IPv6 case on EAFNOSUPPORT from socket or EADDRNOTAVAIL from bind, as
GuestUdp.cpp and GuestSocketPortZero.cpp already do.
2026-10-19 12:37:24 +02:00
KernelPanicNTandClaude Opus 5.5 1fbbad7c55 fix(libSceUserService): check the thread priority on initialization
sceUserServiceInitialize reads the thread priority from the first int
of its parameters, and sceUserServiceInitialize2 takes it as its
argument. A PS5 returns 0x80960005 for a priority outside 0x100 to
0x2FF, and 0x80960003 when Initialize2 is called on an initialized
service, where this returned success.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 10:37:19 +00:00
KernelPanicNTandClaude Opus 5.5 f31479bb0c fix(libSceGameUpdate): return the module's lifecycle and argument errors
Following the PS5 3.20 module as read by prosper:

- a second sceGameUpdateInitialize returns 0x80412802, and
  sceGameUpdateTerminate without initialization returns 0x80412801;
- sceGameUpdateCreateRequest returns 0x80412801 before initialization;
- sceGameUpdateCheck checks the id, the pointers, the 0x30 sizes and
  the zero option and reserved words before initialization;
- sceGameUpdateAbortRequest and sceGameUpdateDeleteRequest return
  0x80412805 for an id that was never created instead of success;
- sceGameUpdateGetAddcontLatestVersion checks its pointers before
  initialization.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 10:36:53 +00:00
KernelPanicNTandClaude Opus 5.5 ef897dc274 fix(libScePngDec): reject a maximum image width above 1000000
The PS5 module checks max_image_width - 1 > 999999 in
scePngDecQueryMemorySize and scePngDecCreate and returns
0x80690003 (INVALID_PARAM). This returned 0x80690002 (INVALID_SIZE)
and accepted a width of 1000001.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 10:36:50 +00:00
Adrià 674c25388e Merge pull request #6780 from MrMha/fix/web-cleanup-errors-20261016
fix: finish directory writer cleanup when cancellation rejects
2026-10-19 12:34:31 +02:00
Adrià Franch 7d57845016 fix(libkernel): pass the descriptor to Load in directory SEEK_END 2026-10-19 12:33:33 +02:00
Dragost f40205c8f5 fix(libkernel): support SEEK_END on directory descriptors 2026-10-19 12:33:20 +02:00
JotaandMarcZX10 ba72cb78fb test(agc): cover a direct FlushPending reader during a concurrent store
Add the concurrent flush case from #7757 to agc_driver_storage_file_write:
while one thread's FlushPending stores the surface under a held GPU
mutex, a second thread calls FlushPending and then GuestMemory::Read on
the same range, and the read must see the stored bytes. Only the test
from #7757 is taken here; agc_driver_storage_read_during_idle_store
keeps covering the flush hook path.

Co-authored-by: MarcZX10 <[email protected]>
2026-10-19 07:29:44 -03:00
Adrià 118266aec2 Merge pull request #6760 from Ondra97/codex/fix-f64-minmax-denormals
fix(shader): honor f64 min and max input denormal mode
2026-10-19 12:27:39 +02:00
Nithishvelan M 160941f812 feat(libSceRtc): implement component getters and setters with range validation 2026-10-19 15:55:05 +05:30
hypermistandClaude Opus 5.5 52b42e0583 feat(libc): implement wctrans, towctrans and the Dinkumware case-mapping helpers
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 23:23:23 +13:00
Adrià c82ffb0f20 Merge pull request #6647 from binarycleric/fix/agc-table-update-after-bind
fix(agc): bind image and sampler tables through update-after-bind limits
2026-10-19 12:20:50 +02:00
Adrià aaaff21edf Merge pull request #6733 from meh7an/perf/shader-result-memo-sets
perf(shader): keep memoized results in a set-associative table
2026-10-19 12:20:45 +02:00
David 949932c6c6 fix(libc): keep errno in strtoimax, strtoumax and _Stoul on macOS
The conversions in RuntimeSupport.cpp call the host's strtoimax,
strtoumax and strtoull directly, so they set EINVAL on macOS for a
subject without digits too. guest_math, once the strtol cases pass,
failed on strtoimax(""). They now go through ParseInteger.
2026-10-19 12:20:32 +02:00
David 717f318e2e fix(libc): keep errno when strtol converts nothing on macOS
macOS's strtoll and strtoull set errno to EINVAL when the subject has
no digits, as in "", "words" or " +". The guest's integer conversions
pass that to the title, while guest_atoi, guest_wide_conversion and
guest_math expect errno unchanged, as glibc leaves it. So atoi("")
returned 0 with errno 22 on macOS, and all three tests failed there.

A ParseInteger helper in SonyCrt.hpp calls the host's conversion and,
on macOS, restores the caller's errno when nothing was converted and
the base is valid. An overflow still sets ERANGE, and an invalid base
still sets EINVAL. strtol, strtoul, strtoll, strtoull, atoi, atol,
atoll, _Stoull and the wcsto* integer conversions in Strings.cpp use
it. On other hosts the helper calls the conversion unchanged.
2026-10-19 12:20:32 +02:00
fogydes 155e415b85 feat(libSceContentExport): export missing firmware content export interfaces 2026-10-19 15:48:14 +05:30
hypermistandClaude Opus 5.5 2c1f9672a3 feat(libc): implement the remaining C11 Annex K bounds-checking functions
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 23:18:09 +13:00
Adrià c74aeb2f4c Merge pull request #6757 from LeandroLP23/ci/conventions-debt-entry-length
feat(tools): warn when a pull request adds a technical debt entry over 1000 characters
2026-10-19 12:17:54 +02:00
al3w0f205 05bdd6aeb0 feat(libSceHmd2): export missing firmware functions from database 2026-10-19 12:16:20 +02:00
ionut27001 15c6c9ff15 test(agc): check that kept table records free their textures and that a kept table whose textures died is written again 2026-10-19 13:16:02 +03:00
akkadbakkad89 26177b41e3 feat(prx): declare exports for seven more confirmed system libraries 2026-10-19 10:11:10 +00:00
Adrià b7a75819f3 Merge pull request #6720 from AdvaitPalve11/feat-netctl-info-codes
feat(netctl): implement remaining info codes in sceNetCtlGetInfo
2026-10-19 12:10:02 +02:00
Adrià fb106a7e9a Merge pull request #6724 from Ondra97/codex/fix-savedata-mount-identity
fix(savedata): prevent duplicate mounts of one backing directory
2026-10-19 12:09:57 +02:00
Adrià 8e3d8b9bd8 Merge pull request #6723 from Tripchipp/fix/debt-file-unlinked-entries
fix(tools): keep debt entries without a core link in the index
2026-10-19 12:09:51 +02:00