Commit Graph
6138 Commits
Author SHA1 Message Date
Achraf ReyaniandClaude Opus 5.5 e7311656c9 feat(libc): implement __isinf
Export the double version next to __isnan and __isfinite, returning
1 for either infinity like __isinff.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-11 03:25:21 +09:00
MarcZX100 b0690903bb fix(libc): match FreeBSD rename errors on Windows 2026-10-10 18:25:17 +00:00
Achraf ReyaniandClaude Opus 5.5 0272f99ad3 feat(libkernel): implement siglongjmp
PokeMMO Prospero (PPSA98001) stops at siglongjmp (pebqbE5ws8s) from
libkernel. The title links its own FreeBSD sigsetjmp, so siglongjmp
follows FreeBSD's amd64 __siglongjmp and its sigjmp_buf layout: when the
save-mask flag at offset 88 is set it restores the mask saved at 72
through _sigprocmask, then reloads rbx, rsp, rbp, r12-r15 and the x87
control word and returns to the saved address with val, or 1 for 0.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-11 03:25:07 +09:00
MarcZX100 c96100aff1 fix(libc): map directory symlink loop errors
(cherry picked from commit d5e348c7b6)
2026-10-10 18:24:36 +00:00
Dean df6b831400 Merge pull request #2831 from SleglJan/feat/libscenet-show-netstat
feat(libSceNet): declare sceNetShowNetstat
2026-10-11 07:23:26 +13:00
Dean 77641e25e0 Merge pull request #2812 from MarcZX100/codex/agc-pipeline-cache-vertex-limit-2804
fix(agc): size pipeline cache fixture to device limits
2026-10-11 07:23:15 +13:00
Joey Fisher f01f95d1f9 fix(agc): report a refused queue worker priority as a driver failure and reject unknown APS5_THREAD_PRIORITY values 2026-10-10 12:23:12 -06:00
AlexandClaude Opus 5.5 c3b8aa3264 fix(shader): flush f16 min3/max3/med3 denormal inputs
The ternary forms share minMaxF16 with v_min_f16 and v_max_f16 and follow
the same rule on gfx1036: a subnormal half input becomes a signed zero when
bit 0 of the f16 denormal field is clear, at IEEE=0 and IEEE=1.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-10 14:21:31 -04:00
Dean 9c5d67fbe2 Merge pull request #2478 from itsbo5/feat/libkernel-dup
feat(libkernel): implement dup and dup2
2026-10-11 07:19:54 +13:00
Dean 2ece83f4dc Merge pull request #2129 from sktharunbalaji13-cmd/contrib/scekernel-fdatasync
feat(libkernel): implement sceKernelFdatasync
2026-10-11 07:19:45 +13:00
Dean cf5d9bc1b5 Merge pull request #1772 from LuisBiceps/feat/libc-ifaddrs
feat(libc): implement getifaddrs and freeifaddrs
2026-10-11 07:19:36 +13:00
JAB-devandClaude Opus 5.5 5abc86f3d5 fix(agc): look up cached draws at the fixed pixel push slot
With graphics pipeline libraries a draw places the pixel shader's push
constants at the fixed fragment slot (Graphics::StagePushOffset) and the
draw cache records that offset, but lookupDraw still expected the stacked
offset after the vertex shader's push bytes. Every pixel stage then missed
as a layout mismatch, so no cached draw or draw recipe was reused and each
draw was captured and materialized again.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 20:17:46 +02:00
Dean 9f87be5cc0 Merge pull request #2872 from CouchRiv/feat-libscecdlgg2p-dialog-close
feat(libs): provide the exports PPSA01285 imports that no library has
2026-10-11 07:16:15 +13:00
Dean bb29b62250 Merge pull request #2843 from MathiasDevelopes/feat/libsceajm-decode-split-resample-ex
feat(libSceAjm): implement sceAjmBatchJobDecodeSplit and sceAjmBatchJobSetResampleParametersEx
2026-10-11 07:16:06 +13:00
Dean 86d6cb5d8b Merge pull request #2834 from MathiasDevelopes/fix/libkernel-stat-unconvertible-path
fix(libkernel): return ENOENT from sceKernelStat for unconvertible paths
2026-10-11 07:15:57 +13:00
Achraf ReyaniandClaude Opus 5.5 f45d8933f2 fix(libkernel): unlink read-only files on Windows
FreeBSD's unlink ignores the file's own permission bits, so it succeeds
on a file the guest made read-only with chmod(0400). On Windows the guest
chmod sets the read-only attribute and _wunlink then failed with EACCES,
which sceKernelUnlink and unlink reported. When the path is a regular file
without write permission, make it writable before the single _wunlink and
restore the read-only attribute if the unlink fails, as remove() does
since #2342.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-11 03:15:42 +09:00
jweidenh 5fcac960e8 fix(tools): honor dependency declarations without a colon 2026-10-10 14:13:04 -04:00
Dean bf6e25a1dd Merge pull request #2830 from SleglJan/feat/libscessl-ca-list
feat(libSceSsl): implement sceSslGetCaList, sceSslFreeCaList and sceSslUnloadCert
2026-10-11 07:12:36 +13:00
ps54all 08728f95b9 feat(libkernel): implement pthread_mutexattr_setprioceiling and getprioceiling
The mutex attribute now keeps its protocol and priority ceiling the way
FreeBSD's libthr does: the ceiling can be set and read only under
PTHREAD_PRIO_PROTECT (EINVAL otherwise), and setting a protocol resets it
to the highest SCHED_RR priority. Mutexes still do not apply priority
protection; that is listed as a silent stub.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
(cherry picked from commit d10c024f8f)
2026-10-10 18:12:31 +00:00
Dean ec6383f9ab Merge pull request #2824 from MarcZX100/codex/signal-sema-zero-count-2748
fix(libkernel): accept zero-count semaphore signals
2026-10-11 07:12:27 +13:00
Dean 077075d6c7 Merge pull request #2821 from MarcZX100/fix/relinker-windows-tls-reads-2761
fix(relinker): patch TLS reads after zero alignment padding
2026-10-11 07:12:19 +13:00
Chad 9cf85e94cb fix(recompiler): accept SDWA byte sources on v_cvt_f16_u16 and v_cvt_f16_i16
PPSA28416 stopped at v_cvt_f16_u16_sdwa dst_sel:WORD_0 dst_unused:UNUSED_PRESERVE src0_sel:BYTE_3. The integer source extraction already implements byte selects with src0_sext.
2026-10-10 13:11:10 -05:00
ps54allandClaude Opus 5.5 3444ebf5cd fix(libkernel): map non-fixed hints inside a reserved range in place
A map without MAP_FIXED whose hint lies wholly inside a range still
reserved by sceKernelReserveVirtualRange is placed at the hint, as a fixed
map into the reservation would be. Hints outside reservations and ranges
that are partly mapped keep their hint behaviour. The reservation is
checked under the registry mutation, so it cannot be released and its
address reused between the check and the map (MarcZX100, #2687).

Fixes #2687

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01A2cY3SsTYnh4u4ZtEr2Adx
2026-10-11 07:10:29 +13:00
emirplus 6a7cce415a fix(savedata): recover from metadata setup failure 2026-10-10 21:09:00 +03:00
AlxcBTWandClaude Opus 5.5 a1827af12a fix(agc): treat other-shaped views of a depth surface's stencil plane as reused memory
Unity reuses the memory of transient render targets: in FPV Simulator
(PPSA10698) an RGBA8 1920x1080 color texture is sampled at the address
that a D32S8 surface's stencil plane occupied earlier. The lookup found
the stencil plane and threw "sampling the stencil plane ... is not
implemented", which ended the presentation.

9d65003c made depth-plane views in a format that cannot hold the plane
fall through to the ordinary texture path. A stencil-plane view whose
texels are not one byte wide cannot hold the 8-bit stencil plane
either, so it now falls through the same way.

AI-assisted: yes

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 20:03:09 +02:00
XairRrR 1232fd6cdf feat(agc-driver): prepare shader variants registration did not predict
Registration prepares the variants a shader's registered state
predicts; a draw or dispatch whose state needs another one threw
"prepared shader artifact is missing for the requested static ABI".
Titles that link their own libSceAgc build that state themselves and
never call the driver's static ABI resolution, so their draws differ
from the registered prediction. The missing artifact is now prepared at use, logged, and kept
with the snapshot like the deferred and null pixel cases. SourceHandleFor
now checks that the request refers to the registered code, as
InvocationFor already did.

Uncharted: Legacy of Thieves Collection (PPSA05684) still misses on
main 197ffac9 (after the fixed push slots of #2661) for its own pixel
shaders: "prepared shader artifact is missing for the requested static
ABI: address=85899411712 stage=5 wave=64 pushOffset=128
pushCapacity=128".
2026-10-10 19:59:24 +02:00
XairRrR e1dbb8fa17 fix(agc-driver): list both stages' interfaces when graphics interfaces disagree 2026-10-10 19:59:15 +02:00
XairRrR 4adca33251 fix(recompiler): describe the descriptor and modes when no runtime image mode matches 2026-10-10 19:59:15 +02:00
XairRrR 252955a185 fix(agc-driver): name the view and owner bounds when a guest buffer view exceeds its GPU owner 2026-10-10 19:59:15 +02:00
XairRrR c7cd20e82f feat(libSceVoice): track the port mute flag
sceVoiceSetMuteFlag was NotImplemented with an unknown signature and
sceVoiceGetMuteFlag was not exported. Signatures follow shadPS4's
voice.h: a port id and a bool, and for sceVoiceGetMuteFlag a port id
and a bool pointer. The flag is stored per port like the volume; an
unknown port throws and a null output pointer is an invalid argument.

Uncharted: Legacy of Thieves Collection (PPSA05684) imports
sceVoiceGetMuteFlag (Pc4z1QjForU), so on main it stops at startup with
"undefined symbol: Pc4z1QjForU".
2026-10-10 19:59:15 +02:00
XairRrR 048c9ff013 feat(agc-driver): render to COLOR_8_8 targets with SWAP_ALT
CB_COLOR_INFO COMP_SWAP 1 (SWAP_ALT) on a two-channel format stores the
x and w exports in its two channels (Mesa si_translate_colorswap,
"X__Y"). COLOR_8_8 UNORM and SNORM targets with it bind as R8G8 with
export mapping 0xec; blending into them still throws, since Vulkan
would apply alpha factors to the wrong channel.

Uncharted: Legacy of Thieves Collection (PPSA05684) stopped in its
first level with "unsupported color format 3 number type 0 component
swap 1".
2026-10-10 19:59:14 +02:00
XairRrR 70fe108712 fix(recompiler): fold extracts into a vector shuffle only between vectors
The specialization pass turned OpCompositeConstruct of extracts from one
composite into OpVectorShuffle without checking the types. When the
source is a struct (the {uint, uint} pairs of extended multiplies and
phis of them), the result is invalid SPIR-V ("The type of Vector 1 must
be a vector type"), which the NVIDIA driver (615.71.09) crashes on in
vkCreateGraphicsPipelines instead of rejecting. The fold now requires
both the source and the result to be vector types; a test builds the
struct and vector cases by hand.

Uncharted: Legacy of Thieves Collection (PPSA05684) crashed in the
driver's SPIR-V compiler right after loading its first level.
2026-10-10 19:59:14 +02:00
Yassine 9fc0af0b10 fix(avplayer): do not let auto start restart playback the title started
sceAvPlayerAddSource queues an auto start for a player created with auto
start or without an event callback. When the title enabled its streams
and called sceAvPlayerStart before the controller thread ran it, the auto
start called Start again on the playing player, which stopped it, released
every video buffer, including the frame the title held, and started the
film over. guest_avplayer occasionally caught this as "video frame is not
a texture allocation"; right after the test's own start, 8 texture
buffers were released in 15 of 15 runs.

The auto start now starts the player only while it is still ready, and
checks that under the player lock together with the start.

TestAutoStartKeepsStartedPlayback starts a callback-less player itself and
checks that no texture buffer is released afterwards and that the frame
it holds stays allocated. It fails on every run without the fix.
2026-10-10 17:56:25 +00:00
LeandroLP23andClaude Opus 5.5 68a1aea611 docs(libkernel): record that environ is not libc's environment
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 19:48:06 +02:00
LeandroLP23andClaude Opus 5.5 df415ff1fd feat(libkernel): implement pthread_sigmask
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 19:45:28 +02:00
Chad a73b4e3f6d feat(audioout): declare sceAudioOut2EnableChat
Imported by party-ps5-shipping.prx bundled with PPSA28416.
2026-10-10 12:43:28 -05:00
Chad beba4ce204 feat(psml): declare scePsmlMfsrCreateContext1300 and scePsmlMfsrGetDispatchMfsrPacket1300
PPSA28416 imports both from libScePsml; the names hash to NIDs kLF7WtQ1-Dg and DDVUyPyYHTA.
2026-10-10 12:42:01 -05:00
ctj01 b7d5f18c41 fix(relinker): drop the input PT_PHDR and PT_INTERP from Linux output
The Linux patcher writes its own PT_PHDR and PT_INTERP but also copied
the input's. glibc takes the load bias from the last PT_PHDR, which was
the input's entry with the pre-relink address, so such an executable
crashed at start. Both copies also took program header slots, so an
input with PT_PHDR and PT_INTERP and no spare slots failed to relink.
2026-10-10 17:33:59 +00:00
MarcZX100 c5ffebe15a fix(relinker): preserve empty Windows arguments 2026-10-10 17:28:07 +00:00
MarcZX100 fe81332b08 test(relinker): cover unicode guest module paths 2026-10-10 17:22:07 +00:00
MarcZX100 8cbebea6b7 fix(relinker): preserve unicode module paths 2026-10-10 17:22:07 +00:00
aplatogg b74774f713 fix(relinker): support non-ASCII input paths on Windows
The MinGW CRT delivers argv to main as ANSI code page bytes, and every narrow string became a filesystem path through the same code page, so a game in a directory with characters outside the code page failed to open (#2692). Read the command line as Unicode (wmain via -municode), keep paths as UTF-8 strings, convert at the filesystem boundaries through Io::NativePath and Io::Utf8Path, and run the --autorun output through CreateProcessW.

(cherry picked from commit 30a5181f8a)
2026-10-10 17:22:07 +00:00
arcwiser e5a81a3ca9 test(videoout): isolate application fixtures
(cherry picked from commit 7e982a521f2ba5fafabcba45c78cb23918fa9007)
2026-10-10 17:10:51 +00:00
AlexandGPT-6.1 Sol 1ab577f817 fix(shader): follow IEEE_MODE in v_div_fmas_f32 NaN selection
v_div_fmas_f32 always quieted source NaNs and let a NaN addend
hide the default NaN from an invalid product. Reuse the existing
bit selection helpers, measured on gfx1036 in four float modes.

Co-Authored-By: GPT-6.1 Sol <[email protected]>
2026-10-10 13:08:02 -04:00
Renan Pires 9a3e55b8e8 feat(libkernel): implement _fstatfs 2026-10-10 13:07:42 -04:00
AlexandGPT-6.1 Sol 2d0cf26804 fix(shader): flush f16 min/max denormal inputs
RDNA2 min/max flush half inputs to signed zero when input
preservation is disabled, while output flushing alone keeps them.
Apply this to the measured binary forms and pin the hardware rows.

Co-Authored-By: GPT-6.1 Sol <[email protected]>
2026-10-10 13:07:31 -04:00
Abdulrahman Elkordy 510787170e fix(agc): link optimized pipelines with the library store's layout
The background link-time-optimized link used the Pipeline's own layout, which ~Pipeline destroys right after marking the slot released, and ClearCachedPipelines destroys the cached pipelines before ClearPipelineLibraries waits for pending links. A link already past the released check then created its pipeline with a destroyed VkPipelineLayout. On Intel's Windows driver (Arrow Lake iGPU, 32.0.101.8991) agc_driver_vertex_fetch, agc_driver_pixel_interlock and agc_driver_mesh faulted inside igc-default64.dll every run, and agc_driver_prepared_exports and agc_driver_pixel_barycentric_emulation intermittently; all passed with APS5_NO_PIPELINE_LTO=1. The library store's layout, made from the same create info and used for the libraries, lives until ClearPipelineLibraries has waited for the pending links.

(cherry picked from commit 758eeb9fb255d88c41945b299dc3ec5ac1578331)
2026-10-10 16:58:17 +00:00
AlexandGPT-6.1-sol 2a675598f2 feat(libSceNpManager): add the missing request timeout export
Validate timeout arguments and track live requests so unknown or deleted
ids return REQUEST_NOT_FOUND. This supplies the remaining absent load
import alongside the dialog Close export; timeouts follow the existing
offline network model and are not stored.

Co-Authored-By: GPT-6.1-sol <[email protected]>
2026-10-10 12:57:01 -04:00
Hannah Lyons 5ac10820ea feat(libScePosixForWebKit): implement arc4random_buf 2026-10-10 12:49:31 -04:00
AlexandGPT-6.1 Sol 18590d1f79 feat(libs): provide the missing G2P dialog Close export
Eager binding fails when a caller imports sceG2PDialogClose.
Add the missing throwing stub alongside the existing G2P exports
and record the assumed Close signature in TechnicalDebt.

Co-Authored-By: GPT-6.1 Sol <[email protected]>
2026-10-10 12:40:57 -04:00