Skip to content

fix(recompiler): check the encoder struct sizes only where they were measured - #12250

Open
B-Howell wants to merge 7 commits into
boykopovar:mainfrom
B-Howell:fix/recompiler-result-size-check-memo
Open

B-Howell wants to merge 7 commits into
boykopovar:mainfrom
B-Howell:fix/recompiler-result-size-check-memo

Conversation

@B-Howell

@B-Howell B-Howell commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

What

On Linux with GCC 11/libstdc++ lacking __cpp_lib_atomic_shared_ptr, AtomicSharedPtr has a different in-memory representation from the std::atomic<std::shared_ptr> layout used for the existing RecompileResult size sentinel. The change gates only that RecompileResult == 552 assertion on the feature macro, inside the existing Linux/x86_64/libstdc++ block. All other 29 native-size sentinels and the explicit field-count and encode/decode checks remain active.

The cache fixture verifies that the process-local drawKeyMemo is excluded from serialized result bytes and is absent after decode. It also round-trips a non-default meshWindowBuffer and verifies that the corresponding request key changes. The wire format remains version 50 with 46 serialized ImageResource fields; the existing 96-byte native-size sentinel remains in place. No cache schema or format bump is made.

This update publishes candidate e450f9a69a94a64097353826562bc46a601a31ca (tree 8cff0750750eb9fb373bddf58d64a44f3e7e582f), an ordinary merge of public PR head c39227975df7b075570266202f9ff2dfac32bf49 followed by frozen main snapshot 0836dfdf4fecb1e0326100c490476e15d3a74da5. The selected PR changes remain limited to the cache test and ShaderDiskCache.cpp; the main delta overlaps neither path. The paired qualification below is CPU-only and does not claim Vulkan instance, validation-layer loading, or GPU behavior. The #11551 author agreed to the preferred #11551 → #12250 sequence and discussed reverse composition (comment); this change includes no #11551 commit and makes no combined-v51 claim. #12246 shares only the narrow RecompileResult guard; author coordination is #12250 first, followed by #12246 rebasing and dropping that duplicate line. This is sequencing, not a code prerequisite, so Depends on: none remains accurate.

Tested

Frozen main0836 / candidate e450 focused qualification - 2026-10-31

Windows 11, WinLibs GCC 15.2.0 r7, Release/Ninja, BUILD_TESTING=ON, cache b12250a. Frozen main 0836dfdf4fecb1e0326100c490476e15d3a74da5 and candidate e450f9a69a94a64097353826562bc46a601a31ca each built the existing agc_shader_disk_cache_tests target with two jobs and passed CTest agc_shader_disk_cache once (1/1; child durations 2.81s and 2.74s). Both runs used ANYPS5_REQUIRE_VULKAN=1, ANYPS5_NO_SHADER_CACHE=1, and VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation. Their logs contain no VUID- or requested-layer-missing marker. The executable is CPU-only and creates no Vulkan instance; this pair does not prove positive layer loading or GPU behavior. The CTest source-version labels are f25d44b2596fec4f for main and 579d0de06cfff348 for the candidate; these are test output labels, not commit IDs. The control executable was not archived separately.

Raw build and CTest logs, numeric exits, the candidate executable hash, the final cache hash, and the object-transfer receipt are retained under the private qualification receipt. This is a focused Windows CPU pair only: no Linux result, GPU qualification, hosted-CI result, title/game result, or full-suite claim is made. The earlier de824/c392 results below retain their original pins.

Earlier frozen-main de824 qualification - 2026-10-31 (c392; historical)

Candidate c39227975df7b075570266202f9ff2dfac32bf49 (tree ebba59a7ec71ff21b56c6ef1baeb4f9fe19b19f3) is an ordinary merge of the previously prepared candidate bad0e6b2f515b7c3caa552a3f214ad02d400f996 followed by the frozen current-main snapshot de824c2919ca65086c6324a1e0388866a7327eea. Main had advanced 26 commits from c12e7e61; the relevant compiled-source refactor in ShaderInfoCollector.cpp changes generated SourceVersion, so the affected candidate target was rebuilt on each toolchain. The cache format remains 50, with 46 serialized ImageResource fields and the existing 96-byte native-size sentinel.

  • Windows, WinLibs GCC 15.2.0 r7, Release: the de824 control (be914c6613250040ffc8a75f84da47723248d4c8) and candidate c392 each configured and built agc_shader_disk_cache_tests and agc_driver_prepared_shaders_tests successfully. Each default cache-fixture run passed once. Each agc_driver_prepared_shaders_indirect CTest passed once on the RTX 4080 SUPER under the existing GPU lock and pinned Khronos validation environment. Logs show three Khronos instance and three device insertions per arm, no missing requested-layer diagnostic, no VUID-, no skip, and a released lock. The two -Wstringop-overread warnings are present in both build logs; they are not candidate-only. An unrelated extern warning also appears in both logs.
  • Ubuntu 22.04, GCC 11.4, Release: candidate c392 built agc_shader_disk_cache_tests and the default fixture passed once. Its tree is byte-identical to Linux overlay-control commit 11359a93130643f3f0194cd776101010ce9359ce; with the same compiler/build settings and 31 initialized submodule pins, this one execution serves both source roles, not two independent runs. The generated SourceVersion is 0xe3df2eaa97cb77be.
  • Total: five new executions for the de824 refresh: two Windows control, two Windows candidate, and one Linux shared-tree run. The earlier three codec modes and pack-ownership check remain pinned to the separate c12e/bad0 qualification below. No Linux GPU run, hosted-CI result, title/game result, or later-live-main qualification is claimed. The full inherited Linux process environment was not captured; relevant explicit mode variables and raw outputs are recorded.
  • The unmodified-main GCC 11 assertion failure remains supported only by the earlier same-translation-unit evidence; no unmodified de824 full-tree failure run or new size measurement is claimed. The Linux de824 run uses the reviewed single-assertion guard overlay, with other sentinels active.
  • A current exact-path review enumerated 1,558 open PRs and captured 90 selected file patches across 58 other PR heads. None duplicates the new drawKeyMemo omission or meshWindowBuffer equality/key-sensitivity fixture assertions. Thirteen patches mention meshWindowBuffer serialization already present in de824. The one shared production line is the narrow RecompileResult assertion guard in feat(agc): sample 1D arrays past maxImageArrayLayers as rows of a 2D image #12246; agreed coordination is fix(recompiler): check the encoder struct sizes only where they were measured #12250 first, then feat(agc): sample 1D arrays past maxImageArrayLayers as rows of a 2D image #12246 rebases and drops that duplicate guard. This is scoped duplicate-behavior evidence, not blanket overlap clearance.
  • The feat(agc): test the depth bounds in the pixel program when the device lacks the depthBounds feature #11551 author agreed to the preferred feat(agc): test the depth bounds in the pixel program when the device lacks the depthBounds feature #11551 → fix(recompiler): check the encoder struct sizes only where they were measured #12250 sequence and discussed reverse composition (comment). No feat(agc): test the depth bounds in the pixel program when the device lacks the depthBounds feature #11551 source is included and no combined v51 qualification is claimed. Depends on: none remains the code-dependency declaration.

Earlier frozen-main v50 qualification — 2026-10-31 (c12e/bad0; historical)

Candidate bad0e6b2f515b7c3caa552a3f214ad02d400f996 (tree 23c9807f5bfe405e5940c831f6a036043c1d6599) is an ordinary two-parent merge: prior public PR head af8bc35724893cd0a084cafab2d068ce866c26ee, then frozen main c12e7e61a185261d837b6fb2ff1c92a07a00e5ff. This qualification is bound to that frozen main snapshot, not a later live main tip.

  • Windows, WinLibs GCC 15.2.0 r7, Release: the frozen-main control with the identical test-only fixture overlay (c0c6c1b852297cfd1388c23705c4a12cc87fd017) and the candidate each passed four CPU checks: default fixture mode, --artifact-codec, --resource-plan-codec, and agc_shader_disk_cache_pack_ownership. Each arm also passed one agc_driver_prepared_shaders_indirect CTest on the RTX 4080 SUPER under the existing GPU lock and pinned Khronos validation setup. Actual instance/device layer insertion was captured; no skip, missing requested-layer message, or VUID- was found. Total: 5/5 checks per arm.
  • Ubuntu 22.04, GCC 11.4, Release: candidate agc_shader_disk_cache_tests build passed. Default, artifact-codec, resource-plan-codec, and pack-ownership checks each passed once. The Linux guard-overlay control (56e21714287a3904d4e90bc97bc87f0062a9f304) has the identical tree as the candidate, so this was one Linux build and four executions serving both source roles, not two independent runs. Its 31 initialized submodule pins matched the recorded checkout baseline.
  • The unmodified frozen-main GCC 11 assertion failure is supported by the earlier same-translation-unit log: the relevant Recompiler.hpp and ShaderDiskCache.cpp blobs are identical at that recorded head and c12e7e61. The current Linux control applies only the reviewed fixture and single-assertion guard overlays. No new full-tree build of unmodified c12e7e61 or fresh 592-byte measurement is claimed.

There were 14 unique local executions across both Windows arms and the single Linux tree. No Linux GPU test, hosted-CI result, title/game result, or blanket overlap/readiness clearance is claimed. The Windows control configure transcript has no numeric exit capture and its standalone build stdout is absent; generated targets and the saved numeric build exit are successful. The full inherited Linux process environment was not snapshotted; exact argv/cwd and explicit mode environment changes are recorded. Historical results below remain tied to their original source pins.

Earlier pinned evidence (unchanged)

The sections below preserve their original source pins and scope. Statements about then-current heads, overlap, approvals, or proposed ordering are historical snapshots, not current status; the current #11551 order agreement is recorded above.

Current integration 881bfa72460361eb2ed747a2ae7ba932d37aea6b (tree 0fb4edb9c9423e0c07cdf6657526bd68306b5024), ordinary merge of frozen main fdd1753204a4732e1011539cc9d3bb69f70b27a6 into published f2210862935e033d3eed2c5b37f2fbc07e60a6f3:

  • Linux / WSL Ubuntu 22.04.1 / GCC 11.4.0 / Release: restoring only main's ShaderDiskCache.cpp makes its actual translation-unit build fail at line 90's sizeof(RecompileResult) == 552 assertion. Restored the exact candidate, built the real agc_shader_disk_cache_tests target with --parallel 2, then ctest --test-dir build -R '^agc_shader_disk_cache$' --repeat until-fail:3 -V passes all three runs (1.97 seconds). This directly exercises the affected compiler; no fresh 592-byte measurement or Linux GPU result is inferred.
  • Windows 11 / WinLibs GCC 15.2.0 r7 / Release: built agc_shader_disk_cache_tests and agc_driver_compute_pipeline_outside_gpu_mutex_tests on both frozen main and the candidate. Both use the identical memo fixture bytes (488f99a7d60d858e923f1bef4ef1de1122c9bb04cb8f8f2d7fd8201d04166f19); main's original fixture was restored byte-for-byte afterward and its checkout was verified clean.
  • On NVIDIA GeForce RTX 4080 SUPER, driver 32.0.16.1742, both arms pass two selected CTest cases three times each: ctest --test-dir build -R '^(agc_shader_disk_cache|agc_driver_compute_pipeline_outside_gpu_mutex)$' --repeat until-fail:3 -V, under the existing exclusive GPU lock, ANYPS5_REQUIRE_VULKAN=1, ANYPS5_NO_SHADER_CACHE=1, VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation, the existing build-runtime/claude-vvl setup and loader diagnostics. Each arm proves six instance and six device insertions of the Khronos layer, no missing-requested-layer message and zero VUIDs. Both logs retain the same six ancillary AMD implicit-layer vkGetDeviceProcAddr diagnostics. The CPU cache case itself creates no Vulkan device; the companion case compiles and executes actual shaders on the selected NVIDIA GPU. This is fixture coverage, not a title result or runtime GPU fix.
  • The owned guard and seven fixture lines are unchanged. Exact used dependencies match the frozen source pins; accepted source/binary/library hashes and prior outputs are preserved. After restoring the candidate, both cases pass three more runs (9.56 seconds), again with six instance/device validation insertions and zero VUIDs. Conventions and independent source/result review pass.

A private #9508 cache/guard composition on frozen main d65bff2679 is now tested at c9dbc8d046 (tree 55b8b322a2601f0ac5f938eec1ac57581e8119f3): Windows/GCC15.2 control and composition each pass three cache runs; Linux/GCC11.4 control fails the actual unguarded 624-byte assertion and composition passes three runs. The identical fixture retains populated-memo omission and adds nondefault heap-field round trips. This is CPU cache/compiler coverage, not GPU/performance validation or a new measurement of the supported Linux ABI size table. Public branches are unchanged. At this historical snapshot, #9508 and #11551 sequencing were unconfirmed. Later, the author of #11551 agreed to the preferred #11551 → #12250 sequence and discussed reverse composition (comment #6519481893). That agreement does not import #11551 into this candidate or make the two tested source pairs equivalent. Other changed/new bot scopes remain pending. Historical approval and maskym's joint-tree report below retain their original pins and limits; no current-head approval or all-comments-complete/readiness claim is made.

Earlier integration and tester evidence follows:

Published integration f2210862935e033d3eed2c5b37f2fbc07e60a6f3 (tree ce9a76a231ea220019510f042af5fcb6616d16c0), based on frozen main 319621ba2e578bd053b0baba2877fe70520e0737:

  • Windows 11, WinLibs GCC15.2.0-r7, Release: agc_shader_disk_cache_tests built on both main and this integration with --parallel 2. Main used the identical seven-line memo fixture overlay, preserving all incoming main tests. The original main test source was restored byte-for-byte afterward.
  • On both arms, ctest -R '^agc_shader_disk_cache$' --repeat until-fail:3 -V passed all three executions with ANYPS5_REQUIRE_VULKAN=1, ANYPS5_NO_SHADER_CACHE=1, VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation and loader diagnostics. Both CPU logs contain no missing-requested-layer message and no VUID. This cache test does not exercise a Vulkan instance/device; no real-device validation or GPU-rendering result is claimed.
  • The fresh Windows pair exercises memo exclusion/decoding. Linux/GCC11 was not tested in this batch, and Windows does not exercise the Linux-only sizeof guard. The earlier GCC11/control evidence below remains historical. No new console, combined-feat(agc): test the depth bounds in the pixel program when the device lacks the depthBounds feature #11551 or external tester configuration is claimed.
  • Conventions, independent integration source review and independent paired-result review passed. The source change remains two files, eight insertions and one deletion.

External tester provenance remains separate: maskym's report applies to old head 572692c05e, main 3b979d42a9, and the other PRs listed in that joint tree. Its NVIDIA comparison and shared baseline failure/validation messages are the tester's evidence, not a fresh isolated run of this integration; our acknowledgment retains that qualification.

Earlier published-head evidence follows:

  • Linux, WSL Ubuntu 22.04, GCC 11.4, Release, BUILD_TESTING=ON:
    • Without this change, libs stops at the assertion above.
    • With it, libs builds and agc_shader_disk_cache passes 3 of 3 runs.
  • Windows 11, WinLibs GCC 15.2.0 r7, Release, BUILD_TESTING=ON: libs builds, and agc_shader_disk_cache passes 3 of 3 runs on main and on this change.
  • Not run in those earlier local checks: Linux with GCC 12 or later, where these checks still apply. Those configurations were not rerun in this batch.
  • agc_shader_disk_cache creates no Vulkan device, and neither machine had the validation layer installed during those historical runs, so no Vulkan validation run was made then. python tools/check_conventions.py --base origin/main passes.

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: none
  • Fixes: none
  • Unblocks: none
  • GPUs tested: NVIDIA GeForce RTX 4080 SUPER; historical paired frozen-main/candidate agc_driver_prepared_shaders_indirect check at the previously published c392 source pin, with actual Khronos instance/device insertion. The new e450 qualification is CPU-only and creates no Vulkan instance; it adds no GPU or validation-layer-loading result. Driver and OS build were not captured in the historical run.
  • AI-assisted: yes

🤖 Generated with Claude Code

…measured

The sizes are those of libstdc++ with std::atomic<std::shared_ptr>,
which GCC 12 added. On GCC 11's libstdc++ AtomicSharedPtr falls back to a
mutex and a shared_ptr, so RecompileResult's draw key memo is 56 bytes
instead of 16 and the build stopped at the RecompileResult check, although
EncodeResult never writes the memo and the stored format is the same.
The round-trip test now checks that the memo is not stored.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.

Pull request Conflicting files (lines on main) Same exports Same new files
PR 9508 core/shader/recompiler/ShaderDiskCache.cpp L88-90
PR 10049 core/shader/recompiler/ShaderDiskCache.cpp L90-91
PR 11551 core/shader/recompiler/ShaderDiskCache.cpp L88-90
PR 14032 core/shader/recompiler/ShaderDiskCache.cpp L90-91

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 5609 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 5925 core/shader/recompiler/ShaderDiskCache.cpp
PR 6235 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
PR 6280 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 6412 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 6488 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 6858 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 6924 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 6959 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 6970 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 7223 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 7395 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 7622 core/shader/recompiler/ShaderDiskCache.cpp
PR 7642 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 7684 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 7689 core/shader/recompiler/ShaderDiskCache.cpp
PR 7694 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 8939 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 9183 core/shader/recompiler/ShaderDiskCache.cpp
PR 9356 core/shader/recompiler/ShaderDiskCache.cpp
PR 9387 core/shader/recompiler/ShaderDiskCache.cpp
PR 9457 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 9633 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 9749 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 9790 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 9852 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 9897 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 9969 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 10000 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 10193 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 10351 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 10489 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 10652 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
PR 10720 core/shader/recompiler/ShaderDiskCache.cpp
PR 10846 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 13774 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 13928 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp
PR 13929 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
core/shader/recompiler/ShaderDiskCache.cpp

@github-actions github-actions Bot added shader core/shader agc libSceAgc* labels Oct 28, 2026

@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.

The compile-time size guard now runs only where its measured libstdc++ layout applies, and still enforces the same sizes for std::atomic<std::shared_ptr> builds. The added round-trip test verifies that a populated process-local draw-key memo is neither serialized nor restored. The reported GCC 11/Windows runs and all current hosted build/relinker checks pass. No blocking issue found.

@maskym

maskym commented Oct 28, 2026

Copy link
Copy Markdown
Contributor

