feat(runtime): trace material validation requests
Docs Deploy / Build and Deploy MkDocs (push) Successful in 36s
Test / Lint (push) Failing after 4m14s
Test / Test (push) Skipped
Test / Render parity (push) Skipped

This commit is contained in:
2026-07-18 12:31:30 +04:00
parent f4fd8f4fce
commit b744a9d880
2 changed files with 25 additions and 8 deletions
+15 -6
View File
@@ -125,6 +125,8 @@ pub enum MissionLoadPhase {
GraphVisualWears, GraphVisualWears,
/// Resolve MAT0 documents while expanding visual dependencies. /// Resolve MAT0 documents while expanding visual dependencies.
GraphVisualMaterials, GraphVisualMaterials,
/// Progress marker emitted after each 64 MAT0 validation requests.
GraphVisualMaterialRequests(usize),
/// Validate TEXM documents while expanding visual dependencies. /// Validate TEXM documents while expanding visual dependencies.
GraphVisualTextures, GraphVisualTextures,
/// Progress marker emitted after each 64 TEXM validation requests. /// 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); record_load_phase(&mut trace, &mut on_phase, runtime_phase);
last_graph_visual_phase = Some(runtime_phase); last_graph_visual_phase = Some(runtime_phase);
} }
if progress.phase == VisualDependencyPhase::Texture && progress.request_count > 1 { if progress.request_count > 1 {
record_load_phase( let request_phase = match progress.phase {
&mut trace, VisualDependencyPhase::Wear => None,
&mut on_phase, VisualDependencyPhase::Material => Some(
MissionLoadPhase::GraphVisualTextureRequests(progress.request_count), 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);
}
} }
}, },
); );
+10 -2
View File
@@ -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. bottleneck or of Vulkan involvement.
Visual expansion now reports each dependency-class entrance, its first request Visual expansion now reports each dependency-class entrance, its first request
and every 64th later request; this is diagnostic-only and does not alter and every 64th later request; runtime progress persists MAT0/TEXM counts at
traversal, edges or validation. A 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`, later controlled 180-second Part 2 probe ended at `GraphVisualMaterials`,
before the first TEXM progress marker. The differing checkpoints rule out the before the first TEXM progress marker. The differing checkpoints rule out the
previous overly narrow claim that TEXM is the sole remaining target. Profiling 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 `GraphVisualMaterials`, so this is a complexity/correctness improvement rather
than measured evidence of a startup checkpoint advance. 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 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 256 while retaining its 64 MiB byte budget. This avoids premature entry-count
eviction during resource-rich loads without making memory unbounded. The same eviction during resource-rich loads without making memory unbounded. The same