Commit Graph
14017 Commits
Author SHA1 Message Date
babyhuey 0daf1d5ba3 fix(libSceNet): report SO_ERROR from sceNetGetsockopt 2026-10-13 03:15:45 -04:00
Ondra97 6706e44d95 fix(conventions): ignore C++ raw literal contents 2026-10-13 09:15:31 +02:00
Doston Abdullayev 9cdcd58171 fix(libkernel): use precise waits for empty poll sets
Carry the poll-only portion of Doston Abdullayev’s public #1471 fix, preserving its original authorship. The select timeout change is already covered separately by #4754.
2026-10-13 07:11:08 +00:00
RickandClaude Opus 5.5 f4be0362c8 fix(libc): call __dynamic_cast and __cxa_init_primary_exception with the guest ABI
Every other export of the C++ runtime is declared APS5_VABI, but these two
were not. On Windows a title calls them with the System V convention while
they read the Microsoft one, so __dynamic_cast took its fourth argument, the
src2dst hint, as the source pointer: an ordinary downcast (hint 0) returned
null, and the negative hints made it read through an invalid pointer.

guest_dynamic_cast calls both through APS5_VABI declarations, as a title
does, and checks a single-inheritance downcast, a failed cross cast, a cast
of a base object and the header __cxa_init_primary_exception fills in.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-13 09:10:08 +02:00
Alex ColliniandClaude Opus 5.5 a141b8eb67 fix(agc): drop the comment in SrgbTwinFormat
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-13 09:09:33 +02:00
TideOPL 007721d43e perf(shader): index specialization tables by SPIR-V id
SpecializeSpirv kept its per-id data (folded values, result types, scalar
types, removed ids, blocks, edges, copies, definitions and the live sets) in
std::map and std::set, and repeats fold, prune and copy propagation over the
whole module until nothing changes. Ids are dense below the header's bound,
so the tables become vectors indexed by id. Lookups of operands that are
literals rather than ids stay bounds-checked, iteration keeps ascending id
order, and an id at or beyond the bound now throws.
2026-10-13 07:59:08 +01:00
Alex ColliniandClaude Opus 5.5 12d07b8edd fix(agc): give R8 and R8G8 no sRGB twin where the device decodes them in the shader
SrgbTwinFormat mapped R8_UNORM and R8G8_UNORM to R8_SRGB and R8G8_SRGB
without asking the device. Where 8_SRGB or 8_8_SRGB is decoded in the
shader (context.srgbDecodeFormats: the device cannot sample the sRGB
format, or APS5_SRGB_SHADER_DECODE=1), the forced view would have been
created with a format the device cannot sample. Those two formats now
get no twin there, so a FORCE_DEGAMMA sampler on them keeps the refusal.
The image is no longer created MUTABLE_FORMAT either.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-13 08:58:19 +02:00
Dean c2565f0149 Merge pull request #4391 from MarcZX100/codex/socket-descriptors-4366
fix(libkernel): give guest sockets ordinary descriptor numbers below FD_SETSIZE
2026-10-13 19:52:08 +13:00
Dean d71423a575 Merge pull request #4911 from oneandonlydean/up4/atomic-buffer-fault-only
perf(shader): record a specialized buffer atomic's fault without the address tables
2026-10-13 19:52:01 +13:00
Zurisen 7822535b49 fix(progress): extract history archives on Python without tarfile filters
progress_history passed filter="data" to TarFile.extractall, which only
exists from Python 3.12 and the 3.11.4/3.10.12 security releases. On
Python 3.10.11 every measured commit raised TypeError, so
progress_history failed. Pass the filter when tarfile has data_filter
and extract without it otherwise; the archive is git archive output of
the repository's own commits.
2026-10-13 08:50:40 +02:00
JJenkx c465e00150 fix(tools): preserve controller command access 2026-10-13 02:44:47 -04:00
JAB-devandClaude Sonnet 5.5 5339c084e8 perf(libkernel): cache the unwind tables and image name per module on Windows
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-13 08:14:53 +02:00
fdfawef324andClaude Opus 5.5 0f77f3e07f feat(libSceDbgThreadSanitizer): declare the TSan annotation calls and report the sanitizer disabled
Black Myth: Wukong (PPSA23226) exits at start-up with
STATUS_DLL_NOT_FOUND after "Failed to load module:
libs\libSceDbgThreadSanitizer.prx". The executable does not need the
library: its bundled sce_module/libSceJobManager_nosubmission.prx lists
it in DT_NEEDED and imports __tsan_acquire and __tsan_release from it,
plus sceKernelIsThreadSanitizerEnabled from libkernel. The relinker
converts every module in sce_module and loads it at start-up (only
--module-dir directories are deferred), and GuestModuleBuilder adds each
module's host dependencies to the executable's DT_NEEDED, which the
Windows start-up stub loads.

libSceDbgThreadSanitizer now exports __tsan_acquire and __tsan_release
with the void(void* addr) signatures of LLVM compiler-rt's
tsan_interface.h (llvm-project 87f0227cb601, LLVM 20.1.8). Both throw:
AnyPS5 runs no race detector, and the module calls them only after
sceKernelIsThreadSanitizerEnabled reports the sanitizer enabled.
libkernel's sceKernelIsThreadSanitizerEnabled returns 0, as
sceKernelIsAddressSanitizerEnabled does; its int(void) signature is
assumed and recorded in the libkernel debt file.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-13 02:12:05 -04:00
hypermistandClaude Opus 5.5 6bf9ab86ff perf(agc): keep adjacent ranges one import serves as one region of the cached address space
A V# spanning two registered ranges dissolved the shared space into the
build's own regions (about 10k regions copied, sorted and looked up per
build in Killing Floor 3), although the import covering the run binds it
in place.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Uzy15wqYTt6iWyxYXEzUWo
2026-10-13 19:03:20 +13:00
MarcZX100 c7aca86c61 fix(tools): use the shared merge base for overlap checks 2026-10-13 06:01:10 +00:00
Ondra97 66edc7463f fix(tools): audit stubs from shared library sources 2026-10-13 07:59:10 +02:00
Nicolas FalesyandClaude Opus 5.5 db3ec02c54 fix(libc): let a title's own libunwind read _Unwind_Backtrace frames
Homebrew built with the ps5-payload-dev SDK links LLVM libunwind
statically but imports _Unwind_Backtrace from libSceLibcInternal. Its
trace callback then reads each frame with its own _Unwind_GetIP, which
treats the context as a libunwind cursor and calls through the virtual
table in its first word. AnyPS5's context started with the saved RAX, so
the call jumped to a register value and the title crashed on its error
path (vkQuake, PPSA99010, without its game data). The context now starts
with a table in AbstractUnwindCursor's slot order that answers register
reads and writes, validFloatReg and isSignalFrame; other slots throw.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01EvDbpwUPTa78oCAJqe7m9K
2026-10-13 01:55:14 -04:00
MarcZX100 2a91815210 fix(tools): parse paginated overlap API responses 2026-10-13 05:52:46 +00:00
Dean ea2bbefb2b Merge pull request #4402 from jakezwang/fix/spirv-redundancy-memory
fix(shader): release bundled optimizer traversal maps
2026-10-13 18:49:45 +13:00
Dean ebf417a51c Merge pull request #4340 from ArjenS-LA/fix/guest-gnu-hash
fix(relinker): convert guest modules with GNU hash tables
2026-10-13 18:49:38 +13:00
QRMOE 2c23ced70e test(libc): cover llroundl boundaries in every rounding mode 2026-10-13 07:47:45 +02:00
QRMOE f745a00a5d fix(libc): accept the full llroundl integer range 2026-10-13 07:46:49 +02:00
LeandroLP23andClaude Opus 5.5 fa889c063b docs(contributing): ask GPU changes to name the GPUs their tests ran on
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-13 07:45:50 +02:00
MarcZX100 abc997b0da fix(agc): release cached address space on device teardown 2026-10-13 05:35:37 +00:00
Dean 88107b7de6 Merge pull request #4535 from moong15/codex/windows-deferred-write-watch
fix(agc): defer write tracking for fresh Windows shared imports
2026-10-13 18:33:39 +13:00
Dean Galvin dbe16fb28c perf(shader): record a specialized buffer atomic's fault without the address tables
A program with an atomic on a V# it specializes was compiled as
address-based (usesDma) so that the atomic's unaligned-address check could
call the fault function. The atomic itself goes through the element's
storage buffer and nothing in such a program reads the address tables. In
the driver an address-based build leases all registered guest memory and
binds every V# of the program in place inside a host import, so none of
its elements is staged in device memory, the atomic one included.

The atomic now asks for the fault buffer alone (usesFaultBuffer) and
records the fault through RecordBdaFaultWords, which has both forms. The
fault record, the stop of the invocation and the atomic are unchanged. The
64-bit fault address needs shaderInt64, as the scalar buffer load does. A
tessellation-control program with such an atomic is refused as before.

