Skip to content

fix(agc): CB resolve into any tiled color target - #1189

Merged
oneandonlydean merged 2 commits into
boykopovar:mainfrom
MichonGoddijn231849:fix/cb-resolve-tiled-targets
Oct 15, 2026
Merged

oneandonlydean merged 2 commits into
boykopovar:mainfrom
MichonGoddijn231849:fix/cb-resolve-tiled-targets

Conversation

@MichonGoddijn231849

@MichonGoddijn231849 MichonGoddijn231849 commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

What

A multisample resolve writes into a resident 4 KiB or 64 KiB standard target, as well as into a 64 KiB render-target one. GTA V's fidelity mode resolves into a SW_64KB_S target.

Tested

Windows 11 Pro, AMD Ryzen 5 7600, NVIDIA GeForce RTX 5080 (driver 32.0.16.1074), 32 GB, MinGW-w64 GCC 15.2.0.

  • GTA V PPSA04264 (01.005) runs with this change on the combined gta-v/testing branch (Performance mode, the prologue).
  • GTA V before/after this commit in fidelity mode: not rerun yet; I will add it here.
  • On main 0214069 (2026-10-13; feat(agc): multisampled color and depth targets with CB resolves #419 is merged, so only this PR's two commits remain): the new agc_tiled_resolve ctest resolves a CMASK-fast-cleared 4x source into SW_4KB_S, SW_64KB_S and SW_64KB_R_X targets and reads the color back from guest memory. CI runs it in the Build workflow's linux job (ctest under lavapipe). It fails without this change ("CB resolve into a target without a resident image is not implemented"), and also with the resolve call removed (16384 texels keep their old value). agc_driver_graphics checks that each tile mode decodes as a resolve destination. In the full agc_ ctest, the failures are the same as on main. Not run here: the relinker's Python tests (my local Python does not find their helper modules) and guest_gameupdate.
  • The whole agc_* suite passes on Windows on the rebase (484 tests).

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 in TechnicalDebt
  • 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 (feat(agc): multisampled color and depth targets with CB resolves #419 is merged)
  • AI-assisted: yes. Written with Claude (Anthropic) under my direction; I reviewed and tested it.

🤖 Generated with Claude Code

@MichonGoddijn231849
MichonGoddijn231849 force-pushed the fix/cb-resolve-tiled-targets branch 2 times, most recently from b9844dc to 13c1cbf Compare October 7, 2026 18:22
@github-actions github-actions Bot added the needs rebase Conflicts with main, rebase needed label Oct 8, 2026
@MichonGoddijn231849
MichonGoddijn231849 force-pushed the fix/cb-resolve-tiled-targets branch from 13c1cbf to 070fbff Compare October 8, 2026 16:37
@github-actions github-actions Bot added needs rebase Conflicts with main, rebase needed and removed needs rebase Conflicts with main, rebase needed labels Oct 8, 2026
@oneandonlydean

Copy link
Copy Markdown
Collaborator

Rebased onto main to resolve the test-list conflict in core/libs/prx/libSceAgcDriver/CMakeLists.txt (kept both entries); no other change. The GTA V before/after from the earlier review is the one thing left.

@oneandonlydean
oneandonlydean force-pushed the fix/cb-resolve-tiled-targets branch from 29bf266 to 119c18e Compare October 14, 2026 06:26
@github-actions github-actions Bot removed the needs rebase Conflicts with main, rebase needed label Oct 14, 2026
@github-actions github-actions Bot added the needs rebase Conflicts with main, rebase needed label Oct 14, 2026
@oneandonlydean

Copy link
Copy Markdown
Collaborator

GTA V (PPSA04263) before/after, on current main plus #448 (without #448 it stops at sample masks are unsupported): with and without this PR, Story Mode loads and reaches the prologue title card, then both stop at

compute shader 0x25b454a00: bindless image table has 65536 entries (0 materials), limit 16

(#757). No CB resolve is issued before that point, so GTA can't show this change yet; the frames are identical. Build and agc_tiled_resolve pass. The branch conflicts with main again in the set_tests_properties list of core/libs/prx/libSceAgcDriver/CMakeLists.txt (agc_metadata_pass was added there).

MichonGoddijn231849 and others added 2 commits October 15, 2026 10:32
A multisample resolve writes into a resident 4 KiB or 64 KiB standard target as well as a 64 KiB render-target one (GTA V's fidelity mode resolves into a SW_64KB_S target).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The resolve decode keeps a SW_4KB_S, SW_64KB_S and SW_64KB_R_X destination's tile mode. An execution case
(ctest agc_tiled_resolve) fast-clears a 4x source through its CMASK and resolves it into each of those
targets, reading the resolved color back from guest memory; a linear destination still throws.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@oneandonlydean

Copy link
Copy Markdown
Collaborator

Rebased onto main (test list conflict); agc_tiled_resolve and the agc_ tests pass.

@oneandonlydean
oneandonlydean force-pushed the fix/cb-resolve-tiled-targets branch from 119c18e to a17f25b Compare October 14, 2026 22:15
@github-actions github-actions Bot removed the needs rebase Conflicts with main, rebase needed label Oct 14, 2026
@github-actions

github-actions Bot commented Oct 15, 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
#6187 core/libs/prx/libSceAgcDriver/CMakeLists.txt L1125
#6192 core/libs/prx/libSceAgcDriver/CMakeLists.txt L1125
#6209 core/libs/prx/libSceAgcDriver/CMakeLists.txt L1125

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants