Skip to content

docs(debt): record the storage image refusal over uncommitted guest memory - #9275

Open
xXPBSXx wants to merge 2 commits into
boykopovar:mainfrom
xXPBSXx:docs-agc-storage-image-uncommitted
Open

xXPBSXx wants to merge 2 commits into
boykopovar:mainfrom
xXPBSXx:docs-agc-storage-image-uncommitted

Conversation

@xXPBSXx

@xXPBSXx xXPBSXx commented Oct 21, 2026

Copy link
Copy Markdown
Contributor

What

Adds one technical debt entry to docs/dev/debt/libSceAgcDriver.md: StorageTexture throws AGC graphics: storage texture has no committed guest pages (Texture.cpp, the Require on CommittedRanges) when none of an image's guest pages is committed, and that aborts the guest. Three titles reach it, intermittently and only in runs of a few minutes:

  • PPSA15065 on an AMD Radeon RX 6400: run_063745.err lines 1411-1415 (300 s run; 1 stop in 5 runs of the same build). Lines 1089 and 1215 before it: storage image 0x26e810000+0x870000: memory no longer registered; 1 pending ranges dropped.
  • PPSA25936 on an NVIDIA GeForce RTX 4080 SUPER: run_115620.err lines 1711-1715; no storage image line before it.
  • PPSA29413 on an NVIDIA GeForce RTX 4080 SUPER: run_180854.err lines 1234-1238 (600 s run), after four storage image ...: guest memory changed while GPU results were pending; keeping the CPU's blocks lines (1179-1182).
    The log does not name the image's address; a local print of address and size did not catch a stop in five runs on the RX 6400 (the stop is intermittent), so the entry says that the address is unknown. What the console does with a storage descriptor over memory that is not committed is also unknown; no code changes, no behaviour is guessed.

Tested

Documentation only. python tools/check_conventions.py --base upstream/main passes; merge-tree against main d34da5d694 is clean; branch head 06ca8ffb7f. The GPU lines are from the Selected GPU lines of the runs named above (RX 6400 from my runs, the two RTX runs from other runs of this project's testers).

Checklist

  • Based on current main; no other open PR implements the same functions (searched: storage texture committed guest pages)
  • One topic per PR
  • No comments in code except technical debt
  • Unimplemented paths throw; no new stubs
  • No notes, investigation .md files or images added
  • No new dependencies
  • Generic behaviour, not specific to one title
  • Depends on: none
  • Fixes: none
  • Unblocks: none (records three stops: PPSA15065, PPSA25936, PPSA29413)
  • GPUs tested: n/a (documentation); logs named above come from NVIDIA GeForce RTX 4080 SUPER and AMD Radeon RX 6400 on Windows 10 19045
  • AI-assisted: yes

AI-assisted (Claude Code).

…emory

StorageTexture throws when none of an image's guest pages is committed.
Three titles reach it intermittently in runs of a few minutes, on AMD and
NVIDIA, and the log names no address. The entry states the gap and that
the console behavior for such a descriptor is not known.

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

github-actions Bot commented Oct 21, 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 10333 docs/dev/debt/libSceAgcDriver.md L126

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 2434 docs/dev/debt/libSceAgcDriver.md
PR 4448 docs/dev/debt/libSceAgcDriver.md
PR 5058 docs/dev/debt/libSceAgcDriver.md
PR 5372 docs/dev/debt/libSceAgcDriver.md
PR 5925 docs/dev/debt/libSceAgcDriver.md
PR 6186 docs/dev/debt/libSceAgcDriver.md
PR 6194 docs/dev/debt/libSceAgcDriver.md
PR 6223 docs/dev/debt/libSceAgcDriver.md
PR 6273 docs/dev/debt/libSceAgcDriver.md
PR 6280 docs/dev/debt/libSceAgcDriver.md
PR 6300 docs/dev/debt/libSceAgcDriver.md
PR 6412 docs/dev/debt/libSceAgcDriver.md
PR 6481 docs/dev/debt/libSceAgcDriver.md
PR 6548 docs/dev/debt/libSceAgcDriver.md
PR 6549 docs/dev/debt/libSceAgcDriver.md
PR 6804 docs/dev/debt/libSceAgcDriver.md
PR 6808 docs/dev/debt/libSceAgcDriver.md
PR 6867 docs/dev/debt/libSceAgcDriver.md
PR 6959 docs/dev/debt/libSceAgcDriver.md
PR 6977 docs/dev/debt/libSceAgcDriver.md
PR 7256 docs/dev/debt/libSceAgcDriver.md
PR 7449 docs/dev/debt/libSceAgcDriver.md
PR 7505 docs/dev/debt/libSceAgcDriver.md
PR 7604 docs/dev/debt/libSceAgcDriver.md
PR 7642 docs/dev/debt/libSceAgcDriver.md
PR 7668 docs/dev/debt/libSceAgcDriver.md
PR 7910 docs/dev/debt/libSceAgcDriver.md
PR 8014 docs/dev/debt/libSceAgcDriver.md
PR 8223 docs/dev/debt/libSceAgcDriver.md
PR 8319 docs/dev/debt/libSceAgcDriver.md
PR 8592 docs/dev/debt/libSceAgcDriver.md
PR 9186 docs/dev/debt/libSceAgcDriver.md
PR 9335 docs/dev/debt/libSceAgcDriver.md
PR 9356 docs/dev/debt/libSceAgcDriver.md
PR 9387 docs/dev/debt/libSceAgcDriver.md
PR 9393 docs/dev/debt/libSceAgcDriver.md
PR 9401 docs/dev/debt/libSceAgcDriver.md
PR 9431 docs/dev/debt/libSceAgcDriver.md
PR 9432 docs/dev/debt/libSceAgcDriver.md
PR 9592 docs/dev/debt/libSceAgcDriver.md
PR 9672 docs/dev/debt/libSceAgcDriver.md
PR 9673 docs/dev/debt/libSceAgcDriver.md
PR 9674 docs/dev/debt/libSceAgcDriver.md
PR 9675 docs/dev/debt/libSceAgcDriver.md
PR 9676 docs/dev/debt/libSceAgcDriver.md
PR 9700 docs/dev/debt/libSceAgcDriver.md
PR 9842 docs/dev/debt/libSceAgcDriver.md
PR 9891 docs/dev/debt/libSceAgcDriver.md
PR 9892 docs/dev/debt/libSceAgcDriver.md
PR 9893 docs/dev/debt/libSceAgcDriver.md
PR 9895 docs/dev/debt/libSceAgcDriver.md
PR 9898 docs/dev/debt/libSceAgcDriver.md
PR 9904 docs/dev/debt/libSceAgcDriver.md
PR 9905 docs/dev/debt/libSceAgcDriver.md
PR 9906 docs/dev/debt/libSceAgcDriver.md
PR 10026 docs/dev/debt/libSceAgcDriver.md
PR 10049 docs/dev/debt/libSceAgcDriver.md
PR 10193 docs/dev/debt/libSceAgcDriver.md
PR 10233 docs/dev/debt/libSceAgcDriver.md
PR 10359 docs/dev/debt/libSceAgcDriver.md
PR 10420 docs/dev/debt/libSceAgcDriver.md
PR 10515 docs/dev/debt/libSceAgcDriver.md
PR 10581 docs/dev/debt/libSceAgcDriver.md

@github-actions github-actions Bot added the docs label Oct 21, 2026
@JJenkx

JJenkx commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

A fourth title for this entry: Blue Prince (PPSA25009) on an AMD Radeon RX 6650 XT (RADV Mesa 26.2.4, Linux 7.2.9), clean Release 7ab4b2e561.

  • 1 stop in 9 runs of the same build and input schedule. Each run was 160 s; the stop was at 148 s, in the 3D scene. It came in 1 of the 5 runs with the default draw cache size; the 4 with APS5_DRAW_CACHE_ENTRIES=32768 ran to the end.
  • No storage image ... line before it, as in the PPSA25936 case. The failure comes out through presentation:
[gpu] driver failure: AGC graphics: storage texture has no committed guest pages
[videoout] presentation failed: AGC graphics: storage texture has no committed guest pages

AI-assisted: yes (Claude Code).

A fourth title reached the refusal on another GPU and OS (reported on the
PR), so the entry no longer names a count.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@JJenkx

JJenkx commented Oct 22, 2026

Copy link
Copy Markdown
Contributor

A reproducible case for this entry: Hamster Playground (PPSA06652) 01.009.000, Unity, on main 38d3c0858a + #8847 (an unrelated AGC change). Radeon RX 6650 XT, RADV Mesa 26.2.4, Linux 7.2.9.

  • Scripted input: Cross at 25 and 40 s to clear the disclaimer, Down at 55 s to move to PLAY on the "Select your house" screen, Cross at 58 s.
  • Both runs with that schedule stop at 60.3 s, about 2 s after the Cross that starts loading the house, with no storage image ... line before it:
[gpu] driver failure: AGC graphics: storage texture has no committed guest pages
  • The line before it in each run is the title opening a loading-screen background, /app0/Media/StreamingAssets/Backgrounds/07.jpg and 03.jpg.
  • A run without the Down press stays on the house-select screen for 180 s with no stop, so the trigger is starting the game, not time.

Unlike the intermittent cases above, this one should be easy to catch under a debugger. I haven't taken a stack, so I can't say whether it's the depth-plane path in #9406. Logs, reports and the 57 s screenshot: 20261022-PPSA06652-storage-stop.tar.gz (sha256 e8edb318cdeaf2a4dbe5ac346867159c3338636ff2002173f5dd03d7c2fbe7e3).

AI-assisted: yes (Claude Code).

@JJenkx

JJenkx commented Oct 22, 2026

Copy link
Copy Markdown
Contributor

Follow-up on Hamster Playground above: it is the FlushDepthPlanes path. A GDB stack shows Driver::run -> VulkanDevice::StoreIdleResults -> StorageTexture::FlushPending -> FlushDepthPlanes -> StorageTexture::Create -> Require. With #9406 it no longer stops: 3 of 3 runs against 3 of 3 stops on its base. Details: #9406 (comment)

@xXPBSXx

xXPBSXx commented Oct 23, 2026

Copy link
Copy Markdown
Contributor Author

Thanks for the stack. It shows the PPSA06652 stop goes through FlushPending -> FlushDepthPlanes -> StorageTexture::Create, the path #9406 changes. By your count in the #9406 thread, 3 of 3 runs with #9406 no longer stopped and 3 of 3 runs on its base stopped; I have not run PPSA06652 myself.

For this entry: the debt text says "several titles reach this intermittently". For the three logs I measured (PPSA15065, PPSA25936, PPSA29413) I have no stack, so I cannot say whether they take the same FlushDepthPlanes path. The two with storage image ... lines before the stop (15065, 29413) show released or rewritten memory, but whether that is the case #9406 handles is not established. I would keep the entry as it is until #9406 is merged and one of those titles has been re-run against it; happy to adjust the entry if you prefer.

AI-assisted (Claude Code).

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants