Skip to content

fix(agc): sample multisampled targets in read-only layout - #6971

Draft
MarcZX10 wants to merge 3 commits into
boykopovar:mainfrom
MarcZX10:codex/intel-msaa-sampled-layout-6957-current
Draft

MarcZX10 wants to merge 3 commits into
boykopovar:mainfrom
MarcZX10:codex/intel-msaa-sampled-layout-6957-current

Conversation

@MarcZX10

@MarcZX10 MarcZX10 commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

What

Fixes #6957 by tracking a borrowed multisampled target's current image layout. After storage writes, sampled reads transition the image from GENERAL to SHADER_READ_ONLY_OPTIMAL; before later attachment or storage use, it transitions back to GENERAL. This targets the Intel UHD 770 behavior reported in the issue while leaving other image access paths intact.

The sampled view keeps the requested VkImageViewType in its cache key and supports a restricted view usage, so this change composes with #6635's multisampled array views and #6683's sample-order storage view. Their sample-order pass writes through the tracked storage path, so the next sampled read uses the read-only transition. The author of #6635 requested that it land first; this PR remains draft until then. New PR #6973 also changes MultisampleTarget.cpp and the sampled view path to initialize native multisample color contents. I have flagged the overlap there and will verify that the layout tracking preserves its initial upload before marking this PR ready.

Tested

  • Linux, GCC 12.2 Release: built agc_driver_graphics_tests, agc_driver_recorder_tests, and agc_driver_sample_multisample_target_tests. GCC 12 required a temporary template keyword workaround in unrelated SrtDescriptorEvaluation.cpp; I restored that file, and the workaround is not part of this PR.
  • In a local merge preview with fix(shader,agc): support multisampled 2D array descriptor image shape and runtime views #6635 and fix(agc): keep the guest's sample order where pixel (0,0)'s locations stand in for a 2x2 grid #6683, compiled the changed MultisampleTarget.cpp, Texture.cpp, SampleOrder.cpp, and Recorder.cpp array-view regression, and linked the graphics, recorder, multisample-target, and sample-order test executables.
  • CTest for agc_driver_sample_multisample_target, agc_multisample_guest_access, agc_driver_sample_order, and agc_driver_sample_order_planning aborts before assertions on this host because its Xeon E5-1620 v2 lacks LZCNT, BMI1/2, MOVBE, AVX2, and FMA. No runtime or Intel UHD 770 result is claimed.
  • python3 tools/check_conventions.py --base upstream/main and git diff --check pass.

Checklist

@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

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

Pull request Shared files not compared
PR 862 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 1368 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 1395 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 4448 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 5021 core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 5609 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 5883 core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 5925 core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 6108 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6182 core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 6185 core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 6186 core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 6187 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 6188 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 6192 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 6197 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6209 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 6249 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6280 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6481 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6615 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6808 core/libs/prx/libSceAgcDriver/Graphics/src/MultisampleTarget.cpp
PR 6905 core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 6960 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6970 core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 6973 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/MultisampleTarget.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 6977 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6987 core/libs/prx/libSceAgcDriver/Graphics/include/MultisampleTarget.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/MultisampleTarget.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 6989 core/libs/prx/libSceAgcDriver/Graphics/include/MultisampleTarget.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/MultisampleTarget.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 6995 core/libs/prx/libSceAgcDriver/Graphics/include/MultisampleTarget.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/MultisampleTarget.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 7002 core/libs/prx/libSceAgcDriver/Graphics/include/MultisampleTarget.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/MultisampleTarget.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 7048 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 7085 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 7256 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 7310 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 7449 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
PR 7457 core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 7514 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 7604 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 7642 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 8123 core/libs/prx/libSceAgcDriver/Graphics/src/MultisampleTarget.cpp
PR 8223 core/libs/prx/libSceAgcDriver/Graphics/include/MultisampleTarget.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/MultisampleTarget.cpp
PR 8484 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 8707 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 8887 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 9402 core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 9431 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 9432 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 9445 core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 9508 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 9521 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 9533 core/libs/prx/libSceAgcDriver/Graphics/include/MultisampleTarget.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/MultisampleTarget.cpp
PR 9565 core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 9672 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 9673 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 9674 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 9675 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 9676 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 9700 core/libs/prx/libSceAgcDriver/Graphics/src/MultisampleTarget.cpp
PR 9712 core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 9717 core/libs/prx/libSceAgcDriver/Graphics/include/MultisampleTarget.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/MultisampleTarget.cpp
PR 9742 core/libs/prx/libSceAgcDriver/Graphics/include/MultisampleTarget.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/MultisampleTarget.cpp
PR 9842 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 9858 core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 9875 core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 9884 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 9891 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 9892 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 9893 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 9895 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 9898 core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 9999 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 10026 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 10049 core/libs/prx/libSceAgcDriver/Graphics/include/MultisampleTarget.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/MultisampleTarget.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 10064 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 10159 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 10193 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 10194 core/libs/prx/libSceAgcDriver/Graphics/src/MultisampleTarget.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 10233 core/libs/prx/libSceAgcDriver/Graphics/src/MultisampleTarget.cpp
PR 10249 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 10256 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 10304 core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 10333 core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 10435 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 10442 core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 10443 core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 10472 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 10656 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 10676 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 10696 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 10743 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 10773 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 10859 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 10886 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 10920 core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 10940 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 11075 core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 11142 core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 11280 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 11363 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 11423 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 11451 core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 11485 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 11507 core/libs/prx/libSceAgcDriver/tests/Recorder.cpp
PR 11615 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Recorder.cpp

@github-actions github-actions Bot added the agc libSceAgc* label Oct 16, 2026
@Amoenus

Amoenus commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Current dependency/composition status, 2026-10-23

@MarcZX10 The remaining sampled-layout change from your original f65cecddabd9bf40a49960b48873ca938754c1d6 is retained with its authorship in adaptation 8f50f190d9, refreshed onto main 21554447d02bac92cac3dadebd999707830dadb8, then #6973 093d117aef. Array-shape/twin-view behavior already supplied by main is retained. Published history remains intact.

The maintained root qualification now records 77 passes across five exact composed heads and literal-main reference checks on RTX5080/Radeon Graphics, with no validation warnings/errors/VUIDs, skips or timeouts. This validates the adapted stack, not your unchanged standalone head or Intel behavior. #8223's requested retirement work remains separate and first in its agreed order.

Your last status says this branch is intentionally unchanged to avoid duplicating the composed work, while #6973 still declares #6971 first. Could you and the maintainers confirm the intended landing plan: merge standalone #6971 first, or land its attributed commits through #6973 and close this as superseded? The tested fork adaptation above is available for either plan; I have not changed the declared order.

AI-assisted validation/reporting: yes (Codex); author responsible.

Earlier coordination at its original pins

@MarcZX100 Follow-up to the overlap coordination: #6973's published composition 82bfd5250 now contains exact #6635 ebc6ea3 and your #6971 f65cecd, with authorship preserved. The maintained validation report records the initial-upload/regular-and-array-sampling, attachment/storage reuse and retirement checks on NVIDIA, AMD and llvmpipe, including the recorder's separate #6225 adapter-selection composition.

The matched initializer-removal control fails on all three devices; restoration passes. Four focused llvmpipe runs with Khronos 1.4.363.0 are free of VUIDs/validation errors. This validates the adapted composition; it does not retest your unchanged standalone head or establish the Intel UHD 770 fix. The sequence remains #6635, then #6971, then #6973. No new competing layout PR opened. AI-assisted: Codex; author responsible.

Landing clarification received,2026-10-23: oneandonlydean confirmed that #6971 is carried by main plus the remaining #6973 stack and should close after #6973 merges. I have removed #6971 as a separate pending prerequisite in our current descriptions, retaining its attributed commits and the existing source-specific qualification. #8223-first and the requested owner-retirement publication gate remain. No source or foreign branch was changed. AI-assisted maintenance: yes(Codex).

@MarcZX10

Copy link
Copy Markdown
Contributor Author

Thanks for confirming the composition and preserved authorship. I verified that #6973 carries the #6971 commits, while #6635 and #6973 remain open. I will keep #6971 in draft pending the requested #6635 order and the composition review. The reported validation is useful for the combined changes, but does not establish the Intel UHD 770 result for #6957.

@github-actions github-actions Bot added the fix error Closes an issue (Fixes #N) label Oct 17, 2026
@savvaniss

Copy link
Copy Markdown
Contributor

UHD 770 result, as asked in #6957: this fixes agc_driver_sample_multisample_target on the device that reported it.

Windows 11 Pro 26300, WinLibs GCC 15.2.0 r7, Release, every execution test built, ANYPS5_NO_SHADER_CACHE=1. This head f65cecdda merged into main 5f61879a9. Intel UHD Graphics 770 (8086:a780), driver 32.0.101.7088. AMD Radeon RX 9070 XT (1002:7550), driver 32.0.31041.1004, with VkCache emptied first.

Tests: the 14 multisample tests on main and agc_driver_graphics. The multisample tests are agc_multisample_guest_access, agc_tiled_resolve, agc_driver_msaa_dcc_state, agc_driver_msaa_dcc_clear_2/_4/_8, agc_driver_msaa_enable_single_sample, agc_driver_multisample_fill_host_only, agc_driver_native_multisample_depth, agc_driver_sample_mask_draw/_depth_stencil/_multisample, agc_driver_sample_multisample_target and image_msaa_load.

GPU main, ×3 This PR, ×5
UHD 770 sample_multisample_target fails (sample 1 of pixel (0, 0) does not hold the stored color into one sample of each pixel of the drawn target); the other 14 pass 15 of 15 pass
RX 9070 XT 15 of 15 pass 15 of 15 pass

Full CTest with this PR, --parallel 4: UHD 770 1365 of 1373, RX 9070 XT 1369 of 1373. None of the failures involve multisample targets:

AI-assisted: yes (Claude Code)

@tibzejoker

Copy link
Copy Markdown
Contributor

Retest on the affected GPU (#6957): Intel UHD Graphics 770 (driver 32.0.101.6129), with an RTX 4090 (NVIDIA 616.92) in the same machine for comparison. Windows 11, WinLibs GCC 15.2, Release. This PR merged onto main bf2053816; GPU picked with ANYPS5_GPU.

agc_driver_sample_multisample_target:

UHD 770 RTX 4090
main bf2053816 fails: sample 1 of pixel (0, 0) does not hold the stored color into one sample of each pixel of the drawn target passes
main + #6971 (f65cecdda) passes passes
#6973 head b64742f86 passes passes

Multisample-related group (ctest -R 'multisample\|msaa\|resolve\|sample_mask\|image_msaa', 16 tests):

UHD 770 RTX 4090
main 15/16 (only sample_multisample_target fails) 16/16
main + #6971 16/16 16/16

So the read-only layout transition fixes the Intel failure, with nothing newly broken in that group on either GPU.

AI-assisted (Claude Code).

@MarcZX10

Copy link
Copy Markdown
Contributor Author

Thanks for the two independent UHD 770 results. Both show the reported agc_driver_sample_multisample_target failure on main and a pass with this change; the broader multisample groups also pass on UHD 770 and the comparison GPUs. This validates the issue-specific fix across the reported driver versions. I’ll keep the dependency/order with #6635 and the combined #6973 review explicit before changing this PR’s merge state.

AI-assisted: yes (Codex); reports reviewed.

@github-actions github-actions Bot added the needs rebase Conflicts with main, rebase needed label Oct 17, 2026
Amoenus added a commit to Amoenus/AnyPS5 that referenced this pull request Oct 19, 2026
Retain original boykopovar#6971 f65cecd ancestry. Adapt its layout tracking to current shared ownership, device checks, CMASK handling and array/swapped views for focused dependency validation.
Amoenus added a commit to Amoenus/AnyPS5 that referenced this pull request Oct 19, 2026
Consolidate the previously published initializer and its fault/regression coverage onto the refreshed layout/uploader foundations and the credited boykopovar#6971 dependency composition. Preserve the full snapshot and supported uniform/nonuniform paths, restrict borrowed sampled-view usage and keep current main ownership/device/CMASK handling. Original initializer and test work is preserved at published8068 and its archived history; boykopovar#6971 f65cecd remains an original ancestor. Written with AI assistance.
@MarcZX10

Copy link
Copy Markdown
Contributor Author

Status update: #6635 is merged, and open #6973 now contains the multisampled-array support and the read-only sampled-layout commits from this PR, with their authorship preserved. Its current head cafd4f749 is clean. The latest reports cover initial-color preservation on Intel UHD 770 and RX 9070 XT; the separate readback-layout follow-up is tracked in Amoenus#3. I’m leaving this branch unchanged while that composed series and its follow-up remain active, to avoid publishing duplicate code.

Amoenus added a commit to Amoenus/AnyPS5 that referenced this pull request Oct 21, 2026
Consolidate the previously published initializer and its fault/regression coverage onto the refreshed layout/uploader foundations and the credited boykopovar#6971 dependency composition. Preserve the full snapshot and supported uniform/nonuniform paths, restrict borrowed sampled-view usage and keep current main ownership/device/CMASK handling. Original initializer and test work is preserved at published8068 and its archived history; boykopovar#6971 f65cecd remains an original ancestor. Written with AI assistance.
@oneandonlydean

Copy link
Copy Markdown
Collaborator

@MarcZX10 as far as I can tell this one is superseded: its content reached main through #6635 and #6683, and the MSAA stack (#6973 onwards) carries the rest. Could you close it once #6973 has merged? If I've missed something it still adds, let me know and we'll pick it up.

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* fix error Closes an issue (Fixes #N) needs rebase Conflicts with main, rebase needed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Intel UHD 770: agc_driver_sample_multisample_target fails since #5881, sampled fetches in GENERAL miss per-sample storage writes

5 participants