Skip to content

007 First Light (PPSA11386) on Linux: start-up stops in order and the PRs that pass them #2523

Closed

Description

@SleglJan

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.

#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

  1. SleglJan commented on Oct 10, 2026

    @SleglJan
    ContributorAuthor

    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 calls sceTextToSpeech2Initialize (which returns EOPNOTSUPP since #1374) and then sceTextToSpeech2Close anyway, with a pointer argument. I'm working on Close/Terminate before a successful Initialize; PR on my fork first while intake is paused.

    AI-assisted: yes (Claude Code)

  2. SleglJan commented on Oct 10, 2026

    @SleglJan
    ContributorAuthor

    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), main 17d69d1 (merged in), without #2327 from b1a5da7 on, and, from stop 15 on, three commits from the public branches of Scramblrrrr/AnyPS5 (5a8e632 codex/srt-plan-depth, d5d5fd7 codex/deferred-specialization, e97d3e6 codex/constant-phi-dominance); no run here is without them. Commits named explore: 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.

    # Stop (exact text) Shader-cache misses before it (cold cache) Passed by (head) Verified
    13 ShaderRecompiler::Recompile: static bindless image capacity exceeded (passed here only by raising ShaderInfo::MaxImages from 64 to 128, a local experiment) 733 – –
    14 ShaderRecompiler::Recompile: shader image heap capacity exceeded (#1789), after row 13's experiment; passed here only by raising SampledHeapCapacity from 32 (#2347) to 128, a local experiment 739 – –
    15 ShaderRecompiler::Recompile: shader sampler pairs exceed runtime heap capacity 955 #2141 (9c292fd), merged as 9614e0a title
    16 ShaderRecompiler::Recompile: VOP1 SDWA destination selector 4 (unused 2, source selector 6) of opcode 0x37 at pc 0x204 is not supported (v_not_b32) 1398 #2200 (0958235), merged as 21b7876 title, with 17d69d1 and #2583
    17 segfault in libSceAgcDriver.prx, in Structurizer.cpp, within 10 s of start (before the first shader-cache line): write faults at the stack pointer, 4 crashes – not seen with #2583 (7fdcc34; merged as af1a8ed after a rebase to ac03a5b) title
    18 sceTextToSpeech2Close not implemented: the title calls sceTextToSpeech2Initialize, then Close, then Open after the initialization fails – claimed above; fork PR in preparation title
    19 [videoout] presentation failed: bindless image table has 18960 entries (0 materials), limit 16 1429 – –
    • Stop 17 appeared once main 17d69d1 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.
    • Stop 19 comes after the title's first 43 draws (29 with a color target, 14 without, each logged [draw] target … ok) and its first flip: the text is thrown in ResourceMaterializer.cpp and 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 (its ResourceTracker.cpp and ConstantFolder.cpp changes).
    • With SPIRV-Tools ON, the stack before the main merge (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)

  3. SleglJan commented on Oct 10, 2026

    @SleglJan
    ContributorAuthor

    Update on main a29ef59. The stack is the one above, rebased: it carries SleglJan#21 at 6a0488c (rebased onto main be40308, 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 registration and 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:

    • With main's ShaderInfo::MaxImages (64), 50 shaders fail with static 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.
    • With row 13's experiment (128), no shader fails that check. Instead, 32 fail with 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.
    • Neither experiment is needed to reach stop 19. The stack still carries row 13's experiment but not row 14's, and the probe run without either reaches stop 19 too. This replaces the earlier note that stop 19 is reached only with both.

    Row 8. On the stack at main 3d1a7d9 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=1 there (#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 with main a29ef59 in 9 files, so neither is tested here.

    AI-assisted: yes (Claude Code)

  4. Scramblrrrr commented on Oct 10, 2026

    @Scramblrrrr
    Contributor

    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).

  5. Scramblrrrr commented on Oct 10, 2026

    @Scramblrrrr
    Contributor

    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 registration lines, and no capacity exception. Rendering and IME/save-data calls continue; window title reached FPS: 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 LocalProfile mount 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, libc FDDFF5FFA3D54AF9294212A1DCF596CF507F127BDC09824DC01D4E45831B19E3, kernel D2D567E09D68010C7EA06B2C2619815F7C9875F86AC3FCCA855FDD124F418571.

    No title code, assets, captured requests, or screenshots uploaded. AI-assisted (Codex).

  6. Scramblrrrr commented on Oct 10, 2026

    @Scramblrrrr
    Contributor

    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 implemented

    Windows / 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).

  7. Scramblrrrr commented on Oct 10, 2026

    @Scramblrrrr
    Contributor

    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_graphics passes; 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.

  8. Scramblrrrr commented on Oct 10, 2026

    @Scramblrrrr
    Contributor

    The isolated depth-reuse fix is now #2904, head 2a6eb39, base main 9f87be5. It also passes agc_driver_graphics on 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).

  9. SleglJan commented on Oct 10, 2026

    @SleglJan
    ContributorAuthor

    @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/stencil line appears in the log, and no could not be prepared after registration line. The surface from the e3ea687 stop, 0x425aa00000, is later created as storage at 128×128 vk=100 and at 512×1024 vk=97, without an exception. Then memory runs away:

    • Resident memory stays between 12.0 and 14.6 GiB from 32 s to 102 s, at 2,101–2,156 misses.
    • From 134 s to 143 s (2,194 misses), available memory falls from 33.1 to 7.1 GiB, and the watchdog stops the title. Its RSS goes from 16.0 to 71.8 GiB, more than the machine's 61.9 GiB of RAM, so here RSS counts some shared pages more than once.
    • No error is logged before that. The last lines before the stop create and upload storage textures: three 512×512 arrays with 48 layers (one format=1 vk=9, two format=20 vk=98), then 1920×1080 (format=29 vk=83).
    stop misses at the stop process lifetime could not be prepared after registration peak RSS
    runtime-table 75e319f none; stopped by the watchdog 2,194 145.5 s 0 71.8 GiB (see above)
    runtime-table e3ea687 compute shader 0x3000bccd00: AGC graphics: storage image access to depth/stencil surface 0x425aa00000 is not implemented 2,171 119.2 s 0 16.3 GiB
    same, APS5_SYNC_SHADER_PREPARE=1 the same message (compute shader 0x3001086100, same surface) 2,156 289.2 s 0 14.7 GiB
    wide-integration 92d106c compute shader 0x3005415f00: AGC graphics: dense image metadata references an unbound heap 2,109 53.0 s 53, all static bindless image capacity exceeded 13.1 GiB
    for comparison: the stack from this issue bindless image table has 18960 entries (0 materials), limit 16 (row 19) 1,721 26.7 s 32, all shader image heap capacity exceeded 12.3 GiB
    • Both branches pass row 19 in the title on Linux.
    • wide-integration doesn't build on Linux x86-64 with libstdc++. 5685531 adds runtimeImageTableOffsets to CompiledShaderArtifact and encodes it, but the Linux/x86-64/libstdc++-only size checks aren't updated: sizeof(CompiledShaderArtifact) == 192 and sizeof(RecompileResult) == 312 in ShaderDiskCache.cpp. With 216 and 336 it builds; that run used this local change. runtime-table isn't affected.
    • The comparison stack. It is main a29ef59 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 local MaxImages 128 experiment (row 13).

    Happy to rerun on the next head.

    AI-assisted: yes (Claude Code)

  10. Scramblrrrr commented on Oct 10, 2026

    @Scramblrrrr
    Contributor

    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.

  11. Scramblrrrr commented on Oct 10, 2026

    @Scramblrrrr
    Contributor

    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.

  12. Scramblrrrr commented on Oct 10, 2026

    @Scramblrrrr
    Contributor

    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.

  13. SleglJan commented on Oct 10, 2026

    @SleglJan
    ContributorAuthor

    @Scramblrrrr Linux cross-test of codex/first-light-depth-surface-cross-test at 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.

    • The frame counter reaches 99. Then, at 2,172 misses (126.9 s), the title stops with feat(agc): depth planes sampled as 2D arrays, cubes and integer views #425's message: 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 is D16_UNORM and 97 is R16G16B16A16_SFLOAT.
    • As on e3ea687, the earlier 128×128 vk 100 view of that address is a sampled read that falls back to the snapshot path. Here the stop is the 512×1024 storage access.
    • Peak RSS is 17.8 GiB. The stop comes before the point where 75e319f's memory ran away (134–151 s).
    • A rerun of 75e319f with the counter reaches 101. Then the counter stops, and 20–30 s later memory runs away as before.

    Holding the #2904 carry while you look at writer ownership.

    AI-assisted: yes (Claude Code)

  14. SleglJan commented on Oct 10, 2026

    @SleglJan
    ContributorAuthor

    @Scramblrrrr Linux cross-test of codex/first-light-guarded-depth-cross-test at 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.

    • The title runs without fix(shader): guard shared loop exit routing and preserve valid fallbacks #2471: no shader logs could not be prepared after registration (no exceeded budget) over 2,171 misses. SPIRV-Tools is off, so this run doesn't validate SPIR-V.
    • Row-9 request offline: agc_shader_replay from 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 on main cf8b129 it stopped earlier, on stop 10's GetImageResource message.
    • Same depth stop as my 73f6d72 run: the frame counter reaches 91. Then, at 112.8 s, the title stops with 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.
    • Memory: peak RSS is 16.0 GiB.

    AI-assisted: yes (Claude Code)

  15. Scramblrrrr commented on Oct 10, 2026

    @Scramblrrrr
    Contributor

    Thanks for the cross-tests and the depth-storage update. I have resumed the Windows investigation at codex/first-light-guarded-depth-cross-test 654608a, 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-integration prototype 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.

  16. 331 remaining items

  17. Scramblrrrr commented on Oct 13, 2026

    @Scramblrrrr
    Contributor

    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).

  18. Scramblrrrr commented on Oct 13, 2026

    @Scramblrrrr
    Contributor

    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.

  19. Scramblrrrr commented on Oct 13, 2026

    @Scramblrrrr
    Contributor

    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.

  20. Scramblrrrr commented on Oct 13, 2026

    @Scramblrrrr
    Contributor

    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.

  21. SleglJan commented on Oct 13, 2026

    @SleglJan
    ContributorAuthor

    @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).

  22. Scramblrrrr commented on Oct 13, 2026

    @Scramblrrrr
    Contributor

    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).

  23. Scramblrrrr commented on Oct 13, 2026

    @Scramblrrrr
    Contributor

    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.

  24. Scramblrrrr commented on Oct 13, 2026

    @Scramblrrrr
    Contributor

    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).

  25. Scramblrrrr commented on Oct 13, 2026

    @Scramblrrrr
    Contributor

    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.

  26. Scramblrrrr commented on Oct 13, 2026

    @Scramblrrrr
    Contributor

    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.

  27. Scramblrrrr commented on Oct 13, 2026

    @Scramblrrrr
    Contributor

    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.

  28. Scramblrrrr commented on Oct 13, 2026

    @Scramblrrrr
    Contributor

    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.

  29. oneandonlydean commented on Oct 14, 2026

    @oneandonlydean
    Collaborator

    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.

  30. SleglJan commented on Oct 14, 2026

    @SleglJan
    ContributorAuthor

    The start-up log and the current stop table are now in the Game bring-up thread #5714; bugs on main will get their own issues, so I'm closing this.

    AI-assisted: yes (Claude Code)

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions