Commit Graph
14017 Commits
Author SHA1 Message Date
ionut27001 e6613cfb8e fix(libkernel): fail _umtx_op operation 1 with EOPNOTSUPP as measured on a PS5
Operation 1 threw as unverified, so a title whose call_once path reaches it
stopped. In a payload process on a PS5 (firmware 12.70) operations 0 and 1
fail with EOPNOTSUPP and leave the word unchanged for every word tried,
as FreeBSD 11's __umtx_op_unimpl does. Answer operation 1 like operation 0.
2026-10-19 13:08:33 +03:00
Delcio d2e467f697 fix(libSceCommonDialog): ALREADY_INITIALIZED is 0x80B80004 2026-10-19 11:06:06 +01:00
Adrià Franch 86bf06c87b fix(libkernel): report the read bit for a replaced guest thread stack too 2026-10-19 12:06:01 +02:00
hugodearaujo 514b6849ec fix(libkernel): report the read bit of every write bit in a mapping's protection
A PS5 (firmware 13.60) reports CPU write 0x2 with CPU read 0x1, 0x80 with 0x40 and 0x200 with 0x100 after a map, sceKernelMprotect, sceKernelMtypeprotect or POSIX mprotect; GPU write 0x20 keeps GPU read 0x10 clear. sceKernelVirtualQuery and sceKernelQueryMemoryProtection now report the protection that way.
2026-10-19 12:05:39 +02:00
Nithishvelan M de1d73c50d feat(libSceSysmodule): implement sceSysmoduleIsLoadedInternal 2026-10-19 12:05:34 +02:00
Yossi Yadgar 43b5f33f80 test(libSceVideodec2): decode an AVCC access unit whose length prefix is a start code 2026-10-19 13:01:57 +03:00
Yossi Yadgar eb4d64a3b0 fix(libSceVideodec2): frame an access unit whose length prefix looks like a start code 2026-10-19 13:01:57 +03:00
akkadbakkad89 1dc1301707 feat(prx): declare exports for six confirmed system libraries 2026-10-19 09:48:52 +00:00
Adrià Franch 6df86af0ff docs(env): add rows for the draw-input in-place switches 2026-10-19 11:48:36 +02:00
SP4C3B4R-8andClaude Opus 5.5 4a6069481f perf(agc): copy draw inputs on NVIDIA's Windows driver instead of binding host imports in place
NVIDIA's Windows driver reads a host import of guest memory far slower than a buffer it allocated.
Since draw vertex and index ranges are bound in place from host imports (#2253, measured on Linux), Astro
Bot's Crash Site on Windows 11 with an RTX 5070 Ti spends 164 ms of every frame in draws on the GPU, and
45 ms with the ranges copied as before; with the same build, 4.71 fps in place against 7.52 copied. An
RTX 3060 shows the same (draws 32.3 against 24.3 ms per frame), while AMD's Windows driver reads them in
place about as fast as a copy (RX 9070 XT: 69.8 against 73.1 ms), so copying there only costs CPU.

The device decides once (DrawInputsInPlaceUsable, Context::drawInputsInPlace): ranges are copied with
VK_DRIVER_ID_NVIDIA_PROPRIETARY on Windows and bound in place everywhere else. APS5_DRAW_INPUTS_IN_PLACE=1
binds them in place and APS5_NO_DRAW_INPUTS_IN_PLACE=1 copies them on any device, the second winning.
agc_draw_inputs_in_place_driver checks the decision per driver and host; agc_draw_inputs_copied checks
that an aligned imported range is copied and its read not noted when the context copies, whatever the
inherited environment.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01GN8FJFTedayRXLHythXkZ4
2026-10-19 11:48:36 +02:00
Adrià 36f60df9ed Merge pull request #6719 from fogydes/feat/agc-driver-set-flip-packet-size
feat(libSceAgcDriver): implement driver flip packet size accessor and export interface
2026-10-19 11:47:18 +02:00
Adrià 439aee20e1 Merge pull request #6709 from johnmaia/feat/videodec2-10bit
feat(libSceVideodec2): output 10-bit pictures as low-bit 16-bit words
2026-10-19 11:47:14 +02:00
Adrià afeaffa6c1 Merge pull request #6717 from simonbronk/codex/strict-empty-arrays
fix(relinker): accept omitted empty array sizes in strict filtering
2026-10-19 11:47:09 +02:00
Adrià 3050105f24 Merge pull request #6707 from karimibrahim07/feat/libc-qsort-s
feat(libc): implement qsort_s
2026-10-19 11:47:03 +02:00
Adrià d65a58e63f Merge pull request #6706 from milescoviello/perf/runtime-bda-byte-writes
perf(shader): emit runtime V# byte writes through the looping helper
2026-10-19 11:46:58 +02:00
Alexandre Sanchez 56d183dc94 test(agc): accept compared imports in the MSAA guard fixture
Require the fast image proof only for write-watched image memory while retaining every guard check for compared imports.
2026-10-19 11:41:30 +02:00
Alexandre Sanchez 67c7190223 fix(agc): preserve image table semantics in cached MSAA guards
Mark described image-table ranges explicitly and apply the eager color-target guard only to ordinary image bindings. Cover native multisample table validation and record the separate table registration gap.
2026-10-19 11:41:30 +02:00
Alexandre Sanchez 603e20bc11 fix(agc): guard fast sampled image lookups against MSAA targets
Apply the color-target guard before the precollected texture shortcut can reuse an ordinary sampled image. Distinguish cached and fresh access failures in the regression and unregister tracked memory before unmapping it.
2026-10-19 11:41:05 +02:00
Alexandre Sanchez 67575aae81 fix(agc): guard cached images against multisample color targets
Check described image ranges before either resource reuse proof, preserving the combined color and resident-depth guard for existing callers. Add standalone draw and compute regressions for sampled and storage images, disjoint targets, guarded fresh builds, and target retirement.
2026-10-19 11:41:05 +02:00
Josip Parlov 9dd208fb9a fix(tools): strip the NID disambiguation suffix from declared names
The NID patcher and check_conventions resolve
fstat_nid_disambig1_nid_postfix to fstat. import_audit hashed it as
fstat_nid_disambig1, so a throwing stub with the suffix was keyed under
the wrong NID, and nid_names reported fstat and pwrite as rename-ready
instead of already-implemented.
2026-10-19 11:37:06 +02:00
Dean Galvin d1c9bfd676 test(agc): skip the small-copy-sync test where no Vulkan device opens
--small-copy-sync returns VulkanTestSkipped (77) when OpenVulkanTestDevice
fails, but its add_test had no SKIP_RETURN_CODE, so a runner without a
device counted it as a failure; the other device tests already set 77.
2026-10-19 22:26:12 +13:00
Dean 64e2a810a9 Merge pull request #7571 from milescoviello/fix/bda-lookup-single-exit
fix(shader): leave the BDA lookup functions through one return
2026-10-19 22:26:10 +13:00
Dean Galvin dc35c048d1 Merge main into pr-5480
# Conflicts:
#	core/libs/prx/libSceAgcDriver/Execution/include/VulkanDevice.hpp
2026-10-19 22:25:30 +13:00
Dean Galvin 8a77927841 Merge main into pr-7340
# Conflicts:
#	core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
#	core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
2026-10-19 22:23:55 +13:00
Adrià Franch d0bf34392c test(libSceAgcDriver): poll the draw pipeline to idle after both wait drains 2026-10-19 11:22:48 +02:00
Adrià Franch 1fcdf6b5d1 test(libSceAgcDriver): poll the draw pipeline to idle after a wait that elided the drain 2026-10-19 11:22:48 +02:00
al3w0f205 d59934a67c fix(libSceAgcDriver): mask WAIT_REG_MEM addresses and elide non-overlapping pipeline drains 2026-10-19 11:22:48 +02:00
JJenkx a20968ee25 fix(shader): retain adjacent anchor byte loads on RADV 2026-10-19 05:22:39 -04:00
Dean 83bf557dcf Merge pull request #7461 from parl0v/perf/dcc-shadow-key-sync
perf(agc): wait only for the key bytes' writers when reading DCC keys under a unit shadow
2026-10-19 22:22:12 +13:00
Dean 7f37d45ed3 Merge pull request #6451 from EagleBearerYS/fix/agc-sample-location-grid-fallback
fix(agc): fall back to pixel (0,0)'s sample locations where the device has no 2x2 grid
2026-10-19 22:22:04 +13:00
Dean Galvin 3b68e8c19e Merge main into pr-6730
# Conflicts:
#	docs/dev/debt/libSceAgcDriver.md
2026-10-19 22:12:19 +13:00
Dean Galvin f879cd713c Merge main into pr-6479
# Conflicts:
#	core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
#	docs/dev/debt/libSceAgcDriver.md
2026-10-19 22:12:19 +13:00
Dean Galvin a48e28a632 Merge main into pr-6457
# Conflicts:
#	docs/dev/debt/libSceAgcDriver.md
2026-10-19 22:12:18 +13:00
Adrià 8816fd7720 Merge pull request #6715 from simonbronk/codex/windows-unicode-output-collisions
fix(relinker): reject Unicode output aliases on Windows
2026-10-19 11:06:08 +02:00
Adrià c078ccc2a0 Merge pull request #6705 from xXPBSXx/test/system-service-defaults
test(libSceSystemService): cover status, safe area, notice screen and event defaults
2026-10-19 11:06:02 +02:00
Adrià 13cf6954a3 Merge pull request #6674 from veosett/codex/fmask-image-reads
fix(agc): read uncompressed FMASK images from guest memory
2026-10-19 11:05:57 +02:00
Adrià 5d39500818 Merge pull request #6704 from xXPBSXx/test/credentials-getgid-issetugid
test(libkernel): cover getgid and issetugid
2026-10-19 11:04:54 +02:00
Rajkamalcode 2224903528 test(libkernel_sys): remove links and the fixture without std::filesystem on Windows
The MinGW libstdc++ reports a dangling symbolic link as missing and clears
the error, so std::filesystem::remove neither deletes it nor fails, and
remove_all loops forever over a tree that contains one. Remove reparse
points with DeleteFileW and RemoveDirectoryW and the fixture through the
shell; record the gap in the libs technical debt.
2026-10-19 14:34:35 +05:30
Adrià 2eb4de8e13 Merge pull request #6711 from Ondra97/codex/fix-rwlock-unlock-lifetime
fix(libkernel): notify rwlock waiters before unlocking state
2026-10-19 11:03:06 +02:00
fogydes ee7280c873 fix(libkernel): prevent use-after-free on event flag deletion and multi-waiter race 2026-10-19 14:32:12 +05:30
Chikimaro a84a2b1240 feat(libSceNet): implement sceNetUsleep and sceNetInetPtonEx
sceNetUsleep fails with EINVAL for a negative count and otherwise sleeps
through libkernel's sceKernelUsleep, a cancellation point. sceNetInetPtonEx
converts as sceNetInetPton does when its flags are 0 and throws for any
other flags, whose meaning is unknown. The signatures follow shadPS4 and
are recorded as unverified in the libSceNet technical debt.
2026-10-19 09:01:14 +00:00
Savvanis SpyrosandClaude Opus 5.5 cda8e66ccd fix(agc): keep the pipeline library extensions enabled under APS5_NO_GPL
APS5_NO_GPL opened a device without VK_EXT_graphics_pipeline_library and
the five extensions that go with it. The AMD Windows driver shares its
on-disk pipeline cache between devices with and without those extensions,
so a compute pipeline compiled on one kind of device and loaded on the
other ran with the wrong descriptor layout. The startup f32 flush probe
(#6503) runs the same compute pipelines on every device. In a parallel
test run, every APS5_NO_GPL test therefore page-faulted at 0xbeefdeadbeef,
an address read from the probe's own 0xdeadbeef fill. Each fault reset the
GPU, and twice the reset hung the machine.

The device now enables the extensions and their features whenever the
GPU supports them. APS5_NO_GPL only turns off their use, so every device
on a GPU builds the same pipelines.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 12:00:26 +03:00
Adrià 959cfdd1c5 Merge pull request #6686 from DavidSamir/fix/libc-mktime-before-1900-macos
fix(libc): convert mktime before 1900 from the zone's own offsets on macOS
2026-10-19 10:59:57 +02:00
xdCloudy 86083c6267 feat(libs): declare PS5 system service firmware exports 2026-10-19 09:56:57 +01:00
Dean f78675ae4d Merge pull request #7752 from xdCloudy/feat/ps5-notification-exports
feat(libSceNotification): declare PS5 notification exports
2026-10-19 21:53:02 +13:00
Dean 1ee7891d0f Merge pull request #7749 from xdCloudy/feat/ps5-verified-exports
feat(prx): declare evidenced PS5 pending exports
2026-10-19 21:52:58 +13:00
Dean e33099fecf Merge pull request #7748 from xdCloudy/feat/ps5-library-catalog
feat(libs): inventory confirmed PS5 system libraries
2026-10-19 21:52:55 +13:00
Dean 2f091d6652 Merge pull request #7367 from hamb3r/docs/vulkan-validation-rules
docs: require Vulkan validation layer for AGC, shader and VideoOut tests
2026-10-19 21:52:51 +13:00
Josip Parlov 1e1ce29909 fix(tools): keep p_align for segments unwrap_self copies outside load segments
unwrap_self copied every segment that does not sit inside a PT_LOAD with
alignment 1. On real dumps that puts the comment and version segments
(p_align 0x10) right after the last load segment, at offsets that break
p_offset % p_align == p_vaddr % p_align. Those regions now use the
segment's own p_vaddr and p_align, the same as the load segments, which
is what the module docstring already promises. Load segment placement
and bytes do not change.
2026-10-19 10:52:04 +02:00
Adrià bcdc5f6b3e Merge pull request #6702 from karimibrahim07/fix/relinker-weak-guest-imports
fix(relinker): leave weak imports of bundled modules unbound on Windows
2026-10-19 10:49:10 +02:00