Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/facett

dev/flow-bench/README.md

Flow integration measurements

This unpublished standalone development tool depends on the real component crates; none of those runtime crates gains a reverse dependency. It imports the existing facett-demo/src/synthetic_sdp.rs source and re-exports the actual core/pipeline types that module uses. The synthetic SDP driver and graph generator are not copies.

CPU diagnostics (shape generation, not a framebuffer or FPS):

cargo run --release --manifest-path dev/flow-bench/Cargo.toml -- \
  --mode cpu --case all --frames 60 --warmup 10 --output /tmp/flow-host-cpu.json

Installed Falsett GPU lane, headless framebuffer readback:

FACETT_TEST_GPU=integrated cargo run --release \
  --manifest-path dev/flow-bench/Cargo.toml --features gpu -- \
  --mode gpu --case all --frames 60 --warmup 10 --output /tmp/flow-host-gpu.json

Cases: synthetic-sdp100 uses the actual demo driver, reconstructing PipelineView each frame; pipeline10000 retains a 10k PipelineView built from the same generator; plandag1000 draws 1k operators; brokkrview500 draws 500 build steps. The latter two use the same deterministic DAG topology with their own real models. layout100k and layout1m call core's real layered layout (up to five rounds), outside any UI, on a regular five-layer dense-index DAG with two outgoing edges per nonsink node. --case all includes all six. Layout runs always execute on the CPU, even with GPU mode selected.

Reports separate fixture construction, CPU egui work, GPU readback wall time, actual resolved Falsett pass timestamps and upload bytes during the sample window. Readback wall time is not display FPS. Timestamp observations can repeat while the nonblocking query ring resolves; null means unavailable. Compare the same toolchain, release profile, viewport and device with a separately built main baseline. Local Mac results do not replace the plan's dwarf/Loki measurements.

Flow feature scenes

flow_lab retains its default plain scenario. Compile-time features and runtime scenes are independent, so an all-features binary can still measure plain flow:

FLOW_RESULTS=/tmp/flow-plain-10k cargo run --release -p facett-flow \
  --features wgpu --example flow_lab -- --benchmark --nodes 10000 --scenario plain
FLOW_RESULTS=/tmp/flow-all-plain-1m cargo run --release -p facett-flow \
  --all-features --example flow_lab -- --benchmark --nodes 1000000 --scenario plain
FLOW_RESULTS=/tmp/flow-boxes-100k cargo run --release -p facett-flow \
  --features wgpu,boxes --example flow_lab -- --benchmark --nodes 100000 --scenario boxes

Runtime scenes: plain, host, labels, boxes, arrows, status, rate, layered, compact-state, hit-test, lod, all. Unsupported scenes fail before opening a window. Each non-plain scene needs its corresponding Cargo feature; all needs every feature. Metadata records the active scenario, scene construction time and fixture parameters. The four existing phases remain raw overview, raw pan/zoom, clusters and raw detail, with three seconds warmup plus eight sampled. Compact-state reads are measured separately; hit-test scenes make an explicit central picking probe. all exercises the host labels with the shared collision placer and combines real attribute tables with the other capabilities.

For the plan matrix, run plain at 10k and 1M under wgpu alone, each individual feature plus wgpu, and all features. Then run each active scene at 10k and 100k. Use separate FLOW_RESULTS directories for every build/scenario/size so reports do not overwrite each other. Capture a fresh a367f9aa baseline on the same machine; prototype numbers are not a baseline for this main revision. The plan requires building Linux binaries on dwarf and running Loki work serially under its GPU lock; this tool does not connect to, build on, or change either host.