Test: agc_shader_memory compiles a buffer_atomic_inc on a specialized V#
and requires no address table binding, one fault buffer, one call of the
fault function, logical addressing and the atomic element flag; without
shaderInt64 the program is refused.
2026-10-13 18:29:59 +13:00
Dean 2cc97e1057 Merge pull request #4197 from MarcZX100/codex/audit-coredump-userdata
feat(libkernel): implement coredump user data calls
2026-10-13 18:24:28 +13:00
babyhuey d39cb2c62f feat(libkernel): report machdep.tsc_freq from sysctlbyname 2026-10-13 01:18:43 -04:00
umangandClaude Opus 5.5 b24e1cc46f perf(agc): return from fresh Windows collection when nothing is fresh
MarkWritten collects the fresh portions of the written blocks before
each GPU stamp. On Windows that walked every shared view of those
blocks twice under the mappings mutex even when all of them had been
collected before. Keep the never-collected portions as address ranges,
as the Linux tracker keeps _fresh, and return after one lookup when
none overlaps the request.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-13 10:37:27 +05:30
umang b14d087cd4 fix(agc): defer write tracking for fresh Windows shared imports 2026-10-13 10:37:27 +05:30
MarcZX100 c1bcd0b697 fix(videoout): dump linear display buffers 2026-10-13 05:05:31 +00:00
Dean 7e181fcc38 Merge pull request #3874 from oneandonlydean/up4/import-window-compare
perf(agc): compare an import window's pages when the window closes
2026-10-13 17:55:13 +13:00
Dean 597f976872 Merge pull request #3947 from MarcZX100/codex/carry-getsockname-unbound
fix(libkernel): return the zero address for unbound getsockname on Windows
2026-10-13 17:54:53 +13:00
Dean 3cfb915cf0 Merge pull request #4187 from Scramblrrrr/codex/cpu-copy-profile-spans
fix(agc): profile completed CPU copies with their actual spans
2026-10-13 17:54:30 +13:00
Dean e268844924 Merge pull request #4700 from Nesyth/fix/agc-comp-to-single-dcc-reads
fix(agc): read comp-to-single DCC keys of sampled textures and storage images
2026-10-13 17:54:09 +13:00
Dean 52edeeda5d Merge pull request #4698 from Nesyth/perf/libc-shared-lease-snapshot
perf(libc): share one snapshot of the registered guest ranges between leases until the registry changes
2026-10-13 17:53:47 +13:00
Dean fa39549b50 Merge pull request #4654 from GustavoGamarra95/fix/agc-store-pending-under-written-buffers
fix(agc): store pending storage results before a use writes the same memory as a buffer
2026-10-13 17:53:26 +13:00
Dean 7e2a2ae5f9 Merge pull request #4363 from johnmaia/fix/gpl-shader-rendering
fix(agc): build pipeline library shader parts for the draw's depth format
2026-10-13 17:53:05 +13:00
Dean f9821b76ed Merge pull request #4097 from kr4y4/fix/shader-f16-ternary-output-modifier
fix(shader): keep the output modifier of the f16 min3, max3, med3 and div_fixup ops
2026-10-13 17:52:50 +13:00
Dean 547807422c Merge pull request #3471 from Kikoarl/perf/agc-copied-writes-overlap
perf(agc): disambiguate direct GPU writes from copied write-backs in indirect draws
2026-10-13 17:52:29 +13:00
Dean fe8d3eba0e Merge pull request #3633 from tv7/fix/color-view-array-slice-range
fix(agc): render a color view of several array slices into its first slice
2026-10-13 17:51:58 +13:00
Dean 46e7cd3e83 Merge pull request #4838 from milescoviello/carry/seek-pipe-stream-windows-4837
fix(libc): fail fseek and ftell on a pipe with ESPIPE on Windows
2026-10-13 17:51:37 +13:00
Dean 9b7c8ea965 Merge pull request #4811 from milescoviello/carry/localtime-range-windows-4807
fix(libc): convert local times before 1970 and after 3000 on Windows
2026-10-13 17:51:16 +13:00
Dean e15c316ead Merge pull request #4733 from fdfawef324/fix/libc-collate-char-capacity
fix(libc): size collate<char>::do_transform strings as the console does
2026-10-13 17:50:55 +13:00
Dean 1268ba8cd4 Merge pull request #4727 from gjonn/feat/hull-dynamic-control-point-index
feat(shader): read hull inputs at a control-point index computed from data
2026-10-13 17:50:35 +13:00
Dean e64bf3c5d0 Merge pull request #4662 from fdfawef324/fix/agc-gpu-map-import-off-guest-stack
fix(agc): import GPU-mapped memory on a host stack
2026-10-13 17:50:12 +13:00
Dean a6ed539e70 Merge pull request #4659 from AaravMehta-07/codex/sce-pthread-sem-overflow
fix(libkernel): guard SCE pthread semaphore count overflow
2026-10-13 17:49:51 +13:00
Dean b7025517e1 Merge pull request #4656 from milescoviello/fix/rwlock-writer-preference
fix(libkernel): hold back new rwlock readers while a writer waits
2026-10-13 17:49:30 +13:00
Dean 4fe3123627 Merge pull request #4640 from MarcZX100/codex/win-host-standard-handles-4631
fix(libc): preserve host standard handles on Windows redirects
2026-10-13 17:49:02 +13:00
Dean 88f48fddef Merge pull request #4688 from eliyarson/fix/kernel-stat-relinked-prx
fix(libkernel): resolve original .prx names to relinked .guest.prx in stat, open and reachability
2026-10-13 17:48:42 +13:00