Commit Graph
14017 Commits
Author SHA1 Message Date
Adrià 7289938cec Merge pull request #5177 from semirkabir/fix/agc-print-worker-failure
fix(agc): print a GPU queue worker failure when it is first stored
2026-10-14 22:53:16 +02:00
Adrià 6a8ba98b50 Merge pull request #5176 from n-delic/feat/ds-ordered-count
feat(shader): add GDS ordered counts and ordered-append dispatches
2026-10-14 22:52:36 +02:00
58b6ddf729 perf(agc): draws that differ only in user data reuse their shape's decode and stages
The draw key now has a shape: the key without the user words the stages read.
A draw whose key misses but whose shape has an entry copies that entry's decode,
re-reads only the user words (and merged-stage pointers), and reuses each
compiled stage whose captured reads still hold, compiling the rest.

APS5_NO_DRAW_DATA_HITS=1 disables it; APS5_VERIFY_DRAW_DATA_HITS=1 also decodes
and compiles in full and throws when the results differ.

A shape keeps its previous entries and only points at its newest key, so
draws of one shape that alternate between stable user words keep their own
key hits. The shape is passed only when data hits are on, so
APS5_NO_DRAW_DATA_HITS=1 keeps the previous behaviour exactly.

Rebased onto main a8b032b2 by CouchRiv (the conflicts with #639 resolved; built and tested on Linux with an RTX 4070 Ti and RADV, and on Windows with an RTX 5080), and onto main 6ac63bf0c by gjonn (main's free-function decoder with its static-ABI mode, its incremental register key as the shape key).

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Co-authored-by: CouchRiv <[email protected]>
Co-Authored-By: Gjon Gojcevic <[email protected]>
2026-10-14 22:52:01 +02:00
Leonardo 4b34a6d5a7 feat(libkernel): support microsecond timeout in size-0 _umtx_op 2026-10-14 22:51:54 +02:00
Adrià FranchandClaude b0001cb676 fix(agc): bound unwritten draw snapshots to the current stamp and the snapshot budget
Co-Authored-By: Claude <[email protected]>
2026-10-14 22:51:49 +02:00
Adrià 2d61e1264f Merge pull request #5484 from ee6aba54/fix/agc-live-snapshot-mismatch
fix(agc-driver): keep a live-backed snapshot mismatch from failing the dispatch
2026-10-14 22:50:50 +02:00
Adrià 6ff02d2119 Merge pull request #5477 from LeandroLP23/fix/agc-copy-data-register-source
fix(agc): copy a shader, context or user config register to memory with COPY_DATA
2026-10-14 22:50:24 +02:00
Adrià 2360bd9b37 Merge pull request #5467 from Sanjaysrinivas/test/agc-padded-depth-cube-rows
test(agc): cover padded D16 cube rows
2026-10-14 22:50:08 +02:00
Adrià 33001cebda Merge pull request #5466 from fdfawef324/codex/stencil-export-emulation
feat(agc): replay proven finite stencil reference exports
2026-10-14 22:49:30 +02:00
Adrià 0a9a32646e Merge pull request #5461 from eljackjoestar-cmd/codex/single-level-volume-bias
fix(shader): sample single-level volumes through biased 2D accesses
2026-10-14 22:49:08 +02:00
Adrià FranchandClaude 3d4845966f style(shader): drop the code comment in EmitSharedAtomicFAdd32
Co-Authored-By: Claude <[email protected]>
2026-10-14 22:48:40 +02:00
billythemenace2andClaude Opus 5.5 731575c802 fix(shader): flush ds_add_f32 denormals and NaNs as the hardware does
ds_add_f32 and ds_add_rtn_f32 now follow the measured hardware: both
operands are flushed to a signed zero when bit 0 of the f32 denormal field
is clear and the result when bit 1 is clear, the sum is rounded to nearest
even, a NaN data operand is stored quieted, else a NaN old value is stored
quieted, and +inf + -inf stores 0xffc00000. Measured on gfx1010 and, in
#5492, on gfx1031.

The new MemoryInfo field is stored in the shader disk cache (field count
31, minimum record 79 bytes, FormatVersion 34). The parts that depend only
on the data operand are computed once, before the CAS loop.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-14 22:48:34 +02:00
Adrià 2077b5383a Merge pull request #5456 from billythemenace2/fix/shader-2d-compare-on-1d-tsharp
fix(shader): compare through 2D image_sample_c on 1D T#s
2026-10-14 22:48:28 +02:00
Nuno Silva 5921095b65 test(libSceAgcDriver): page-align staged-clear write-watch registration on POSIX
The POSIX watch registration passed UnalignedBlockBytes (2*65536+2048), whose
2048 remainder is rejected by UFFDIO_REGISTER with EINVAL, so the test failed at
the not-write-watched Require on Linux. Register and unregister ArenaBytes
(3*65536), which is page-aligned; the Watched Require and Mutation().Add keep
UnalignedBlockBytes so the Windows host-import refusal that preserves the
write-watch is unchanged.
2026-10-14 21:48:25 +01:00
notaxeltvandCursor 27b3753260 feat(libSceNpPartner001): answer sceNpHasEAAccessSubscription without an EA Access server
Co-authored-by: Cursor <[email protected]>
2026-10-14 22:48:13 +02:00
Adrià fa3b41c54e Merge pull request #5450 from overlordxrz-source/feat/interp-reference-message
fix(recompiler): name the attribute of an out-of-range interpolation reference
2026-10-14 22:47:49 +02:00
Adrià 03f49fcf2e Merge pull request #5445 from nicolasabosch/fix/agc-sample-undrawn-msaa
fix(agc): sample a multisampled texture no draw rendered to from its uniform color memory
2026-10-14 22:47:11 +02:00
Adrià 47d913be43 Merge pull request #5442 from ideabsassistenza/fix/trace-slice-boundaries
fix(tools): compare trace slice boundaries at nanosecond precision
2026-10-14 22:46:41 +02:00
Ondra97 e60dd9d5a7 fix(ajm): preserve live decoder handles across ID wrap 2026-10-14 22:45:37 +02:00
Adrià 41cc655b89 Merge pull request #5421 from VitzS7/fix/web-name-self-containers
fix(web): name SELF containers instead of counting them as missing ELFs
2026-10-14 22:45:19 +02:00
Scott SchusterandClaude Opus 5.5 11c4a257c1 test(agc): a draw snapshot is reused within a collect epoch and taken again after a store
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 22:45:17 +02:00
Scott SchusterandClaude Opus 5.5 98ce8af56d perf(agc): reuse draw snapshots and moved word buffers across draws that nothing wrote between
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 22:45:17 +02:00
fdfawef324andClaude Opus 5.5 8c8cd86cf8 fix(agc): merge the pipeline cache file instead of overwriting it with one device's cache
The driver keeps the replaced headless VulkanDevice alive next to the
windowed one, so a process holds two Graphics::PipelineCache objects for
the same vk-pipelines-*.bin. Each saved its own VkPipelineCache over the
whole file, periodically and at teardown, so the last writer dropped the
other object's pipelines and those of earlier runs.

A save now reads the file under a per-path mutex, validates it as the load
does, creates a temporary cache from it and merges this object's cache into
that temporary one, then writes the result atomically. Merging into the
temporary cache keeps the live cache free of the external synchronisation
vkMergePipelineCaches requires of its destination. A merge that adds
nothing leaves the file as it is, an unreadable file is not written over,
and a result smaller than the file on disk or the data loaded at start is
not written; an invalid file or one the driver refuses is replaced.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 16:45:14 -04:00
Adrià 11adb34bca Merge pull request #5397 from Wild-Badger/test/pngenc-buffer-capacity
test(libScePngEnc): cover output capacity boundaries
2026-10-14 22:44:30 +02:00
Adrià 4e210a1064 Merge pull request #5314 from XairRrR/fix/shader-front-face-all-bits
fix(shader): honour SPI_BARYC_CNTL.FRONT_FACE_ALL_BITS for the front-face input
2026-10-14 22:43:51 +02:00
Adrià FranchandClaude 970ff0c795 fix(libkernel): keep sem_timedwait debt entry on its own line, include <algorithm>/<cctype> in the kqueue test
Co-Authored-By: Claude <[email protected]>
2026-10-14 22:43:43 +02:00
Rujul Talekar e9d367776d fix(libkernel): name the failing vnode watch in the kqueue notification error
The Windows error for a refused FindFirstChangeNotification was one string shared
by WatchParent and WatchContents, so the log could not tell which handle or path
was denied. Build it from the watcher, the path the API was given and
GetLastError instead.

Still throws: the EVFILT_VNODE attach path is vfs_kqfilter, which returns only
EINVAL, ENOMEM or 0, with EBADF from fget before it, and consults no directory
permission, so no FreeBSD errno stands for a host that refuses to notify.
2026-10-14 22:43:39 +02:00
Adrià 7003eda5d6 Merge pull request #6048 from adriadam10/revert/5211-recorder-ctest
Revert #5211: agc_driver_recorder fails on the Linux runners
2026-10-14 22:43:09 +02:00
Adrià FranchandClaude c7b2193644 Revert "Merge pull request #5211 from veosett/codex/recorder-coverage"
This reverts commit 1a2d01ab0. It registered agc_driver_recorder in ctest,
which requires /dev/udmabuf access; the self-hosted Linux runners lack it,
so main has been red on Linux since a1b6be7ef.

Co-Authored-By: Claude <[email protected]>
2026-10-14 22:42:53 +02:00
MarcZX100 9f1e3052a3 docs: record GPU test coverage in pull request checklist 2026-10-14 20:39:09 +00:00
Dean e6ef803ce0 Merge pull request #5989 from oneandonlydean/carry4897/compute-pipeline-unlocked
perf(agc): create compute pipelines before taking the GPU lock
2026-10-15 09:34:45 +13:00
hamb3r ea690728c3 perf(libc): limit Windows PreciseSleepUs spin tail to pacing sleeps 2026-10-14 23:26:08 +03:00
Adrià 428799a4dd Merge pull request #6043 from adriadam10/revert/3507-user-event-test
Revert "test(libSceUserService): cover user event polling" (#3507)
2026-10-14 22:25:53 +02:00
Adrià FranchandClaude fad72c5ef6 Revert "test(libSceUserService): cover user event polling" (#3507)
The test calls sceUserServiceGetEvent without sceUserServiceInitialize, which
returns NOT_INITIALIZED since #5233, so guest_user_service aborts on main.
#5233's GuestUserServiceLifecycle covers the login event after Initialize.

Co-Authored-By: Claude <[email protected]>
2026-10-14 22:25:35 +02:00
Muhammad Wasif Ali WasifandClaude Opus 5.5 cf780ffe7e docs(progress): the README links the history page, not its chart
The README no longer embeds history.svg; it links history.html, which the progress page also links.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 01:22:40 +05:00
Muhammad Wasif Ali WasifandClaude Opus 5.5 895061ca62 docs(build): list the ANYPS5_BUILD_WASM flag
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 01:22:39 +05:00
Adrià f0634088bc Merge pull request #6013 from TaymKal/fix/conventions-renames
fix(conventions): check only changed lines in renamed files
2026-10-14 22:20:34 +02:00
Yunus Shaikh 46abaab054 refactor(agc): count compute pipelines in the helper that creates them
The overlay's SHADERS count for compute pipelines sat in VulkanDevice::dispatch, inside a block that another open change moves. CreateComputePipeline now counts each pipeline it creates, so the count follows the creation wherever it runs. The capture replay path, which creates the same title pipelines, is counted too.
2026-10-14 13:16:26 -07:00
Adrià 03ab6c494c Merge pull request #5459 from ideabsassistenza/fix/release-readonly-preflight
fix(release): reject read-only Windows destinations before promotion
2026-10-14 22:15:42 +02:00
hamb3r cee2006d18 feat(libc): lazily initialize application heap on first access 2026-10-14 23:14:30 +03:00
Adrià FranchandClaude 5d9def64e4 docs(debt): record COPY_DATA from a register and the dispatch registers it reads
Co-Authored-By: Claude <[email protected]>
2026-10-14 22:11:52 +02:00
Ondra97 b160c0a395 fix(ajm): honor Opus gapless resets 2026-10-14 22:10:51 +02:00
Adrià FranchandClaude d8e97a7697 fix(recompiler): move stencil artifacts to cache format 35
Main's flatVolumeLineCompatible change also took format 34 with another layout, so entries of either would load as the other.

Co-Authored-By: Claude <[email protected]>
2026-10-14 22:09:03 +02:00
fdfawef324andCodex 383c8a6515 fix(agc): retain table feedback guards after cache refresh
Check sampled image-table entries with the existing stencil replay depth-feedback refusal. Keep the cache regression tied to current upstream format 33 while stencil artifacts use format 34.

Co-Authored-By: Codex <[email protected]>
2026-10-14 22:08:48 +02:00
fdfawef324andCodex ce83818dc5 test(agc): use current resource plan codec coverage
Co-Authored-By: Codex <[email protected]>
2026-10-14 22:08:48 +02:00
fdfawef324andCodex b82e0c939c test(agc): keep stencil replay subgroup contract controls
Co-Authored-By: Codex <[email protected]>
2026-10-14 22:08:48 +02:00
fdfawef324andCodex 97a0a4d098 refactor(agc): separate stencil replay from its follow-up topics
Move bounded vertex folding and empty-image feedback into separate topics. Keep the replay coverage proof, stage contracts, finite-reference tests and mapped cache regressions; version the stencil layout separately as format 34.

Co-Authored-By: Codex <[email protected]>
2026-10-14 22:08:48 +02:00
fdfawef324andCodex 92f0d1ad6a test(recompiler): reject the current upstream cache format
Keep format 33 and its previous-format 32 refusal; also cover the current main format 31 explicitly.

Co-Authored-By: Codex <[email protected]>
2026-10-14 22:08:36 +02:00
fdfawef324andCodex b0c7cef616 fix(recompiler): distinguish stencil cache artifacts from format 32
Advance stencil artifacts to format 33 after main's format 32 change. Keep explicit rejection of upstream format 32 while preserving the existing stencil fields and runtime image metadata.

Co-Authored-By: Codex <[email protected]>
2026-10-14 22:08:36 +02:00
fdfawef324andCodex 46a6f26f55 fix(recompiler): refresh stencil cache schema after rebase
Advance the stencil artifact schema past current main format 31 and retain explicit rejection of that format. Update Linux artifact size guards for main runtime image resource metadata.

Co-Authored-By: Codex <[email protected]>
2026-10-14 22:08:36 +02:00