Commit Graph
14017 Commits
Author SHA1 Message Date
Daniele Giovane c1745992d7 test(recompiler): identify the executed no-carry GPU case 2026-10-16 18:56:16 +02:00
Daniele Giovane 3210b7130a test(recompiler): reject encoded modified offset forms 2026-10-16 18:56:16 +02:00
Daniele Giovane c637048055 fix(recompiler): recognize plain no-carry draw offset adds 2026-10-16 18:56:16 +02:00
Yunus Shaikh d8e7dd8256 fix(agc): keep a data hit's live words with the regions that span them
A dispatch-cache data hit copies the variant's words into a local
liveWords, patches the data words and builds its captured regions as
spans over that buffer.

When the dispatch is resolved ahead (every compute queue by default),
the parked entry copied both captured and liveWords: the copied regions
still pointed into the local buffer, which was freed on return. The
adopting dispatch then built its snapshots from those regions, and an
address-based program compared the freed words in AddSnapshot (an ASan
heap-use-after-free; the plain build reports "guest snapshot differs
from registered memory"). Moving both into the parked entry keeps the
buffer the regions point into.

The pipelined dispatch item had the same shape: its snapshots span the
local liveWords but the closure did not keep it. Capturing it by move
keeps the item self-contained.

DispatchDataHitWords submits an address-based dispatch whose constant
changes every round on a compute queue, so each data hit is resolved
ahead and adopted.
2026-10-16 16:51:22 +00:00
Adrià 66e290f1c0 Merge pull request #6889 from adriadam10/fix/graphics-vertex-bda-static
test(agc): keep the vertex BDA shader code static
2026-10-16 18:33:45 +02:00
Adrià FranchandClaude 11f83f2d47 test(agc): keep the vertex BDA shader code static
Co-Authored-By: Claude <[email protected]>
2026-10-16 18:33:34 +02:00
Adrià 5db65d93a0 Merge pull request #6888 from adriadam10/fix/eligibility-node-timeout
test(ci): give the eligibility gate's node runs 90 s
2026-10-16 18:33:11 +02:00
Adrià FranchandClaude a5a0aa0213 test(ci): give the eligibility gate's node runs 90 s
Co-Authored-By: Claude <[email protected]>
2026-10-16 18:32:52 +02:00
Adrià 143f130553 Merge pull request #6885 from adriadam10/fix/journal-cancel-bound
test(agc): bound the cancelled journal replay from its own start
2026-10-16 18:14:05 +02:00
Adrià FranchandClaude a65d42755b test(agc): bound the cancelled journal replay from its own start
The cancelled replay's bound was taken from the totals before the torn-tail replay, which already
adds one present pipeline; when a worker reached the graphics recipe before the cancel, the test
failed (13 of 600 runs with 24 in parallel).

Co-Authored-By: Claude <[email protected]>
2026-10-16 18:13:46 +02:00
Adrià d006610eeb Merge pull request #6883 from adriadam10/ci/runner-tune
ci(linux): size build and tests to the host, cap cold compiles by memory
2026-10-16 18:04:45 +02:00
Adrià FranchandClaude 88687e19eb ci(linux): size build and tests to the host, cap cold compiles by memory
Co-Authored-By: Claude <[email protected]>
2026-10-16 17:52:29 +02:00
Zinebyte 3a0b032c59 fix(web): recognize AppleDouble ZIP metadata 2026-10-16 11:49:31 -04:00
MarcZX100 1271998d44 test(agc): check native MSAA source after alias attempts 2026-10-16 15:42:42 +00:00
Yunus Shaikh e97c9975bc fix(agc): initialize the async log's condition variables before its worker starts
A condition variable that winpthreads initializes statically is set up on its first wait, under one global spinlock for all such variables. The async log's worker made that first wait itself, right after the driver started it, so a process that exited soon after starting the driver, such as guest_shader_link, could end with ExitProcess killing the worker inside that setup. The spinlock then stayed held, and the next destructor of a never-used condition variable, in ~Driver, spun forever. The log's constructor now waits on each of its condition variables once with no timeout before it starts the worker, so the worker's waits never take that spinlock. A new shutdown test mode exits right after the driver starts.
2026-10-16 08:40:30 -07:00
Ondra97 a4485bd821 fix(agc): release unpublished buffer slabs on allocation failure 2026-10-16 17:40:21 +02:00
Scramblrrrr aa4018fdf2 fix(shader): poison unsupported biased volume table entries 2026-10-16 12:34:47 -03:00
Josip Parlov d67d37bde8 docs(build): describe the [gputime] line and its command classes 2026-10-16 17:32:43 +02:00
fdfawef324andClaude Opus 5.5 b9a3296138 fix(shader): drop rebuilt IR when a prepared artifact serves the reload
Prepared captures pass their source handle to the plan reload. When the handle
matches the request, its artifact serves the draw, so the rebuilt resource
program is not kept even if the push layout differs from the artifact's.
A handle that does not match the source is rejected before the entry changes.
Same change as f1b42dae4 on top of c00b0dfb9.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 15:24:12 +00:00
fdfawef324andClaude Opus 5.5 d8911150d9 test(shader): cover plan reloads behind a relocated push layout
A prepared artifact also serves draws whose push constants start at another
offset. When such a capture reloads a released plan that is missing from the
disk cache, the rebuilt resource program must not stay on the source entry.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 15:24:12 +00:00
MarcZX100 45fcdbaa3c test(agc): isolate native index fixture cases 2026-10-16 15:13:16 +00:00
Josip Parlov 264e026c5d docs(usage): describe the texture cache budgets and APS5_TEXTURE_CACHE_MIB 2026-10-16 17:09:11 +02:00
hugodearaujo 7b55176fa5 fix(libSceAudioOut): report the front left speaker at +30 degrees, as the console does
A PS5 (firmware 13.60) reports the front left speaker of its speaker info at +30 degrees and the front right one at -30, and -360 for the azimuth and elevation of every empty slot, in every HDMI device type and channel setting it offered. sceAudioOut2GetSpeakerInfo reported the front pair the other way round and empty slots as 0, the front centre direction. The type stays 0: the console's type followed the HDMI device type, and it reported 0 with the device set to TV.
2026-10-16 12:06:44 -03:00
Adrià 4524944396 Merge pull request #6870 from adriadam10/fix/fixed-base-bfd
fix(build): link the fixed-base loader test with ld.bfd
2026-10-16 17:06:14 +02:00
Adrià FranchandClaude e1efda1274 fix(build): link the fixed-base loader test with ld.bfd
wild 0.10.0 gives no canonical PLT entry to a DSO function whose address a
non-PIE executable takes (wild-linker/wild#2469, fixed after the release by
#2480), so the absolute personality pointer in .eh_frame names a local stub
and every exception reaching main is unhandled.

Co-Authored-By: Claude <[email protected]>
2026-10-16 17:05:56 +02:00
pushkarreddyy 2de10e35ff feat(libkernel): allow lowering rlim_cur for RLIMIT_NOFILE in setrlimit 2026-10-16 20:33:46 +05:30
Yunus Shaikh 1f10c8afa5 fix(agc): flush the async log within its exit bound when the driver stops
The driver's static is destroyed from its DLL's atexit table at process exit, after ExitProcess has ended the async log's worker. Its stop() then flushed the log through Flush(), which takes the log's lock and waits for every queued line, so it never returned when the worker died holding that lock or with lines queued. #6800's bounded flush runs after it, because the log registers it while the driver is being constructed. stop() now uses that bounded flush, which reads the counters without the lock and gives up after EndFlushLimit, marking the log abandoned. A new shutdown test mode holds the log's lock from another thread and checks that the driver's shutdown still returns.
2026-10-16 07:58:37 -07:00
Daniele Giovane 8e671f4b93 test(agc): cover in-flight preparation and late cache shutdown 2026-10-16 07:58:04 -07:00
Yunus Shaikh 315e7b6343 Merge main into fix/agc-shutdown-pool-threads 2026-10-16 07:51:48 -07:00
Adrià 896e1b2b72 Merge pull request #6863 from adriadam10/ci/linux-wild-linker-2
ci(linux): link with wild
2026-10-16 16:45:54 +02:00
Adrià FranchandClaude b066940d4f ci(linux): link with wild
Co-Authored-By: Claude <[email protected]>
2026-10-16 16:44:10 +02:00
Adrià bc400bede6 Merge pull request #6862 from adriadam10/revert/6861-wild
Revert "ci(linux): link with wild" (#6861)
2026-10-16 16:41:06 +02:00
Adrià FranchandClaude 20c11e7334 Revert "ci(linux): link with wild" (#6861)
The runner cannot create directories under /var/cache/anyps5 (mkdir: Permission denied), so the install step failed
and the linux job built nothing.

Co-Authored-By: Claude <[email protected]>
2026-10-16 16:40:52 +02:00
MarcZX100 83eb3ed04a test(agc): set DLL path for pipeline library test 2026-10-16 14:39:57 +00:00
Adrià 668a7ddc19 Merge pull request #6861 from adriadam10/ci/linux-wild-linker
ci(linux): link with wild
2026-10-16 16:37:37 +02:00
Adrià FranchandClaude 94775df2b2 ci(linux): link with wild
Co-Authored-By: Claude <[email protected]>
2026-10-16 16:35:37 +02:00
Yunus Shaikh 141d605b90 test(agc): retry a settled import's first use when its copies finish first
The first-use check needs the main-queue copies of an import to be still in flight when the import returns to the write watch. On a fast device they can finish first, and the test then failed although the driver did nothing wrong. Retry with 4 and 16 times as many copies, and report the case as not tested when the copies finish first every time.
2026-10-16 07:32:54 -07:00
Adrià e0e3ced1e9 Merge pull request #6859 from adriadam10/fix/libs-shared-libstdcxx
fix(build): link core/libs executables against the shared libstdc++ on Linux
2026-10-16 16:29:06 +02:00
al3w0f205 7b7eaa6f0a feat(libSceAudioPropagation): export missing firmware functions from database 2026-10-16 09:28:43 -05:00
Adrià FranchandClaude 49ea68f2a6 fix(build): link core/libs executables against the shared libstdc++ on Linux
Co-Authored-By: Claude <[email protected]>
2026-10-16 16:26:42 +02:00
Hussein Kadhim fd407e34a0 fix(libkernel): fail open with EINVAL for an invalid access mode or O_CREAT|O_EXCL|O_DIRECTORY
FreeBSD rejects an access mode of 3 in kern_openat and the combination of O_CREAT, O_EXCL and O_DIRECTORY in vn_open_cred before it looks the path up. sceKernelOpen, open and openat threw std::invalid_argument for access mode 3 and, on Windows, created the file for the second combination.

(cherry picked from commit 038a07098ef38e95fade52154847b579dcb0f9d0)
2026-10-16 14:21:23 +00:00
Itamar Medyoni 3168727fa4 fix(libc): call guest unwind callbacks with the System V ABI on Windows
_Unwind_Backtrace and _Unwind_ForcedUnwind call the trace and stop
functions a title passes them, and _Unwind_DeleteException calls the
exception_cleanup of the exception it deletes. Their types in
UnwindAbi.hpp had no APS5_VABI, so on Windows these guest functions were
called with the Microsoft x64 convention: the context and the argument
went to rcx and rdx while the guest reads rdi and rsi. vkQuake
(PPSA99010) imports _Unwind_Backtrace and reads each frame in its
callback (db3ec02c5).

The three types are now APS5_VABI, like the callbacks of __cxa_vec_ctor
and the other libc exports, and so is Cleanup, the exception_cleanup of
the exceptions libc throws. An exception thrown by libstdc++ on Windows
(class GNUCC++) has a host cleanup, so _Unwind_DeleteException passes it
to libgcc's _Unwind_DeleteException, which calls that cleanup as before.
Linux and macOS are unchanged.
2026-10-16 16:48:22 +03:00
Ondra97 23c9bd7e86 test(shader): compile each f64 comparison mode once 2026-10-16 15:46:59 +02:00
Felipe Arce 647b5a1c97 refactor(libkernel): share the Windows pipe query between poll and kevent
PipeReadiness and PipeReadState both opened the pipe handle and asked
NtQueryInformationFile for its access mask and local information. Both
now go through QueryPipe, which keeps each caller's error prefix.
2026-10-16 10:44:12 -03:00
Nithishvelan M 2e4f63b816 feat(libkernel): support _SC_ARG_MAX, _SC_OPEN_MAX and _SC_IOV_MAX in sysconf 2026-10-16 19:14:09 +05:30
Yunus Shaikh 418d5abb88 Merge main into fix/agc-sample-location-grid-exact
Brings #5884's request field (output primitive size, read from serialization version 31). This branch's sample order stays at version 32, read after it, so a version-31 request reads as before.
2026-10-16 06:37:54 -07:00
Claude 9ce634af21 Merge loyalburrito main (PR #1 merged) into claude/brave-ride-lz92qi
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RoU3ZF76A6uR8sCA7NMLch
2026-10-16 13:36:07 +00:00
Ondra97 e49ba43e43 fix(shader): honor f64 compare input denormal mode 2026-10-16 15:29:19 +02:00
Yunus Shaikh 1752c4a89b Merge #6537's head into perf/shader-image-table-reuse-v3-pr 2026-10-16 06:27:28 -07:00
Claude e4ede0e9e1 test(ssl): run four connections on one context in parallel
Each client thread handshakes, writes, reads the reply and the end of
the stream, so session setup and record allocations from several
threads contend for the same context pool. The pool memory must return
to its loaded size afterwards.

Initialize the pool's mutex explicitly, which -Wextra asks for.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RoU3ZF76A6uR8sCA7NMLch
2026-10-16 13:27:13 +00:00