Commit Graph
14017 Commits
Author SHA1 Message Date
NeithennnandClaude Opus 5.5 0aba57d294 test(agc): keep waiting for the neighbour copy case's result
The NeighbourCopied case returned Missed as soon as the surface image was
live with nothing pending, although its result had not reached guest
memory yet. It now waits until the result is pending or stored, as
HoldPending does, and only a stored result is a miss.

Fixes #6383

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 15:52:10 +02:00
Ondra97 65e95f7139 fix(libkernel): serialize Windows vectored file transfers 2026-10-15 15:48:10 +02:00
Adrià Franch 04b1e9b0b7 fix(libSceIme): reuse ErrorBusy for duplicate keyboard open and record the behaviour in technical debt 2026-10-15 15:45:56 +02:00
Nithishvelan M e485f6ae09 fix(libSceIme): return error codes instead of throwing on duplicate open or close 2026-10-15 15:45:47 +02:00
Nithishvelan M 5e2e135280 fix(libSceSaveDataDialog.native): validate dialog state in close, get result and terminate 2026-10-15 19:14:21 +05:30
Adrià f633042dfd Merge pull request #5850 from wachi35676/docs/contributing-manual-relinker
docs(contributing): manual builds run the relinker matrix only when its files change
2026-10-15 15:44:03 +02:00
Adrià FranchandClaude 61a9ff5ee0 fix(libSceCdlgPlayerReview): ALREADY_INITIALIZED is 0x80B80004
Co-Authored-By: Claude <[email protected]>
2026-10-15 15:43:36 +02:00
Nithishvelan M 6799d87751 fix(libSceCdlgPlayerReview): return error codes instead of throwing in initialize and terminate 2026-10-15 15:43:35 +02:00
Yunus Shaikh 090c0dad15 fix(shader): count a selected record's dwords past its buffer as read
Since 682b07eb0, an image whose dword 3 wasn't captured is poisoned
(OutsideSnapshot). A record selected past the end of its heap reads
nothing there, so it was poisoned instead of selecting a null image, and
agc_shader_bindless and agc_driver_image_table failed after the merge of
main. A scalar buffer load returns zeros past the end of the buffer, so
those dwords now count as read zeros, and the dwords the selection reads
count as captured. Every other path keeps main's rule.
2026-10-15 06:39:33 -07:00
Yunus Shaikh 4344c1dc29 Merge branch 'main' into perf/shader-direct-cpu-evaluable-images 2026-10-15 06:38:09 -07:00
Adrià Franch 6ebab0e73b test(libSceAgc): declare the invalid-argument constant, restore the register defaults version checks 2026-10-15 15:36:49 +02:00
pushkarreddyy fd90df41b6 feat(libSceAgc): implement sceAgcGetDefaultCxStateFlat 2026-10-15 15:36:43 +02:00
simonbronkandClaude Opus 5.5 63db31fdd1 fix(shader): read explicit-LOD and level-zero 2D-array samples through 1D T#s as measured
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 15:36:02 +02:00
Adrià 4186f06a9a Merge pull request #5838 from christopherflores9312/fix/nid-name-mode-conflicts
fix(tools): reject mixed NID modes with empty filters
2026-10-15 15:35:34 +02:00
SandstromPLandClaude Opus 5.5 6f8d9a09d6 fix(relinker): read the PS4 needed-module tag in guest modules
The guest reader took a module's import modules only from 0x61000045,
the PS5 needed-module tag. PS4 modules list them in 0x6100000f
(DT_SCE_NEEDED_MODULE), so every import of a PS4 module had no library
and bound to any guest export with its NID. In the libc.prx and
libSceFios2.prx that Until Dawn (CUSA02636) bundles, a libc.prx import
then bound to libSceFios2.prx, and the conversion failed with "Cyclic
guest initialization dependency: libSceFios2.prx".

The reader now also reads 0x6100000f, with the same layout (module ID
in bits 48-63, name offset in the low 32 bits). A module that has both
tags fails with "Guest module mixes PS4 and PS5 needed-module tags".

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 19:05:21 +05:30
lakhantheboss c712a6bebd fix(web): reset interface state and input values on change input 2026-10-15 19:03:09 +05:30
Adrià 0e4ea13a0b Merge pull request #5818 from NumberGuan/codex/main-sync-console-encoding
fix(tools): preserve main sync reports on limited encodings
2026-10-15 15:32:39 +02:00
Crimson b0c283daa8 docs(build): note Bitdefender Advanced Threat Defense hanging guest_raise_exception 2026-10-15 16:32:09 +03:00
Adrià a5e2a80c6b Merge pull request #5825 from NumberGuan/codex/trace-folded-only-threads
fix(tools): include folded-only threads in trace digests
2026-10-15 15:27:53 +02:00
AlxcBTW d65cc07a1b perf(agc): load the pipeline cache file only on the windowed device and save without re-reading an unchanged file
The headless device is replaced by the windowed one at window attach and then only
lingers for in-flight workers, but it parsed its own full copy of the cache file.
It now starts empty (it still merges what it compiles into the file). Load reuses
the file buffer as the initial data instead of copying it, and save() writes the
live data directly when the file still carries the header this object loaded or
wrote, skipping the read-back and the merge cache.
2026-10-15 15:26:47 +02:00
Sanxchep Sharma b1984ce8d3 fix(agc): preserve position export layout on undecodable tail 2026-10-15 15:25:40 +02:00
MarcZX100 99500f9d45 fix(shader): budget pixel lane proof for NHL 26 replay 2026-10-15 13:21:30 +00:00
MrMha aea1dd601a feat(libc): provide the runtime scripting allocator hooks
Use the registered application allocator and the source-backed alignment/size signature. Add callback ownership and failure checks; record unmeasured console behavior.
2026-10-15 17:21:14 +04:00
Adrià 8dc92ae290 Merge pull request #6368 from adriadam10/ci/windows-ca-bundle-ucrt64
ci(windows): find the CA bundle of Git for Windows under ucrt64 too
2026-10-15 15:21:07 +02:00
Adrià FranchandClaude e0b9572e3b ci(windows): find the CA bundle of Git for Windows under ucrt64 too
Git for Windows 2.56 (runner image 20261002) moved from mingw64 to ucrt64,
so the fixed SSL_CERT_FILE path no longer exists and the WinLibs CMake
fails the FFmpeg download with status 60 on every Windows build. Take the
bundle from whichever of ucrt64 and mingw64 exists.

Co-Authored-By: Claude <[email protected]>
2026-10-15 15:20:44 +02:00
hugodearaujo e8b7361a1c fix(agc): settle dma-buf imports on Linux on the settle queue
The kernel maps a dma-buf import's pages for the GPU at the first submission that uses it. On RADV
that took about 2 s for a 3 GiB import, in the second frame of Hades (PPSA03355), and its staging
pool ran out while the frame was held.

Linux now makes the settle queue from #6060 when the device imports dma-buf memory, and settles
every dma-buf import of 1 MiB or more right after it is made with settleImport's 4-byte copy. The
settle queue needs neither the GPU mutex nor the main queue's work to finish. A dma-buf import's
buffer is shared with the settle queue's family instead of aliased, since a sparse import is bound
to many memory objects. Where the sparse queue already takes that family, the settle queue is a
second queue of it.
2026-10-15 10:19:46 -03:00
Tomás Ortellado ed33660a80 fix(tools): include folded-only threads in trace digests 2026-10-15 10:17:22 -03:00
Adrià FranchandClaude 17ed1218a4 docs(debt): record the measured min/max anisotropic sampler results
Co-Authored-By: Claude <[email protected]>
2026-10-15 15:17:18 +02:00
SandstromPLandClaude Opus 5.5 474ec771bf fix(agc): accept a min or max reduction sampler with anisotropic filtering
A guest S# with FILTER_MODE min or max and an anisotropic XY filter
threw "combines a min or max reduction with anisotropic filtering",
which stops High on Life (PPSA15388) in its home base. It now decodes
to a Vulkan sampler with both anisotropy and the reduction mode, as a
weighted-average anisotropic S# already does. RADV programs the same
S# for such a Vulkan sampler.

Tamalero's gfx1030 measurement on #5156 covers a sample without
derivatives through a 2x anisotropic S# over a single-level texture:
min or max with anisotropic bilinear returns the bilinear minimum or
maximum, and min with anisotropic point the point result. The
execution test checks the bilinear case on the host GPU; the debt
entry records what is not measured.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 15:16:41 +02:00
Tomás Ortellado d4cce869eb test(tools): pin check_main_sync subprocess encoding 2026-10-15 10:12:46 -03:00
Tomás Ortellado 758e69b567 fix(tools): preserve main sync reports on limited encodings 2026-10-15 10:12:46 -03:00
Jan ŠléglandClaude Opus 5.5 9fffceaa9a fix(agc): store pending image results after the range's writers finish
A flush stores a storage image's pending results to guest memory and
keeps the 64 KiB blocks the write tracker shows written since the image
was last in sync. An address-based dispatch marks the pages it stored to
only when its batch's completion runs. A flush between the GPU's store
and that completion found the blocks unwritten and stored the image's
older texels over the newer bytes; a CPU-resolved indirect dispatch then
read those texels as its workgroup counts.

FlushPending now looks for an unfinished batch that writes the range or
holds it in an address-based lease (Recorder::PendingWriterSerial).
Batches that already finished are completed first. If the writer is
still unfinished, the flush finishes the in-flight batches up to it, or
syncs when the writer is in the open batch, so its marks land and its
blocks are kept. Inside a completion action it does not wait. If the
wait throws, the images it took stay registered as pending.

The test stores an image, then a global dword into the image's memory,
and flushes the image twice: once with the writer's batch finished on
the GPU but its completion not run, and once with the writer still in
the open batch. Each time the dword is kept and a texel in another block
is stored. Without write watching the in-flight case is skipped; the
open-batch case still runs, as the write-back then compares guest
memory, which the GPU has not written yet at the flush.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 15:11:12 +02:00
Adrià 2e5dd5aa14 Merge pull request #5766 from GalaxyGamingFR/fix/conventions-glsl-comments
fix(conventions): check comments in GLSL shaders
2026-10-15 15:09:41 +02:00
eljackjoestar-cmd 81ef1ff485 fix(agc): limit copied-writer waits to copied ranges 2026-10-15 17:09:40 +04:00
Adrià 6359e3466a Merge pull request #5751 from NaitikJoshiPro/pr/agc-raw-graphics-beside-registered
fix(agc): read unregistered graphics programs beside registered shaders
2026-10-15 15:08:26 +02:00
Zenodeon 540c3a10c6 fix(agc): preserve registered array slices on CPU write-back 2026-10-15 17:08:14 +04:00
Adrià 73e924acd4 Merge pull request #5750 from NaitikJoshiPro/pr/agc-queue0-idle-wait
fix(agc): queue 0 waits instead of spinning when every queue is idle
2026-10-15 15:08:03 +02:00
Adrià 0c32e8dd02 Merge pull request #5741 from IshmamDC217/fix/relinker-load-file-ranges
fix(relinker): check PT_LOAD and uncovered PT_SCE_RELRO file ranges
2026-10-15 15:07:43 +02:00
Adrià 8c5516ce24 Merge pull request #5737 from wachi35676/fix/tools-registration-multi-config
fix(tools): count tests registered per configuration as run
2026-10-15 15:05:50 +02:00
Adrià 73d6424d6b Merge pull request #5735 from mugurc/fix/libscefiber-host-stack-macos
fix(libSceFiber): map fiber host stacks on hosts without MAP_STACK
2026-10-15 15:05:24 +02:00
hypermistandClaude Opus 5.5 44d31ef9db fix(agc): read GPU timing queries without waiting on unwritten ones
readGpuTiming runs after the batch's fence, so every timestamp the batch
wrote is already available. It still passed VK_QUERY_RESULT_WAIT_BIT, so a
timed range whose end stamp was never written (a BeginGpuTiming whose
EndGpuTiming did not run) made vkGetQueryPoolResults wait forever on the
reaping thread under APS5_PROFILE_GPU or a performance trace. Without WAIT_BIT the call returns
VK_NOT_READY and the batch's timings are dropped, as other failures are.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Q8tinbP1MUpUaDsbNWnGnu
2026-10-16 02:05:18 +13:00
Adrià 489466d3f9 Merge pull request #5734 from YossiYad/fix/strip-last-provoking
fix(agc): refuse last-vertex strips only for reads of a vertex slot
2026-10-15 15:03:44 +02:00
Adrià FranchandClaude 2f25a54b7b docs(ngs2): cite the PS5PCEM source that exists and describe the orientation handling as implemented
Co-Authored-By: Claude <[email protected]>
2026-10-15 15:03:32 +02:00
alosta 868d8bd24c fix(libSceNgs2): support listener transforms in sceNgs2GeomCalcListener
Restore world-to-listener matrix construction instead of rejecting
non-default orientation, translation or flags.

