Repository navigation
fix(recompiler): give a dynamic-mip storage image a slot for every level - #7238
oneandonlydean merged 1 commit into
Conversation
A dynamic-mip storage image reserved four mip slots, so a compute shader whose T# spans more levels failed with "runtime storage image mip capacity exceeded". PPSA01317 hits it on boot with a 512x512 surface of ten levels and aborts. An RDNA T# addresses at most sixteen levels (4-bit BASE_LEVEL and LAST_LEVEL), so a dynamic-mip image now reserves sixteen slots, and a typed storage heap holds 64 elements so four such images still share one class. Heap arrays keep their compact length. The runtime ABI goes to 14, so existing shader caches are invalidated. AI-assisted: yes
|
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.
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.
|
|
Independent hardware run, head |
|
Tested on God of War Ragnarök (PPSA08330, 06.006.000): the
LLM assistance used (Claude); runs on our machine. |
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
|
RTX 4090 data point on PPSA01317, following my #7243 run from earlier tonight, where the title stopped on Setup. Gran Turismo 7 PPSA01317 01.000.001 (base package), Windows 11 (26200), RTX 4090 (NVIDIA 616.92), AMD Ryzen 7 5800X, MinGW-w64 GCC 15.2.0 r7 (UCRT), Release Result. The ABI bump invalidates the shader cache, so run 1 recompiled all 1,785 shaders (793 MiB written). Runs 2 and 3 (warm) and a fourth run with the shader and pipeline caches moved aside (cold again, 1,785 misses) all get past the mip-capacity throw: splash, then the black loading screen with the GT spinner (title-bar counter 15 to 60 FPS, about 490 frames at the last capture), save data mounted, three That is the bind-time refusal #7240 describes for this title (
The stalled run. Run 1 wrote its 1,785 cache entries in the first two 10 s windows, mounted the save data and opened the same files as the other runs ( stderr of run 3 (warm, box idle) from the second 10 s summary to the abort, per-shader
|
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
What
A dynamic-mip storage image reserved
RuntimeAbi::StorageMipSlots = 4mip slots, so a compute shader whose storage T# spans more levels was poisoned withruntime storage image mip capacity exceeded.On PPSA01317 a compute T# over a 512x512 surface with ten mip levels hits this on boot and the title aborts with that message; with this change it gets past it on
main.An RDNA T# addresses at most sixteen levels (4-bit
BASE_LEVELandLAST_LEVEL), so a dynamic-mip storage image now reserves sixteen slots.StorageHeapCapacitygoes from 16 to 64 so four such images still share one typed storage class, as before. Heap arrays keep their compact length.RuntimeAbi::Versiongoes to 14, so existing shader caches are invalidated.The new
verifyDynamicStorageMipChaincase inagc_shader_memoryselects a runtime mode for a ten-level and a sixteen-level 2D storage T#. It fails onmainwitha dynamic-mip storage image of a 512x512 surface with ten levels was rejectedand passes with the change.Tested
Windows 11, MinGW GCC Release build with
BUILD_TESTING=ON.agc_shader_memoryfails onmain(with only the test applied) and passes with the change.agc_shader_memory_tests,agc_shader_device_profile_testsandagc_driver_graphics_tests(22 tests) passes.python tools/check_conventions.py --base origin/mainpasses;tools/check_test_registration.pyreports no unregistered tests.runtime storage image mip capacity exceededno longer occurs and the title continues past it.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)