Commit Graph
3102 Commits
Author SHA1 Message Date
Dean 18d793f5c0 Merge pull request #12813 from Tehshortbus/chore/storage-upload-log
chore(agc): log the storage upload submit and done lines only with APS5_DEBUG_LOG
2026-11-05 21:50:03 +13:00
Dean 3093cf27f8 Merge pull request #14914 from JJenkx/windows/agc-reuse-padded-vertex-copies
perf(agc): reuse unchanged zero-padded vertex copies
2026-11-05 21:24:19 +13:00
Dean 2238042b81 Merge pull request #15705 from oneandonlydean/rr/pr3-gpu
feat(run-report): count milestones, frames, GPU and shader diagnostics
2026-11-05 21:24:14 +13:00
Dean 4639eff7f4 Merge pull request #15757 from edubox/fix/agc-uint16-nonuint-target
fix(libSceAgcDriver): write UINT16_ABGR exports into 16-bit non-UINT targets
2026-11-05 17:00:42 +13:00
Dean Galvin bc2dfa08c9 revert(agc): back out #6973 MSAA initial samples
Main fails linux since 24ed2d9adf: agc_driver_native_depth_aliased_depth_{depth_only,stencil,no_stencil} and native_depth_publication now refuse sampling an aliased multisample target earlier, with a message the HTILE-alias path in NativeMultisampleDepth.cpp does not expect. The parent c42e3a000c is green. Reverting so main is green again; #6973 can re-land together with the test update.
2026-11-05 14:26:45 +13:00
Dean 24ed2d9adf Merge pull request #6973 from Amoenus/codex/feat-msaa-initial-samples-main402
feat(agc): preserve initial native multisample color contents
2026-11-05 13:12:11 +13:00
Dean 6b5be5e232 Merge pull request #15887 from TripyFox/perf/agc-draw-device-staging
perf(agc): stage recorded draws' written buffers in device memory
2026-11-05 12:43:15 +13:00
Dean 0ad9710d28 Merge pull request #13044 from Gonic0/perf/agc-linear-writeback-into-import
perf(agc): retile a whole-layer linear storage write-back into the host import
2026-11-05 12:17:45 +13:00
Eduardo Ruiz 26d6c0b117 Merge remote-tracking branch 'origin/main' into fix/agc-uint16-nonuint-target 2026-11-04 23:08:37 +01:00
TripyFoxandClaude Opus 5.5 1c3a24f1a2 perf(agc): stage recorded draws' written buffers in device memory
Recorded draws without BDA page tables now take the device-local staging
of written and atomic buffer elements that dispatches use; their
copy-backs are already recorded through MarkGpuWrites. A draw that ends
up synchronous with staged regions is rebuilt unstaged.
APS5_NO_DRAW_STAGING=1 keeps draws' elements in place.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-04 22:41:54 +01:00
Dean 638187daec Merge pull request #15855 from BunnyFl/fix/agc-sampled-depth-shadow-image-allocation
fix(agc): allocate the sampled depth shadow through the image allocator
2026-11-05 09:28:49 +13:00
Dean e04fa176c2 Merge pull request #13145 from Prophet069/pr/agc-sampler-mirror-clamp
fix(agc): enable VK_KHR_sampler_mirror_clamp_to_edge for mirror-once guest samplers
2026-11-05 09:00:31 +13:00
BunnyFlandClaude Opus 5.5 d792684630 fix(agc): allocate the sampled depth shadow through the image allocator
#15301 moved the sampled depth shadow onto OwnedImage::Allocate with the
VkMemoryAllocateInfo form that #10472 had already replaced, so main no
longer compiles libSceAgcDriver. Pass the image's create info as the
other OwnedImage callers do and bind at the allocation's memory and
offset.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-04 20:36:47 +01:00
Dean 288f44f556 Merge pull request #15741 from zorde23/fix/agc-fragment-uint-storage-views
fix(agc): bind UINT views for float16 stores outside compute shaders
2026-11-05 08:21:16 +13:00
Dean 270b91efbf Merge pull request #15301 from Prophet069/fix/agc-depth-shadow-host-fallback
fix(agc): let a sampled depth shadow reclaim memory or fall back to the host
2026-11-05 08:20:56 +13:00
Dean fca7decda9 Merge pull request #15300 from Prophet069/fix/agc-msaa-depth-release
fix(agc): free native multisampled depth surfaces after their guest release
2026-11-05 08:20:52 +13:00
Dean 097e86df8b Merge pull request #10779 from stuart-russell/fix/agc-zero-export-format
fix(agc): a zero color export format is not a color export
2026-11-05 08:19:21 +13:00
Dean de5f875cab Merge pull request #15783 from mrfelek/perf/agc-moved-input-snapshot-cap
perf(agc): keep moved read-only draw inputs within the draw snapshot cap
2026-11-05 08:18:55 +13:00
Dean c087a68c05 Merge pull request #15682 from oneandonlydean/perf/shader-resources-costs
perf(agc): cut three per-draw costs in ShaderResources
2026-11-05 08:18:42 +13:00
Dean e358f2fc14 Merge pull request #14838 from oneandonlydean/carry-9012
perf(agc): audit a cached template only after the host import set changed
2026-11-05 08:18:22 +13:00
Dean 96419a3d2b Merge pull request #6108 from Gashrod1/fix/agc-clear-keeps-snapshot
perf(agc): keep a fast clear's guest bytes while they match unwatched memory
2026-11-05 08:17:51 +13:00
Nicolas GonzalezandClaude Opus 5.5 ea68802148 Merge commit 'b11c7bf84f5d2f636ff60166cc3371bd071e24d5' into HEAD
Resolve the two conflicts in Texture.cpp: keep main's creationHandOvers
counter next to linearImportRetiles, and address the retile's tiled
side through main's new SurfaceGeometry::GuestOffset(layer, mip) in both
the direct-import and the scratch dispatch. A level-major surface does
not keep each layer contiguous, so the whole-layer check that picks the
direct import now skips it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-04 14:03:27 -03:00
mrfelek cac7977ba0 perf(agc): keep moved read-only draw inputs within the draw snapshot cap
A cached draw whose read-only inputs moved (MovedReadOnlyBuffers) snapshotted the moved inputs whatever their size, while PrepareDrawBindings binds any other input over the draw snapshot budget in place. A move whose inputs together exceed the budget is now refused, so the draw builds its resources and binds those inputs in place.
2026-11-04 14:27:15 +01:00
Eduardo Ruiz 3f4e81453b fix(libSceAgcDriver): write UINT16_ABGR exports into 16-bit non-UINT targets 2026-11-04 13:42:59 +01:00
Romans Pokrovskis af3c17f490 test(agc): keep initial-content coverage scoped to supported ownership 2026-11-04 12:47:21 +02:00
Romans Pokrovskis a7845db98d fix(agc): collect guest rewrites before initial color reuse 2026-11-04 12:37:40 +02:00
Romans Pokrovskis 17d6030cd1 fix(agc): preserve initialization guards while tracking current main 2026-11-04 12:24:18 +02:00
Dean b11c7bf84f Merge pull request #14976 from liskeee/fix/agc-shared-import-alias-fallback
fix(agc): fall back when a shared import alias is refused
2026-11-04 21:32:44 +13:00
Dean 0097b73ad0 Merge pull request #13858 from EagleBearerYS/perf/agc-reuse-address-draws-in-space
perf(agc): reuse read-only address-based draw builds over their cached address space
2026-11-04 21:31:53 +13:00
Dean 6aca873d9b Merge pull request #15454 from Nesyth/perf/agc-import-kind-windows
perf(agc): import a block that mixes private memory with shared views in smaller runs
2026-11-04 21:31:42 +13:00
zorde23andClaude Opus 5.5 1886f850bb fix(agc): bind UINT views for float16 stores outside compute shaders
The UINT storage view for float16 image stores was chosen only when the
global binding number fell in the uint storage image slots of the main
stage. Binding numbers are stage * Binding::Count + slot, so a pixel,
hull or domain shader's slots never matched: its uint writes went to a
float16 view and the store was lost on AMD's Windows driver. The slot is
now taken from the binding number within its stage.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01VAPyfZR5GPZaWxRz67e9FT
2026-11-04 08:22:25 +00:00
Dean Galvin 0003ec72c7 Merge rr/pr2-writer into rr/pr3-gpu 2026-11-04 20:21:16 +13:00
Dean aa186a77b6 Merge pull request #9742 from EagleBearerYS/fix/agc-msaa-d32s8-depth-alias-htile-proof
fix(agc): accept a colour alias over a native multisample depth plane when HTILE proves its clear
2026-11-04 19:26:50 +13:00
Dean 3ec670c31c Merge pull request #12617 from milescoviello/fix/stencil-plane-storage
fix(agc): take a storage image's writes to the stencil plane when a depth target binds
2026-11-04 18:34:35 +13:00
Dean e14a0da086 Merge pull request #12125 from Oscar45397/fix/libSceAgcDriver-mesh-fan-restart
fix(agc): honour primitive restart in mesh-path triangle fans
2026-11-04 18:34:03 +13:00
Dean a06ff1334e Merge pull request #9674 from ntamas94/up/ps4-thick-tiles
feat(libSceAgcDriver): lay out PS4 textures in tile mode 19 (Thick_1dThick)
2026-11-04 18:33:41 +13:00
Dean 068e711f27 Merge pull request #10882 from orezraey/fix/agc-depth-fill-discard
fix(agc): drop stale depth planes a uniform fill overwrites
2026-11-04 17:48:51 +13:00
Dean aa5186e240 Merge pull request #10472 from nikhilpanchal1/perf/agc-image-suballocation
feat(agc): suballocate sampled and storage image memory
2026-11-04 17:48:36 +13:00
Dean 32ba394b1e Merge pull request #11265 from tibzejoker/perf/f16-fma-khr
perf(shader): compute v_pk_fma_f16 and v_pk_fmac_f16 with OpFmaKHR
2026-11-04 17:48:25 +13:00
Dean 2c381088ba Merge pull request #10256 from Capmare/perf/agc-image-table-variant-substitution
perf(agc): bind one texture for the dynamic-resolution variants of an image table surface
2026-11-04 17:48:19 +13:00
Dean Galvin c6daa9a3f2 Merge branch 'main' into perf/agc-reuse-address-draws-in-space 2026-11-04 17:06:15 +13:00
Dean Galvin 54665e451e Merge branch 'main' into up/ps4-thick-tiles 2026-11-04 16:59:59 +13:00
Dean c2eafe4461 Merge pull request #9892 from savvaniss/feat/ps4-gcn-msaa-targets
feat(agc): draw PS4 multisampled color targets as host-resident targets
2026-11-04 16:59:01 +13:00
Dean 60a8b3b24b Merge pull request #14261 from oneandonlydean/carry-6187-pr
perf(agc): an untracked comparison memo holds until memory it covers is forgotten
2026-11-04 16:58:14 +13:00
Dean ea0913b3a4 Merge pull request #9700 from frankea/eqaa-color-targets
feat(agc): draw EQAA color targets at their coverage sample count
2026-11-04 16:57:56 +13:00
Dean Galvin fe75d438f7 perf(agc): count image lookup outcomes only when they are reported, and hand the stage-A texture over
Per sampled element a build bumped the shared [textures] counters (stage-A
records, fast hits or misses, storage hits) with an atomic add on a line every
building thread writes, although the counters are only printed under
APS5_PROFILE_DRAW; in a perf annotation of one title's worker that add was
about a tenth of precollectImages. The adds now run only when the counters
are reported.

A stage-B fast hit also copied the record's texture pointer (another atomic
reference count on the texture's control block) and dropped the record's own
copy later; the record's reference is now moved out on a hit.
2026-11-04 16:54:14 +13:00
Dean Galvin fcdbf57170 perf(agc): reserve a resource build's vectors up front and skip template records it never uses
A build grew its binding and allocation vectors one element at a time and
tracked occupied binding numbers in a std::set; about 3.7% of the queue-0
worker on one title's hub was allocator time inside builds. The counts are
known before the plan is walked, so the vectors are reserved once and the
binding numbers go in a reserved vector.

A build that binds BDA tables, or a fault buffer while APS5_LOOP_GUARD is
set, can never be reused (noteReusable and NeverReusable refuse it), so it
no longer copies its data words for a template refresh nor records the proof
of its sampled textures for a Revalidate (the lookup log is still cleared).
A fault-only build is reusable and keeps both. APS5_KEEP_TEMPLATE_RECORDS=1
keeps both for every build.
2026-11-04 16:54:14 +13:00
Dean Galvin 55b17f3b3b perf(agc): test in-place read overlap without building the range list
ShaderResources::ReadsOverlap built the whole InPlaceReads vector on every
call. recordDraw calls it once per queued store for every draw that is not
address-based (the touches predicate of AnyQueuedStore), and the queue-0
worker of one title spent about 3% of its time there (InPlaceReads, vector
growth, malloc and free under AnyQueuedStore).

GuestBufferMemory::InPlaceReadsOverlap walks the same regions (the address
space's base regions, then the build's own, each when bound in place) and
stops at the first overlap. The answer is the same as the listed ranges'.

APS5_NO_READS_OVERLAP_WALK=1 builds the list as before.
2026-11-04 16:17:50 +13:00
Dean Galvin 1405c26132 Merge main 1c8c0efc8c into #9674 (9fde6efab2) 2026-11-04 11:32:46 +13:00
Dean Galvin 4308f2c31c Merge main 1c8c0efc8c into #9892 (3c0ee17922) 2026-11-04 11:30:09 +13:00