Repository navigation
fix(agc): order reused depth layers after queued labels - #23
Draft
p3n1cillin wants to merge 1 commit into
Draft
p3n1cillin wants to merge 1 commit into
p3n1cillin wants to merge 1 commit into
Conversation
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
An unchanged sampled depth-array layer could be reused while the same queue had an earlier label write over its guest memory that had been decoded but not recorded yet. Such a label is absent from the recorded-write snapshot. The cache hit bypassed ReadCommitted and its flush hook, leaving the label queued and serving stale depth pixels.
Adds a range query over the calling worker's existing queued-label ranges. Depth-layer reuse is refused when that query overlaps the layer; the original checked read then records the queued group through the existing flush hook. Labels outside the layer do not invalidate it. No changes to shader instruction semantics, CPU/GPU write tracking or label ordering rules.
Validation on Windows, GCC 15.2, RTX 5070 / NVIDIA driver 617.42:
Full Release build passed. Full CTest: 715 passed, five skipped, zero failures (720 registered), 57.76 s.
ASTRO BOT PPSA21564 v01.007.000, exact head 66ea007, Windows / RTX 5070 / driver 617.42, 16 GiB host-import limit, profiling enabled and compiler/pipeline caches preserved. The user manually advanced the title into intro_next and reported frozen cinematic footage while loading.
The capture contains an 83.641 s gap before completed frame 2312. In that interval, five Vulkan.Dispatch.pipeline_create phases total 69.392 s (maximum 17.746 s each), versus 23.824 ms across recorder Sync phases. Another worker records 70.530 s in memory-wait phases. Source inspection confirms compute pipeline creation runs inside the dispatch GPU mutex; its timing phase also includes layout/module cleanup and pipeline statistics, so it is not an exclusive driver-call measurement. The log reports large compute shaders, including 677,121-809,411 SPIR-V words.
Frames resume after the gap and reach 2329 before the diagnostic monitor intentionally stops the game at six minutes. This establishes a severe loading/pipeline-creation stall, not a confirmed permanent deadlock. Available physical memory briefly falls to 54.996 MiB; sampled working set peaks at 24,925.117 MiB. Memory pressure may aggravate compilation/loading, but causality has not been isolated. Shader cache reports 1,831 hits and 52 misses/writes. No fatal abort, device loss, BDA fault or presentation-failure report was found.
Manual input changed the workload, so this run is not a controlled title-screen performance comparison. Overall completed-flip rate is 7.205/s, p95 162.977 ms, with the long loading gap included. Diagonal banding remains in captured frames. Correct cinematic rendering, gameplay, audio, saves and 60 FPS remain unverified. All game and helper processes are terminal; no subsequent game run was started at the user's request.
Next investigation: compute-pipeline creation cost, large generated SPIR-V and physical-memory pressure during intro_next loading. Latest upstream de5e541 was fetched and its integration conflicts previewed, but it has not been merged or built.
Depends on #22. Draft follow-up in the personal fork, based on the ASTRO BOT integration stack rather than upstream main. AI-assisted. Private game assets and diagnostic dumps are excluded from source control and public records.