Windows + NVIDIA result for head 572692c05e, merged into main 3b979d42a9 (the PR's GPUs tested line names no NVIDIA run on Windows).

This PR's own tests: agc_shader_disk_cache (2.68 s), _long_paths, _host_stderr and _large_file, all passed.

Host: Windows 11 26300, Intel i7-12700K, NVIDIA GeForce RTX 2070 SUPER (vendor 0x10de, device 0x1e84; Vulkan loader 1.4.357 from the NVIDIA driver 621.01), Khronos Validation Layers nightly 1.4.366 (b2b44c0d37) through VK_ADD_LAYER_PATH, WinLibs GCC 15.2.0 (x86_64-ucrt-posix-seh, r6), Release, BUILD_TESTING=ON, Ninja. Build clean.

Same focused run on main 3b979d42a9 and on this tree, same machine and GPU: VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation, ANYPS5_NO_SHADER_CACHE=1, ANYPS5_REQUIRE_VULKAN=1, VK_LOADER_DEBUG=error,warn,layer, ctest --test-dir build -R '^(agc|guest_video_out|video_out)' --parallel 4 -V.

The tree also carried the open PRs #12298, #12272, #12262, #12256, #12234, #12228, #12211, #12210, #12209, #12208, #12207, all merged cleanly, so the run is a joint one. Not run on a PS5.

AI-assisted: yes (Claude Code), the runs and the numbers above are from this machine.

@B-Howell

Copy link
Copy Markdown
Contributor Author

@maskym Recorded your Windows/NVIDIA comparison for 572692c05e against main 3b979d42a9. The four PR-specific cache tests passed in your report; the wider joint tree had the same mesh-barycentric failure and existing validation messages as your baseline, with no new VUID reported.

This is your external test evidence, including the other PRs listed in that joint tree; I have not rerun that configuration or attributed its full result solely to this patch. The PR's GPUs tested: n/a describes this compile-time change's own GPU-independent requirement. Your additional real-device comparison is recorded separately here. I should have acknowledged it earlier.

AI-assisted: Codex.

@B-Howell

B-Howell commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor Author

Manual follow-up to the skipped comparisons in the overlap report (comment6461320271). Target head: 572692c05eaf7dd4a45155e48f827b1dfcb49e5d.

Reviewed the listed shared-file patches for all 20 candidates, including refreshed #9852 at 470cbe5b01a3d55e2698086ecb47059f3ded6b73. The table records scoped patch dispositions and integration requirements, not a blanket no-overlap conclusion.

The important merge seam is the platform/sizeof assertion block shared with #5609/#5925/#6412/#6970/#7642/#9356/#9387/#9508/#9852/#10049/#10193. Preserve each candidate's correct size values within the new atomic_shared_ptr guard; retain field-count and encode/decode checks outside that ABI-only guard. Test fixtures and verifyResultRoundTrip must keep both new metadata coverage and the rule that drawKeyMemo is not persisted. #11551 remains the separately reported compared overlap; this reply does not dismiss that finding.

The cache source/test patches in this review are complete. The ShaderResources.cpp full-source reconstruction used for the separate #12246 review is outside this PR's listed shared-file scope. No pairwise merge or combined build/test is claimed. Existing CI, current-head validation, dependency coordination and re-review obligations remain separate.

Candidate heads, shared files and manual dispositions
Candidate Reviewed head Shared files Disposition
#5609 09238da8206e0aa70d8966c69f822c297da36308 ShaderDiskCache.cpp, ShaderDiskCache.cpp Extends requireSameResult/sampleResult for shaderDataUserWords/bufferBaseSlots; sizeof RecompileResult/BindingAllocationResult changes; EncodeResult/DecodeResult append those distinct fields.
#5925 3339ddd3af77cfc336148966657c0d14e87b6ae1 ShaderDiskCache.cpp Changes CompiledShaderArtifact/RecompileResult sizes and DecodeResult owner/Reader construction; does not duplicate the feature-macro guard or memo-exclusion assertions.
#6235 911920f04450f7e063235a988fe79681d210e261 ShaderDiskCache.cpp Extends verifyKeySensitivity for raw32 attachment output type; no target test duplicated.
#6280 0e1f2ab53b596a4d33ec8426097bda2c05b82068 ShaderDiskCache.cpp, ShaderDiskCache.cpp Adds ImageResource.levelUses test sample, field count, and symmetric image codec entries/minimum bytes.
#6412 c050c17557af9c9dd4275b97c8adcb9586a66c5c ShaderDiskCache.cpp, ShaderDiskCache.cpp Adds bufferDescriptorStatus/deferredTypeFaultsOnly/deferredTypeValidation comparison samples and serialization, with DescriptorBinding size assertion updates.
#6488 a48c5a7c7321f1b47ae02a44fb110982e9a26770 ShaderDiskCache.cpp, ShaderDiskCache.cpp Adds verifyLaneTablePlanModes and laneKey/implicitDerivatives TableColumn codec/field-count changes.
#6924 d36ab7db8e3195a68b799e9ef8428e11c75785c8 ShaderDiskCache.cpp, ShaderDiskCache.cpp Adds specialized module/binding-plan codecs, keys, DiskStore jobs/load/write/eviction/counters, neutral switches and extensive specialized codec/key/damage/process/bounds/useCache tests; distinct from target drawKeyMemo exclusion. Adds field-count assertions outside the platform sizeof guard.
#6970 438978e2a4dcfffbbfdd2a26023f1969520f13a6 ShaderDiskCache.cpp, ShaderDiskCache.cpp Changes DescriptorBinding sizeof plus Reader/Writer Flags to ElementFlags; adds verifyElementFlags and main registration. Preserve alongside memo-exclusion assertions in verifyResultRoundTrip.
#7642 67c1aea6b83e15cf83c9c3a39879044a7e33c7c8 ShaderDiskCache.cpp Changes platform sizeof assertions and image/resource/invocation/layout codecs for GPU-resolved/device image tables, heapSlotWords, data-address push and BDA stores.
#7684 cbc4606a7906e51c379f8d9552449584398e9e31 ShaderDiskCache.cpp, ShaderDiskCache.cpp Adds TableColumn.allOnesKey sample/comparison, field count and symmetric plan codec fields.
#9356 f49a25ae9f036a1d27e6418faeac7c812be5773e ShaderDiskCache.cpp Changes CompiledShaderArtifact/RecompileResult sizeof values; adds symmetric meshRecordLayout codec entries.
#9387 73641399d35dafa6576e1c974bff65e207f1bd20 ShaderDiskCache.cpp Scoped cache patch matches #9356: sizeof updates and symmetric meshRecordLayout codec entries; no target feature guard duplicate.
#9508 6275369b6ccca5d093129e77c5d739f34cf0fa9f ShaderDiskCache.cpp Changes platform sizeof assertions and heap/GPU-resolved artifact, invocation and layout codecs; related but not identical to #7642/#10193 device-table extensions.
#9852 470cbe5b01a3d55e2698086ecb47059f3ded6b73 ShaderDiskCache.cpp, ShaderDiskCache.cpp The test-file hunks are disjoint: #9852 extends sampleBinding, binding-plan access-metadata assertions, and handBuiltPlan BufferResource fixture; #12250 extends verifyResultRoundTrip to assert drawKeyMemo is omitted from persisted RecompileResult. ShaderDiskCache.cpp changes are also different areas: #9852 updates DescriptorBinding/BufferResource encoder fields and counts; #12250 adds __cpp_lib_atomic_shared_ptr to the guard around Linux ABI sizeof assertions. Keep the guard narrow to ABI size assertions; it must neither suppress the fieldCount/encode/decode checks nor alter the drawKeyMemo omission contract. No behavioral conflict in cache payload semantics identified.
#9889 68a68256b3e322dc1a15f017206e6dcebf497312 ShaderDiskCache.cpp, ShaderDiskCache.cpp Adds gathered image sample, ImageResource field count and image codec entries.
#9897 7ecf14ef124094e993240cb2fa04ae26ea4c34cf ShaderDiskCache.cpp, ShaderDiskCache.cpp Adds bufferVertexExtent/vertexExtent samples/comparisons and symmetric binding/buffer codecs/field counts.
#10049 6d3bc5e2a134633b85c0469efc4a2b3078bed476 ShaderDiskCache.cpp, ShaderDiskCache.cpp Adds imageRead binding sample/comparison/codec and DescriptorBinding sizeof update.
#10193 7880ded9daac0e71bfc35b1015c16893d193da29 ShaderDiskCache.cpp Shared ShaderDiskCache.cpp patch is byte-identical to reviewed #7642 patch (SHA256 16945b06322fb9db551712cedfc436bfe056d7b08e423dfc4ea052e10b368578); same integration seam, not target behavior duplication.
#10652 3036ca6a5bd427c7790cd9a14182ca737635cc25 ShaderDiskCache.cpp Adds imageAtomicStoreBarriers sensitivity assertion to verifyKeySensitivity only.
#12051 f5cf0db16c28ee4a7575c7cd1dda342fd01a9fe6 ShaderDiskCache.cpp Adds four table-column memo controls to NeutralSwitches; distinct from target draw-key memo exclusion and atomic shared_ptr feature guard.

AI-assisted: yes (Codex).

Bounded shared-cache refresh (bot snapshot 2026-10-29 23:48:58 UTC)

This supplements the historical 20-row table above for published #12250 881bfa72460361eb2ed747a2ae7ba932d37aea6b. The bot still lists 20 rows: #7689 and #11551 replace #9852 and #12051. Disappearance from this table is not evidence of landing or compatibility. This pass examines only #7642, #10049 and newly listed #7689; the separate #11551/#9508 follow-ups retain their own scope.

Candidate examined Complete shared patch Integration requirement
#7642 20adb283f5449fd9170f51213cfba47f6446cb3c (open) Production cache +68/-11, 13 hunks; byte-identical to the previously reviewed 67c1aea6b83e15cf83c9c3a39879044a7e33c7c8 shared patch. Preserve the atomic-shared-pointer feature guard around ABI-only sizes. Its older size/schema context is not directly reusable: e.g. its ImageResource count changes 43→44 whereas #12250 already has 45. Reconcile all current fields, keeping field counts unconditional. Preserve both ordered encoder/decoder sides for GPU-resolved artifact fields, heap-slot/user-data/device-interface invocation metadata, address/slot/layout metadata, and device-image uses. Retain reader element-size bounds.
#10049 3974b129210dba38f03ef58315afe3fea9cb1aab (open) Production +3/-1, 3 hunks; fixture +2/-1, 2 hunks. Relative to reviewed 6d3bc5e2a134633b85c0469efc4a2b3078bed476, changed context incorporates main's artifact288/result552 sizes and fixture offsets; added/deleted codec and fixture lines are unchanged. Keep imageRead Flags after bufferExtent on both codec sides, its seeded nondefault fixture value and comparison. Reconcile DescriptorBinding size within our feature guard, without discarding other binding fields. Author's current-main report is their report, not execution of a #12250 combination.
#7689 717eabfe5a3c9a0a37d3917b0352b43ccd43abf3 (open; new row) Production +9/-5, 7 hunks; no shared cache-fixture patch. Preserve bufferDeferredTypeFault Flags after bufferExtent and deferInvalidBufferTypeFaults Flags before dispatchThreadLimit on both codec sides; keep ShaderInfo field-count checks unconditional and reconcile ABI sizes inside our guard. These are distinct from #10049 imageRead and #7642 device-image fields: if composing them, choose an explicit matching codec order and recalculate aggregate sizes/counts, rather than reusing each branch's independent numbers. Add nondefault round-trip checks for the new fields while retaining the populated drawKeyMemo omission regression.

For #7689, the reviewer and author explicitly identify FormatVersion 49 reuse as outstanding. #12250 also has 49; #10049 proposes 50 and #7642 proposes 62. A composition must reserve the appropriate distinct version after reconciling the actual landed schema; this review does not reserve a number or establish an order. The separate #7689/#12039 sequence agreement is not an agreement with #12250.

All three source changes are distinct from #12250's ABI guard and transient-memo exclusion. Keep the existing seven-line populated-drawKeyMemo regression (including unchanged encoded bytes and empty decoded memo) alongside persistent-field coverage. This is a bounded source comparison, with complete shared-patch hunk spans and change counts verified; no pairwise build, runtime, GPU, performance, author-consent or landing claim. The other retained rows' current heads were not refreshed here. The private #9508 CPU comparison does not clear them or these three integrations, and this source snapshot does not approve future heads or the whole bot table.

AI-assisted: yes (Codex).

October 30 bounded bot-delta source follow-up

The 02:06:13 UTC capture of bot comment6461320271 has 23 skipped rows. Its refreshed 02:28:36 capture has the same 23 candidates and shared paths, now one compared #9508 cache-size conflict plus 22 skipped rows. Against the preceding 20-row refresh, the new rows are #6959/#10846/#12764; #7642 also moved. The published target remains 881bfa72460361eb2ed747a2ae7ba932d37aea6b. Earlier scoped reviews retain their pins; metadata freshness alone does not retarget them.

Here “production” means core/shader/recompiler/ShaderDiskCache.cpp; “fixture” means core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp. All listed patches have complete change-count and hunk-span checks.

Candidate / exact current head Scoped source delta and concrete integration requirement
#6959 72e86ff5d3259c19500cb4650d7863104f0abc1d Production +2/-0 in 2 hunks adds symmetric layerReplaySafe artifact encoding/decoding. Fixture +5/-0 in 5 hunks seeds/compares windowLaneGuards and layerReplaySafe, and seeds image targetMerge. Preserve these persistent-field checks alongside the populated drawKeyMemo omission checks. Its header proposes format 50; this does not reserve that number against other open schemas.
#7642 ba06ceb133dbf98786d7d5ed0d8b9e9f7e1fbb81 Production +68/-11 in 13 hunks. Versus reviewed 20adb283f5449fd9170f51213cfba47f6446cb3c, codec change lines are identical after excluding assertions, but this is not offset-only: proposed artifact/result sizes are now 304/688 instead of 296/680, and ImageResource count is 46 instead of 44. Preserve the device-image/invocation/layout codecs and element-size bounds; recompute final supported-platform layouts inside our feature guard, retaining unconditional schema counts.
#10846 3e250e253864ba44d0363350c0155a32f8c171ca Production +16/-4 in 8 hunks adds symmetric TableColumn buffer/pointerKeyed encoding, increases the descriptor-source minimum encoded size, and rejects invalid nested relationships. Fixture +101/-2 in 10 hunks adds nested image/sampler/pointer-table plans, child/pointer-only reuse invalidation, malformed-plan rejection, nondefault flag round trips and spanTableWaves key sensitivity. Retain all these checks and both codec fields; reconcile actual sizeof/field counts with our narrow ABI guard. Header proposes format 61.
#12764 83d6bafdce65aa2ddaf7e0629bdcf38b249a2ed4 Production +2/-0 in 2 hunks adds symmetric scratchPoolSlotDwords artifact serialization. No shared cache-fixture change; its exact header still declares format 49. Before composing this schema, use an appropriate distinct format version and add a nondefault slot-field sample/comparison through the result round trip; retain transient-memo exclusion. A source comparison does not validate its scratch execution.

The separate #9508 receipt already pins its current 82f76ffa75e602afeab412e9f025d7f4a84dd6e9; #11551 remains 5a15547d3950be8f804f0d973edaf1a7b8ab491f. Their previous scope and unanswered order proposals remain separate. The existing #7689 format-49 collision and other version/order limits above remain; no number or author agreement is established here.

I also inspected the proposed target af8bc35724893cd0a084cafab2d068ce866c26ee (tree b6829a324033f58985415796f0ed6a3e99d5cd47, main 08a10d225306ad102b57408e2ef7566bcfb829b2). It preserves the ABI guard and memo-exclusion additions, and adds three fixture changes: a true meshWindowBuffer sample, artifact comparison reached through requireSameResult, and request-key sensitivity. Preserve those alongside the fields and nested-plan cases above. This future-target source inspection is not a bot comparison or runtime qualification of that head or any open-PR composition.

No build, GPU run, pairwise merge, performance, console, author-consent or landing result is claimed by this bounded source follow-up. The whole table and future heads are not cleared, and no mandatory implementation dependency follows merely from sharing these files.

AI-assisted: yes (Codex).


Bounded graphics shared-source follow-up

Owned #12250 remains af8bc35724893cd0a084cafab2d068ce866c26ee. This follows only the captured05:35 bot membership/path delta and the exact selected paths below; retained rows and historical test/review pins are not refreshed or cleared. No build, runtime, combined merge, foreign implementation, author order/dependency agreement or whole-table readiness claim follows.

Candidate / frozen head Selected shared path Preservation disposition
#7642 d933a0eade249705dd468958791353741df9d1a4 core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp Populates deviceImageTables/deviceImageInterfaces/deviceSamplerClasses in sampleResult and deviceTable in sampleVariant; adds equality checks to requireSameArtifact/requireSameResult. Compose nondefault device-table comparisons with our meshWindowBuffer=true/equality and mesh-window request-key change case, and retain the populated drawKeyMemo EncodeResult byte equality plus null decoded memo. These runtime-only memo assertions must remain distinct from serialized device metadata; the shared test additions alone do not prove unshared encoder/request/plan-key implementations or a combined roundtrip.

Earlier7642 CMake/core-cache source dispositions do not establish this newly listed AGC test-file coverage. This is a test-source composition finding at the frozen pin, not execution of its device-table path or reuse of the old CPU/private-composition result.

A single end metadata check found the four candidate heads and both owned heads unchanged/open. Actual selected patches were reconstructed from immutable merge-base/head source; no unshared paths were reviewed.

AI-assisted: yes (Codex).


Follow-up, 2026-10-31 - source disposition for new compared rows #13928 and #13929

The current overlap report lists #13928 at head de14864edf9f6f626afd0b057f208c1942998aae and #13929 at head 87d9bdfdc053813e2e561c5d2a3e0ddb3ae47ace. Both selected core/shader/recompiler/ShaderDiskCache.cpp paths have the same file blob d001105438cdbf86d38a542606386e6d1faad50a, based on blob a564f915631d0b189b726d6c9fe123e46bd9305b; that base blob also matches the frozen de824c2919ca65086c6324a1e0388866a7327eea file. The current #12250 target c39227975df7b075570266202f9ff2dfac32bf49 has file blob 4362b51e49f3cb3f05748245870fed7ba05f269f.

In the shared Linux/x86_64/libstdc++ size-sentinel block, these heads change RecompileResult from 552 to 688 and update other native-layout sentinels; their file changes also add corresponding device-image/result/invocation/layout codec fields. #12250's current source wraps only its RecompileResult == 552 assertion in defined(__cpp_lib_atomic_shared_ptr). This is a shared assertion/codec-file composition point. Neither selected patch contains drawKeyMemo, so this overlap does not duplicate #12250's memo-omission test behavior. A future composition must retain the added codec fields and matching size values while keeping the portability guard limited to the RecompileResult size assertion. No merged composition, combined build/test, runtime result, or whole-PR overlap clearance is claimed.

@B-Howell

B-Howell commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor Author

Follow-up to the actual compared conflict in overlap comment 6461320271, for #12250 at head 572692c05eaf7dd4a45155e48f827b1dfcb49e5d.

I reviewed the fresh #11551 patch at head 5a15547d3950be8f804f0d973edaf1a7b8ab491f against the scoped ShaderDiskCache.cpp patch.

#11551 changes the Linux/libstdc++ ABI size expectations for CompiledShaderArtifact (288→296) and RecompileResult (552→560), increments the ImageResource serialization field count 45→46, and adds depth-bounds values to artifact, binding-layout and image-resource encode/decode. #12250 narrows the platform guard around the ABI-dependent sizeof assertions using __cpp_lib_atomic_shared_ptr and tests that drawKeyMemo remains omitted from RecompileResult persistence.

I propose #11551 → #12250: first integrate the new cache fields and revised size expectations, then apply #12250's compiler/library guard to those updated assertions. Keep the guard limited to ABI-size checks; retain the fieldCount assertions and the encoder/decoder fields. The depth-bounds fields should roundtrip, while the memo omission assertion should continue to hold. This order is a proposal, not an agreement. #11551 itself declares #10351 → #11551 for cache-format ordering; that existing dependency must remain.

#12246 also changes the same file's ImageResource schema in its separate compared obligation. If those changes are composed on one branch, the pairwise #11551 + #12246 image field count is 49 from the shared 45-field baseline; both PR authors should coordinate codec ordering with the #12246 authors. This note does not establish an order between #12246 and #12250.

@imellag, I propose landing #11551 before #12250 so the updated sizes and codec are in place before narrowing the ABI guard. Please confirm or suggest another order; I will record the dependency only after agreement.

These notes do not establish a clean merge or passing combined build/roundtrip test. Combined Linux/GCC 11 and supported-toolchain checks remain outstanding. The separate #12246 re-review block is not cleared by this comparison.

Existing prerequisites and orders remain untouched, including #11551's body-reported #11507-first order, #10773 before #9884, #7085's #6280/#9999 requirements, and #10064's recorded prerequisites. The 49-field calculation above applies only to #11551 + #12246; composing #7085's additional levelUses field as well gives 50 on that same 45-field baseline. Neither count is a claim that the combined branch has been built or tested.

AI-assisted: yes (Codex).

October 29 current-main and #9508 compared-scope follow-up

Current integration 881bfa72460361eb2ed747a2ae7ba932d37aea6b (tree 0fb4edb9c9423e0c07cdf6657526bd68306b5024) ordinarily merges main fdd1753204a4732e1011539cc9d3bb69f70b27a6 into published f2210862935e033d3eed2c5b37f2fbc07e60a6f3. The owned feature guard and memo-exclusion fixture additions are unchanged; older evidence and approvals retain their declared pins.

The live bot now reports #9508 as the compared cache-file conflict. I read its complete listed core/shader/recompiler/ShaderDiskCache.cpp patch at 981351a3916b7a760a76dc2c2dcd95fd6a1aecf0, base 9624d8c6bb9e96b7aa92b815f55690f69b0a88d5. It changes seven ABI sizes (including RecompileResult to 624), adds GPU-resolved/sampler/buffer-address/artifact fields, heap-slot and user-data invocation fields, and matching layout encode/decode fields. Preserve those candidate-specific ABI numbers inside this PR's atomic-shared-pointer feature guard. Retain all candidate encoder/decoder additions, schema checks outside that ABI guard, and both metadata and memo-omission tests. If multiple metadata PRs are combined, verify the final actual merged layouts rather than choosing one historical size table. This scope does not validate #9508's implementation, reproduce its reported measurements, establish a clean combination or transfer our tests to it.

@Raghav314 For this shared cache/sizeof seam, I propose #9508 before #12250 so the later guard retains the resulting supported-toolchain sizes and codec. Please confirm or revise that order. This is a proposal, not consent or a declared runtime dependency. The prior #11551-before-#12250 proposal remains unconfirmed; #11551 stays at 5a15547d3950be8f804f0d973edaf1a7b8ab491f, and its existing prerequisites remain separate.

A bounded refresh of all 20 current bot heads identifies changed retained #7642 (20adb283f5449fd9170f51213cfba47f6446cb3c) and #10049 (3974b129210dba38f03ef58315afe3fea9cb1aab), plus #7689 outside the literal historical manual table. Those current patches remain pending; the old twenty-row report is not blanket-retargeted. #9852/#12051 no longer appear in this bot scope. No all-overlaps-clear, all-comments-complete, author agreement or readiness claim follows. Fresh local test results are separately recorded in the PR body after completion; no combined-open-PR result is claimed.

AI-assisted: yes (Codex).

Private #9508 cache/guard integration check — October 29

I composed frozen main d65bff2679b627e6c1dde84f2e95af0bece3c476, #9508 981351a3916b7a760a76dc2c2dcd95fd6a1aecf0 and this PR's published 881bfa72460361eb2ed747a2ae7ba932d37aea6b privately. Final comparison c9dbc8d04625ff5582dc3da00aa8e827c09eb80e (tree 55b8b322a2601f0ac5f938eec1ac57581e8119f3) differs from control c30cfbcb21d02497216ddb3557e3236314457e64 only by adding __cpp_lib_atomic_shared_ptr to the ABI-size guard. All #9508 size expectations, unconditional field-count assertions and encoder/decoder fields remain intact. No extra unmerged stack overlay was imported.

The same focused cache fixture on both arms retains the seven-line populated-drawKeyMemo omission regression and adds nondefault heap artifact fields, heap-slot words and binding-layout fields with comparisons. Windows 11 / WinLibs GCC15.2 r7 / Release: control and composition each build the actual cache target and pass three agc_shader_disk_cache runs (9.94s and8.01s). Linux / WSL Ubuntu22.04 / GCC11.4 / Release: the actual control ShaderDiskCache translation-unit build fails at the unguarded sizeof(RecompileResult)==624 assertion; the composition builds and passes three cache runs (2.22s). Both use SPIRV-Tools OFF; install/export behavior was not tested. Exact composed dependency pins were verified. These compiler/layout/cache results do not measure a new GCC11 size or independently validate #9508's Linux atomic-shared-pointer ABI numbers: Windows excludes the Linux block and GCC11 excludes it through the new condition.

The selected fixture exercises CPU cache codecs and creates no Vulkan instance/device. Required Vulkan environment flags were retained, and Windows used the existing exclusive lock, but no actual GPU validation or performance result follows. #9508's exact-head GPU/performance review5705690478 remains separate. Independent main buffer checks and both test insertions were retained when composing newer main conflicts; those GPU paths were not run by this cache fixture.

Public branches remain unchanged. Private passing tests do not establish author consent or a mandatory implementation dependency. The earlier #9508 order proposal remains unanswered; #11551's separate seam and other current overlaps remain outside this result. No all-overlaps-clear, readiness or full-suite claim.

AI-assisted: yes (Codex).

@B-Howell

B-Howell commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor Author

Focused qualification for af8bc35724893cd0a084cafab2d068ce866c26ee (published 881bfa7 + frozen main 08a10d2253), with no #9508 stack. Main still reproduces the GCC 11 ABI-size assertion; the feature guard/memo regression remain needed.

Windows 11 Pro 26300 / WinLibs GCC 15.2.0 r7 / RTX 4080 SUPER 621.01: main with an identical test-only fixture overlay and candidate each passed the cache CPU case and existing real-GPU compute-pipeline companion 3 times (6/6 per arm, 10.15/9.35 s). Required Vulkan/no-cache env and shared GPU lock used; actual Khronos instance/device insertions and NVIDIA selections are present, with zero missing-layer/VUID messages and the same loader warning/error sequence.

Ubuntu 22.04 / GCC 11.4: actual main translation unit fails sizeof(RecompileResult)==552; candidate cache test passes 3/3. New non-default mesh-flag round-trip/key assertions each fail the intended private control; restored exact candidate passes another 3/3. Original populated-memo omission remains checked; field-count assertions/codecs are unconditional.

This is focused main-refresh evidence, not #9508 GPU/performance qualification or blanket current-overlap approval. Historical results keep their original pins. SPIRV-Tools OFF; install/export not tested. Independent AI review passed for this focused change; maintainer review remains pending.

AI-assisted: Codex.


Follow-up, 2026-10-30 — fresh #11551/#12250 codec qualification

Ran a bounded private codec check for candidate 82c8e2c9b822cf0f03cf7f6bc49dd6b28834afae (tree 09c41f2afd72565ef940703af5caa61a0dea06ba; parents #11551 e8871dc8c64afe57d128cf037ff9c27cc5914678 then this PR's af8bc35724893cd0a084cafab2d068ce866c26ee). This candidate retains the v51 depth-bounds codec and adds the Linux libstdc++ feature guard; no schema or version change.

Windows: Windows 11 / WinLibs GCC 15.2.0 r7, Release. agc_shader_disk_cache_tests configure/build passed. Existing --artifact-codec and --resource-plan-codec modes each passed once.

Linux: Ubuntu 22.04 / GCC 11.4.0, Release. At exact #11551 control e887, the real <memory> feature macro __cpp_lib_atomic_shared_ptr is absent and the existing production target naturally fails at sizeof(RecompileResult) == 560. The candidate configure/build passed; the same two existing codec modes each passed once. The executable resolved libc.prx from the candidate build; artifact output reported format 51.

These are focused CPU codec checks, not GPU qualification or a new hosted-CI result. This evidence applies to the frozen v51 pair only. #10351's current author-order request may consume v51 and move #11551 to v52; a v52 composition is outside this qualification and would need its own source review and checks. No claim is made that this private candidate is the current public head or that the PR is ready/merged.


Follow-up — frozen-main v50 qualification, 2026-10-31

Candidate bad0e6b2f515b7c3caa552a3f214ad02d400f996 (tree 23c9807f5bfe405e5940c831f6a036043c1d6599) merges the prior PR head af8bc35724893cd0a084cafab2d068ce866c26ee with frozen main c12e7e61a185261d837b6fb2ff1c92a07a00e5ff. This is the v50 composition; no #11551 commit or v51 result is included. The #11551 author agreed to the preferred #11551 → #12250 sequence and discussed reverse composition in comment #6519481893.

Windows control (c12e with the identical fixture overlay) and candidate each passed the default cache fixture, --artifact-codec, --resource-plan-codec, agc_shader_disk_cache_pack_ownership, and one agc_driver_prepared_shaders_indirect CTest: 5/5 per arm. The GPU case ran on the RTX 4080 SUPER with actual Khronos instance/device insertion, no missing-layer message or VUID-, no skip, and the existing GPU lock released.

Linux GCC 11.4 candidate build and four CPU checks passed. The Linux guard-overlay control and candidate have identical tree 23c9807; one build/four checks cover both source roles, not two independent runs. The prior raw-main assertion failure is same-translation-unit evidence at byte-identical relevant source blobs, not a new full-tree raw-main build or a fresh size measurement. Overall this is 14 unique local executions. Hosted CI, Linux GPU, later live-main tips, and blanket overlap/readiness are outside this report.


Follow-up — frozen de824/c392 refresh, 2026-10-31

Candidate c39227975df7b075570266202f9ff2dfac32bf49 merges the previously prepared candidate with frozen current-main snapshot de824c2919ca65086c6324a1e0388866a7327eea. Windows control and candidate each passed one default cache-fixture run and one agc_driver_prepared_shaders_indirect CTest on the RTX 4080 SUPER. Both Vulkan logs show Khronos instance/device insertion, no missing requested layer, no VUID-, no skip, and the existing GPU lock released. Linux GCC 11.4 built and passed the default cache fixture once; its identical tree also serves the overlay-control role, so this was one Linux run. Total for this refresh: five executions.

The three codec modes and pack-ownership CTest remain historical c12e/bad0 evidence. This refresh is not a later-live-main, hosted-CI, title/game, or combined-#11551 qualification. The exact-path review found no duplicate fixture assertions; the one shared guard line with #12246 follows the agreed #12250-first/rebase-and-drop sequence.

AI-assisted: Codex.

@TechLevelZero

Copy link
Copy Markdown
Contributor

✅ NVIDIA GPU test: passed

PR head 881bfa7 merged onto main 76fd1c0 · tested 2026-10-30 03:08 UTC · 25 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,259 passed · 5 failed (0 new, 2 also fail on main, 3 unstable on main) · 41 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,305 of 2,949 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 (861 tests run on the GPU)
Slow tests (>30 s, GPU tests timed with validation layers) ⚠️ agc_driver_bda_device 53.4 s
Unstable on main (3, these also failed in recent main runs on this machine; not counted against this PR)
agc_driver_submit_progress: failed in 5 of the last 7 main runs
agc_submit_progress: failed in 5 of the last 7 main runs
agc_submit_progress_no_timeline: failed in 6 of the last 7 main runs
Failing on main too (2, not counted against this PR)
guest_mmap_executable
guest_socket_options_multicast
Validation IDs already present on main (4 IDs in 390 tests)
VUID-VkDeviceCreateInfo-pNext-pNext (390 tests): agc_compute_pipeline_replay, agc_driver, agc_driver_address_passes, agc_driver_address_passes_draw_transitions, agc_driver_address_passes_targets_split, agc_driver_alias_copy_label, agc_driver_array_layer_target_cpu, agc_driver_bda_span_reads_draw_pipeline, and 382 more
VUID-vkCmdCopyImage-srcImage-01548 (11 tests): agc_driver_depth_clear_hle, agc_driver_depth_plane_buffer_memory, agc_driver_depth_plane_cpu_write_after_memo, agc_driver_depth_plane_cpu_write_after_page_unwatch, agc_driver_depth_plane_cpu_write_after_partial_unwatch, agc_driver_depth_plane_partial_store, agc_driver_depth_plane_partial_store_unimported, agc_driver_depth_storage_dispatch, and 3 more
VUID-vkCmdCopyImage-srcImage-01551 (11 tests): agc_driver_depth_clear_hle, agc_driver_depth_plane_buffer_memory, agc_driver_depth_plane_cpu_write_after_memo, agc_driver_depth_plane_cpu_write_after_page_unwatch, agc_driver_depth_plane_cpu_write_after_partial_unwatch, agc_driver_depth_plane_partial_store, agc_driver_depth_plane_partial_store_unimported, agc_driver_depth_storage_dispatch, and 3 more
VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605 (2 tests): agc_driver_prepared_exports, agc_driver_srgb8_color_target
Skipped (41)
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_msaa_dcc_compared_import_2: skipped, the device reports host imports that keep write protection, so the write-watch probe compares none of them
agc_driver_msaa_dcc_compared_import_4: skipped, the device reports host imports that keep write protection, so the write-watch probe compares none of them
agc_driver_msaa_dcc_compared_import_8: skipped, the device reports host imports that keep write protection, so the write-watch probe compares none of them
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_driver_sparse_dma_buf_import: skipped, host imports are unavailable: /dev/udmabuf is not accessible
agc_driver_stencil_ref_export: skipped, the device lacks VK_EXT_shader_stencil_export
agc_driver_vertex_elected_atomic_max: skipped, the device runs vertex programs in subgroups, so they keep their cross-lane reductions
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_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_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 plat
Reproduce
git fetch origin 881bfa72460361eb2ed747a2ae7ba932d37aea6b 76fd1c09e9be0465d50a7431a79d371a5a10abb2
git checkout 76fd1c09e9be0465d50a7431a79d371a5a10abb2 && git merge --no-ff 881bfa72460361eb2ed747a2ae7ba932d37aea6b
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.

@imellag

imellag commented Oct 30, 2026

Copy link
Copy Markdown
Contributor

@B-Howell Fine with #11551 → #12250, as you proposed. #11551, rebased today onto main 98ddd9c179, still sets the two Linux size checks to 296 and 560 (main's 288 and 552 plus its 8 bytes). When #12250 rebases after it, the guard goes around those numbers. If #12250 lands first instead, #11551 keeps your guard and changes only the two numbers.

@TechLevelZero

Copy link
Copy Markdown
Contributor

✅ NVIDIA GPU test: passed

PR head af8bc35 merged onto main 98ddd9c · tested 2026-10-30 09:59 UTC · 23 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,283 passed · 3 failed (0 new, 2 also fail on main, 1 unstable on main) · 40 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,326 of 2,987 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 (861 tests run on the GPU)
Slow tests (>30 s, GPU tests timed with validation layers) ⚠️ agc_driver_bda_device 74.0 s
Unstable on main (1, these also failed in recent main runs on this machine; not counted against this PR)
agc_driver_submit_progress: failed in 5 of the last 8 main runs
Failing on main too (2, not counted against this PR)
guest_mmap_executable
guest_socket_options_multicast
Validation IDs already present on main (4 IDs in 390 tests)
VUID-VkDeviceCreateInfo-pNext-pNext (390 tests): agc_compute_pipeline_replay, agc_driver, agc_driver_address_passes_draw_transitions, agc_driver_address_passes_targets_split, agc_driver_array_layer_target_cpu, agc_driver_bda_span_reads_draw_pipeline, agc_driver_bindless_images, agc_driver_branch_past_endpgm, and 382 more
VUID-vkCmdCopyImage-srcImage-01548 (13 tests): agc_driver_depth_clear_hle, agc_driver_depth_plane_buffer_memory, agc_driver_depth_plane_cpu_write_after_memo, agc_driver_depth_plane_cpu_write_after_page_unwatch, agc_driver_depth_plane_cpu_write_after_partial_unwatch, agc_driver_depth_plane_partial_store, agc_driver_depth_plane_partial_store_unimported, agc_driver_depth_plane_sampling, and 5 more
VUID-vkCmdCopyImage-srcImage-01551 (13 tests): agc_driver_depth_clear_hle, agc_driver_depth_plane_buffer_memory, agc_driver_depth_plane_cpu_write_after_memo, agc_driver_depth_plane_cpu_write_after_page_unwatch, agc_driver_depth_plane_cpu_write_after_partial_unwatch, agc_driver_depth_plane_partial_store, agc_driver_depth_plane_partial_store_unimported, agc_driver_depth_plane_sampling, and 5 more
VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605 (2 tests): agc_driver_prepared_exports, agc_driver_srgb8_color_target
Skipped (40)
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_msaa_dcc_compared_import_2: skipped, the device reports host imports that keep write protection, so the write-watch probe compares none of them
agc_driver_msaa_dcc_compared_import_4: skipped, the device reports host imports that keep write protection, so the write-watch probe compares none of them
agc_driver_msaa_dcc_compared_import_8: skipped, the device reports host imports that keep write protection, so the write-watch probe compares none of them
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_driver_stencil_ref_export: skipped, the device lacks VK_EXT_shader_stencil_export
agc_driver_vertex_elected_atomic_max: skipped, the device runs vertex programs in subgroups, so they keep their cross-lane reductions
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_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_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_flip_labels: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is eithe
Reproduce
git fetch origin af8bc35724893cd0a084cafab2d068ce866c26ee 98ddd9c1792bbab016ceed5db267a93d1d61f00a
git checkout 98ddd9c1792bbab016ceed5db267a93d1d61f00a && git merge --no-ff af8bc35724893cd0a084cafab2d068ce866c26ee
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.

@TechLevelZero

Copy link
Copy Markdown
Contributor

✅ NVIDIA GPU test: passed

PR head c392279 merged onto main 828ac0b · tested 2026-10-31 11:01 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,319 passed · 6 failed (0 new, 2 also fail on main, 4 unstable on main) · 41 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,366 of 3,048 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 (866 tests run on the GPU)
Slow tests (>30 s, GPU tests timed with validation layers) ⚠️ agc_driver_graphics_maps_fallback 36.6 s, ⚠️ agc_driver_graphics 32.2 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 (4, these also failed in recent main runs on this machine; not counted against this PR)
agc_driver_depth_clear_hle: failed in 1 of the last 10 main runs
agc_driver_submit_progress: failed in 6 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 8 of the last 10 main runs
Failing on main too (2, not counted against this PR)
guest_mmap_executable
guest_socket_options_multicast
Validation IDs already present on main (3 IDs in 384 tests)
VUID-VkDeviceCreateInfo-pNext-pNext (384 tests): agc_compute_pipeline_replay, agc_driver, agc_driver_address_passes, agc_driver_address_passes_draw_transitions, agc_driver_address_passes_targets_split, agc_driver_alias_copy_label, agc_driver_alpha_to_coverage, agc_driver_array_layer_target, and 376 more
VUID-vkCmdCopyImage-srcImage-01548 (12 tests): agc_driver_depth_clear_hle, agc_driver_depth_plane_buffer_memory, agc_driver_depth_plane_cpu_write_after_memo, agc_driver_depth_plane_cpu_write_after_page_unwatch, agc_driver_depth_plane_cpu_write_after_partial_unwatch, agc_driver_depth_plane_partial_store, agc_driver_depth_plane_partial_store_unimported, agc_driver_depth_plane_sampling, and 4 more
VUID-vkCmdCopyImage-srcImage-01551 (12 tests): agc_driver_depth_clear_hle, agc_driver_depth_plane_buffer_memory, agc_driver_depth_plane_cpu_write_after_memo, agc_driver_depth_plane_cpu_write_after_page_unwatch, agc_driver_depth_plane_cpu_write_after_partial_unwatch, agc_driver_depth_plane_partial_store, agc_driver_depth_plane_partial_store_unimported, agc_driver_depth_plane_sampling, and 4 more
Skipped (41)
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_msaa_dcc_compared_import_2: skipped, the device reports host imports that keep write protection, so the write-watch probe compares none of them
agc_driver_msaa_dcc_compared_import_4: skipped, the device reports host imports that keep write protection, so the write-watch probe compares none of them
agc_driver_msaa_dcc_compared_import_8: skipped, the device reports host imports that keep write protection, so the write-watch probe compares none of them
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_driver_stencil_ref_export: skipped, the device lacks VK_EXT_shader_stencil_export
agc_driver_vertex_elected_atomic_max: skipped, the device runs vertex programs in subgroups, so they keep their cross-lane reductions
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_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_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_flip_labels: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is eithe
Reproduce
git fetch origin c39227975df7b075570266202f9ff2dfac32bf49 828ac0b2ae74aac181ba128fb59b08a1534f2041
git checkout 828ac0b2ae74aac181ba128fb59b08a1534f2041 && git merge --no-ff c39227975df7b075570266202f9ff2dfac32bf49
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.

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* shader core/shader

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants