Skip to content

fix(agc): emulate two-sample DB_ALPHA_TO_MASK 0xe701 dithered alpha-to-coverage - #10515

Merged
adriadam10 merged 1 commit into
boykopovar:mainfrom
JJenkx:fix/agc-two-sample-dithered-a2c
Oct 27, 2026
Merged

adriadam10 merged 1 commit into
boykopovar:mainfrom
JJenkx:fix/agc-two-sample-dithered-a2c

Conversation

@JJenkx

@JJenkx JJenkx commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

What

Bugsnax (PPSA01503) stops 14 s in, before its first frame:

terminate called after throwing an instance of 'std::runtime_error'
  what():  dithered or rounded alpha-to-coverage is unsupported (register 0x2dc = 0x0000e701)

The rejected draw has dithered alpha-to-coverage on a two-sample target (state in #9900):

  • DB_ALPHA_TO_MASK 0xe701: quad offsets 3, 1, 2, 3, no OFFSET_ROUND.
  • DB_SHADER_CONTROL 0x50: ALPHA_TO_MASK_DISABLE is clear, so alpha-to-coverage is in effect.
  • PA_SC_AA_CONFIG 0x108001 and DB_EQAA 0x101001: two samples.
  • PA_SC_AA_SAMPLE_LOCS_PIXEL_*_0 0xc44c: the locations (-4, 4), (4, -4).
  • MRT0 export: FP16_ABGR.

#4451 added the eight-sample default dither (0x18701) from a table measured on gfx1036. This value is a different offset set at a different sample count, so it cannot share that table.

This PR adds a two-sample table for 0xe701:

  • ditheredAlphaSamples (8 or 2) goes from the decoded state through the pixel context to StoreDitheredAlphaCoverage.
  • StoreDitheredAlphaCoverage picks the eight-level table at two samples. It indexes the table with floor(clamp(alpha, 0, 7/8) * 8) and the pixel's position in the 2x2 quad, as the 64-level table does.
  • The request keeps its byte layout. The existing dither byte now holds 0 (none), 1 (0x18701) or 2 (0xe701), and the serialization version goes from 45 to 46. A version 45 request with 2, or any request with a value above the version's maximum, is rejected.

0xe701 is accepted only in the measured state:

  • two matched raster and DB_EQAA samples with one pixel iteration;
  • the location pair (4, 4), (-4, -4) or (-4, 4), (4, -4) in every pixel;
  • an FP16_ABGR or 32_ABGR export.

Anything else throws with its own message. ALPHA_TO_MASK_DISABLE turns it off, as it does 0x18701.

Measurement

The table was measured natively on a Radeon RX 6650 XT (gfx1032), with RADV 26.2.4 built from source with a local patch. The patch lets an environment variable replace the offsets and OFFSET_ROUND that RADV programs into DB_ALPHA_TO_MASK; it is not part of this PR. A standalone Vulkan probe draws one 4x4 tile per alpha with alphaToCoverageEnable and RADV_DEBUG=novrsflatshading, then reads every sample back with texelFetch from a compute shader.

The sweep has 1163 alphas:

  • k/1024 for k = 0..1024;
  • the floats on each side of every k/64;
  • ±0, ±min denormal, ±inf, ±NaN, 2.0, -1 and the max finite value.

Each is drawn into RGBA16F and RGBA32F targets.

run result
control: RADV's own 0x18701, eight samples matches this repository's 64-level table, 1163/1163, FP32 and FP16
0xe701, two samples, RADV's locations (4, 4), (-4, -4) eight levels at exactly k/8; the model below matches 1163/1163, FP32 and FP16; a repeat is byte-identical
0xe701, two samples, the title's locations (-4, 4), (4, -4) through VK_EXT_sample_locations byte-identical to the previous row, two repeats each for FP32 and FP16

Masks per level, in pixel order X0Y0, X1Y0, X0Y1, X1Y1:

level 0 1 2 3 4 5 6 7
masks 0 0 0 0 2 0 0 2 1 0 2 1 1 2 2 1 1 2 1 1 3 2 1 3 3 1 3 3 3 3 3 3

NaN, negative values and -0 give level 0; values at or above 7/8, including +inf, give level 7.

The probe, the RADV patch, the raw outputs and the register capture are in 20261023-a2c-e701-two-sample.tar.gz.

Tested

Current Linux refresh: 2ff14f34e36610e8a02585b247c7c9240a5f1e5a is one linear commit on main c8d34aa8f4d8058d57169cc1e423ba6db00faaf0. Only the additive debt context conflicted; all 16 production/test added-and-removed-line sequences match original head bb2e64983cf97fd13cb19bc44d32aba44eb60a56 exactly. Main's adjacent single-sample/depth debt update is retained. Fresh full libs/relinker and focused-fixture builds pass on both arms.

The same focused set is 10 tests on plain main and 11 on the change (the extra two-sample case): all pass three repeats, no skips, zero VUIDs, with ANYPS5_REQUIRE_VULKAN=1, ANYPS5_NO_SHADER_CACHE=1, VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation, MESA_SHADER_CACHE_DISABLE=true and ctest -V. The actual Khronos layer loads on every repeat of five physical tests on main and six on the change; mock state, shader-IR and serializer checks are CPU-only. A fresh private negative control forcing the eight-sample table fails the two-sample pixel comparison three times without a validation error. Restoring the exact clean source and rebuilding makes both dither modes pass three repeats each, again with zero VUIDs.

Fresh native PPSA01503 checks reuse the four existing bundled modules, including root FMOD modules through --module-dir ., with independent writable seeds/caches and the same scheduled input route (main aborts before its first pulse). Plain main aborts with exit 134 at about 13s on unsupported 0xe701, before a frame was verified. The change renders the title/foliage, reaches New Game/save-slot selection, and is in the rainy first-person opening at 305s; ordinary window close at 310.6s gives exit 0. Both runs actually load the validation layer and have zero VUIDs. Configuration/saves and three copied seed files are restored, the five shared raw ELF inputs hash unchanged, and no game PID remains. No kernel GPU-fault/reset entries appear in the bounded test window. The run does not establish later tutorial/bridge completion, audio, movement verification, an FPS comparison or a new furthest point beyond earlier reports. #10581 and other local fixes are not included.

Conventions against current main have zero errors and one warning for the touched long alpha debt entry; origin/main comparison has zero errors and seven debt-length warnings. Whitespace and current-main merge checks pass. Per-arm builds, complete focused logs/JUnit, negative control, native reports/reviews, selected screenshots and patch (SHA-256 34fe21fd4ab1ddc6066d92f50120490c4ff341c1bac49875334726adaa85a4d3). No title executable, module, assets, saves, raw SDK bytes or binary CPU profile is included.

The measurement and validation below are historical on their stated earlier heads. The hardware table's measurement was not repeated, and neither the full 2,014-test run nor Windows was rerun for this refresh.

Linux 7.2.9, Ryzen 9 7950X, Radeon RX 6650 XT, RADV Mesa 26.2.4, Release.

New tests:

  • TwoSampleDitheredAlphaToCoverageTests, in agc_driver_alpha_to_coverage_state. It covers acceptance for both location pairs and for MASK_EXPORT_NUM_SAMPLES 0 and 1. It also covers refusal of:
    • unmatched DB_EQAA fields, including ALPHA_TO_MASK_EQAA_DISABLE;
    • other locations, and locations that vary by pixel;
    • FP32_AR, UNORM16 and SNORM16 exports;
    • eight samples.
  • agc_driver_two_sample_dithered_alpha_to_coverage, a GPU test. It draws 56 measured cases (FP32 and FP16 exports at each k/8 and its neighbours, plus the special values) into a real two-sample target and checks every resolved pixel. The eight-sample test now uses the same code.
  • Request serializer cases: values 1 and 2 round-trip, and 2 under version 45 or 3 under version 46 is rejected.

The focused set (alpha_to_coverage, agc_shader_memory, request_serializer, agc_driver_msaa_dcc; 11 tests) was run with ctest -V --repeat until-fail:3, VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation, ANYPS5_REQUIRE_VULKAN=1 and ANYPS5_NO_SHADER_CACHE=1. All 11 pass 3/3, with no VUID- lines and no missing-layer line.

Negative control. With StoreDitheredAlphaCoverage forced to the eight-sample table, agc_driver_two_sample_dithered_alpha_to_coverage fails 3/3:

dithered coverage export 9 alpha 0x3dffffff pixel (0,0): resolved 0.25, expected 0.75 for mask0x00

With the change restored, it passes.

Full ctest -j8. Run on main 924b18f59c and on this change (f179568345, on the same base), in the same environment. Results:

VUID Count
VkWriteDescriptorSet-descriptorType-00337 32
VkPipelineColorBlendStateCreateInfo-pAttachments-00605 26

The focused set also passes 3/3 on f179568345. An earlier comparison on main c4d105021e with 6c18620c3c matched in the same way: 1992 and 1993 tests, the same four failures, 27 skips and the same VUID- counts.

PPSA01503, natively, content version 02.000.000. Run with APS5_PLAYGO_UNLISTED_CHUNKS=installed, because the dump has no PlayGo files.

Build Result
main ea695358ee with a local register print stops at about 10 s with the error above, in 2 of 2 runs
this change (6c18620c3c, on c4d105021e) reaches the title screen ("Press ✕ to Start") with its foliage and runs until the scheduled close at 293 s, exit 0, 20-33 FPS; no GPU fault in the kernel log

Scripted Cross presses did not leave the title screen. That is not investigated here.

Overlap

Current-main overlap scan: #6973/#6987/#6989/#6995/#7002 share the DCC recreation test dispatch/registration; #9020/#9193/#9748 change request-format fields/versions and fixtures. These are independent features, not prerequisites; whichever lands second must preserve both test paths and use the next canonical serialization version. Of 116 shared/conflict-incomplete patch captures, the two-sample symbols/word occur in this PR and its dependent #10581; this PR is not dependent on that follow-up. Combined application with those other open branches was not tested.

#8424 rewrites the opening of the same debt entry. The two changes touch different sentences, but whichever lands second has to rebase that line. No open PR implements 0xe701 or a two-sample dither. Open PRs that change the request serialization version conflict on the version number; whichever lands second takes the next one.

Not verified

  • the console's behaviour; the measurement is on gfx1032, not gfx1013;
  • other sample counts or offsets with 0xe701;
  • MASK_EXPORT_NUM_SAMPLES 0, which the title programs; the measurement used 1, and no sample mask is exported.

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: PPSA01503 (Bugsnax (PPSA01503) #9900)
  • GPUs tested: AMD Radeon RX 6650 XT, RADV Mesa 26.2.4, Linux 7.2.9-arch1-1
  • AI-assisted: yes

🤖 Generated with Claude Code

Contributor-reported Windows follow-up: @ycbuzi tested head 2ff14f34e3 merged onto main 7903201bb4, Windows 11 Home 10.0.26200, WinLibs GCC 15.2.0 r7, Release. The 65 selected groups ran twice on each of RTX 4070 SUPER and GTX 1650 SUPER (NVIDIA 616.92) and AMD RDNA2 iGPU 1002:164e (32.0.21030.2001): 62 passed and three compared-import groups skipped per device/run. No negative control or validation-layer proof is supplied; the reported request-serializer warning also occurs in their main-only compile. These are contributor results, preserving the known skips and warning rather than a full Windows/validation qualification. Original report.

@github-actions github-actions Bot added the unblocks title Names a title ID on the Unblocks line label Oct 24, 2026
@adriadam10 adriadam10 self-assigned this Oct 24, 2026
@github-actions

github-actions Bot commented Oct 24, 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 6973 core/libs/prx/libSceAgcDriver/CMakeLists.txt L2376-2377
core/libs/prx/libSceAgcDriver/tests/execution/AlphaToCoverage.cpp L460
PR 6987 core/libs/prx/libSceAgcDriver/CMakeLists.txt L2376-2377
core/libs/prx/libSceAgcDriver/tests/execution/AlphaToCoverage.cpp L460
PR 6989 core/libs/prx/libSceAgcDriver/CMakeLists.txt L2376-2377
core/libs/prx/libSceAgcDriver/tests/execution/AlphaToCoverage.cpp L460
PR 6995 core/libs/prx/libSceAgcDriver/CMakeLists.txt L2376-2377
core/libs/prx/libSceAgcDriver/tests/execution/AlphaToCoverage.cpp L460
PR 7002 core/libs/prx/libSceAgcDriver/CMakeLists.txt L2376-2377
core/libs/prx/libSceAgcDriver/tests/execution/AlphaToCoverage.cpp L460
PR 9193 core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp L5743, L5861, L6247-6248
core/shader/recompiler/tests/RequestSerializerTests.cpp L301, L344, L373, L506, L532-533, L547, L574, L602, L612, L739
PR 10348 core/shader/recompiler/tests/RequestSerializerTests.cpp L301, L344, L373, L506, L532-535, L547, L574, L602, L612, L739
PR 10359 core/shader/recompiler/ControlFlow/src/RequestSerializer.cpp L851, L900
PR 10547 core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp L5743, L5861, L6247-6248
core/shader/recompiler/tests/RequestSerializerTests.cpp L301, L344, L373, L506, L532-533, L547, L574, L602-603, L612, L739, L791
PR 11351 core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp L5743, L5861, L6247-6248
core/shader/recompiler/tests/RequestSerializerTests.cpp L301, L344, L373, L506, L532-533, L547, L574, L602, L612, L739, L791
PR 11483 core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp L5743, L5861, L6247-6248
core/shader/recompiler/tests/RequestSerializerTests.cpp L301, L344, L373, L506, L532-533, L547, L574, L602, L612, L739, L791
PR 11551 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawRegisterKey.cpp L265
core/shader/recompiler/tests/RequestSerializerTests.cpp L301, L344, L373, L506, L532-533, L574, L602, L612, L739

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 1368 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
PR 1395 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 1896 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 2434 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 4040 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 4448 docs/dev/debt/libSceAgcDriver.md
PR 4449 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 5021 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 5371 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
PR 5372 docs/dev/debt/libSceAgcDriver.md
PR 5609 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawLookup.cpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawRegisterKey.cpp
core/shader/recompiler/Recompiler.hpp
PR 5925 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
core/shader/recompiler/Recompiler.hpp
docs/dev/debt/libSceAgcDriver.md
PR 6187 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6188 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawDecode.cpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawLookup.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/shader/recompiler/Recompiler.hpp
PR 6192 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6194 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 6209 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6223 docs/dev/debt/libSceAgcDriver.md
PR 6235 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawDecode.cpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawLookup.cpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawRegisterKey.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
core/shader/recompiler/CacheKey.hpp
core/shader/recompiler/ControlFlow/src/RequestSerializer.cpp
core/shader/recompiler/Optimization/include/Optimization/ShaderStageInputInfo.hpp
core/shader/recompiler/Recompiler.hpp
core/shader/recompiler/SpirvBackend/src/SpirvModuleEmitter.cpp
core/shader/recompiler/Translation/src/ShaderInputInfoBuilder.cpp
core/shader/recompiler/tests/RequestSerializerTests.cpp
PR 6273 docs/dev/debt/libSceAgcDriver.md
PR 6280 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 6300 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 6412 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
core/shader/recompiler/Recompiler.hpp
docs/dev/debt/libSceAgcDriver.md
PR 6481 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 6488 core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
PR 6548 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 6549 docs/dev/debt/libSceAgcDriver.md
PR 6804 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 6808 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 6970 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
core/shader/recompiler/Recompiler.hpp
PR 6977 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawDecode.cpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawRegisterKey.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
docs/dev/debt/libSceAgcDriver.md
PR 7048 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7201 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/shader/recompiler/CacheKey.hpp
core/shader/recompiler/Recompiler.hpp
core/shader/recompiler/SpirvBackend/src/SpirvModuleEmitter.cpp
PR 7256 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 7275 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7395 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7410 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawDecode.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
core/shader/recompiler/CacheKey.hpp
core/shader/recompiler/ControlFlow/src/RequestSerializer.cpp
core/shader/recompiler/Recompiler.hpp
core/shader/recompiler/tests/RequestSerializerTests.cpp
PR 7449 docs/dev/debt/libSceAgcDriver.md
PR 7457 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7514 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7604 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 7642 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawLookup.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
core/shader/recompiler/CacheKey.hpp
core/shader/recompiler/Recompiler.hpp
core/shader/recompiler/SpirvBackend/src/SpirvModuleEmitter.cpp
docs/dev/debt/libSceAgcDriver.md
PR 7684 core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
PR 7694 core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
PR 8004 core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
core/shader/recompiler/CacheKey.hpp
core/shader/recompiler/ControlFlow/src/RequestSerializer.cpp
core/shader/recompiler/Recompiler.hpp
core/shader/recompiler/tests/RequestSerializerTests.cpp
PR 8223 docs/dev/debt/libSceAgcDriver.md
PR 8246 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 8319 docs/dev/debt/libSceAgcDriver.md
PR 8395 core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 8484 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8542 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 8592 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 8939 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 9020 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawLookup.cpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawRegisterKey.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
core/shader/recompiler/CacheKey.hpp
core/shader/recompiler/ControlFlow/src/RequestSerializer.cpp
core/shader/recompiler/Optimization/include/Optimization/ShaderStageInputInfo.hpp
core/shader/recompiler/Recompiler.hpp
core/shader/recompiler/SpirvBackend/src/SpirvModuleEmitter.cpp
core/shader/recompiler/Translation/src/ShaderInputInfoBuilder.cpp
core/shader/recompiler/tests/RequestSerializerTests.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9248 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 9335 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawLookup.cpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawRegisterKey.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
core/shader/recompiler/CacheKey.hpp
core/shader/recompiler/ControlFlow/src/RequestSerializer.cpp
core/shader/recompiler/Optimization/include/Optimization/ShaderStageInputInfo.hpp
core/shader/recompiler/Recompiler.hpp
core/shader/recompiler/SpirvBackend/src/SpirvModuleEmitter.cpp
core/shader/recompiler/Translation/src/ShaderInputInfoBuilder.cpp
core/shader/recompiler/tests/RequestSerializerTests.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9356 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
core/shader/recompiler/CacheKey.hpp
core/shader/recompiler/ControlFlow/src/RequestSerializer.cpp
core/shader/recompiler/Recompiler.hpp
core/shader/recompiler/SpirvBackend/src/SpirvModuleEmitter.cpp
core/shader/recompiler/tests/RequestSerializerTests.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9387 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
core/shader/recompiler/CacheKey.hpp
core/shader/recompiler/ControlFlow/src/RequestSerializer.cpp
core/shader/recompiler/Recompiler.hpp
core/shader/recompiler/SpirvBackend/src/SpirvModuleEmitter.cpp
core/shader/recompiler/tests/RequestSerializerTests.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9431 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawDecode.cpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawRegisterKey.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9432 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawDecode.cpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawRegisterKey.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9457 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 9489 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawRegisterKey.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 9508 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawLookup.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
core/shader/recompiler/CacheKey.hpp
core/shader/recompiler/Recompiler.hpp
core/shader/recompiler/SpirvBackend/src/SpirvModuleEmitter.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9592 docs/dev/debt/libSceAgcDriver.md
PR 9633 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 9672 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawDecode.cpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawRegisterKey.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9673 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawDecode.cpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawRegisterKey.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9674 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawDecode.cpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawRegisterKey.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9675 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawDecode.cpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawRegisterKey.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9676 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawDecode.cpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawRegisterKey.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9748 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawLookup.cpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawRegisterKey.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
core/shader/recompiler/CacheKey.hpp
core/shader/recompiler/ControlFlow/src/RequestSerializer.cpp
core/shader/recompiler/Optimization/include/Optimization/ShaderStageInputInfo.hpp
core/shader/recompiler/Recompiler.hpp
core/shader/recompiler/SpirvBackend/src/SpirvModuleEmitter.cpp
core/shader/recompiler/Translation/src/ShaderInputInfoBuilder.cpp
core/shader/recompiler/tests/RequestSerializerTests.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9749 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 9790 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
PR 9842 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawDecode.cpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawRegisterKey.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9852 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/shader/recompiler/Recompiler.hpp
PR 9889 core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
PR 9891 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawDecode.cpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawRegisterKey.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9892 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawDecode.cpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawRegisterKey.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9893 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawDecode.cpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawRegisterKey.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9895 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawDecode.cpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawRegisterKey.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9897 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
core/shader/recompiler/Recompiler.hpp
PR 9950 docs/dev/debt/libSceAgcDriver.md
PR 9969 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
PR 10000 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
core/shader/recompiler/Recompiler.hpp
PR 10043 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 10049 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
core/shader/recompiler/Recompiler.hpp
docs/dev/debt/libSceAgcDriver.md
PR 10064 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 10193 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawLookup.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
core/shader/recompiler/CacheKey.hpp
core/shader/recompiler/Recompiler.hpp
core/shader/recompiler/SpirvBackend/src/SpirvModuleEmitter.cpp
docs/dev/debt/libSceAgcDriver.md
PR 10194 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 10233 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
docs/dev/debt/libSceAgcDriver.md
PR 10249 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
PR 10333 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 10435 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawDecode.cpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawRegisterKey.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 10442 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 10489 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
core/shader/recompiler/Recompiler.hpp
PR 10556 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
PR 10757 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
core/shader/recompiler/Recompiler.hpp
PR 10773 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 10846 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
core/shader/recompiler/CacheKey.hpp
core/shader/recompiler/ControlFlow/src/RequestSerializer.cpp
core/shader/recompiler/Recompiler.hpp
core/shader/recompiler/tests/RequestSerializerTests.cpp
PR 10867 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
PR 11207 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 11557 core/libs/prx/libSceAgcDriver/CMakeLists.txt
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawRegisterKey.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md

@github-actions github-actions Bot added build shader core/shader docs agc libSceAgc* needs rebase Conflicts with main, rebase needed labels Oct 24, 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.

Reviewed the state decode, shader request propagation/cache key, serializer version bump, and the two/eight-sample coverage tables and regression cases. The new path is constrained to the measured 0xe701 register word, matched two-sample state, supported sample locations and floating export formats; the existing eight-sample path remains separately selected. The reported test matrix includes state rejection tests, request serialization, focused GPU validation with repeats, a negative control, and a title boot. I cannot run the Vulkan tests locally (no Vulkan/GPU test setup here), and the hosted jobs for this PR are non-product checks only; the hardware results remain the author-reported measurements on gfx1032, not PS5 confirmation.

@JJenkx

JJenkx commented Oct 24, 2026

Copy link
Copy Markdown
Contributor Author

Rebased onto main fa515def85; the head is bb2e64983c.

  • Conflict: the only conflict was the alpha-to-coverage debt line, which docs(agc): drop the stale "only" from the alpha-to-coverage entry #8424 had reworded. That line now has main's wording with this PR's sentence appended.
  • Serializer version: main is still at version 46, so this PR keeps 47.
  • Tests on the rebased head: the build is clean. The request serializer and alpha-to-coverage state tests pass. The focused set (11 tests) passes 3/3 with VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation, ANYPS5_REQUIRE_VULKAN=1 and ANYPS5_NO_SHADER_CACHE=1, with no VUID- lines.

Since the PR was opened, Bugsnax (PPSA01503) also reaches gameplay with this change: about 18-20 FPS, exit 0, no GPU fault (#9900).

AI-assisted: yes (Claude Code)

@JJenkx
JJenkx force-pushed the fix/agc-two-sample-dithered-a2c branch from f179568 to bb2e649 Compare October 24, 2026 12:15
@github-actions github-actions Bot removed the needs rebase Conflicts with main, rebase needed label Oct 24, 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.

Reviewed current head bb2e649. The two-sample mode remains separately gated by the 0xe701 word, matched two-sample raster/DB_EQAA state, one pixel iteration, measured locations, and supported float exports; its sample-count tag is propagated through the draw key and request serializer. The existing eight-sample path remains distinct. The author-reported focused GPU/serializer matrix is pinned to earlier head f179568, so I did not treat it as a rerun of bb2e. The dependent #10581 report provides additional author-reported Windows/Vulkan validation of the stacked behavior on base fa515de. Hosted eligibility, conventions, labels, and report pass; all product test jobs are skipped, and I could not run the GPU tests locally.

@github-actions github-actions Bot added the needs rebase Conflicts with main, rebase needed label Oct 24, 2026
…o-coverage

Bugsnax (PPSA01503) draws with DB_ALPHA_TO_MASK 0xe701 (quad offsets
3, 1, 2, 3 without OFFSET_ROUND) on a two-sample target and stopped on
the refusal of every dither but the eight-sample 0x18701. The pixel
shader now applies an eight-level per-quad table for it, measured
natively on gfx1032, and the request's dither byte selects that table
(serialization version 47). It is accepted only for two matched raster
and DB_EQAA samples, the two measured location pairs and FP16_ABGR or
32_ABGR exports.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@JJenkx
JJenkx force-pushed the fix/agc-two-sample-dithered-a2c branch from bb2e649 to 2ff14f3 Compare October 24, 2026 21:25
@JJenkx

JJenkx commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor Author

Rebased onto current main c8d34aa as 2ff14f34e36610e8a02585b247c7c9240a5f1e5a (one commit). Only the debt context needed resolution; all 16 production/test topic deltas are unchanged from the previously reviewed bb2e649. Fresh paired focused checks pass: 10 on main and 11 on the PR, three repeats each, actual validation layer on every physical repeat, no skips or VUIDs. Forcing the old eight-sample table gives the expected two-sample pixel mismatch 3/3; restoring both dither modes passes 3/3 each.

The fresh native control reproduces main's unsupported 0xe701 abort at about 13 seconds. The rebased PR renders title/foliage, New Game/save slots and the rainy first-person opening, then closes normally at 310.6 seconds with exit 0, no VUIDs and no kernel GPU-fault entries. It does not include #10581 or verify later tutorial/bridge completion, audio or an FPS gain. Pinned builds/checks/controls/native reports and screenshots (SHA-256 34fe21fd4ab1ddc6066d92f50120490c4ff341c1bac49875334726adaa85a4d3). The description labels older full-suite/Windows/hardware measurements as historical.

@wachi35676

Copy link
Copy Markdown
Contributor

First NVIDIA and AMD-proprietary run, on Windows. Windows 11 10.0.26300, WinLibs GCC 15.2.0, Release; main aeff26b and this PR (2ff14f3) merged onto it (clean; the request serializer on main is still at 46); ANYPS5_REQUIRE_VULKAN=1 ANYPS5_NO_SHADER_CACHE=1 (no validation layer installed here); NVIDIA RTX 5070 Ti (621.01) and AMD Radeon RDNA2 iGPU (AMD proprietary 2026.04.17).

NVIDIA AMD
request_serializer, the alpha-to-coverage state/draw tests, agc_driver_graphics, agc_shader_memory (8) 8/8 8/8
agc_driver_alpha_to_coverage_tests --dithered2 (56 cases) passed, not skipped passed, not skipped
--dithered8 passed passed
eight-sample table forced for two samples (local control) --dithered2: alpha 0x3dffffff pixel (0,0): resolved 0.25, expected 0.75 for mask0x00 same
  • So the RADV-measured table gives the same coverage through SampleMask on both of these drivers. A wider set of 250 agc_ entries has no new failure.
  • tools/check_conventions.py --base origin/main on the merge warns docs/dev/debt/libSceAgcDriver.md:41: [debt-length] ... 2458 characters, the alpha-to-coverage entry this PR extends. main has no finding.
  • Minor: the What section still says the serialization version goes "from 45 to 46". The code goes 46 to 47.

AI-assisted: yes (Claude Code); results above were run on this machine.

@ycbuzi

ycbuzi commented Oct 26, 2026

Copy link
Copy Markdown
Contributor

A Windows run of 2ff14f34e3 on the AMD proprietary driver and two NVIDIA generations, to go with your RADV results: Windows 11 Home 10.0.26200, WinLibs GCC 15.2.0 r7 (MinGW-w64 UCRT), Release, merged onto main 7903201bb4 with no conflicts. The 65 tests built from the changed test sources (agc_driver_alpha_to_coverage*, agc_driver_graphics*, agc_shader_memory*, request_serializer), including the new one. One GPU at a time with ANYPS5_GPU, plus ANYPS5_REQUIRE_VULKAN=1 and ANYPS5_NO_SHADER_CACHE=1, run with ctest -V --repeat until-fail:2. Each log's Selected GPU line names the device.

device result
GeForce RTX 4070 SUPER (0x2783), NVIDIA 616.92 62 pass, 3 skip, both runs
GeForce GTX 1650 SUPER (0x2187), NVIDIA 616.92 62 pass, 3 skip, both runs
AMD Radeon(TM) Graphics (1002:164e, RDNA2 iGPU), AMD 32.0.21030.2001 62 pass, 3 skip, both runs
  • The skips are agc_driver_msaa_dcc_compared_import_2, _4 and _8, on all three devices.
  • No negative control: RequestSerializerTests.cpp uses the new ShaderPixelStageInfo::ditheredAlphaSamples, so it doesn't build with main's sources.
  • Build warnings: main's known ones, plus RequestSerializerTests.cpp's __builtin_memset ... writing 40 bytes into a region of size 16. main's own copy of that file gives the same warning (cbf76e7a6e, compiled separately), so it isn't from this PR.

AI-assisted: yes (Claude Code)

@JJenkx

JJenkx commented Oct 27, 2026

Copy link
Copy Markdown
Contributor Author

Recorded the additional result in the PR description with its exact tested pins and limits.

Contributor-reported Windows follow-up: @ycbuzi tested head 2ff14f34e3 merged onto main 7903201bb4, Windows 11 Home 10.0.26200, WinLibs GCC 15.2.0 r7, Release. The 65 selected groups ran twice on each of RTX 4070 SUPER and GTX 1650 SUPER (NVIDIA 616.92) and AMD RDNA2 iGPU 1002:164e (32.0.21030.2001): 62 passed and three compared-import groups skipped per device/run. No negative control or validation-layer proof is supplied; the reported request-serializer warning also occurs in their main-only compile. These are contributor results, preserving the known skips and warning rather than a full Windows/validation qualification. Original report.

AI-assisted: yes.

@adriadam10
adriadam10 merged commit 4c486ca into boykopovar:main Oct 27, 2026
13 of 14 checks passed
@adriadam10

Copy link
Copy Markdown
Collaborator

Checked the interdiff against the head we reviewed: a rebase onto current main where only the alpha-to-coverage debt line needed resolving; all production and test deltas are unchanged. Re-checked the state decode and precheck, draw/cache/register keys, serializer v47 and the SPIR-V table selection, and the 0xe701 path limited to the measured state with everything else throwing. Windows runs from @wachi35676 and @ycbuzi on NVIDIA and AMD proprietary pass; merged.

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

Labels

agc libSceAgc* build docs shader core/shader unblocks title Names a title ID on the Unblocks line

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants