Commit Graph
1130 Commits
Author SHA1 Message Date
Dean b6ab5e7abd Merge pull request #7893 from thuanquang/fix/strip-first-provoking-order
fix(shader): hand a geometry program strip and fan triangles in the order of its provoking vertex mode
2026-11-03 01:25:32 +13:00
Dean 54746cb800 Merge pull request #11280 from Michael-KD/feat/linear-texture-custom-pitch
feat(agc): honour the DEPTH row pitch of linear 2D textures as RDNA2 does
2026-11-02 23:27:24 +13:00
Dean d7809ef62b Merge pull request #11126 from shahulmubeen-a/feat/agc-unnormalized-mirror-samplers
feat(agc): sample unnormalized S#s with mirror and mirror-once clamp modes
2026-11-02 23:27:03 +13:00
Dean 12683e2cef Merge pull request #10435 from ntamas94/fix/ps4-htile-macro-tile
fix(libSceAgcDriver): size a PS4 depth target's HTILE in 512x512 blocks
2026-11-02 23:25:57 +13:00
Dean e4119e9455 Merge pull request #10333 from SleglJan/test/6868-driver-store-tests
test(agc): cover repeated driver stores into a shared block's exact ring
2026-11-02 23:25:51 +13:00
Dean baba4197ad Merge pull request #10940 from TechLevelZero/fix/storage-idle-flush-own-device
fix(agc): keep a device's idle stores and storage write-backs on its own recorder
2026-11-02 23:25:17 +13:00
Dean 0d02927bd0 Merge pull request #10906 from EagleBearerYS/fix/shader-null-storage-image-type0
fix(agc): bind a written TYPE 0 or 1 static image slot as a null storage image
2026-11-02 23:24:59 +13:00
Dean d4ee73b8cd Merge pull request #10760 from lgqdaxia/codex/fix-capture-trace-backpressure
fix(agc): keep capture trace output nonfatal
2026-11-02 23:24:20 +13:00
Dean 2403a74f49 Merge pull request #10026 from winstrex/fix/agc-unwatch-baseline
fix(agc): hash an idle unit when its range leaves the write watch instead of at every upload
2026-11-02 20:59:45 +13:00
Dean a4b76b2c0a Merge pull request #9717 from EagleBearerYS/feat/agc-msaa-d32s8-stencil-view
feat(agc): sample the stencil plane of a native multisampled D32S8 target
2026-11-02 20:58:14 +13:00
Dean 00069c0920 Merge pull request #8874 from JJenkx/perf/agc-heap-reference-reuse
perf(agc): reuse heap mirror reference buffers between builds
2026-11-02 20:57:02 +13:00
Dean 8c96e69367 Merge pull request #8542 from milescoviello/fix/journal-replay-limit-per-kind
fix(agc): bound a journal replay's graphics and compute pipelines apart
2026-11-02 20:56:51 +13:00
Dean 9f33492f6a Merge pull request #8395 from hugodearaujo/fix/agc-fast-launch-input-topology
fix(agc): decode a fast-launch draw as one point per subgroup whatever its input type
2026-11-02 20:56:41 +13:00
Dean 48d8915ff5 Merge pull request #8014 from 011010/feat/agc-bda-atomics-moltenvk
fix(agc): skip the pixel interlock test where BDA atomics are not atomic
2026-11-02 20:56:36 +13:00
Dean 8ea18deb39 Merge pull request #7717 from xXPBSXx/fix-agc-view-range-adjustment
fix(agc): bind a V# of exactly the range limit within the limit
2026-11-02 20:56:31 +13:00
Dean 5a53826b8d Merge pull request #7446 from EagleBearerYS/fix/agc-draw-recapture-on-change
fix(agc): prepare a draw or dispatch again when the memory it captured changed before it was recorded
2026-11-02 20:55:57 +13:00
Dean 0c0b1b22b9 Merge pull request #6959 from JJenkx/fix/mesh-layer-windows-main2fab
fix(agc): render layered mesh targets within device limits
2026-11-02 20:55:52 +13:00
Dean a20477ae0b Merge pull request #4449 from Mouad-Scriptz-0/fix/dmabuf-import-coherence
feat(libSceAgcDriver): import scattered direct memory as a dma-buf run list and probe its coherence
2026-11-02 20:55:19 +13:00
JJenkx de5afa8144 chore(agc): merge main preserving reference storage and split tests 2026-11-01 20:14:35 -05:00
Dean 66e1f7f993 Merge pull request #8123 from JJenkx/fix/msaa-dcc-register-clear-mainf295
fix(agc): import multisampled DCC register clears
2026-11-02 12:29:51 +13:00
Dean e3c27da3fb Merge pull request #7844 from Mouhand-Kaddo/fix/agc-host-import-reserve-cap
fix(agc): keep at most 4 GiB of the host heap from the host import budget
2026-11-02 12:29:08 +13:00
Dean 4ac683fe02 Merge pull request #8319 from Aryansh1520/docs/agc-multisample-depth-htile-gap
docs(debt): record the non-pipe-aligned depth HTILE import gap
2026-11-02 12:05:40 +13:00
Dean e7865872b2 Merge pull request #13852 from xXPBSXx/docs-agc-q6-emulator-confirm
docs(libSceAgcDriver): add emulator confirmations to two debt entries
2026-11-02 12:03:51 +13:00
Dean a8944a4d40 Merge pull request #11449 from LeandroLP23/docs/agc-interlock-fast-link-drivers
docs(agc): record that AMD's Windows driver and NVIDIA keep interlock ordering with a fast link
2026-11-02 11:01:20 +13:00
LeandroLP23andClaude Opus 5.5 cead84101e docs(agc): record that AMD's Windows driver and NVIDIA keep interlock ordering with a fast link
The fragment shader interlock entry said drivers other than RADV and an
RTX 4090 were not measured. With the GPL exclusion for interlock pipelines
removed locally and every draw fast-linked (APS5_NO_PIPELINE_LTO=1),
agc_driver_pixel_interlock kept its read-modify-writes in 120 of 120
runs, 12 at a time, on a Radeon 860M with AMD's Windows driver and on an
RTX 5060 Ti; RADV lost them in 108 of 120.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-01 20:27:36 +01:00
Dean Galvin d6f1eccfe2 revert(agc): keep driver pipeline caches and costly compute pipeline binaries across updates (#13931)
This reverts commit d8b60b46ed, reversing
changes made to d94fad17de.
2026-11-02 08:24:24 +13:00
Dean Galvin 34034d137f Merge main f2d874c1fd into #8014 (d00d8ba52e) 2026-11-02 04:41:17 +13:00
Adrià d8b60b46ed Merge pull request #13931 from liskeee/perf/agc-persistent-pipeline-cache-upstream
feat(agc): keep driver pipeline caches and costly compute pipeline binaries across updates
2026-11-01 15:22:44 +01:00
Dean Galvin 88b99b28b6 Merge commit 'f1a7b02028ae50adaf6c5aaaef892a51841b25bf' into HEAD
# Conflicts:
#	core/libs/prx/libSceAgcDriver/CMakeLists.txt
2026-11-02 02:38:58 +13:00
TechLevelZero e1efbcbd59 Merge branch 'main' into fix/storage-idle-flush-own-device 2026-11-01 12:04:46 +00:00
liu 03267ec5aa fix(agc): drop excess capture records and stop failed tracing
Follow the capture policy requested in #10753 and #10760. Keep queue callers running, record loss markers and totals, and disable failed output without relying on stream exceptions.

AI-assisted: Codex
2026-11-01 12:34:17 +01:00
liu 545143e378 docs(agc): keep capture debt entries in one list
Remove the extra blank line between capture trace output and frame capture. The independent changes in #11157 may merge in either order; the second branch keeps both entries when rebasing.

AI-assisted: Codex
2026-11-01 12:33:57 +01:00
liu 57d601ffb8 fix(agc): wait when the capture trace queue is full
Wait for the writer to take a batch instead of throwing when the pending queue is full. Add a controlled-sink test with four producers and check that records stay complete and ordered.

AI-assisted: yes
2026-11-01 12:33:56 +01:00
Adrià 75df21b76e Merge pull request #13678 from Gonic0/feat/agc-label-trap-aliased
perf(agc): trap label reads of small images inside pending large ones on macOS
2026-11-01 12:26:41 +01:00
Dean c1d62e8db2 Merge pull request #12797 from xXPBSXx/docs-agc-driver-status-queries
docs(agc): list the AgcDriver capture, trace and validation queries as silent stubs
2026-11-02 00:18:15 +13:00
JJenkx 8be4ad6217 fix(shader): permit read-only address loads during layer replay 2026-11-01 06:07:39 -05:00
JJenkx 218ca18e42 fix(agc): render mesh layers within device limits 2026-11-01 06:07:38 -05:00
winstrexandClaude Opus 5.5 42f9605c6c Merge remote-tracking branch 'upstream/main' into fix/agc-unwatch-baseline
- ImportMappedRanges: main's `replacing` structure, with UnwatchHookLocksGpu in place of AnyPendingOverlaps.
- markLayersPending: main's `!layerPending.AllIn(first, count)` block around this branch's pendingMiss bookkeeping and captureGuestBytes(&unsaved, true). With every unit already pending, that bookkeeping changed nothing, so skipping it keeps the behaviour.
- writeBackWindows: no unit shadow destination when the stored span is not watched or the image is at most SmallStoreBytes.
- Tests: agc_storage_pending_after_unwatch and agc_unwatch_hook_lock_order move to tests/cmake/agc_driver_recorder_tests.cmake.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-01 08:07:36 -03:00
liskeeeandClaude Opus 5.5 0c572f1c25 feat(agc): persist costly compute pipeline binaries
Capture costly compute builds and restore matching recipes after checking
full recipes, driver fingerprints and Vulkan compatibility keys. Add size
and time thresholds, opt-out, atomic persistence and corruption/rejection
fallback.

Remember below-threshold recipes in separate files so competing decisions
cannot overwrite captured binaries. Prefer saved binaries and retry
capture when the time threshold is lowered.

Cover compatibility, fallback, deterministic competing writers and
cross-process capture, restore and corruption.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-01 11:56:06 +01:00
Dean d2593327b5 Merge pull request #11447 from iamthehimansh/split/macos-agc-build
build(agc): compile Lifecycle, GuestMemory and GuestBufferMemory on macOS
2026-11-01 23:39:32 +13:00
Dean Galvin 1c9c1faf4b Merge commit 'a644edf30c501a612d06f17d05ef1b7051350cef' into HEAD
# Conflicts:
#	core/libs/prx/libSceAgcDriver/Graphics/src/GuestSamplerResource.cpp
#	docs/dev/debt/libSceAgcDriver.md
2026-11-01 23:27:26 +13:00
Mouhand-Kaddo 92c0089a9e Merge remote-tracking branch 'upstream/main' into HEAD
# Conflicts:
#	docs/dev/debt/libSceAgcDriver.md
2026-11-01 14:18:17 +04:00
TechLevelZeroandClaude Opus 5.5 319614a8de Merge branch 'main' into fix/storage-idle-flush-own-device
main split the idle store into FlushAllPendingUntil (interruptible pieces);
it takes the VkDevice filter too and the idle store passes state->device,
as the label and flip stores do. The --label test moves to
tests/cmake/agc_driver_two_device_pending_store_tests.cmake, main's new
layout for per-test registrations.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-01 10:03:10 +00:00
Dean Galvin edf7c32d7c Merge main into docs/agc-multisample-depth-htile-gap
# Conflicts:
#	docs/dev/debt/libSceAgcDriver.md
2026-11-01 21:00:39 +13:00
milescovielloandClaude Opus 5.5 ee0d52b98f fix(agc): bound a journal replay's graphics and compute pipelines apart
The replay kept the newest APS5_PIPELINE_JOURNAL_ENTRIES entries of
either kind, so compute pipelines used up the bound meant for the
graphics pipeline store, and the entries left out were not reported.
Graphics entries now count against that bound alone, compute entries
against APS5_PIPELINE_JOURNAL_COMPUTE_ENTRIES (1024); each kind keeps
its newest entries in record order, and a line says how many of each a
replay leaves out.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-01 06:47:31 +00:00
Nicolas GonzalezandClaude Opus 5.5 a3046f449c perf(agc): trap label reads of small images inside pending large ones
The label read trap skipped every image sharing a page with another
pending image. Large tiled images are never stored at a label, so an
image inside one no longer counts as sharing. A store of an image over a
trapped one now stores the trapped one in the same flush, and an
eviction or explicit write-back stores the trapped images inside it
first.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-01 03:38:15 -03:00
Nicolas GonzalezandClaude Opus 5.5 0fdd66d900 fix(agc): hold a label read trap until the store and skip aliased memory
The trap was released when FlushPending took the image out of the pending
registry, before it waited for GpuMutex, so a read in between saw the old
bytes; cache eviction and explicit write-backs did not release it at all.
Every store now releases it in writeBackLayers: after recording the GPU copy
into the import, or before the first CPU access on the CPU path, which also
releases the traps of other images on the same pages. A trapped image is
stored whole, and direct memory mapped at a second address is not trapped.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-01 03:37:51 -03:00
Nicolas GonzalezandClaude Opus 5.5 2cf5b41ec8 perf(agc): trap CPU reads of label readbacks on macOS instead of storing them
Before a label, a pending linear or small storage image that shares no page
with another pending or storing image now gets a write-watch read trap
instead of its store. The first access to its pages stores it through the
host-read hook; any other store releases the trap first.
APS5_NO_LABEL_READ_TRAP=1 keeps the store at the label.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-01 03:37:51 -03:00
Yunus Shaikh a63bd1432f Merge #9533's merge of main into feat/agc-msaa-d32s8-stencil-view
The conflict in core/libs/prx/libSceAgcDriver/CMakeLists.txt from #12862's split is resolved with tools/agc_test_split.py resolve, which moves this PR's test registrations into tests/cmake/.
2026-10-31 15:06:22 -07:00
Yunus Shaikh 6d0ff6cd85 Merge main into fix/agc-msaa-d32s8-separate-stencil
The conflict in core/libs/prx/libSceAgcDriver/CMakeLists.txt from #12862's split is resolved with tools/agc_test_split.py resolve, which moves this PR's test registrations into tests/cmake/.
2026-10-31 15:06:09 -07:00