Skip to content

refactor(agc): share storage budget snapshots with memory reports - #14219

Open
hamb3r wants to merge 3 commits into
boykopovar:mainfrom
hamb3r:codex/refactor-agc-budget-snapshot
Open

hamb3r wants to merge 3 commits into
boykopovar:mainfrom
hamb3r:codex/refactor-agc-budget-snapshot

Conversation

@hamb3r

@hamb3r hamb3r commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

What

Follow up #10194 by calculating the storage-cache decision and its diagnostic fields together. CalculateStorageTextureBudget returns the chosen heap, sampled/cached inputs, reservation, available bytes, ceiling and selectedBudget. The existing scalar functions consume that calculation, and MemoryAccounting::Report formats its snapshot. Budget formulas, fallback behavior, cache policy and report keys remain unchanged.

The final snapshot, including any re-read after idle reclaim, is captured under the budget-cache mutex. The active limit and its optional calculation timestamp are copied before releasing that mutex. Ledger snapshotting and report output then run outside it.

CTest ignores the process exit code when PASS_REGULAR_EXPRESSION is set, so a failed Expect can still pass when the report line matches (CTest documentation). Existing cap/floor tests reject FAIL: explicitly; the snapshot test checks pressure, unavailable/zero Vulkan budget information and the 512 MiB floor, with its own failure guard.

Depends on #14891: it adds the age annotation to the sampled-cache report while retaining the scalar storage-budget API. This branch is rebased on its exact head, preserving the timestamp copy inside the cache mutex. #14220 at d2cad1510164 merges cleanly. #6194 still conflicts with main itself and must preserve its final adjusted budget when integrated; coordination remains in the existing discussion.

Tested

Windows 10 Pro 10.0.19045, AMD Ryzen 7 7700, NVIDIA GeForce RTX 3080, NVIDIA 617.14, validation layer 1.4.350.0, WinLibs GCC 15.2.0, Release, BUILD_TESTING=ON, CCACHE_DISABLE=1.

  • Main: f03f72490132ed55d81c664b570d0bd26bc96694.
  • Dependency fix(agc): identify cached storage budgets in sampled reports #14891: 55940bd5c49d44adf0bf1ede28901bed627ee403.
  • This PR: e0ace57ec2263c62a3d8e9adbde6d68ec7c795a6.
  • Built agc_driver_sampled_cache_budget_tests, agc_driver_graphics_tests and agc_buffer_pool_tests for all three states.

Same machine/GPU and environment for every run:

ANYPS5_REQUIRE_VULKAN=1
ANYPS5_NO_SHADER_CACHE=1
VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation
VK_LOADER_DEBUG=error,warn,layer
ANYPS5_GPU=RTX 3080
ctest --test-dir build-portable -R '^(agc_driver_sampled_cache_budget_(memory|report_age)|agc_driver_recover_(sampled|storage)_allocation|agc_driver_graphics|agc_buffer_pool|agc_memory_accounting_budget_(cap|floor|snapshot))$' -V

Main passes the same 7/7 existing cases, the dependency passes 8/8 including report age, and this PR passes 9/9 including the snapshot case. Validation-layer insertion is confirmed in all comparison logs; none has a missing-layer warning or VUID validation errors. No cases skipped.

Mutation controls: deliberately incorrect cap and snapshot assertions are both rejected with CTest exit 8 even though their numeric reports still match. Restoring the assertions passes both cases.

Conventions and git diff --check pass. Full builds/test suites, Linux/macOS, games and FPS were not tested.

Checklist

  • Based on current main; no other open PR implements the same functions
  • One topic per PR; follow-ups go in a new PR
  • No comments in code except technical debt
  • Unimplemented paths throw (NotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file
  • No notes, investigation .md files or images added to the repository (attach them to this PR)
  • New third-party code is a submodule built from source
  • Generic behaviour, not specific to one title
  • Depends on: fix(agc): identify cached storage budgets in sampled reports #14891
  • Fixes: none
  • Unblocks: none
  • GPUs tested: NVIDIA GeForce RTX 3080, NVIDIA 617.14, Windows 10 Pro 10.0.19045
  • AI-assisted: yes

@hamb3r
hamb3r force-pushed the codex/refactor-agc-budget-snapshot branch from 6b4f382 to 7d9f2a1 Compare November 1, 2026 00:38
@github-actions github-actions Bot added build agc libSceAgc* labels Nov 1, 2026
@github-actions

github-actions Bot commented Nov 1, 2026 •

Copy link
Copy Markdown

Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.

Pull request Shared files not compared
PR 4472 core/libs/prx/libSceAgcDriver/tests/BufferPool.cpp
PR 6192 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 6194 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 6223 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 6340 core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 6412 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 6481 core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 6553 core/libs/prx/libSceAgcDriver/tests/BufferPool.cpp
PR 6804 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 7642 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 7689 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 9592 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 9852 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 9884 core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 10049 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 10064 core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 10193 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 10442 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 11444 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 11551 core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 13796 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 13809 core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 13863 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
PR 13920 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
PR 13928 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 13929 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 14944 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 15059 core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 15302 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 15529 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp

@MarcZX10 MarcZX10 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed — changes requested

The PR conflicts with both #6194 and #14220, and its description says the landing order with #6194 has not been agreed.

What I ran

Reviewed head 7d9f2a1f03367de6f92f9ecfba36f8b52b9a0970 against PR base 1ffd2b81f5960e51bef0d539891e2528eafff642 on Debian 12 x86_64, Python 3.11.2 and GCC 12.2.0. The preview onto current main c763ea56aae3bb60cd6e22064a6a21482a58a980 merged cleanly. Pairwise previews against #6194 and #14220 conflicted. I did not build locally.

python3 tools/pr_precheck.py --repo boykopovar/AnyPS5 --pr 14219
git diff --check 1ffd2b81f5960e51bef0d539891e2528eafff642...7d9f2a1f03367de6f92f9ecfba36f8b52b9a0970
git merge-tree --write-tree upstream/main refs/anyps5/review/14219
git merge-tree --write-tree --name-only refs/anyps5/review/14219 refs/anyps5/review/6194
git merge-tree --write-tree --name-only refs/anyps5/review/14219 refs/anyps5/review/14220
gh pr checks 14219 --repo boykopovar/AnyPS5

Results

Check Result
Diff check Passed.
Conventions and PR template Passed locally and in hosted CI.
Current-main merge preview Passed; tree 0ed87fc8de56eb065b2c723e5cc6ea6c5e994a4a.
Pairwise preview with #6194 Conflicts in ShaderResources.hpp, ShaderResources.cpp, and docs/dev/debt/libSceAgcDriver.md.
Pairwise preview with #14220 Conflicts in the same three files.
Hosted CI Conventions, intake, labels, library-portability, report, eligibility and Windows passed; Linux and specialized jobs skipped.
GPU validation and focused tests The PR reports paired 10/10 test runs on main and the change, plus a new snapshot test and mutation check, on Windows 10 with an RTX 3080. I did not reproduce these locally.
Selected unedited output
0ed87fc8de56eb065b2c723e5cc6ea6c5e994a4a
CONFLICT (content): Merge conflict in core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
CONFLICT (content): Merge conflict in core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
CONFLICT (content): Merge conflict in docs/dev/debt/libSceAgcDriver.md
windows	pass	27m48s	https://github.com/boykopovar/AnyPS5/actions/runs/41257599023/job/124705363529
linux	skipping	0	https://github.com/boykopovar/AnyPS5/actions/runs/41257599023/job/124705364702

Negative control

Assertion Baseline/change Result
Budget output checks fail when their expected value is mutated by one byte, even if output still matches the pass regex PR description reports a pass-only CTest fixture accepted the mutated executable before this change and the new FAIL: guard rejects it. Author-reported; not independently reproduced.

Findings

Blocking

The PR names #6194 as an open change to the same storage-budget policy, and the pairwise preview confirms content conflicts with it. The preview against #14220 also conflicts because that PR changes the storage-cache policy and shared debt entry. The repository requires overlapping PR authors to agree which lands first and declare the order in Depends on; this PR says no order is agreed and its checklist currently declares no dependency. Please coordinate a landing sequence with the authors of #6194 and #14220, then update the relevant checklist lines before this stack proceeds.

Non-blocking

The current-main preview is clean. The hosted Windows job passed; no Linux product job ran. The PR describes its RTX 3080 validation-layer run and paired baseline tests in detail, but I did not independently reproduce them.

Sources

Not verified

No local build, CTest, or GPU/validation-layer run. The author-reported RTX 3080 results and negative control were not independently reproduced; hosted Linux product tests were skipped.

To get this to a good state

Agree with the authors of #6194 and #14220 on the landing sequence and record it in the affected Depends on checklist lines. I will rerun the pairwise previews against the updated heads.

@hamb3r
hamb3r force-pushed the codex/refactor-agc-budget-snapshot branch from 7d9f2a1 to f997c0e Compare November 1, 2026 01:34
@hamb3r

hamb3r commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor Author

@MarcZX10 updated #14219 to e0ace57ec226, rebased on #14891 (55940bd5c49d) and declared Depends on: #14891. The timestamp and active limit are copied under the cache mutex before report output. #14891 passes 8/8 focused cases; #14219 passes 9/9, with zero VUID errors. Cap and snapshot mutation controls both return CTest exit 8 despite matching report lines.

merge-tree is clean for main 4ac683fe026c plus both PRs and #14220 d2cad1510164. #6194 still needs its rebase, consistent with your merge-order recommendation. Please re-review the updated head.

@MarcZX10 MarcZX10 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-checked — new head, changes requested

The updated head now merges cleanly with #14220, but the proposed #14219-before-#6194 order is still unagreed and the exact heads still conflict.

What I ran

Reviewed #14219 head f997c0e0072b2c36e41355203e7d97d0ce3e7ada; its recorded PR base is 5f438847c5064961808425ce0465ed8675474dde, and current main is f485df1f8c660bbabc495dd34415f8d6e982ea24. The current-main preview is clean. Environment: Linux x86_64, Python 3.11.2, GCC 12.2.0.

python3 tools/pr_precheck.py --repo boykopovar/AnyPS5 --pr 14219
python3 /root/.codex/skills/anyps5-pr-review/scripts/check_pr_stack.py --order-only --dependency 14219=f997c0e0072b2c36e41355203e7d97d0ce3e7ada --dependent 6194=8bb130068023741ae244df30c74ddef5bc386644
python3 /root/.codex/skills/anyps5-pr-review/scripts/check_pr_stack.py --order-only --dependency 14219=f997c0e0072b2c36e41355203e7d97d0ce3e7ada --dependent 14220=55d3875c32c747a16eb63cd4b5776e21ae30c17a

Results

Check Result
Diff and conventions Passed
Current-main merge preview Passed against f485df1f8c660bbabc495dd34415f8d6e982ea24
Pairwise merge with #14220 Clean
Pairwise merge with #6194 Conflicts in ShaderResources.hpp, ShaderResources.cpp, and docs/dev/debt/libSceAgcDriver.md
Hosted CI Windows, conventions, eligibility, report, and library-portability passed on this head; Linux and specialized jobs were skipped. A newer conventions run and labels check were queued
ABI/test-quality helpers Not executable in the isolated PR checkout; the workspace-only scripts are absent there
Author-reported tests The PR reports paired 10/10 tests plus a new snapshot test and mutation check; I did not independently rerun them
Local build/CTest Not run
Unedited command output
All conventions checks passed.

Shared comparison base: ab9a4768407d862d1879d7d0ee66bd9c3d9d67a8.
Dependency ancestry: NOT REQUIRED — PR #14219 must land before PR #6194.
Pairwise merge preview: CONFLICT — overlapping changes need manual review.
Unedited git merge-tree output:
380725b5b16bb0f830d52ba17bd6bf1f9c6f7224
100644 77058182fef944c49f64447279e0cdd361788a4e 1	core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
100644 9ac165dd9db60f67a0eef7af205af0a005fd5606 2	core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
100644 539f781cf22e7b19e4322ea3bad064779ad94439 3	core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
100644 8e5b85e63456d9b39a1f8fb17a9b68e0c4f77fee 1	core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
100644 6cdf1836be3c164b5d71ac9fdc8ef28637a1961b 2	core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
100644 207a9db3d12777509f5eedb9583f8ae5105b1bc8 3	core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
100644 e65bfc41645ff8a0df7fc3b7644d37fa3d874f09 1	docs/dev/debt/libSceAgcDriver.md
100644 b0a8e0d7b169947aeb71eed153cda22c2a6877a0 2	docs/dev/debt/libSceAgcDriver.md
100644 32431238454407551afdfce111ff976878e411b8 3	docs/dev/debt/libSceAgcDriver.md

Auto-merging core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
CONFLICT (content): Merge conflict in core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
Auto-merging core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
CONFLICT (content): Merge conflict in core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
Auto-merging core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
Auto-merging docs/dev/debt/libSceAgcDriver.md
CONFLICT (content): Merge conflict in docs/dev/debt/libSceAgcDriver.md
Shared comparison base: 381891927c2b3ff494a9853cb79fde8d5342b92d.
Dependency ancestry: NOT REQUIRED — PR #14219 must land before PR #14220.
Pairwise merge preview: CLEAN — tree 14f74baeee195a2d32412b6ad723bcc14a2ddc38.
/usr/bin/python3: can't open file '/tmp/anyps5-pr-precheck/boykopovar-AnyPS5-pr-14219-f997c0e0072b/head-f997c0e0072b-b61fc81e/tools/pr_abi_audit.py': [Errno 2] No such file or directory

/usr/bin/python3: can't open file '/tmp/anyps5-pr-precheck/boykopovar-AnyPS5-pr-14219-f997c0e0072b/head-f997c0e0072b-b61fc81e/tools/pr_test_quality.py': [Errno 2] No such file or directory

Negative control

Assertion Change to code under test Did the new test fail?
Snapshot test rejects a mutated reservation even when the pass regex matches The PR description reports mutating the reservation assertion Author-reported only; not independently reproduced

Findings

Blocking

The proposed landing order is #14219 before #6194, but the exact current heads still conflict in three shared files and the author says agreement is pending. The repository overlap rule requires agreement on order and that it be declared with Depends on. Please confirm the order with #6194's author; then record the dependency on the PR that lands second and rebase/resolve the conflict.

Non-blocking

The current #14219 and #14220 heads merge cleanly together. The PR's summary and test-guard changes are otherwise reflected in the updated description; their runtime evidence remains author-reported.

Sources

Not verified

No local build, CTest, GPU run, or independent reproduction of the author's mutation check. The Windows and test results above are hosted or author-reported; Linux and specialized hosted jobs were skipped.

To get this to a good state

Confirm the landing sequence with #6194's author, update the dependent PR's Depends on line, and resolve the remaining exact-head conflict. I will rerun the same current-main and pairwise checks on the updated heads.

@MarcZX10 MarcZX10 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-checked — new head, changes still requested

Head 520f1ecd916f1c0f897d91bdcd7832c4e3b08bab now merges cleanly with #14220, but the landing order with #6194 remains unagreed and their exact heads still conflict.

What I ran

Reviewed head 520f1ecd916f1c0f897d91bdcd7832c4e3b08bab; GitHub records base 41f9c911dadca8aa735ad5063d8630712a9985dc, while current main is 0e9dc7bc4c9755c3ce803f6bbdff9dc9f25d68bb. Environment: Debian 12 x86-64, Python 3.11.2, GCC 12.2.0. The precheck reported a clean preview against current main.

python3 tools/pr_precheck.py --repo boykopovar/AnyPS5 --pr 14219
python3 /root/.codex/skills/anyps5-pr-review/scripts/check_pr_stack.py --order-only --dependency 14219=520f1ecd916f1c0f897d91bdcd7832c4e3b08bab --dependent 6194=8bb130068023741ae244df30c74ddef5bc386644
python3 /root/.codex/skills/anyps5-pr-review/scripts/check_pr_stack.py --order-only --dependency 14219=520f1ecd916f1c0f897d91bdcd7832c4e3b08bab --dependent 14220=55d3875c32c747a16eb63cd4b5776e21ae30c17a

Results

Check Result
Diff and conventions Passed in the no-build precheck.
Merge preview against current main Clean.
Pairwise preview with #6194 Conflicts in ShaderResources.hpp, ShaderResources.cpp, and docs/dev/debt/libSceAgcDriver.md.
Pairwise preview with #14220 Clean on the current exact heads.
Hosted checks Windows pending; conventions, labels, portability, report, and eligibility passed. Linux and specialized jobs skipped.
Build-dependent tests Not run locally; the PR reports 11/11 focused tests on Windows.
Optional ABI/test-quality helpers The precheck could not run the workspace-only helper scripts in its isolated PR checkout. The new agc_memory_accounting_budget_snapshot test is registered in the changed CMake fragment.
Selected unedited output
All conventions checks passed.

PR #14219: clean against current base; head `520f1ecd916f1c0f897d91bdcd7832c4e3b08bab`
Pairwise merge preview: CONFLICT — overlapping changes need manual review.
CONFLICT (content): Merge conflict in core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
CONFLICT (content): Merge conflict in core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
CONFLICT (content): Merge conflict in docs/dev/debt/libSceAgcDriver.md
Pairwise merge preview: CLEAN — tree 324b08e20f0e0cb0e9fcd5c14231c12935ecc301.

Findings

Blocking

The exact #14219 and #6194 heads still conflict in three shared files, and the latest discussion on #6194 says the proposed #14219-before-#6194 order is awaiting the other author's confirmation. This PR still lists Depends on: none. Please confirm the landing order with the #6194 author and record it on the PR that lands second; then refresh the affected branch and I will rerun the pairwise preview.

Non-blocking

The latest head fixes the CTest registration placement, and the current pairwise preview with #14220 is clean. The Windows focused-test result is author-reported; it is not a local run.

Sources

Not verified

No local build, CTest, GPU validation run, or independent reproduction of the reported mutation check. Hosted Windows CI is still pending; Linux and specialized product jobs were skipped.

To get this to a good state

Confirm the sequence with the #6194 author. If #14219 lands first, declare that order in #6194's Depends on line; refresh the second branch and resolve the remaining conflicts. I will rerun the same pairwise checks on the updated heads.

@TechLevelZero

Copy link
Copy Markdown
Contributor

✅ NVIDIA GPU test: passed

PR head 520f1ec merged onto main 3741ca9 · tested 2026-11-01 07:17 UTC · 26 min

GPU NVIDIA RTX 2000 Ada Generation, driver 595.99.02, Vulkan 1.4.329
Host Ubuntu 26.04.1 LTS, kernel 7.0.0-38-generic, container ubuntu:24.04
Logs build and test logs for this run
Build ✅ passed (Release, -DANYPS5_ENABLE_SPIRV_TOOLS=ON)
Tests ✅ 2,473 passed · 5 failed (0 new, 3 also fail on main, 2 unstable on main) · 44 skipped (ANYPS5_REQUIRE_VULKAN=1)
Test setup CPU-only tests without a GPU; GPU tests (and any CPU-only test that failed or skipped without one) once on the GPU with VK_LAYER_KHRONOS_validation and ANYPS5_NO_SHADER_CACHE=1; main ran the same way
Test selection 2,522 of 3,121 tests run: the ones this change can reach, chosen by tools/select_tests.py from main's build graph
Vulkan validation ✅ no new validation IDs vs main (930 tests run on the GPU)
Slow tests (>30 s, GPU tests timed with validation layers) ⚠️ agc_driver_lookup_log_fits_build 89.3 s, ⚠️ agc_driver_pipeline_journal 53.4 s, ⚠️ agc_driver_graphics_maps_fallback 32.0 s
Intermittent validation messages (1, seen once in the parallel run, not reproduced when the test was re-run alone 2 times; not counted against this PR)
agc_driver_depth_clear_hle: VUID-vkCmdCopyBuffer-commonparent (6x)
Unstable on main (2, these also failed in recent main runs on this machine; not counted against this PR)
agc_driver_depth_clear_hle: failed in 2 of the last 10 main runs
agc_submit_progress: failed in 6 of the last 10 main runs
Failing on main too (3, not counted against this PR)
agc_driver_image_table
guest_mmap_executable
guest_socket_options_multicast
Validation IDs already present on main (5 IDs in 480 tests)
VUID-VkDeviceCreateInfo-pNext-pNext (480 tests): agc_driver, agc_driver_address_passes, agc_driver_alias_copy_label, agc_driver_alpha_to_coverage, agc_driver_array_layer_target, agc_driver_bc_block_copy, agc_driver_bda_anchor_reads, agc_driver_bda_span_reads, and 472 more
VUID-vkCmdCopyImage-srcImage-01548 (7 tests): agc_driver_depth_clear_hle, agc_driver_depth_plane_buffer_memory, agc_driver_depth_plane_partial_store, agc_driver_depth_plane_sampling, agc_driver_depth_storage_dispatch, agc_driver_depth_surface_from_storage, agc_driver_dispatch_move_depth
VUID-vkCmdCopyImage-srcImage-01551 (7 tests): agc_driver_depth_clear_hle, agc_driver_depth_plane_buffer_memory, agc_driver_depth_plane_partial_store, agc_driver_depth_plane_sampling, agc_driver_depth_storage_dispatch, agc_driver_depth_surface_from_storage, agc_driver_dispatch_move_depth
VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605 (1 test): agc_driver_prepared_exports
VUID-VkShaderModuleCreateInfo-pCode-08737 (1 test): agc_driver_image_sample_derivatives
Skipped (44)
agc_driver_bda_reads_shadowed_results: skipped, the device reports watched host memory written when it imports or reads it
agc_driver_bda_reads_shadowed_results_per_build: skipped, the device reports watched host memory written when it imports or reads it
agc_driver_sample_order_grid_reference: skipped, the device does not keep depth drawn at custom sample locations at those locations, even after a transition that names them: the composite of uniform renders holds the guest's depth in 0 of 3005 sloped samples, so no path can be compared with it bit for bit
agc_host_import_sparse: skipped, host imports are unavailable: /dev/udmabuf is not accessible
agc_import_settle_initial_dcc: skipped, the device has no deferred settle of host imports: imports under 1 MiB wait for one only on Windows
agc_unit_shadow_completion_store: skipped, the device reports watched host memory written when it imports or reads it
guest_http_uri_locale: 
guest_net_ctl: skipped, the host has no IPv4 address
guest_video_out_color_space: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_hdr: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_high_frame_rate: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_output_mode: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_resolution_status: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_wqhd_detection: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
video_out_flip_aftergpu: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_backtoback: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_controls: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_cpuflip: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_cpuflip_in_order: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_dcc: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_deferred: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_eop: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_eop_aftergpu: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_eop_main: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_fresh: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_f
Reproduce
git fetch origin 520f1ecd916f1c0f897d91bdcd7832c4e3b08bab 3741ca9327246d0df81638726a986cef862b6db5
git checkout 3741ca9327246d0df81638726a986cef862b6db5 && git merge --no-ff 520f1ecd916f1c0f897d91bdcd7832c4e3b08bab
git submodule update --init --recursive
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=ON -DANYPS5_ENABLE_SPIRV_TOOLS=ON
cmake --build build && cmake --build build --target libs
VK_DRIVER_FILES=/nonexistent/icd.json ctest --test-dir build -E '^(agc|shader|recompiler|videoout|video_out|guest_video_out|vulkan)|gpu' --timeout 120 --parallel 32 --output-on-failure
ANYPS5_REQUIRE_VULKAN=1 ANYPS5_NO_SHADER_CACHE=1 VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation \
  ctest --test-dir build -R '^(agc|shader|recompiler|videoout|video_out|guest_video_out|vulkan)|gpu' --timeout 120 --parallel 4 --output-on-failure
# failures are then re-run alone: --timeout 360 --parallel 2; new validation IDs: the test alone, twice, --parallel 1

Automated build and test on a contributor's NVIDIA machine; it does not replace upstream CI. A new comment is posted for each new push. Full logs.

@hamb3r
hamb3r force-pushed the codex/refactor-agc-budget-snapshot branch from 520f1ec to e0ace57 Compare November 1, 2026 23:15
@TechLevelZero

Copy link
Copy Markdown
Contributor

✅ NVIDIA GPU test: passed

PR head e0ace57 merged onto main 93dbd0f · tested 2026-11-02 08:31 UTC · 36 min

GPU NVIDIA RTX 2000 Ada Generation, driver 595.99.02, Vulkan 1.4.329
Host Ubuntu 26.04.1 LTS, kernel 7.0.0-38-generic, container ubuntu:24.04
Logs build and test logs for this run
Build ✅ passed (Release, -DANYPS5_ENABLE_SPIRV_TOOLS=ON)
Tests ✅ 2,494 passed · 7 failed (0 new, 3 also fail on main, 4 unstable on main) · 45 skipped (ANYPS5_REQUIRE_VULKAN=1)
Test setup CPU-only tests without a GPU; GPU tests (and any CPU-only test that failed or skipped without one) once on the GPU with VK_LAYER_KHRONOS_validation and ANYPS5_NO_SHADER_CACHE=1; main ran the same way
Test selection 2,546 of 3,165 tests run: the ones this change can reach, chosen by tools/select_tests.py from main's build graph
Vulkan validation ✅ no new validation IDs vs main (932 tests run on the GPU)
Slow tests (>30 s, GPU tests timed with validation layers) ⚠️ agc_driver_pipeline_journal 120.2 s, ⚠️ agc_driver_lookup_log_fits_build 34.7 s, ⚠️ agc_driver_graphics_maps_fallback 34.0 s, ⚠️ agc_driver_graphics 32.8 s, ⚠️ agc_driver_lazy_resolved_abi_switch_set 30.5 s
Unstable on main (4, these also failed in recent main runs on this machine; not counted against this PR)
agc_driver_job_manager_compute_capacity: failed in 1 of the last 10 main runs
agc_driver_pipeline_journal: failed in 1 of the last 10 main runs
agc_submit_progress: failed in 6 of the last 10 main runs
agc_submit_progress_no_timeline: failed in 7 of the last 10 main runs
Failing on main too (3, not counted against this PR)
agc_driver_image_table
guest_mmap_executable
guest_socket_options_multicast
Validated but not compared (1, not in the main baseline's validation pass)
agc_driver_sampled_cache_budget_report_age
Validation IDs already present on main (5 IDs in 484 tests)
VUID-VkDeviceCreateInfo-pNext-pNext (484 tests): agc_driver, agc_driver_address_passes, agc_driver_alias_copy_label, agc_driver_alpha_to_coverage, agc_driver_array_layer_target, agc_driver_bc_block_copy, agc_driver_bda_anchor_reads, agc_driver_bda_span_reads, and 476 more
VUID-vkCmdCopyImage-srcImage-01548 (7 tests): agc_driver_depth_clear_hle, agc_driver_depth_plane_buffer_memory, agc_driver_depth_plane_partial_store, agc_driver_depth_plane_sampling, agc_driver_depth_storage_dispatch, agc_driver_depth_surface_from_storage, agc_driver_dispatch_move_depth
VUID-vkCmdCopyImage-srcImage-01551 (7 tests): agc_driver_depth_clear_hle, agc_driver_depth_plane_buffer_memory, agc_driver_depth_plane_partial_store, agc_driver_depth_plane_sampling, agc_driver_depth_storage_dispatch, agc_driver_depth_surface_from_storage, agc_driver_dispatch_move_depth
VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605 (1 test): agc_driver_prepared_exports
VUID-VkShaderModuleCreateInfo-pCode-08737 (1 test): agc_driver_image_sample_derivatives
Skipped (45)
agc_driver_bda_reads_shadowed_results: skipped, the device reports watched host memory written when it imports or reads it
agc_driver_bda_reads_shadowed_results_per_build: skipped, the device reports watched host memory written when it imports or reads it
agc_driver_sample_order_grid_reference: skipped, the device does not keep depth drawn at custom sample locations at those locations, even after a transition that names them: the composite of uniform renders holds the guest's depth in 0 of 3005 sloped samples, so no path can be compared with it bit for bit
agc_host_import_sparse: skipped, host imports are unavailable: /dev/udmabuf is not accessible
agc_import_settle_initial_dcc: skipped, the device has no deferred settle of host imports: imports under 1 MiB wait for one only on Windows
agc_unit_shadow_completion_store: skipped, the device reports watched host memory written when it imports or reads it
guest_http_uri_locale: 
guest_net_ctl: skipped, the host has no IPv4 address
guest_video_out_color_space: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_hdr: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_high_frame_rate: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_output_mode: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_resolution_status: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_wqhd_detection: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
video_out_flip_aftergpu: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_backtoback: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_controls: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_cpuflip: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_cpuflip_in_order: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_dcc: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_deferred: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_eop: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_eop_aftergpu: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_eop_main: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_fps_limit: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_o
Reproduce
git fetch origin e0ace57ec2263c62a3d8e9adbde6d68ec7c795a6 93dbd0f82aea684e95f15f06e7d42c0064af18cf
git checkout 93dbd0f82aea684e95f15f06e7d42c0064af18cf && git merge --no-ff e0ace57ec2263c62a3d8e9adbde6d68ec7c795a6
git submodule update --init --recursive
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=ON -DANYPS5_ENABLE_SPIRV_TOOLS=ON
cmake --build build && cmake --build build --target libs
VK_DRIVER_FILES=/nonexistent/icd.json ctest --test-dir build -E '^(agc|shader|recompiler|videoout|video_out|guest_video_out|vulkan)|gpu' --timeout 120 --parallel 32 --output-on-failure
ANYPS5_REQUIRE_VULKAN=1 ANYPS5_NO_SHADER_CACHE=1 VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation \
  ctest --test-dir build -R '^(agc|shader|recompiler|videoout|video_out|guest_video_out|vulkan)|gpu' --timeout 120 --parallel 4 --output-on-failure
# failures are then re-run alone: --timeout 360 --parallel 2; new validation IDs: the test alone, twice, --parallel 1

Automated build and test on a contributor's NVIDIA machine; it does not replace upstream CI. A new comment is posted for each new push. Full logs.

@oneandonlydean

Copy link
Copy Markdown
Collaborator

Hi hamb3r,

On landing order: #14891, the dependency this branch declares, merged on 3 Nov, and e0ace57ec2 is otherwise ready (Windows green, NVIDIA run passed). We plan to land #14219 before #6194. Their only overlap is the storage-budget code in ShaderResources.hpp/ShaderResources.cpp and the AGC debt file, and whichever lands second resolves that in a merge with main, which we will do on #6194's side. This settles the order question in the open change request, so we will dismiss that request with this note.

@oneandonlydean
oneandonlydean dismissed stale reviews from MarcZX10, MarcZX10, and MarcZX10 November 5, 2026 04:31

Order settled: #14891 landed 3 Nov, and #14219 lands before #6194 (see the note above; #6194 gets a credited merge of main afterwards). #14220 merges clean. These reviews asked only for the landing order, no code change.

@oneandonlydean oneandonlydean self-assigned this Nov 5, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agc libSceAgc* build

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants