Commit Graph
1660 Commits
Author SHA1 Message Date
Adrià 46e54cf1f7 Merge pull request #10800 from slopgobblercobbler/fix/shader-diagnostics-dump-safety
fix(libSceAgcDriver): handle failed shader request dumps and uncapped skips
2026-10-28 18:15:01 +01:00
Adrià 2f34dca5b3 Merge pull request #11638 from dantdmdarealguy/test/agc-skip-without-vulkan
test(agc): skip submit progress and pipelined metadata pass without a Vulkan device
2026-10-28 15:29:28 +01:00
Adrià bd15a91f99 Merge pull request #11696 from Astronaut10/perf/agc-shape-memo
perf(agc): repeat a draw shape's resident targets and pipeline instead of looking them up again
2026-10-28 14:49:03 +01:00
Dean 3917fa85ce Merge pull request #12188 from Gonic0/fix/shader-lds-lock-fences-moltenvk
fix(shader): fence the LDS lock's critical section on MoltenVK
2026-10-28 22:51:00 +13:00
Adrià 316615d042 Merge pull request #10307 from mazen320/fix/submit-acb-queue-0x58
fix(agc): accept compute queue 0x58 on SubmitAcb
2026-10-28 10:19:36 +01:00
Adrià 03fcf738b6 fix(libSceAgcDriver): make reportSkip reachable from the shader diagnostics test 2026-10-28 09:50:47 +01:00
slopgobblercobbler 9de5c3a851 fix(libSceAgcDriver): handle failed shader request dumps and uncapped skips 2026-10-28 09:50:43 +01:00
Adrià 5b8ba7b929 Merge pull request #11443 from JJenkx/feat/agc-compute-inspection-20261026
feat(agc): inspect captured compute pipeline statistics
2026-10-28 09:41:21 +01:00
Dean 78360959ee Merge pull request #12137 from dantdmdarealguy/fix/agc-same-queue-label-epoch
fix(agc): start no collect epoch at a wait whose own queue's label already reached memory
2026-10-28 21:32:09 +13:00
Dean 3952092d74 Merge pull request #12209 from XairRrR/fix/agc-queue0-after-async-wait-free
fix(agc): run queue 0 work after earlier wait-free async submissions
2026-10-28 21:31:54 +13:00
Adrià a13ee2ddd1 Merge pull request #10498 from dotaku22/contribution/agc-committed-read-mapping
fix(agc): tolerate mapping changes during committed snapshots
2026-10-28 09:25:29 +01:00
Adrià 4a7c749047 fix(agc): leave the capture error buffer width to #7555 2026-10-28 08:59:32 +01:00
Maz 5d45d2cab7 fix(agc): name unmeasured queue end and drop debt duplicates 2026-10-28 08:59:28 +01:00
Maz 683b3497de fix(agc): limit 0x58 acceptance to SubmitAcb
Keep MultiAcbs and CommandBuffer on the unmeasured 0x57 exclusive end; split the debt entries and retain the title call-sites.
2026-10-28 08:59:28 +01:00
Maz 051b3e017b fix(agc): accept compute queue 0x58 on SubmitAcb
A PS5 measurement already recorded in the debt note shows queue 0x58 succeeds; raise the exclusive SubmissionQueueEnd and cover it in agc_driver_tests.
2026-10-28 08:59:28 +01:00
Cesar MoraandClaude Opus 5.5 2b349ff156 perf(agc): repeat a draw shape's resident targets and pipeline instead of looking them up again
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-28 08:33:40 +01:00
JJenkx b971004857 feat(agc): inspect captured compute pipeline statistics 2026-10-28 08:27:11 +01:00
Dean b99bbebacd Merge pull request #11839 from oneandonlydean/wolverine/agc-driver-micro-perf
perf(agc): reuse context register storage and keep the shadow live-unit count
2026-10-28 20:11:36 +13:00
Adrià fddf0ffb75 Merge pull request #9129 from EagleBearerYS/fix/agc-draw-cache-byte-budget
fix(agc): bound the draw cache by bytes
2026-10-28 08:07:42 +01:00
Dean 00e85fea39 Merge pull request #10348 from oneandonlydean/perf-D2-v47
fix(agc): clamp an exported pixel depth to the viewport depth range
2026-10-28 18:25:05 +13:00
Adrià 9fc181dde5 Merge pull request #9971 from tkcm01/fix/agc-overlay-private-bytes-macos
fix(agc): read the process's private memory from task_info on macOS
2026-10-28 05:17:46 +01:00
XairRrR c6e74df78d fix(agc): run queue 0 work after earlier wait-free async submissions
Wait-free submissions on other queues ran on their own workers with no
order against queue 0, so a queue 0 submission received after them
could execute first. Uncharted: The Lost Legacy submits small compute
jobs on queue 0x50 and reuses their command and descriptor memory once
later queue 0 work has passed; with the async job up to a second late,
it read recycled memory (garbage descriptors, BDA faults, a zeroed PM4
buffer) while loading Sri Lanka. A queue 0 submission now waits until
no wait-free submission received before it is pending or executing on
another queue. Submissions that wait for something, and the wait-free
ones queued behind them, are not waited for, since they can wait for
this queue 0 work.

Uncharted 4's menu fps is unchanged (10.21 vs 10.24, two runs each).
Tests: testQueue0SubmissionAfterEarlierWaitFreeWork and
testQueue0SubmissionBehindWaitingQueue.

AI-assisted: yes
2026-10-28 04:22:20 +01:00
Yunus Shaikh 332b5f3d28 Merge main into fix/agc-draw-cache-byte-budget
# Conflicts:
#	core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawCacheStatistics.cpp
2026-10-27 20:08:17 -07:00
Nicolas GonzalezandClaude Opus 5.5 2f25ab919f fix(shader): fence the LDS lock's critical section on MoltenVK
SPIRV-Cross emits the lock's acquire compare-exchange and release
exchange as relaxed Metal atomics, so the plain LDS loads and stores of
a locked 64-bit update were not ordered against the lock and contended
ds_add_u64 lost updates on an Apple M5 Pro. On MoltenVK the driver now sets
SpirvTarget::ldsLockFences, and the lock brackets its critical section
with workgroup-scope acquire and release OpMemoryBarriers, which become
threadgroup atomic_thread_fence with no execution barrier.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 23:37:56 -03:00
dotaku22 ed2dec46d9 fix(agc): tolerate mapping changes during committed snapshots 2026-10-28 02:18:45 +01:00
Dean Galvin c116f4f2f0 Merge branch 'main' into perf-D2-v47
# Conflicts:
#	docs/dev/debt/libSceAgcDriver.md
2026-10-28 13:52:37 +13:00
Dean c96d9fff00 Merge pull request #11440 from hamb3r/fix/agc-shader-memory-descriptor-epoch
fix(agc,shader): unify descriptor pendingWrite policy and enforce invalidation epochs
2026-10-28 13:51:32 +13:00
dantdmdarealguy e17983e341 fix(agc): start no collect epoch at a wait whose own queue's label already reached memory
waitMemory skipped the collect epoch bump for a WAIT_REG_MEM satisfied by a
label its own queue stored after the wait was received only while that label
was still pending. When the label had already reached memory, the at-entry
return and the poll loop exit bumped anyway, so whether the wait was an
ordering point depended on whether the GPU finished before the queue worker
reached the wait. On the Linux CI runner (llvmpipe) the spin dispatch of
agc_driver_same_queue_label_wait sometimes finished first and the test failed
with 8 to 12 extra bumps for 16 waits.

Both memory-satisfied returns now consult the label-store history the same
way. The test gains a gated submission in which every label is in memory
before its wait.
2026-10-27 18:25:00 -05:00
Dean 70df5fc8c0 Merge pull request #11163 from JJenkx/fix/agc-verify-relocated-user-words
fix(agc): verify the effective user words of relocated draws
2026-10-28 12:04:45 +13:00
Dean c28b600917 Merge pull request #9978 from BKlaasWerkman/fix/image-ms-array-storage-only
fix(shader,agc): declare ImageMSArray only for multisampled arrayed storage images
2026-10-28 12:02:55 +13:00
Adrià f5fefb982c Merge pull request #11305 from joedeangelis533-bot/review/tessellation-depth-upstream-20261025
feat(agc): remap unsupported tessellation viewport depth ranges
2026-10-27 22:27:35 +01:00
Adrià b9623a5c26 Merge pull request #11297 from mrfelek/perf/probe-f32-flush-nvidia
perf(agc): use the NVIDIA driver's f32 denormal flush when the startup probe matches
2026-10-27 22:09:23 +01:00
dantdmdarealguy 068455a2d5 test(agc): skip submit progress and pipelined metadata pass without a Vulkan device
agc_driver_pipelined_metadata_pass went straight to the driver, so a
missing Vulkan driver failed it with vkCreateInstance result -9 instead
of returning 77. It now probes the device with OpenVulkanTestDevice()
first, as the other pipelined tests do.

agc_submit_progress and agc_submit_progress_no_timeline set
ANYPS5_REQUIRE_VULKAN=1 in their own ctest environment, which turned
the test's own skip into a failure on every host. CI sets the variable
for the whole Linux job, so a missing device still fails there.

OpenVulkanTestDevice() skipped on any exception from the VulkanDevice
constructor, so a construction failure on a host that has a device was
reported as a skip. The constructor now throws VulkanUnavailable when
the loader cannot be loaded, vkCreateInstance returns
VK_ERROR_INCOMPATIBLE_DRIVER, or no Vulkan 1.1 graphics and compute
device exists, and the helper skips only on that. Any other failure,
including ANYPS5_GPU naming no device, fails the test.
agc_driver_vulkan_test_device covers the healthy device, the required
device and a construction failure with a device present;
agc_driver_vulkan_test_device_no_driver hides the ICD and covers the
skip and the ANYPS5_REQUIRE_VULKAN=1 failure.
2026-10-27 15:28:42 -05:00
Dean Galvin d4a296d863 Merge main into perf-D2-v47: depth export tail moves to request version 49
Main took request serialization version 48 for the fragment barycentric
built-ins flag (#9193). The depth export clamp bounds are now written at
version 49 and read only for versions from 49, so a version 48 request as main
writes it still decodes, with default bounds. Tests: version 49 is the
emitted prefix, 50 the first unsupported one, a depth exporting request
without its bounds decodes at 48, 47 and 46 (the last two without main's
barycentric byte), and a version 48 two-sample dithered request decodes as
written.
2026-10-28 08:24:34 +13:00
Dean d13b3d7c55 Merge pull request #10575 from Mouhand-Kaddo/fix/agc-committed-reads-released-pages
fix(agc): read committed guest pages on Windows without faulting on released pages
2026-10-28 07:55:20 +13:00
Dean 594214f733 Merge pull request #11357 from oneandonlydean/sa/host-import-frame-eviction
fix(agc): do not evict host imports used in the current or previous frame
2026-10-28 06:23:09 +13:00
Adrià 6f7cb75291 Merge pull request #9193 from imellag/feat/shader-barycentric-builtins-moltenvk
feat(recompiler): read I/J from barycentric built-ins on MoltenVK
2026-10-27 16:21:05 +01:00
78afe4c2b8 fix(agc): read the process's private memory from task_info on macOS
ReadProcessPrivateBytes reads RssAnon and VmSwap from /proc/self/status
on every host other than Windows. macOS has no /proc, so the overlay's
RAM line stays empty and agc_performance_overlay_statistics fails with
"the process's private memory cannot be read". On macOS it now returns
the task's phys_footprint from task_info(TASK_VM_INFO): its resident and
compressed private memory, which is what Activity Monitor shows.

jotitadev measured that this makes the test pass on macOS (#7886).
The same change is part of the macOS port in #8658.

Co-Authored-By: iamthehimansh <[email protected]>
Co-Authored-By: jotitadev <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 08:02:44 -04:00
Adrià d410ce253f Merge pull request #11207 from EagleBearerYS/feat/imedialog-pad-keyboard
feat(libSceImeDialog): type with the controller on an on-screen keyboard
2026-10-27 12:00:58 +01:00
Dean 3fea2a937b Merge pull request #11685 from oneandonlydean/port/direct-depth-layer-copy-v2
feat(agc): copy depth planes to and from color storage images directly where maintenance8 allows
2026-10-27 23:03:00 +13:00
Dean Galvin 1bf274a817 Merge main into perf-D2-v47: depth export tail moves to request version 48
Main took request serialization version 47 for the two-sample dithered
alpha-to-coverage value. The depth export clamp bounds are now written at
version 48 and read only for versions from 48, so a version 47 request as main
writes it still decodes, with default bounds. Tests: version 48 is the
emitted prefix, 49 the first unsupported one, and a version 47 two-sample
dithered request (with and without depth export) decodes as written.
2026-10-27 22:37:31 +13:00
Dean Galvin dd5121f76e fix(libSceAgcDriver): drop the comment from the spare context register storage 2026-10-27 22:04:24 +13:00
BiladeiroSupremo ac7aa18e5f perf(agc): reuse context register storage across context state push, pop and clear 2026-10-27 22:01:20 +13:00
Dean a636927e5f Merge pull request #8161 from Celegans12/feat/tools-ab-split
feat(tools): split the periodic reports of an APS5_AB run by phase
2026-10-27 21:34:47 +13:00
Adrià d768fb5df3 Merge pull request #10513 from thuanquang/perf/frame-dump-writer-cpu
perf(agc): write CPU-path frame dumps through the frame dump writer
2026-10-27 09:21:55 +01:00
Dean e07c21ce68 Merge pull request #11157 from janzezno/feat/agc-frame-capture-linux
feat(agc): capture and replay frames on Linux
2026-10-27 21:20:55 +13:00
Emanueleandyripper a95ced504c feat(recompiler): read I/J from barycentric built-ins on MoltenVK
MoltenVK exposes VK_KHR_fragment_shader_barycentric but its MSL step
rejects PerVertexKHR, so the extension is disabled there and a pixel
shader whose I/J VGPRs outlive their v_interp_p1/p2 pairs takes the
generated barycentric stages, which accept only triangle lists without
primitive restart on a device without geometry shaders.

A new target flag, fragmentBarycentricBuiltins, enables the extension
for its built-ins only. The host interpolation check then keeps the
leftover I/J reads (all perspective or all linear, at the fragment's
default position) and reads them from BaryCoordKHR or
BaryCoordNoPerspKHR, while the interpolated attributes stay hardware
varyings. Raw vertex parameters and I/J at an offset or a sample
position still take the generated stages. Apple GPUs return
unnormalized perspective weights unless the fragment function reads
[[position]], so each perspective read keeps a neutral use of
gl_FragCoord.w, loaded as a float. Devices with the full extension are
unaffected; the request serialization moves to version 45.

Co-authored-by: yripper <[email protected]>
2026-10-27 07:25:48 +01:00
Dean 26c451905c Merge pull request #10973 from MarcZX10/marc/fix-asan-copy-guest-bytes-alignment
fix(agc): read unaligned guest words through a one-byte-aligned type in the ASan copy
2026-10-27 18:29:32 +13:00
Adrià 6856adae6e Merge pull request #10655 from thuanquang/perf/import-watched-parallel-hash
perf(agc): hash the pages of an import window on several threads
2026-10-27 05:44:55 +01:00
Yunus Shaikh dc209521ed feat(agc): draw the system keyboard over the presented frame 2026-10-27 05:20:10 +01:00