Commit Graph
717 Commits
Author SHA1 Message Date
Adrià 6b23aaf129 Merge pull request #9159 from EagleBearerYS/fix/agc-rewatched-imports-compared-when-shared
fix(agc): keep a rewatched import's memory compared once it is shared
2026-10-24 20:26:38 +02:00
Adrià c035bd5b70 Merge pull request #9424 from hugodearaujo/fix/agc-unset-index-limit
fix(agc): resolve indexed indirect draws on a queue that never set INDEX_BUFFER_SIZE
2026-10-24 20:23:28 +02:00
Adrià 24581200ad Merge pull request #9450 from fma-rc/fix/agc-eqaa-one-fragment
fix(agc): draw a one-fragment multisampled color target as one sample with sample 0's coverage
2026-10-24 20:22:28 +02:00
Dean 1009187128 Merge pull request #9348 from klosixgaming-arch/feat/agc-color-logic-op
feat(agc): apply the color logic operation of CB_COLOR_CONTROL
2026-10-25 06:36:03 +13:00
Yunus Shaikh df89dd1041 Merge main into fix/agc-rewatched-imports-compared-when-shared 2026-10-24 09:51:13 -07:00
Adrià af45c3030e Merge pull request #9406 from JJenkx/fix/depth-plane-unmapped
fix(agc): drop stale depth-plane results whose guest memory was unmapped
2026-10-24 18:43:45 +02:00
Adrià 6da7e42704 Merge pull request #9652 from JJenkx/perf/agc-join-from-run-start
perf(agc): join the imports of a buffer bound from the start of adjacent ranges
2026-10-24 18:28:15 +02:00
Adrià 43768fa237 Merge pull request #8999 from milescoviello/feat/db-depth-copy-draw
feat(agc): draw DB depth copies with a driver pixel program
2026-10-24 17:29:23 +02:00
Dean b607bfdc8b Merge pull request #8213 from milescoviello/fix/journal-stream-modules
fix(agc): read the pipeline journal's modules at replay instead of holding the file
2026-10-25 04:18:44 +13:00
Adrià Franch af673ae694 docs(agc): record the one-fragment color target's unmeasured console behaviour and refused cases 2026-10-24 16:59:57 +02:00
Adrià d098eca3d6 Merge pull request #9185 from janzezno/fix/pixel-interlock-monolithic
fix(agc): build a pipeline with a fragment shader interlock whole, not from libraries
2026-10-24 16:29:56 +02:00
Dean 8e039f083f Merge pull request #9988 from frankea/fix/one-sample-ancillary-unsampled
fix(agc): accept ANCILLARY without PS_ITER_SAMPLE for a one-sample depth target without MSAA_ENABLE
2026-10-25 01:54:06 +13:00
Adrià 6e85617080 Merge pull request #9856 from Pacuka/feat/agc-driver-mem-semaphore
feat(libSceAgcDriver): execute MEM_SEMAPHORE signals and waits
2026-10-24 14:52:55 +02:00
milescovielloandClaude Opus 5.5 88718239a7 fix(agc): read the pipeline journal's modules at replay instead of holding the file
The journal was read whole into one buffer that the decoded modules
viewed, so a replay held the entire file (1 GiB at the default
APS5_PIPELINE_JOURNAL_MAX_MIB) until its last entry was built. The load
now parses the file a record at a time through positioned reads and keeps
it open; a replay thread reads an entry's modules again when it builds the
entry and rejects it when a record no longer reads back as loaded. The
replay report gains the peak module bytes held at once.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 14:18:09 +02:00
Dean Galvin 299486d9cf Merge main into feat/agc-color-logic-op 2026-10-25 01:14:01 +13:00
Adrià ce9471f191 Merge pull request #9836 from 00xDisaster/fix/pipeline-journal-no-workflows
fix(agc): keep the pipeline journal's newest pipelines when it is full
2026-10-24 14:13:50 +02:00
Adrià 60465afd3a Merge pull request #7307 from Zenodeon/agc-submit-progress-pr
feat(agc): add opt-in bounded submission progress
2026-10-24 11:59:57 +02:00
milescovielloandClaude Opus 5.5 2181bfc345 feat(agc): draw DB depth copies with a driver pixel program
A draw with DB_RENDER_CONTROL.DEPTH_COPY ran as a compute pass over the
whole surface, chosen when the viewport and scissor covered it. It now
runs as the title's own draw: the precheck rewrites the draw's registers
to bind no depth target and a driver-authored guest pixel program, then
draws it through the normal path. The program reads POS_FIXED_PT, loads
one sample of the Z_32_FLOAT plane through a T# built from the DB
registers (DepthCopySourceWords), and exports it to color target 0 as
32_R, so only the pixels the draw covers are written, and the normal draw
path orders it after the draws that rendered the plane.

- The plane is decoded by decodeDepthPlane, factored out of decodeDepth,
  so its address, pipe-bank XOR and slice match the registered surface.
- Two programs, one per source kind: image_load 2D_MSAA with the sample in
  s8, and image_load 2D. They are published with the null pixel program
  and prepared at use.
- A multisampled plane is read from its host image or sample shadow
  without the guest-memory import checks of native multisample sampling,
  inside a DepthCopySourceScope opened by Graphics::Draw for draws whose
  decode found the multisampled copy program (State::depthCopySource).
- The compute pass, its shader and the CopySample path are removed.
- A new execution test draws depth over a triangle, copies it with the
  same triangle and compares the covered texels with a reference draw.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 11:59:00 +02:00
Adrià 672c38f703 Merge pull request #9077 from thuanquang/docs/debt-agc-htile-msaa-stale
docs(agc): correct five stale statements in the HTILE and multisampled target entries
2026-10-24 11:54:34 +02:00
Adrià a78fed26df Merge pull request #8639 from Tripchipp/docs/debt-type0-null-image-link
docs(debt): link the TYPE=0 null image entry to the recompiler
2026-10-24 11:54:29 +02:00
thuanquangandClaude 5536623f6c docs(agc): correct five stale statements in the HTILE and multisampled target entries
Co-Authored-By: Claude <[email protected]>
2026-10-24 11:37:08 +02:00
Dean Galvin eaf4a711e5 Merge main into fix/one-sample-ancillary-unsampled 2026-10-24 22:36:23 +13:00
Adrià 86203bafc1 Merge pull request #9022 from LeandroLP23/docs/agc-drop-cmask-gpl-off-debt
docs(debt): drop the CMASK clear pass entry for AMD without pipeline libraries
2026-10-24 11:33:17 +02:00
Tripchipp a5c8c3249d docs(debt): link the TYPE=0 null image entry to the recompiler 2026-10-24 11:25:41 +02:00
Adrià 1c9ccc7386 Merge pull request #8420 from thuanquang/docs/debt-ngg-registered-programs
docs(agc): say that registered NGG vertex programs take the mesh path too
2026-10-24 11:24:10 +02:00
Adrià 67bcd19b8b Merge pull request #8424 from thuanquang/docs/debt-alpha-to-coverage-dithered
docs(agc): drop the stale "only" from the alpha-to-coverage entry
2026-10-24 11:24:04 +02:00
Adrià 20af9f8aa3 Merge pull request #8423 from thuanquang/docs/debt-depth-surface-retire-whole-plane
docs(agc): say that only a whole-plane storage write retires a depth surface
2026-10-24 11:23:42 +02:00
Adrià ca9543ea5a Merge pull request #8419 from thuanquang/docs/debt-agc-allocation-host-fallback
docs(agc): say that a refused device allocation falls back to host memory before throwing
2026-10-24 11:21:53 +02:00
Adrià 7eda9aad20 Merge pull request #8412 from thuanquang/docs/debt-depth-storage-other-level
docs(agc): drop another level from the reused depth storage refusals
2026-10-24 11:21:36 +02:00
Adrià 1618d6602e Merge pull request #8401 from thuanquang/docs/debt-descriptor-pool-lavapipe
docs(agc): say that only lavapipe frees descriptor sets individually
2026-10-24 11:18:46 +02:00
Adrià 2b2055fa4f Merge pull request #8281 from thuanquang/docs/f64-denormal-debt
docs(debt): correct stale f64 denormal and RSRC1 float mode statements
2026-10-24 11:06:19 +02:00
Adrià FranchandClaude Sonnet 5.5 954bed036d docs(agc): order the progress switch row and keep the debt list contiguous
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-24 09:02:30 +02:00
Zenodeon 2dc33842b2 test(agc): remove scheduler-dependent submission readiness gates 2026-10-24 09:02:30 +02:00
Zenodeon a49303005d feat(agc): add opt-in bounded submission progress 2026-10-24 09:02:30 +02:00
Yunus Shaikh 719a048a1f Merge main into fix/agc-rewatched-imports-compared-when-shared 2026-10-23 23:58:11 -07:00
Dean 564de82a00 Merge pull request #10044 from JJenkx/perf/agc-storage-cache-half-heap
perf(agc): let the storage image cache take up to half of the heap budget
2026-10-24 18:23:07 +13:00
Adrià 7966e590ef Merge pull request #8740 from Sam-mon7/feat/frame-replay
feat(agc): capture frames at the driver boundary and replay them offline
2026-10-24 07:03:41 +02:00
thuanquangandClaude b012267774 docs(agc): drop the stale "only" from the alpha-to-coverage entry
Co-Authored-By: Claude <[email protected]>
2026-10-24 11:55:55 +07:00
frankea 5c19aa5e42 Merge remote-tracking branch 'origin/main' into fix/one-sample-ancillary-unsampled
# Conflicts:
#	docs/dev/debt/libSceAgcDriver.md
2026-10-23 23:17:55 -04:00
frankea fc29c5a338 Merge remote-tracking branch 'origin/main' into fix/one-sample-ancillary-unsampled
# Conflicts:
#	core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
#	core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
#	docs/dev/debt/libSceAgcDriver.md
2026-10-23 22:58:22 -04:00
milescovielloandClaude Opus 5.5 371652fd0e fix(agc): draw a PS_ITER_SAMPLE program once per pixel into a one-sample color target
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 01:26:53 +00:00
Dean b6198d2fd7 Merge pull request #9721 from frankea/fix/one-sample-depth-comp-z
fix(agc): accept DB_EQAA INTERPOLATE_COMP_Z for a one-sample depth target without MSAA_ENABLE
2026-10-24 14:25:46 +13:00
thuanquangandClaude c687e7e353 docs(agc): limit the host placement exception to device buffers and images
Co-Authored-By: Claude <[email protected]>
2026-10-24 08:01:24 +07:00
thuanquangandClaude 8472a51793 docs(agc): say that a refused device allocation falls back to host memory before throwing
Co-Authored-By: Claude <[email protected]>
2026-10-24 07:59:55 +07:00
SamandClaude Opus 5.5 95d2a76583 feat(agc): capture frames at the driver boundary and replay them offline
APS5_FRAME_CAPTURE=<dir> makes the AGC driver record a few frames of a
title: the shader registrations and ABI resolutions, video output and
EOP flip reservations it made since it started, a snapshot of every
readable guest allocation (the title image included) taken at a frame
boundary once the driver is idle, and for the next frames each
submission, flip and suspend point with the thread that made it, its
serial progress and the guest pages the write tracker saw the CPU write
before it. At the end it stores the presented display buffers as
reference images. APS5_FRAME_CAPTURE_AT_FLIP, _TRIGGER and _FRAMES pick
the frames.

agc_frame_replay maps the captured memory at its addresses and replays
the calls of each captured thread on a thread of its own, in captured
order, through the current build of the driver with no title running.
It paces GPU work to the in-flight depth the title had, releases GPU
waits that the title's CPU threads released without calling the driver
(AgcDriverAwaitedWaits), and reports frame times, released waits and
how closely the replayed display buffers match the references.

Tests: agc_frame_capture (file format) and agc_driver_frame_replay
(two captured frames of CPU writes and DMA copies replayed and
compared). Docs: BUILD.md, ENVIRONMENT.md and the libSceAgcDriver debt
file.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 02:09:44 +02:00
Adrià 798c908fc4 Merge pull request #9068 from frankea/table-callee-range
fix(shader): link table callees that together exceed s_call_b64 range
2026-10-24 01:58:48 +02:00
Adrià 06596f3bdf Merge pull request #9017 from TheSovietWaffle/fix/recompiler-stencil-replay-exec-copy
fix(recompiler): accept EXEC copies in stencil replay masks
2026-10-24 01:23:52 +02:00
JJenkxandClaude Opus 5.5 d07ceb9494 docs(agc): describe the run-start join rule in the host import debt entry
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 18:35:36 -04:00
JJenkxandClaude Opus 5.5 9904c737ca fix(agc): reserve the storage images held in the sampled texture budget
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 17:59:54 -04:00
JJenkxandClaude Opus 5.5 3f2e9865b1 docs(agc): condense the texture cache budget debt entry
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 17:59:54 -04:00