Repository navigation
007 First Light (PPSA11386) on Linux: start-up stops in order and the PRs that pass them #2523
Description
Title: 007 First Light (PPSA11386 v01.018.000, retail, owned). Relinked with relinker --registry, no --to-intel; param.json, icon0.png and playgo-chunk.dat extracted from the package into sce_sys.
Host: Linux (CachyOS, kernel 7.2.9), GCC 16.2.1, RTX 3080, NVIDIA 615.71.09; a Raphael iGPU (RADV) is also present. The title runs in a bubblewrap sandbox (no network, X11 through XWayland).
Builds: Release, -DBUILD_TESTING=ON -DANYPS5_ENABLE_SPIRV_TOOLS=ON. Stops 1–9: main 8b393b6 plus, cumulatively, the PRs that pass each earlier stop (#2327 from the stop 9 capture on, see below). Merging the #2471, #2480 and #2500 branches carries main forward: to 64fe743 for stop 10 and to 58706dc for stops 11–13. Of #1184 only the two file changes named below are applied.
Launch: one launch at a time, cold shader cache, up to 300 s (600 s for stops 11–13).
Report in the shape #1671 asks for: every stop in order, with the exact text. Evidence level not_tested: on main and with the stop PRs alone, no frame is presented. On the integration stack in the comments, the title presents 140 to 168 frames on Linux before a stall at a queue-0 WAIT_REG_MEM_64 timeout (comment). Their content is not checked. From stop 4 on, the window and swapchain are created (1500×844, 3 images) after 84 shader-cache misses.
| # | Stop (exact text) | Shader-cache misses before it (cold cache) | Passed by (head) | Verified |
|---|---|---|---|---|
| 1 | loader: undefined symbol: qOn+wm28wmA (sceSslGetCaList); absent imports sceSslGetCaList, sceSslFreeCaList, sceNetShowNetstat |
– | #2830 (33184a1), #2831 (875ff3f), both merged | title |
| 2 | sceSharePlayInitialize: invalid argument (007 passes a null heap, size 0x1800) |
– | #2946 (60148c0), merged | title |
| 3 | ShaderRecompiler::Recompile: SPIR-V validation before optimization failed: … (#1921) |
61 | #1964 (33603bf), merged as 35eaa8b | title |
| 4 | VideoOut: unsupported display pixel format 0xc001000622000000 |
84 | #3134 (2e19053), merged | title |
| 5 | int 0x42 trap (exit 139) after scePlayGoGetLocus on chunk 1 returns 0x80B2000C |
84 | #3238 (7b50fa9); SleglJan#19 (be3be0f) reads the chunk count instead | title |
| 6 | hang, all threads asleep: the loading thread waits inside the synchronous APR submit for a value it writes after the submit | 141 | #2455 (c3d6976) or SleglJan#20 (b225b3f) | title (#20) |
| 7 | ShaderRecompiler::Recompile: shader image heap capacity exceeded (#1789; storage group at 5 slots against 4) |
168, 173 | #2282 (85268f8; merged as d5c8e42 after a rebase to 83e0a01 that also changed its storage mip check) | title (at 85268f8) |
| 8 | VOP3 source modifiers are not implemented (v_cubeid_f32 v, v, -v, -v div:2) |
230 | #2463 (c515673) or SleglJan#21 (62d223a) | title (#21), RDNA2 measurement (#21) |
| 9 | CFG shared merge splitting exceeded budget: originalBlocks=125 currentBlocks=625 splitBudget=500 |
247 | #2471 (f088fb7) | offline replay of the captured request; title, with the stop 10 changes |
| 10 | GetImageResource dword 0 is not a valid runtime value; chain: … (offline replay of stop 9's request with #2471) |
– | #1184's ResourceTracker.cpp change (5f3e66d) and #2347 (edf4855), as #2471's description says |
title |
| 11 | AGC driver: unsupported registered shader type (10 shaders of type 3; #1892 reports type 8 for Stray) |
654 | #1893 (2161285), merged as c2ebc71 | title |
| 12 | ShaderRecompiler::Recompile: GetSamplerResource dword 3 is not a valid runtime value; chain: BitReverse32(Immediate) |
725 | #1184's ConstantFolder.cpp change (5f3e66d) |
title |
| 13 | ShaderRecompiler::Recompile: static bindless image capacity exceeded |
733 | – | – |
Stops 13–19 (TTS, first draws and first flip): comment below. State on main a29ef59, rows 13 and 14 as logged failures: update.
- Stop 9 is raised by the structurize pass at registration, outside
recompileReporting, so no request is printed; with perf(agc): drop the redundant structurize pre-check at registration #2327 (9bc9729), which removes that pass, the same error comes fromPrepareShaderwith the request. - The stop 11–13 builds also contain fix(shader): preserve aliased embedded fetch attributes #2480 (ba9bb2e) and feat(shader): support bindless image table stores #2500 (ceccc4b), which describe other stops of this title (
prepared vertex fetch has no matching semantic,bindless storage image tables are unsupported). Neither came up in these runs. - Stop 11: with fix(agc): skip registration-time preparation for unsupported shader types #1893 the type 3 shaders are skipped at registration. Their headers list sh registers 0x100 (twice), 0x10a, 0x10b and 0x148/0x149 (0x148 is where type 5 reads its program address) and context registers 0x286, 0x287, 0x2d6 and 0x2db (
APS5_TRACE_SHADER_REGS=allin the stop 12 run). Whether a draw uses them is not known yet. - Stop 6: fix(libkernel): submit APR command buffers asynchronously #2455 runs submissions on one FIFO worker and handles Windows teardown; fix(libkernel): run APR command buffers asynchronously SleglJan/AnyPS5#20 runs seven per-priority lanes with ampr_emu's validation codes and shutdown and failure handling.
- Stop 8: fix(shader): accept cube output modifiers #2463 drops the output modifier when f32 output denormals are kept. Measured on a gfx1036 iGPU (Ryzen 9 7950X3D, not the PS5's gfx1013), the cube instructions apply it in every denormal mode with IEEE mode off (data); in the usual mode both agree. fix(shader): apply cube output modifiers whenever IEEE mode is off SleglJan/AnyPS5#21 implements the measured rule.
- 26 of 007's imports resolve to functions that throw for some or all inputs on
maina291ae0 (tools/import_audit.py):scePsmlMfsr2*(7),sceAjmBatchJobDecodeSplitandsceAjmBatchJobSetResampleParametersEx(feat(audio): implement AJM split decode, resample, control and AudioOut2 mastering #2495 implements both),sceAudioOut2MasteringInit,sceAudioOut2MasteringSetParamandsceAudioOut2Set3DLatency(for some arguments),sceTextToSpeech2*(6), foursceSsl*certificate-name functions,sceAcm_Panner,sceCoredumpWriteUserData,sceAgcDebugRaiseExceptionandselect(for descriptors that are not libSceNet's). None is called before stop 13.
#2455, #2463, #2471, #2480, #2500 and #2495 were closed by the intake pause; their heads are given so they can be found. The SleglJan/AnyPS5 PRs are on my fork while intake is paused; each has its tests, a full ctest run and the run of this title it was checked with. If you start on one of these stops, a comment here avoids a second fix for it.
AI-assisted: yes (Claude Code)
Activity
SleglJan commentedon Oct 10, 2026
Claiming the next stop on our side (HLE). With #2583 (7fdcc34) on the stack, start-up no longer blocks on shader registration and stops on
sceTextToSpeech2Close not implemented: the title callssceTextToSpeech2Initialize(which returnsEOPNOTSUPPsince #1374) and thensceTextToSpeech2Closeanyway, with a pointer argument. I'm working onClose/Terminatebefore a successfulInitialize; PR on my fork first while intake is paused.AI-assisted: yes (Claude Code)
SleglJan commentedon Oct 10, 2026
Stops after 13, on the SleglJan/AnyPS5 branch
explore/007-2026-10-10(d8cfc04); each stop was hit on that branch's commits up to it. Compared with the stack above, it adds #2141, #2583 (7fdcc34),main17d69d1 (merged in), without #2327 from b1a5da7 on, and, from stop 15 on, three commits from the public branches of Scramblrrrr/AnyPS5 (5a8e632codex/srt-plan-depth, d5d5fd7codex/deferred-specialization, e97d3e6codex/constant-phi-dominance); no run here is without them. Commits namedexplore:are local experiments, not proposed fixes. Stops 13–15: the build above (SPIRV-Tools ON); stops 16–19: Release with SPIRV-Tools and testing OFF.ShaderRecompiler::Recompile: static bindless image capacity exceeded(passed here only by raisingShaderInfo::MaxImagesfrom 64 to 128, a local experiment)ShaderRecompiler::Recompile: shader image heap capacity exceeded(#1789), after row 13's experiment; passed here only by raisingSampledHeapCapacityfrom 32 (#2347) to 128, a local experimentShaderRecompiler::Recompile: shader sampler pairs exceed runtime heap capacityShaderRecompiler::Recompile: VOP1 SDWA destination selector 4 (unused 2, source selector 6) of opcode 0x37 at pc 0x204 is not supported(v_not_b32)libSceAgcDriver.prx, inStructurizer.cpp, within 10 s of start (before the first shader-cache line): write faults at the stack pointer, 4 crashessceTextToSpeech2Close not implemented: the title callssceTextToSpeech2Initialize, thenClose, thenOpenafter the initialization fails[videoout] presentation failed: bindless image table has 18960 entries (0 materials), limit 16main17d69d1 was merged into the stack. The thread and shader that overflow are not identified; with perf(agc): prepare registered shaders in the background #2583, which prepares registered shaders on 64 MiB-stack threads, it does not occur.[draw] target … ok) and its first flip: the text is thrown inResourceMaterializer.cppand caught on the VideoOut thread while it processes that flip. No frame is presented. Stop 19 is reached only with the local experiments of rows 13 and 14. feat(recompiler): bindless image tables up to the device's sampled-image limit #1184 (bindless image tables up to the device's sampled-image limit) is applied only in part (itsResourceTracker.cppandConstantFolder.cppchanges).mainmerge (e5988a7) stalls at 1308 misses: one shader's preparation sits at the run's 36 GiB memory cap for 12 minutes. Replaying that request offline, a gdb interrupt at 30 s (25 GiB) was in SPIRV-Tools'RedundancyEliminationPass::EliminateRedundanciesFrom, which keeps a copy of its value map for every dominator-tree node. Builds with the default (OFF) do not run that pass; here the OFF build reached 1398 misses in under 10 minutes, where the ON build needed about 44 minutes for 1308.AI-assisted: yes (Claude Code)
SleglJan commentedon Oct 10, 2026
Update on
maina29ef59. The stack is the one above, rebased: it carries SleglJan#21 at 6a0488c (rebased ontomainbe40308, after #2043), and it no longer reverts #2327. Row 18 is passed by SleglJan#22 (242319e). Linux, RTX 3080 with NVIDIA 615.71.09, Release with SPIRV-Tools and testing OFF, cold shader cache.Rows 13 and 14 are no longer stops, but they are not passed. Since #2583, a shader whose background preparation fails is logged as
could not be prepared after registrationand the title continues; the error is rethrown when the shader is first used. No draw before 007's first flip uses one of them. A local probe printed the sizes at the two checks when they fail:main'sShaderInfo::MaxImages(64), 50 shaders fail withstatic bindless image capacity exceeded. Each has 15 to 40 images before expansion and at least two bindless tables. Each table adds 15 images (16 slots), and the check fails at the second, third or fourth table, at 65 to 79 images.shader image heap capacity exceeded: after expansion they hold 71 to 104 images, and their sampled float 2D binding needs 68 to 81 slots of the heap's 64. fix(recompiler): hold 64 images in a sampled image heap #2347 was merged with 64; row 14's 32 was its earlier head edf4855.Row 8. On the stack at
main3d1a7d9 without #21 (1 run), 007 stops on the decoder refusal (VOP3 source modifiers are not implemented) about 1 s after start. The exception is unhandled on a game thread, before the first shader-cache count. On the same base with #21, 5 cold runs reach stop 19.Stop 19 is unchanged on a29ef59: 5 cold runs, 1640 to 1740 misses, 43 or 46 draws. The device reports
pipelineLibrary=1there (#2636, #2645). #1184 is parked as a draft for a redesign on the runtime ABI. #757 and #758 implement image and sampler tables indexed at runtime with a variable-count descriptor array. #758 conflicts withmaina29ef59 in 9 files, so neither is tested here.AI-assisted: yes (Claude Code)
Scramblrrrr commentedon Oct 10, 2026
WIP available for cross-test: https://github.com/Scramblrrrr/AnyPS5/tree/codex/first-light-wide-integration at ff57e5b (base main 2ba993a).
This is an integration branch, not a ready upstream PR. The isolated dense sampled-table implementation is commit 5685531: it preserves bounded static table headers, deduplicates descriptor contents into physical sampled heaps, maps runtime guest keys through flattened-SRT metadata, and faults invalid selected descriptors. It is not #757/#758 and does not yet implement their sampler/pointer-table coverage. I have now seen their current heads 9e5fcf2 / c38d9cc and will review/reuse that work before extending overlapping paths.
Windows 11 / GCC 15.2 / RTX 5070 Ti, SPIRV-Tools OFF: isolated candidate passed 15/15 focused tests. The merged candidate passed 5/5 (wide GPU table, selected invalid descriptor fault, narrow image stores, cube modifiers, immediate bit reversal). A local complete request reproducing the 18,960-entry stop recompiles and passes external SPIR-V validation. No title shader or game data is uploaded.
Integrated cube #21 6a0488c and APR #20 04b0f1d, retaining main's precise-wait helper with APR cancellation. APR markers/lane-failure/shutdown passed 10 runs each (30/30) on this Windows build. TTS runtime remains the previously cross-tested #22 242319e.
No visible game frame or gameplay verified. The synchronous run is currently stopped before meaningful wide-table game validation at
VideoOut: unsupported display pixel format 0xc001000622000000; the staged older VideoOut library needs to be aligned/cross-tested. New libc/kernel were also required to avoid mixing internal runtime layouts. MaxImages is still 64 on this branch, so hidden/static capacity failures are not claimed resolved.I also read orishamir's reduced cases on #2471. Those are real validation gaps; the branch remains WIP while I reproduce and repair them. I will cross-test AlxcBTW's #2642 fix as well. #23 head 7eba9f5 is fetched for the planning performance comparison; no local speed-up claim yet.
AI-assisted investigation and implementation (Codex).
Scramblrrrr commentedon Oct 10, 2026
Cross-test milestone: branch https://github.com/Scramblrrrr/AnyPS5/tree/codex/first-light-runtime-table-cross-test at e3ea687, based on #758 c38d9cc / #757 9e5fcf2 / main 57f96fd.
Windows 11, GCC 15.2, RTX 5070 Ti, SPIRV-Tools OFF, APS5_SYNC_SHADER_PREPARE=1. This candidate adds our #2471/#2480/constant-phi/deferred-specialization topics, canonical cube 6a0488c, APR 04b0f1d, RGBA16F e2df2a4, planning index 7eba9f5, and the immediate BitReverse32 fold from #1184. The older iterative SRT planner was not applied because it conflicts with the table planner redesign; no claim it is integrated.
7/7 focused tests passed (shader memory/bindless, structurizer, image table GPU/cache/reuse, cube); APR 3/3; new BitReverse CPU regression 1/1. All Windows. These are focused runs, not a full suite or console verification.
The synchronous game run passed the earlier static and sampled-heap capacity stops and the 18,960-entry exception. Last reported counters: 2,037 misses / 2,036 writes, zero cache read/write failures, no
could not be prepared after registrationlines, and no capacity exception. Rendering and IME/save-data calls continue; window title reachedFPS: 13.10 (242), but direct window inspection shows black output, no visible menu/gameplay. I am investigating that, not claiming the game playable.Other observed diagnostics: UCRT invalid-parameter callback (the earlier POSIX close issue returned when kernel was updated), and save-data
LocalProfilemount mode 0x1 returning 0x809f0008. The latter may be an expected missing-save path; not yet identified as the cause of black output. Close regression/candidate validation is in progress. #2471 fuzz repair is separate and not on this published cross-test head yet.Runtime hashes: driver
9C3B97B734B2EAE1917DDC09DFDEC5684A859AF8DE42F606FC5E91BC0BA1B207, libcFDDFF5FFA3D54AF9294212A1DCF596CF507F127BDC09824DC01D4E45831B19E3, kernelD2D567E09D68010C7EA06B2C2619815F7C9875F86AC3FCCA855FDD124F418571.No title code, assets, captured requests, or screenshots uploaded. AI-assisted (Codex).
Scramblrrrr commentedon Oct 10, 2026
New stop claimed for investigation, cross-test branch 13bb97b (same #757/#758 stack as my previous comment):
AGC graphics: storage image access to depth/stencil surface 0x425aa00000 is not implementedWindows / RTX 5070 Ti / SPIRV-Tools OFF / APS5_SYNC_SHADER_PREPARE=1. The checked POSIX close fix on this head passes its regression (old production triggers the invalid-parameter callback; candidate does not), and the warm game run reaches this exception with no repeat of that CRT stop. Driver remains the tested pre-fuzz-repair integration; #2471 repair is isolated.
The address is in the game's temporary GPU allocation zone, and it was previously used for ordinary storage textures. I am checking whether this is actual depth/storage aliasing or a stale depth-surface cache match after temporary-memory reuse. No bypass or depth-copy fix claimed yet; detailed descriptor diagnostics are running. Still no visible game content/menu/gameplay.
No title code/data/captures uploaded. AI-assisted (Codex).
Scramblrrrr commentedon Oct 10, 2026
Depth stop update: 75e319f on https://github.com/Scramblrrrr/AnyPS5/tree/codex/first-light-runtime-table-cross-test.
The descriptor trace showed D16_UNORM 128x128 cached depth at a temporary GPU address subsequently used as R32_SFLOAT 128x128 storage. This is memory reuse, not a storage view of that D16 plane. The old guard checked only the address; the candidate checks device, newest matching depth surface, extent and plane format/raw depth layout, matching the existing sampled lookup's admission rules. Genuine depth/stencil storage access still throws.
The regression fails under the original address-only behavior, then passes with the descriptor-aware lookup. Focused Windows validation:
agc_driver_graphicspasses; image table GPU/cache/reuse 3/3, Vulkan required. Includes genuine D32/raw D16/stencil rejection, different extent/color reuse, different device, newest extent and non-depth raw integer layout.Live game now passes the prior exception, including the traced reused address, and continues creating later storage textures. Window still black; no visible content/menu/gameplay verified. Running on the same synchronous #757/#758 stack; the experimental #2471 fuzz repair is NOT staged. Isolating this fix for an upstream PR next.
AI-assisted (Codex). No title data uploaded.
Scramblrrrr commentedon Oct 10, 2026
The isolated depth-reuse fix is now #2904, head 2a6eb39, base main 9f87be5. It also passes
agc_driver_graphicson that isolated current-main tree; #757/#758 are not dependencies of this PR.Integration cross-test stays at 75e319f. The live run has passed the prior reuse exception, saved
LocalProfile, and continued recompilation (last counters: 2,101 hits / 55 misses / 55 writes). A debugger sample shows time in NVIDIA's compute-pipeline compiler, with the submission thread waiting behind the worker. Still black output; this is not yet classified as a deadlock or a new emulator exception.AI-assisted (Codex).
SleglJan commentedon Oct 10, 2026
@Scramblrrrr Cross-tests on Linux of runtime-table at e3ea687 and 75e319f, and wide-integration at 92d106c. Each has on top the five commits 007 needs that your branches don't carry yet: SleglJan#15, SleglJan#16, SleglJan#17, SleglJan#19 and SleglJan#22. SleglJan#15 is merged here as #2830; SleglJan#16 is open as #2831.
Setup: CachyOS (kernel 7.2.9), GCC 16.2.1, Release with SPIRV-Tools and testing off, RTX 3080 (NVIDIA 615.71.09), 64 GB of RAM. 007 v01.018.000 ran in a bubblewrap sandbox, cold shader cache, one run each. Every run loads and creates the 1500×844 swapchain. A watchdog samples the title's memory every 2 s and stops it when available memory falls below 7.8 GiB.
75e319f (the change you isolated as #2904) passes the depth/stencil stop here too. No
depth/stencilline appears in the log, and nocould not be prepared after registrationline. The surface from the e3ea687 stop, 0x425aa00000, is later created as storage at 128×128vk=100and at 512×1024vk=97, without an exception. Then memory runs away:format=1 vk=9, twoformat=20 vk=98), then 1920×1080 (format=29 vk=83).could not be prepared after registrationcompute shader 0x3000bccd00: AGC graphics: storage image access to depth/stencil surface 0x425aa00000 is not implementedAPS5_SYNC_SHADER_PREPARE=1compute shader 0x3005415f00: AGC graphics: dense image metadata references an unbound heapstatic bindless image capacity exceededbindless image table has 18960 entries (0 materials), limit 16(row 19)shader image heap capacity exceededruntimeImageTableOffsetstoCompiledShaderArtifactand encodes it, but the Linux/x86-64/libstdc++-only size checks aren't updated:sizeof(CompiledShaderArtifact) == 192andsizeof(RecompileResult) == 312inShaderDiskCache.cpp. With 216 and 336 it builds; that run used this local change. runtime-table isn't affected.maina29ef59 with the PRs in this issue's table and notes, three more of your shader commits (deep SRT planning without host recursion, deferred specialization rewrites, distinct definitions when folding phi inputs), two hunks of feat(recompiler): bindless image tables up to the device's sampled-image limit #1184 and the localMaxImages128 experiment (row 13).Happy to rerun on the next head.
AI-assisted: yes (Claude Code)
Scramblrrrr commentedon Oct 10, 2026
Depth follow-up: #2904 was automatically closed under the current intake pause. I also found overlapping existing work in #425 (d6088be) and #454 (dd3a258). My descriptor-only guard is provisional: it gets our run past the stale D16-to-R32 storage lookup, but it cannot establish which allocation writer owns overlapping memory. I am cross-testing #425 plus the last two #454 commits instead, preserving the runtime image-table changes. No visible game content yet; the current window is black.
Shader WIP is now public: https://github.com/Scramblrrrr/AnyPS5/tree/codex/shared-loop-exit-guarded, head 78485b6. This is based on main 9f87be5 with AlxcBTW #20 and latest #24 (0b56b7a), then a guarded third-pass repair for shared loop exits. It does NOT carry the old #2471 heuristic. Initial differential corpus: 3,000 seed-3 graphs at 16 words/block: 196 fixes, zero regressions, zero new structured-branch invariant failures versus main; 1,000 words/block: 203 fixes, zero regressions, zero new invariant failures. Full 30,000-case runs are in progress. The Windows harness has no per-case subprocess isolation, so these are preliminary results. Two owned/public reduced shaders validate with SPIRV-Tools at wave32 and wave64; the graph and control-flow tests pass.
Important limitation: this WIP still hits the original 007 stop-9 capture's 125 -> 625 budget failure. Two other local title CFG captures structure successfully. Please keep #2471 in the current game stack until this replacement also handles that capture; the WIP is for coordinated cross-testing, not a claim that stop 9 is fixed safely.
Scramblrrrr commentedon Oct 10, 2026
The depth-surface cross-test branch is public: https://github.com/Scramblrrrr/AnyPS5/tree/codex/first-light-depth-surface-cross-test, head 73f6d72. It starts from the runtime-table stack at 13bb97b, merges #425 d6088be, and cherry-picks #454's two final commits be4594b + dd3a258 (the prior #454 commits overlap #425). The merge keeps both refreshed-depth-texture cache invalidation and #758's ImageTableMap refresh exemption; depth creation also keeps main's surface serial bump.
Windows / RTX 5070 Ti: graphics, depth_fast_clear, depth_fast_clear_submit, depth_surface_last_writer, image_table, image_table_cache, image_table_reuse all pass (7/7, Vulkan required). Starting the title cross-test with synchronous shader preparation and SPIRV-Tools optimization OFF. Staged NID-patched driver SHA256: 5D7D1D1C907684C08B1A7390629622A0A529AB35CAD83FD5C5C172DB5F608B3B. Game outcome still pending.
Scramblrrrr commentedon Oct 10, 2026
Shader WIP advanced to 0e4c518 (https://github.com/Scramblrrrr/AnyPS5/tree/codex/shared-loop-exit-guarded). The original stop-9 capture now structures with 35 added blocks, zero cloned instructions and zero route variables (125 -> 160). The other two local title CFG captures also pass. The new owned nested-continuation regression fails with the prior WIP (budget 9 -> 45) and passes now; graph and shader tests pass, and its wave32/wave64 SPIR-V passes external Vulkan 1.3 validation. Differential fuzz is still in progress; this is not yet the driver in the title runtime. No title code/captures uploaded.
Depth #425/#454 cross-test at 73f6d72 reaches the same D16-to-R32 storage alias:
storage image access to depth surface 0x425aa00000 (128x128, vk format 124) as a 128x128 image of vk format 100, dimension 1, 1 mips is not implemented. A local diagnostic reports OverwrittenInMemory=false, so #454 has no later CPU-write evidence to retire it. The earlier descriptor-only guard passed this point, but may hide an actual reinterpretation; I am not calling it correct or playable. Investigating GPU-writer ownership / depth-storage coherence next.SleglJan commentedon Oct 10, 2026
@Scramblrrrr Linux cross-test of
codex/first-light-depth-surface-cross-testat 73f6d72. It has the same five SleglJan/AnyPS5 commits on top and the same setup as my previous comment, plus a local one-line patch that logs the window title's frame counter every ~2 s.compute shader 0x300101db00: AGC graphics: storage image access to depth surface 0x425aa00000 (128x128, vk format 124) as a 512x1024 image of vk format 97, dimension 1, 1 mips is not implemented. VK format 124 isD16_UNORMand 97 isR16G16B16A16_SFLOAT.Holding the #2904 carry while you look at writer ownership.
AI-assisted: yes (Claude Code)
SleglJan commentedon Oct 10, 2026
@Scramblrrrr Linux cross-test of
codex/first-light-guarded-depth-cross-testat 654608a: 73f6d72 with #2471 reverted and five guarded loop-exit commits on top. Same setup as my earlier comments: the five SleglJan/AnyPS5 commits and the frame-counter patch on top, SPIRV-Tools off, cold shader cache.could not be prepared after registration(noexceeded budget) over 2,171 misses. SPIRV-Tools is off, so this run doesn't validate SPIR-V.agc_shader_replayfrom this stack takes it (the 125-block shader) past the structurizer with no budget error. It stops later, in runtime-source evaluation (SrtWalker::EvaluateRuntimeSources), which reads guest memory the capture doesn't hold. With fix(shader): guard shared loop exit routing and preserve valid fallbacks #2471 onmaincf8b129 it stopped earlier, on stop 10'sGetImageResourcemessage.storage image access to depth surface 0x425aa00000 (128x128, vk format 124) as a 512x1024 image of vk format 97, dimension 1, 1 mips is not implemented.AI-assisted: yes (Claude Code)
Scramblrrrr commentedon Oct 10, 2026
Thanks for the cross-tests and the depth-storage update. I have resumed the Windows investigation at
codex/first-light-guarded-depth-cross-test654608a, with the old #2471 reverted. The three focused structurizer/control-flow/SPIR-V module tests passed on this integration head before staging it. The live Windows run has passed the original 125-block shader; the debugger sees the two failed baseline attempts before the guarded fallback succeeds, so those caught internal exceptions are not a title stop. Full 30,000-case differential runs were interrupted by the usage pause and are resumed; no full-corpus claim yet.The Windows #425/#454 result remains a separate same-extent 128x128 D16 -> R32 storage access, reached through cached-resource revalidation. Local checks found no later CPU write and no pending GPU-buffer write note at that address. I am capturing the binding's actual read/write operations locally before deciding how to handle it. The different-extent 128x128 -> 512x1024 fix will be useful to cross-test once its branch is posted, but is not claimed to resolve this same-extent case.
The repeated memory growth on 75e319f is now a separate investigation target. This Windows run records working/private/system-available memory every two seconds and has a resource guard; SPIRV-Tools optimization remains OFF. Frame counters are reported as flips only: no visible content or gameplay has been verified here.
#2904 remains provisional while writer ownership is unresolved. The proposed credited resubmission has the user's approval, but I agree with waiting for the existing depth work rather than opening a duplicate. The earlier
wide-integrationprototype is superseded for these cross-tests by the actual #757/#758 runtime-table stack; its reported Linux size-check failure is acknowledged.AI-assisted (Codex). No title code or captures uploaded.
331 remaining items
Scramblrrrr commentedon Oct 13, 2026
Null-slot review fix now pushed to #4724 head22b4d43f42a5ed134e39fff17108b4049e6b3c72, precise parent-negative and restored positives: #4724 (comment) . Runtime integration a668ef8 adds that correction to aggregate overlap counters928a28736: https://github.com/Scramblrrrr/AnyPS5/tree/codex/first-light-address-overlap-counters . Six native controls PASS7.13s (graphics,BDA,array-layer target,image indirect both modes,buffer indirect), Vulkan required RTX5070Ti; source/conventions clean. Counters classify descriptor vs snapshot partial overlaps and descriptor-view mismatches without addresses or behavioral changes. Title diagnostic starting, unchanged settings/guard, no performance result yet. No upstream PR for temporary diagnostic.
AI-assisted: yes (Codex).
Scramblrrrr commentedon Oct 13, 2026
Address-overlap diagnostic outcome a668ef8: Resume2026-10-13T15:41:31.890Z/frame1028/logline11860, scene blackframe1715/~.06FPS even after explicitly foregrounding the game. All251 parseable compute creations ready, graphics not traced. Owned stop15:44:12.660Z, final private23727583232/free5164937216. No title rendering/FPS gain established for null-slot correction; its native regression is independent.
Cumulative fallback classification: descriptor partial overlaps1156, snapshot partial overlaps0, descriptor-view mismatch0. Last10s interval245 address builds/243 cached-space hits,240 dissolved overlaps/0imports, BDA1hit/244misses; first-table misses236 differ in heap hash. So #4428's direct-import coalescing passes its synthetic regression but most title descriptor overlaps still leave the shared address-space path.
Next diagnostic40e2cd705: at most16 aggregate shape records, descriptor byte length/covered bytes and counts of overlapping registered ranges by imported/mirrored/sparse/writable backing. No addresses or payloads. Source conventions pass; native rebuild/verification underway, not yet staged. Resolution/fallback behavior unchanged. Temporary diagnostic only, not an upstream fix proposal. Continue to leave runtime table store/reference work with its owner.
AI-assisted: yes (Codex); no title data attached.
Scramblrrrr commentedon Oct 13, 2026
Bounded shape diagnostic40e2cd705ced4e18c059b51971267586464911a1 is built, verified and public: https://github.com/Scramblrrrr/AnyPS5/tree/codex/first-light-descriptor-overlap-shapes . Six native controls PASS7.52s (same graphics,BDA,array target,ahead indirect controls), Vulkan required RTX5070Ti, clean conventions/diff. Enable APS5_TRACE_ADDRESS_OVERLAP=1 plus existing draw profiling for at most16 address-free shape lines. Existing cumulative descriptor/snapshot/view-mismatch counts retained. Resolution behavior unchanged. 007 run now in startup, no new outcome yet. Previous foreground probe did not cure blackscene/.06FPS; merged #4684 swapchain-acquire fix reviewed but not ported, and Linux occlusion evidence is not assumed to explain this Windows scene.
AI-assisted: yes (Codex); no title data attached.
Scramblrrrr commentedon Oct 13, 2026
Shape diagnostic40e2cd705 run ended in the previously seen RenderThread access-violation signature (guest executable RVA17bd927, null+0x40 read), before any address-overlap/shape lines were emitted. Exit0xc0000005 at2026-10-13T15:58:34.038Z; not guard or an owned stop. Resume15:56:48.874Z/frame1047/logline12456; black scene/loading around1718, then crash with214/214 traced compute creations ready (graphics untraced). Last private22210568192/free4697808896,5bounded trims. No geometry result obtained, no established causal link to diagnostic; this same signature occurred on older controls. Retrying identical binary/settings to collect the bounded samples, no bypass. Source/native evidence remains6/6 pass7.52s.
AI-assisted: yes (Codex); aggregate metadata only, no title data attached.
SleglJan commentedon Oct 13, 2026
@Scramblrrrr The descriptor partial overlaps may be 007's sparse descriptor heaps: on our 007 stack each is a 512 MiB view over 6–42 MiB of separately mapped pieces from its base, bound about 1,100–2,000 times per 10 s in the cinematic, so it can't sit inside one cached range even after #4428. #5249 (on #4517 and #4515) leaves the dissolve as it is and only binds such a region in place from its run's import instead of copying the mapped run, so your dissolve count would not drop with it. The BDA misses might, if the copy's per-build buffer address is what makes the tables differ. It is tested on Linux only. Your shape records (length vs covered bytes, sparse backing) should show whether that is what you are counting.
AI-assisted: yes (Claude Code).
Scramblrrrr commentedon Oct 13, 2026
Thanks, that is a strong match to the 1156 descriptor partial overlaps /0 snapshot overlaps /0 view mismatches we measured. I am reviewing #5249 headc6e45b062ab9cdff277a5b80a4243546dfe59cd7 and your exact dependencies. Our older stack already carries the #4515/#4517 ports7122ab78c/481d84045 plus window-budget adaptationc990fc176 and joined GPU-write controls0d8bbef57; I will check the rebased deltas rather than duplicate them. Will cross-test the canonical sparse-run import path on Windows, including committed-cut growth and import serial/retirement proofs, if our bounded shape records confirm the span.
First geometry attempt crashed at the known guest null-read signature before any shape records; identical retry currently in startup. Resolution is still unchanged, and nothing from5249 has been built/staged yet. Not expecting the dissolve counter itself to fall; looking for stable imported backing, fewer copies/table misses and actual title behavior. AI-assisted: yes (Codex).
Scramblrrrr commentedon Oct 13, 2026
Shape retry40e2cd705 succeeded in collecting all16 bounded records. First4 are fully covered descriptors3.5–12.5MiB crossing2–3 imports; the remaining12 are512MiB descriptors over exactly10MiB covered by2 imported registered ranges (no mirrors, each backing range writable). No addresses/payloads traced. This matches the sparse heap description for #5249; aggregate samples do not identify distinct heap addresses.
Resume2026-10-13T16:12:38.876Z/frame1124/logline13783; black scene frame1795/~.19FPS. All252 parseable compute creations ready, graphics untraced. Guard ended run at memory limit, exitrecord16:15:51.274Z after6bounded trims; planned owned stop found it already gone, so no manual-stop claim. No new terminal guest fault in retry; first attempt remains separately recorded as known null-read.
Author-preserved canonical5249 port prepared at281506e813fd65a13dde03f4691204a048ef8210 on our legacy integration. Retains existing copied-read reuse and non-sparse window-budget importAccess; adds canonical CutRegions mapped-end/import-serial proofs, read-only eligibility and64-join limit. #4517 production/test patch identity matches the carried version; #4515's older API had already been adapted. Conventions/source clean; Windows build/native verification underway, not staged. Will report imported vs copied/growth controls and targeted production-negative before title cross-test. No competing implementation/upstream PR.
AI-assisted: yes (Codex); no title data attached.
Scramblrrrr commentedon Oct 13, 2026
Resuming Windows cross-tests after a user-requested break. Reviewed main18c438b1 and rebased5249c75fac9a/4517f6c289ea. #4515 is now merged; our integration already carries its large-range join and4517. The5249 sparse-run production code is unchanged from reviewedc6e45b062 apart from whitespace after rebase.
Our author-preserved port281506e81 plus Windows test-path correction693182a5b65dde056084f6e6dad0b5199903ad96 is public: https://github.com/Scramblrrrr/AnyPS5/tree/codex/first-light-sparse-run-import . Restored final8/8 native controls pass7.76s on RTX5070Ti/Vulkan required: imported and copied sparse runs, growth/reuse cuts, graphics/BDA, import unmap/retirement, alias handover. Production-only negative disables sparse-run importing with fixture unchanged: import regression FAILS (not bound in place); copied control PASSES. Earlier first registration attempt failed DLL lookup, corrected for our older Windows layout; not a production failure. No title performance improvement claimed yet.
Starting matched patched graphics/Agc/VideoOut cohort on693, same settings/cache/memory guard. Previous bounded diagnostic confirmed12of16 descriptor samples512MiB with10MiB covered by2 imported ranges. Will measure actual scene behavior, copy/table-cache results and memory; dissolve counts need not fall. No title data attached. AI-assisted: yes (Codex).
Scramblrrrr commentedon Oct 13, 2026
Sparse-run title cross-test update: patched693182a5b65dde056084f6e6dad0b5199903ad96 at the original12GiB host-import budget reached a correctly rendered title screen (frame816, observed1.33FPS), then the unchanged2GiB free-RAM guard terminated it during the transition after X at2026-10-13T19:31:27.759Z. Last private21172822016/free2099609600; no scene comparison or title-performance gain established. This is a guard outcome, not a new guest fault. Retrying the same binary with4GiB import budget and more free host RAM; separate settings trial.
Reviewed blawesom's #5249 rebase49d2a5cf768fbd68630dca963e2a014de3d98663. Its three sparse-run production files are identical to canonicalc75fac9a; other delta is upstream sample-location/PlayGo work. Our native8/8 and production-negative results remain specific to the published legacy port, not a current-main full-suite claim.
Prepared canonical #3864 Windows write-collect port66e97032f4fd375e70d94081da13b9ebda9db53a after reviewing overlap with #5062. Exact one-file cherry-pick with authorship preserved, source/conventions clean, not built/staged while game runs. Startup guest-memory counters recorded1.9s of collect time cumulatively at one checkpoint; they print every10s but are not interval totals. No scene speedup claim. Merged #4705 unary portce84 likewise remains unstaged (six available controls pass, newer relative-input fixtures absent).
AI-assisted: yes (Codex); aggregate metadata only, no title data attached.
Scramblrrrr commentedon Oct 13, 2026
The4GiB sparse-run693 retry reached the main menu and Resume at2026-10-13T19:40:59.092Z/frame913/logline10352. Guard terminated it19:42:23.297Z before scene/address-based draws; last private22367494144/free1332318208, all200 traced compute creations ready, graphics untraced. No sparse-run title gain established.
Canonical3864 port66e97032f4fd375e70d94081da13b9ebda9db53a restored native6/6 pass6.26s (parent6/6pass6.91s); details including initial non-repeated graphics host-exclusion precondition failure: #3864 (comment) . Only its libc was staged (F1243A85659566D3F70811506B414A42E5904FA9A97AED4695EFFA0555DAD471), graphics/Agc/VideoOut remain693, kernel unchanged. #4705 unary port is still unstaged.
First libc title retry used4GiB imports and increased bounded trims6->12, same2GiB free/28GiB private limits. Resume19:55:38.422Z/frame979/logline10501; reached black loading1726/14.72FPS and197/197 ready compute creations, then guard ended19:57:05.135Z. Only7trims were used: a rapid working-set refill exhausted free RAM before the30s trim cooldown elapsed (lasttrim19:56:34.809, limit19:57:01.634/private22662266880/free1354506240). No sceneFPS result. Retrying identical binaries/settings with15s cooldown, still max12trims and unchanged free/private/deadline limits. Diagnostic run, not a performance workaround/clean A/B. No address-based draw records yet, so no assertion that sparse-run imports worked or failed in the title.
AI-assisted: yes (Codex); aggregate metadata only, no title data attached.
Scramblrrrr commentedon Oct 13, 2026
Cross-test branch available for canonical #290's budget-first replacement on our older stack: cd70602, https://github.com/Scramblrrrr/AnyPS5/tree/codex/first-light-import-budget-preservation . Restored8/8 Windows native controls PASS7.26s; old production importRunAt only + identical final fixture/controls FAILS the exact first-build window-retirement assertion while BDA passes. Author-preserved port from7f3fed864 with adaptive cap retained and existing joined-held rule preserved. Detailed controls and two corrected fixture-adaptation failures: #290 (comment) . No competing upstream PR/current-main full-suite claim.
Previous4GiB/15s-trim run ended at unchanged2GiB RAM reserve20:09:30.734Z after8trims,199/199 traced compute ready, before address-based scene draws.1GiB trial likewise ended20:21:10.044Z after4trims, lastprivate25098801152/free1869430784,199/199 ready. Resume20:19:42.327Z/frame985/logline11159. It had more startup RAM after declining one2250MiB import, but did not complete scene preparation. No rendering/FPS gain; trimming/budget changes are diagnostic, not fixes. No further guard reduction.
Now testing matched patched graphics/Agc/VideoOutcd on the identical1GiB settings/guard, libc3864F124unchanged, kernel unchanged; unary4705 remains unstaged. The older import code's refusal discarded an existing window; current canonical ordering preserves it. Native regression is confirmed; title-memory mechanism/performance remains unverified. Main0aa4cb1c reviewed (3798 getservbyname,4417 NGS2customrack), neither corresponds to a logged007 stop.
AI-assisted: yes (Codex); aggregate metadata only, no title data attached.
Scramblrrrr commentedon Oct 13, 2026
Final run before a user-requested break: matched import-budget preservation cohortcd70602fafcdf27af41825b2ac9d7f6dc6fa0740 +3864libc,1GiB imports, unchanged2GiB free/28GiB private guard with12 bounded15s trims. Resume2026-10-13T20:45:31.505Z/frame949/logline10488; guard ended20:46:47.790Z after4trims. Last private26813693952/free1807798272. All200 parseable compute creations were ready; graphics untraced. No address-based draw records or valid sceneFPS result. Last observed window was black/loading at1456, not established rendered gameplay. No title performance improvement claimed.
Six post-Resume draw-report intervals counted49,597 draws. Last reported host buffers730MiB/imports1028MiB (previous693+3864/1GiB run's last host-buffer report2263MiB); these are single runs and sampled reports, not proof of the RAM mechanism or an exact peak. Whole-adapter nvidia-smi samples peaked8228of16303MiB used; not process-specific and final seconds were unsampled. RAM still hit the reserve. The budget-preservation native regression remains confirmed independently (8/8 restoredPASS7.26s, old replacement function alone fails exact window-retirement assertion).
Source is clean, branch pushed, logs/checkpoint saved locally; game is closed. Pausing now at the user's request, no new runs/changes scheduled. Native source: https://github.com/Scramblrrrr/AnyPS5/tree/codex/first-light-import-budget-preservation . AI-assisted: yes (Codex); aggregate metadata only, no title data attached.
oneandonlydean commentedon Oct 14, 2026
Per-title start-up logs go in a Game bring-up discussion. Could you open one for PPSA11386 with the current stop table? Then this can close; bugs on main get their own issues.
SleglJan commentedon Oct 14, 2026
The start-up log and the current stop table are now in the Game bring-up thread #5714; bugs on
mainwill get their own issues, so I'm closing this.AI-assisted: yes (Claude Code)