Commit Graph
6254 Commits
Author SHA1 Message Date
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
Adrià 59bd3b677d Merge pull request #13581 from ashwin280802/perf/agc-heap-mirror-eviction
fix(agc): evict unreferenced heap mirrors under memory pressure
2026-10-31 21:01:10 +01:00
Adrià 500d37a747 Merge pull request #13704 from dmto/claude/tests-unicode-tmpfile-3e21f5
fix(tests): open AGC and SceNet scratch streams under a Unicode TEMP on Windows
2026-10-31 20:55:52 +01:00
janzezno 00dd261743 build(agc): register each AGC test executable in its own CMake fragment 2026-10-31 19:04:50 +01:00
janzezno 6c3eb20d73 build(agc): register default, draw-pipeline and SPIR-V mode tests through functions 2026-10-31 19:04:49 +01:00
AshwinandClaude Sonnet 5.5 ed3b5393f1 fix(agc): keep mirrors with queued refresh blocks out of eviction
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-31 22:20:48 +05:30
AshwinandClaude Sonnet 5.5 902289426b fix(agc): drop queued refresh blocks of an evicted heap mirror
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-31 21:22:20 +05:30
Ashwin c5b518ff69 fix(agc): evict unreferenced heap mirrors under memory pressure 2026-10-31 21:22:20 +05:30
Adrià 474030e584 Merge pull request #9696 from MarcZX10/fix/agc-pipelined-dispatch-test-9680
test(agc): keep pipelined dispatch targets in one address window
2026-10-31 16:23:59 +01:00
Adrià b8f0a6b202 Merge pull request #13667 from chitters2004/perf/prebuild-bound-programs
perf(agc): run first the library prebuilds of programs a submission binds
2026-10-31 12:52:52 +01:00
Adrià d50e1cef6e Merge pull request #13656 from jotitadev/fix/agc-slab-retile-index-after-slab-check
fix(agc): check a write-back piece is in a slab before reading its slab copy
2026-10-31 12:28:10 +01:00
Adrià 4e2c5a72e6 Merge pull request #13648 from JJenkx/windows/agc-clear-sampled-texture-on-gpu
perf(agc): clear a fast-cleared sampled texture on the GPU
2026-10-31 12:12:02 +01:00
Adrià 841deda7f5 Merge pull request #13632 from GiannisG1/test/mesh-vector-window-skip-names-mesh-shader
test(agc): name the missing mesh shader when the mesh vector window test skips
2026-10-31 11:11:10 +01:00
Adrià 3a6711d08b Merge pull request #13621 from beardsciences/fix/idle-store-yield
fix(agc): yield the queue-idle storage write-back to new work
2026-10-31 11:03:08 +01:00
Adrià beb7ce3c4a Merge pull request #13610 from ntamas94/up/gcn-draw-relocate-user-words
perf(agc): relocate cached draws across moved user-data V#s and fetch subroutines
2026-10-31 10:22:36 +01:00
Adrià 1b91748340 Merge pull request #13613 from Filip722/perf/agc-driver-id-reuse-20261030
perf(agc): reuse the queried driver ID during device setup
2026-10-31 10:20:32 +01:00
ntamas94andClaude Opus 5.5 9ea244c4c1 Merge branch 'main' of https://github.com/boykopovar/AnyPS5 into up/gcn-draw-relocate-user-words
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-31 08:11:21 +01:00
ntamas94andClaude Opus 5.5 183b781e5f fix(agc): keep a shared V# record count in the relocated draw key
A record-count user word was made relocatable after only the push,
specialization and captured-word checks. When the same word also builds
a second descriptor, the relocated stage patched the first descriptor's
count and kept the second one's earlier count. A count word is now
relocatable only when it appears in exactly one binding word, like the
base word.

agc_driver_draw_relocate_user_values gains the tagging case with two
read-only bindings sharing a count, and a draw that builds two descriptors
from one count SGPR, grows that count after the relocation is learned and
checks the second descriptor's newly covered dword; a control with a count
SGPR per descriptor still relocates and draws the grown range.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-31 07:42:53 +01:00
Yunus Shaikh a90d0b73bb Merge main into feat/agc-msaa-d32s8-stencil-view
Main comes in through #9533's main merge 071ca5b609, which keeps
#9533's resolution; this branch carries #9533 but not #9742.

Beyond keeping both sides:
- CMakeLists.txt:3150-3154: agc_driver_native_depth_buffer_clear joins
  the branch's set_tests_properties lists, which also carry
  agc_driver_native_depth_stencil_view.
2026-10-31 05:40:36 +00:00
Yunus Shaikh 071ca5b609 Merge main into fix/agc-msaa-d32s8-separate-stencil
Beyond keeping both sides:
- CMakeLists.txt:3149-3153: agc_driver_native_depth_buffer_clear joins
  the branch's set_tests_properties lists for the native depth tests
  (and the WIN32 list) instead of main's own line that re-lists clears
  and clear_refusals; the properties are the same.
- NativeMultisampleDepth.cpp:1153-1170: main's two
  completionCandidate && fault == ClearFault::None blocks sit around
  ArmHtileDepthClear inside the branch's ClearSource::HtileDispatch path,
  where the branch moved that code; the fill paths make no HTILE clear
  candidate.
- NativeMultisampleDepth.cpp:2556: main's --buffer-clear call passes
  ClearSource::HtileDispatch, the parameter the branch added to
  CheckDepthTarget.
2026-10-31 05:40:26 +00:00
Celegans12 448aa816b6 perf(agc): expand an HTILE on the GPU behind a pending mask clear kernel
Record an HTILE clear's mask/value with its pending note and recorder ID.
When that write covers the HTILE and determines its ZMask/SMem bits,
expand the metadata on the GPU without a readback. Retire mask proofs
with their recorder or depth device, preserving other owners and the
bounded cache's conservative overlap invalidation.
Recognize the structured-buffer variant and carry its completion range
through preparation, upload and binding. Admit only that range while
its native owner has a pending clear, retaining color guards and
excluding these resources from dispatch and recipe caches.
Cover store-back, PM4 buffer clears, guard refusals, recorder recreation,
live owner isolation and scoped cleanup with GPU byte/wait assertions.

AI-assisted: yes
2026-10-31 05:46:37 +01:00
Adrià c12e7e61a1 Merge pull request #13555 from Filip722/perf/shader-predecessor-append-20261030
perf(shader): omit redundant predecessor membership scans
2026-10-31 03:03:04 +01:00
Dylan TollesandClaude Opus 5.5 48191a538b fix(tests): open AGC and SceNet scratch streams under a Unicode TEMP on Windows
On Windows, std::tmpfile() returns NULL with errno 22 when %TEMP%
contains a character outside the ANSI code page. Thirteen more test
files still called it: the AGC async log, frame dump, PM4 replay and
recorder tests, eight AGC execution tests and the SceNet test. They
now use TemporaryFile::Open(), as #13104 did for the libc tests.

Part of #13083

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 18:06:52 -07:00
Adrià 6889f9a87d Merge pull request #13527 from JJenkx/windows/agc-dcc-clear-fill-doubling
perf(agc): fill a DCC fast-clear surface by doubling copies
2026-10-31 01:40:18 +01:00
Adrià 85f2f7de53 Merge pull request #13445 from Filip722/perf/shader-readonly-loads-20261030
perf(shader): omit zero selections for read-only fragment loads
2026-10-31 01:38:17 +01:00
Adrià ab1c3b8b63 Merge pull request #13341 from frankea/feat/f64-integer-emulation
feat(shader): compute f64 add, mul and f32 conversions with integers on devices without Float64
2026-10-31 01:26:50 +01:00
JamieandClaude Opus 5.5 a7c1dfcd01 test(agc): check a submission with no waiting prebuild is not scanned
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 23:18:48 +00:00
JamieandClaude Opus 5.5 b6c5edae13 test(agc): check nonmatching prebuild order on one worker
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 23:10:29 +00:00
Jamie ca40151bc7 perf(agc): bound the bound-program scan and queue reorder 2026-10-30 23:06:37 +00:00
JamieandClaude Opus 5.5 01b6d04869 perf(agc): run first the library prebuilds of programs a submission binds
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 22:36:34 +00:00
Jota 23c2c9b302 fix(agc): check a write-back piece is in a slab before reading its slab copy
The whole-window retile check bound slabPieces[part.pieces].copies[part.copy]
before testing part.slab. A piece stored into the import records pieces = 0,
and when no piece of the write-back went to a slab slabPieces is empty, so
the lookup binds a reference through a null pointer (UBSan: reference
binding to null pointer, Texture.cpp:3514).
2026-10-30 18:58:08 -03:00
Adrià 1fd299c3a4 refactor(libSceAgcDriver): drop unused inventory header include 2026-10-30 22:54:08 +01:00
Adrià f4b135b585 refactor(libSceAgcDriver): drop unused inventory header 2026-10-30 22:53:41 +01:00
Kyon 1dd9d2a8dc fix(libSceAgcDriver): drop unverified PaDebug routing 2026-10-30 22:53:35 +01:00
Kyon 55ee6860ed refactor(libSceAgcDriver): avoid shared build-list changes 2026-10-30 22:53:35 +01:00
Kyon 6427c96a88 feat(libSceAgcDriver): declare older PaDebug exports 2026-10-30 22:53:35 +01:00
Kyon 846482cad9 fix(libSceAgcDriver): exclude overlapping open exports 2026-10-30 22:53:35 +01:00
Kyon 3b359c7fdd feat(libSceAgcDriver): declare 22 callable exports 2026-10-30 22:53:35 +01:00
Adrià c9d187be2b Merge pull request #13492 from wrocketdev/fix/agc-tessellation-cull-distance
fix(agc): accept cull distances from tessellation evaluation shaders
2026-10-30 22:51:23 +01:00
Adrià f5a171acc7 Merge pull request #13471 from BunnyFl/feat/libsceagcdriver-unavailable-calls
feat(libSceAgcDriver): return the retail errors of the unavailable driver calls
2026-10-30 22:29:05 +01:00
Adrià 5e2067f2a5 Merge pull request #13450 from Filip722/perf/shader-uniform-fixedpoint-20261030
perf(shader): skip settled varying values in uniformity analysis
2026-10-30 22:10:43 +01:00
Adrià 369d29383e Merge pull request #13448 from frankea/perf/barycentric-patch-validation-key
perf(agc): key draws through generated barycentric tessellation stages in the shader validation memo
2026-10-30 22:04:27 +01:00
JJenkxandClaude Opus 5.5 a8202ea542 perf(agc): clear a fast-cleared sampled texture on the GPU
A sampled texture made from a surface whose DCC keys hold a fast-clear
code was filled on the CPU with the clear texel (FillDccClear over the
whole surface), copied into a staging buffer, copied to a tiled device
buffer, detiled and copied into the image. A target cleared every
frame and sampled while cleared repeats all of it each time.

When the texture's format is the one the clear texel is encoded in and
the texel has an exact clear value (ClearColorForTexel), the image is
now cleared with vkCmdClearColorImage instead, in the same recorder
batch the upload used. Comparison, sRGB-expand, repacked, block
compressed and register-clear surfaces keep the upload. A clear-code
cache hit never compares bytes, so such an entry keeps no snapshot.

The [textures] profile line counts these as cleared on the GPU, and
SampledTexturesCleared() reports them for the new execution test.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 16:57:15 -04:00
Adrià ed8a82b3cd Merge pull request #13432 from johnohhh1/fix/agc-native-depth-dmabuf-test
test(agc): enable dma-buf imports in native depth fixture
2026-10-30 21:40:54 +01:00
Christian 859777b551 fix(agc): yield the queue-idle storage write-back to new work
Queue 0's idle store wrote every pending storage image back to guest memory
in one pass once the queues had been idle for 50 ms. In a title's movies
that is about 15 upscaled 3840x2176 targets (~0.5 GB) per pass, and the
title's next flip waited ~0.6 s behind it, about every 3 s.

The idle store now writes back 4 MiB at a time, in the block units the
images already track, and stops as soon as queue 0 has queued work or
another queue is running; the rest stays pending for the next idle period.
The quiet period is unchanged.
2026-10-30 16:38:03 -04:00
Adrià 8ed8812b3c Merge pull request #13423 from Filip722/perf/shader-clean-memory-epochs-20261030
perf(shader): skip unchanged memory epoch propagation
2026-10-30 21:35:43 +01:00
GiannisandClaude Opus 5.5 81fffaba79 test(agc): name the missing mesh shader when the mesh vector window test skips
The test returned 77 without a word on a device without VK_EXT_mesh_shader,
so tools/check_skips.py could not tell an expected skip from lost
coverage. Split the gate as the other mesh tests do and print the device
reason.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 22:26:43 +02:00
Adrià 2d5e012f75 Merge pull request #13415 from Roojool/fix/agc-color-compare-907
fix(shader): round emulated array sampling half to even
2026-10-30 21:03:05 +01:00
Adrià 3410406e07 Merge pull request #13373 from mrfelek/perf/adaptive-staging
perf(agc): keep a staged element in place when its frames are faster
2026-10-30 20:57:01 +01:00