docs(render): close V6f's shader obligation; record why the Vulkan world path is blocked
Two things to write down after slice V6f. The obligation §5 recorded against V6e is discharged. terrain_modern was "the one production pair still not Vulkan-expressible"; its three blockers - the two loose matrices, the loose tiling array, and the GL-only sampler-from-handle construction - are gone, and 8/9 pairs now compile. The ninth is `mesh`, which the plan already records as having no consumer at all, so every shader acdream actually draws with is Vulkan-expressible. V6f gets its own slice row and its own line in the user-gate debt table: terrain through a doorway clip region is the one terrain path the offline gate cannot see, and it now has a second UBO binding beside the clip block, so a bind-order mistake would surface exactly there. The larger entry is §5.5.7, which records a measurement rather than an opinion. §5.5.6 selected option (B) - V4c/V4d's content returning as the Vulkan world path behind a fork at the thin submission seam - and V6f set out to build that fork. It cannot be built yet, for a reason the plan had not stated: the Vulkan path constructs no game state at all. GameWindow.Run returns at :695, before Window.Create and therefore before OnLoad, which is the only caller of the composition pipeline. A capture confirms it (artifacts/vk-world/): what the Vulkan backend draws today is V6c's verification scene and V6d's generated UI sprite, correctly and completely, and nothing else. A backend-selected fork would therefore have a GL arm that runs and a Vulkan arm nothing can reach - the unexercised second path §3.1 and §7.1 exist to prevent. Worse for sequencing, the parked V4c/V4d code could not drive Vulkan even if it were reached: it binds GL bindless handles as a storage buffer because §5.3 deferred the real port to V4t, and GroupKey carries the raw ulong. V4t is a hard prerequisite, and it rewrites exactly the code the fork's Vulkan arm would contain. Landing the fork first means writing that arm twice. One validation-layer run is recorded with it, and it found two defects that outlive the slice, both pre-existing and both on the path any world frame takes. The pipeline layout declares all ten storage bindings as STORAGE_BUFFER_DYNAMIC against a device limit of eight - the pinned binding model meeting a real limit, wanting a decision rather than a patch. And any depth-off pipeline in a pass that carries depth declares VK_FORMAT_UNDEFINED where the attachment's real format is required. Also noted: the render-target-view-in-table usage V6f was told to expect did NOT fire, so it should be re-checked rather than carried forward as known-and-accepted. The section closes with the recommended order - composition host, the validation defects, V4t, then the fork - and with a cheaper intermediate milestone worth considering: terrain, water and sky only, for which V6f's work is the whole shader prerequisite. Also: the roadmap's Campaign V paragraph gains a shipped-so-far line, and #250 gains a third test of the same class. One full App run during this slice reported 2,752 bytes against an expected 0 in CurrentRenderSceneOracleTests.SurfaceOverrideFingerprint_DictionaryHotPathAllocatesNothing, on a diff that touches only GLSL and terrain's uniform plumbing; it passed alone and in four other full runs of the same binary. Documentation only - no code, no gates. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
30e94da607
commit
f8dbe2ee4a
3 changed files with 113 additions and 8 deletions
|
|
@ -109,6 +109,11 @@ tree:
|
|||
|
||||
- `AcDream.App.Tests.UI.UiDatFontTests.InstanceMeasureWidth_ReusesGlyphTableWithoutAllocating`
|
||||
- `AcDream.App.Tests.Rendering.RenderFrameProductTests.WarmProductBuildAndBorrowAllocateNothing`
|
||||
- `AcDream.App.Tests.Rendering.CurrentRenderSceneOracleTests.SurfaceOverrideFingerprint_DictionaryHotPathAllocatesNothing`
|
||||
(added 2026-07-28 during Campaign V slice V6f: one full run reported 2,752
|
||||
bytes against an expected 0, on a diff that touches only GLSL and the terrain
|
||||
renderer's uniform plumbing. It passed in isolation and in four other full
|
||||
runs of the same binary, so it is the same class rather than a new defect.)
|
||||
|
||||
Measured over six consecutive Release runs of the App suite on an unmodified
|
||||
tree: four passed 3,846/3, and two failed with exactly one failure — a different
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue