Record TubeField packet authority

This commit is contained in:
Meta Vens 2026-05-26 22:55:48 +01:00
commit 32834e50ee
5 changed files with 13 additions and 5 deletions

View file

@ -221,8 +221,10 @@ semantics to their selected lowering. TubeField now uses that generated-mesh
lane explicitly: compute emits private geometry/indirect buffers and render
binds them as a pipeline-private generated mesh before applying TubeField
material state. The generated-mesh DrawIndexed indirect command signature is
shared ABI; TubeField only owns the argument buffer it emits. That is engine
ownership, not a reason for Mimir to create a parallel renderer.
shared ABI; TubeField only owns the argument buffer it emits. TubeField
expansion is now gated by selected backend packets, so explicit lowering
metadata cannot bypass validation/planning authority. That is engine ownership,
not a reason for Mimir to create a parallel renderer.
### 3. Calibration Constraint

View file

@ -194,7 +194,9 @@ a named invariant that the native runtime cannot protect yet.
TubeField source/ramp/material state. The DrawIndexed indirect command
signature is now generated-mesh-owned rather than TubeField-owned, so future
generated lowerings can reuse the same draw ABI with their own producer
buffers and material bindings.
buffers and material bindings. TubeField dispatch now obeys the selected
backend packet plan; unplanned `TubeSplineLowering` records are counted but
not expanded.
- `MimirRuntime` queues bioacoustic timeline PCM through Fensalir audio when the
active timing witness is allowed. `MimirAudioSynchronizationSettings.Mode`
selects `chirp-only`, `passive`, or `hybrid`; passive disables active

View file

@ -349,7 +349,8 @@ emits and consumes. TubeField is the first concrete generated-mesh consumer:
its compute pass emits private vertex/index/indirect buffers and render binds
them as `D3D12PipelinePrivateGeneratedMesh` before applying source/ramp/material
state. The DrawIndexed indirect command signature has been lifted to the
generated-mesh lane instead of being TubeField-owned.
generated-mesh lane instead of being TubeField-owned. TubeField expansion now
requires a planned TubeField backend packet for the lowering's claim.
The current teardown/migration map is
`docs/fensalir-rendering-rebuild-migration.md`, paired with Fensalir's

View file

@ -153,3 +153,4 @@
{"ts": "2026-05-26T21:58:00+01:00", "type": "decision", "status": "ok", "note": "Clarified Fensalir Mesh layout authority: imported/user-facing FBX/OBJ-style meshes use the standard PositionNormalUvColor vertex layout, while generated meshes declare PipelinePrivate and let their selected lowering own the exact minimal byte layout. The generic mesh ABI is no longer the blocker; next renderer work should choose the first selected mesh/page/volume lowering and material path."}
{"ts": "2026-05-26T22:49:00+01:00", "type": "implementation", "status": "ok", "note": "Fensalir TubeField now renders through the first explicit pipeline-private generated mesh lane. Compute owns the private D3D12TubeFieldVertex/index/indirect argument layout; render binds those buffers as a D3D12PipelinePrivateGeneratedMesh before applying TubeField source/ramp/material root bindings and ExecuteIndirect. This follows the generated-mesh option without adding a public imported mesh renderer."}
{"ts": "2026-05-26T22:52:00+01:00", "type": "implementation", "status": "ok", "note": "Fensalir lifted the DrawIndexed indirect command signature from TubeField to the generated-mesh lane. TubeField still emits its own indirect argument buffer, but future pipeline-private generated mesh lowerings can share the same five-uint D3D12 DrawIndexedArguments ABI with their own producer buffers/material bindings."}
{"ts": "2026-05-26T22:55:00+01:00", "type": "implementation", "status": "ok", "note": "Fensalir TubeField expansion now follows selected backend packet authority. D3D12Renderer expands only TubeSplineLowerings whose claim has a planned TubeField packet; unplanned lowerings are counted in debug status instead of rendered. This prevents explicit lowering metadata from bypassing validation/planning."}

View file

@ -343,7 +343,9 @@ accepted_design:
mesh binding: compute owns the private vertex/index/indirect layout, and
render binds that generated mesh before applying TubeField material state.
The generated-mesh DrawIndexed indirect command signature is shared ABI now;
TubeField only owns the argument buffer it emits.
TubeField only owns the argument buffer it emits. TubeField expansion is now
gated by the selected backend packet plan, so lowering metadata cannot
bypass validation/planning authority.
- `config/perfect-machine.example.json` declares live owners, sensors,
reservoir views, and runtime policy.
- `src/Mimir.Runtime/Synchronization` now includes the Perfect Machine module