aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2026-07-18 11:31:30 +0300
committerValentin Popov <valentin@popov.link>2026-07-18 11:31:30 +0300
commitb744a9d880a853c5509f624b0e357416ba382b1d (patch)
tree60729c6c87244af2cde8c4bed13441a2d0c3e484
parentf4fd8f4fce8ea3eda8780ddb09339b52ea784b27 (diff)
downloadfparkan-b744a9d880a853c5509f624b0e357416ba382b1d.tar.xz
fparkan-b744a9d880a853c5509f624b0e357416ba382b1d.zip
feat(runtime): trace material validation requests
-rw-r--r--crates/fparkan-runtime/src/lib.rs21
-rw-r--r--docs/tomes/05-render.md12
2 files changed, 25 insertions, 8 deletions
diff --git a/crates/fparkan-runtime/src/lib.rs b/crates/fparkan-runtime/src/lib.rs
index 8ecce74..42b3eda 100644
--- a/crates/fparkan-runtime/src/lib.rs
+++ b/crates/fparkan-runtime/src/lib.rs
@@ -125,6 +125,8 @@ pub enum MissionLoadPhase {
GraphVisualWears,
/// Resolve MAT0 documents while expanding visual dependencies.
GraphVisualMaterials,
+ /// Progress marker emitted after each 64 MAT0 validation requests.
+ GraphVisualMaterialRequests(usize),
/// Validate TEXM documents while expanding visual dependencies.
GraphVisualTextures,
/// Progress marker emitted after each 64 TEXM validation requests.
@@ -723,12 +725,19 @@ fn load_mission_with_options_and_progress(
record_load_phase(&mut trace, &mut on_phase, runtime_phase);
last_graph_visual_phase = Some(runtime_phase);
}
- if progress.phase == VisualDependencyPhase::Texture && progress.request_count > 1 {
- record_load_phase(
- &mut trace,
- &mut on_phase,
- MissionLoadPhase::GraphVisualTextureRequests(progress.request_count),
- );
+ if progress.request_count > 1 {
+ let request_phase = match progress.phase {
+ VisualDependencyPhase::Wear => None,
+ VisualDependencyPhase::Material => Some(
+ MissionLoadPhase::GraphVisualMaterialRequests(progress.request_count),
+ ),
+ VisualDependencyPhase::Texture => Some(
+ MissionLoadPhase::GraphVisualTextureRequests(progress.request_count),
+ ),
+ };
+ if let Some(request_phase) = request_phase {
+ record_load_phase(&mut trace, &mut on_phase, request_phase);
+ }
}
},
);
diff --git a/docs/tomes/05-render.md b/docs/tomes/05-render.md
index 520361c..c49ca66 100644
--- a/docs/tomes/05-render.md
+++ b/docs/tomes/05-render.md
@@ -1103,8 +1103,9 @@ is only the last phase reached in one run: it is not proof of a single global
bottleneck or of Vulkan involvement.
Visual expansion now reports each dependency-class entrance, its first request
-and every 64th later request; this is diagnostic-only and does not alter
-traversal, edges or validation. A
+and every 64th later request; runtime progress persists MAT0/TEXM counts at
+those boundaries. This is diagnostic-only and does not alter traversal, edges
+or validation. A
later controlled 180-second Part 2 probe ended at `GraphVisualMaterials`,
before the first TEXM progress marker. The differing checkpoints rule out the
previous overly narrow claim that TEXM is the sole remaining target. Profiling
@@ -1118,6 +1119,13 @@ unchanged. The same controlled 180-second Part 2 probe still ended at
`GraphVisualMaterials`, so this is a complexity/correctness improvement rather
than measured evidence of a startup checkpoint advance.
+The MAT0 counter now records `GraphVisualMaterialRequests(N)` with the same
+64-request throttle. A fresh controlled Part 2 probe ended at
+`GraphVisualMaterialRequests(71)`: at least 71 MAT0 requests had begun before
+termination. It does not preserve the simultaneous TEXM count, so it neither
+identifies a slow individual material nor attributes time to MAT0 parsing; the
+next profiler revision needs one cumulative snapshot of all classes.
+
Mission loading now raises the decoded-payload cache entry budget from 64 to
256 while retaining its 64 MiB byte budget. This avoids premature entry-count
eviction during resource-rich loads without making memory unbounded. The same