AnyPS5/core/libs/prx/libSceAgcDriver/Execution/include
gookie de651c6283 fix(agc): read indirect register lists when the command buffer is submitted
The driver copies a submission's packets when it is submitted, but
SET_SH_REG_INDIRECT, SET_UCONFIG_REG_INDIRECT and SET_CONTEXT_REG_INDIRECT
read their (offset, value) lists from guest memory only when the queue
worker reaches the packet. A title that reuses its per-frame memory once
it expects the GPU to be done with it can rewrite a list in between, and
the worker then throws on the data it finds there ("extended register
semantics are not implemented (offset dword 0x3a888889)").

The lists are now read with the packets, after validation, in Submit and
for a rewind tail, and the worker writes the registers from that copy.
Pm4::Execute keeps reading the list itself for direct callers.

PPSA21402 (Balatro) keeps three frame slots and does not wait for the GPU
before reusing one: its slot labels start at 0xffffffff and the GPU only
ever writes 0xffffffff to them, so the poll before a slot is reused never
blocks. When the worker falls more than two frames behind, the title
writes per-draw constants over a SET_CONTEXT_REG_INDIRECT list the worker
has not read yet.

The console's PFP reads the list when it reaches the packet; the
difference is recorded in TechnicalDebt.md.
2026-10-08 08:30:22 +02:00
..
Driver fix(agc): read indirect register lists when the command buffer is submitted 2026-10-08 08:30:22 +02:00
AspectFit.hpp feat(video): add resizable aspect-ratio-aware window 2026-09-23 14:27:47 +03:00
BdaFeatures.hpp feat(shader): implement checked BDA reads and GPU fault reporting 2026-09-21 19:26:09 +03:00
CaptureTrace.hpp debug(agc): detect gpu input buffer changes between recording and execution 2026-09-28 13:27:14 +03:00
DisplayBuffer.hpp feat(agc): present DCC display buffers whose keys are uncompressed or fast-cleared 2026-10-05 23:45:15 +02:00
DisplayFormat.hpp perf(agc): keep the 10-bit scanout resident and present it with the guest path's pixels 2026-10-03 08:49:27 +13:00
Driver.hpp fix(agc): don't create the Vulkan instance while SDL creates the Vulkan window 2026-10-06 22:21:26 +02:00
GuestMemory.hpp fix(agc): consume the write-watch faults of the driver's own CPU stores 2026-10-04 11:36:05 +13:00
MemoryAccessScope.hpp perf(agc): keep render targets on gpu across draws 2026-09-24 21:30:00 +03:00
PerformanceTimer.hpp refactor(agc): make frame timing logs optional by cmake option 2026-09-28 10:51:29 +03:00
Pm4.hpp fix(agc): read indirect register lists when the command buffer is submitted 2026-10-08 08:30:22 +02:00
Pm4Opcodes.hpp feat(libSceAgcDriver): execute COND_WRITE 2026-10-06 18:06:22 -03:00
Presentation.hpp refactor(log): remove extra logs + refactor timing logging 2026-09-24 20:35:59 +03:00
PresentationScaler.hpp feat(agc): present DCC display buffers whose keys are uncompressed or fast-cleared 2026-10-05 23:45:15 +02:00
ProfileOutput.hpp fix(agc): write profiling reports off GPU workers 2026-10-05 23:36:25 -03:00
QueueState.hpp fix(agc): include PA_SU_POLY_OFFSET_CLAMP in the initial context state 2026-10-07 11:46:11 +02:00
Recipe.hpp perf(agc): dispatch and draw recipes, data-only cache hits, unit shadows, bindless image tables 2026-09-26 19:00:40 -07:00
ShaderMemory.hpp perf(agc): dispatch and draw recipes, data-only cache hits, unit shadows, bindless image tables 2026-09-26 19:00:40 -07:00
VideoOutput.hpp style: drop the branch's code comments per CONVENTIONS.md 2026-09-29 21:25:29 +03:00
VulkanDevice.hpp Merge pull request #876 from YossiYad/feat/gpu-selection 2026-10-07 18:24:13 +02:00
WorkerSampler.hpp fix(kernel): orderly shutdown when closing the display window 2026-09-28 18:30:34 +03:00