- Build an orthonormal row-major matrix from position, orient_front
  and orient_up; apply the right-handed axis flip for flag 1.
- Store the negated dotted translation in each matrix row.
- Validate unknown flags, invalid or non-finite input, short
  orientation axes, and unrepresentable translation without changing
  the output.
- Preserve finite velocity and positive finite sound speed.
- Update NGS2 geometry tests and the libSceNgs2 technical debt note.

AI assistance: yes
2026-10-15 15:03:25 +02:00
hypermistandClaude Opus 5.5 e54d2f35fe fix(agc): check GPU-side indirect dispatch group counts against the device limit
A DISPATCH_INDIRECT read on the GPU took its group counts unchecked. A count
buffer that a skipped producer never wrote (PPSA08427: 0xffffffff left by
skipped depth-plane passes) launched up to 2^32 groups and kept the GPU busy
until the title hung. The CPU path already refuses counts above
maxComputeWorkGroupCount.

- Recorder::RecordDispatchArguments copies the three counts from the import
  into a 12-byte indirect buffer with a one-thread kernel
  (DispatchArguments.comp), all three 0 when one exceeds the device limit, as
  RecordMeshArguments does for mesh indirect records.
- VulkanDevice records the dispatch from that buffer; without the kernel the
  import is read directly, as before.
- agc_driver_indirect_dispatch_limit: 0xffffffff groups run nothing, one group
  still runs.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Q8tinbP1MUpUaDsbNWnGnu
2026-10-16 02:03:15 +13:00
Adrià 4224d240aa Merge pull request #5724 from GalaxyGamingFR/fix/pr-intake-concurrent-opens
fix(ci): count only earlier open PRs in the intake limit
2026-10-15 15:02:13 +02:00
Adrià 97aac62429 Merge pull request #5722 from GalaxyGamingFR/fix/check-skips-multiline-text
fix(tools): match check_skips reasons on their own line
2026-10-15 15:01:12 +02:00
MarcZX100 32fe3aa8b9 fix(relinker): accept matching defined relative symbols 2026-10-15 13:01:05 +00:00
gguerra26 9b92c55edf fix(relinker): lower ANDN in Rosetta conversion 2026-10-15 15:00:43 +02:00
Adrià e534fd98b6 Merge pull request #5715 from ErenYeager1836/fix/web-browser-dialog-error-codes
fix(libSceWebBrowserDialog): return error codes instead of throwing in initialize and terminate
2026-10-15 15:00:27 +02:00