perf(diagnostics): expose prepared asset source counters
This commit is contained in:
parent
230a7df454
commit
b1ad4b7c0a
5 changed files with 30 additions and 8 deletions
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
- C1 typed prepared-source boundary — `c42f93b3`
|
- C1 typed prepared-source boundary — `c42f93b3`
|
||||||
- C2 production renderer injection — `f05afc07`
|
- C2 production renderer injection — `f05afc07`
|
||||||
- C3 activation probes and lookup precedence — implemented; automated gate
|
- C3 activation probes and lookup precedence — `230a7df4`; automated gate
|
||||||
green, connected exception-count gate remains in C4
|
green, connected exception-count gate remains in C4
|
||||||
- C4 connected equivalence and performance closeout — pending
|
- C4 connected equivalence and performance closeout — pending
|
||||||
|
|
||||||
|
|
@ -278,7 +278,8 @@ Commit as one semantic-cleanup unit.
|
||||||
Arwic with the same reference configuration.
|
Arwic with the same reference configuration.
|
||||||
5. Compare fixed-camera screenshots under the committed tolerance/mask rule.
|
5. Compare fixed-camera screenshots under the committed tolerance/mask rule.
|
||||||
6. Compare per-portal p99/allocation, process allocation/GC, exception count,
|
6. Compare per-portal p99/allocation, process allocation/GC, exception count,
|
||||||
cache counters, and repeated-Caul ownership/memory to Slice A.
|
cache counters, prepared-source probes/reads/loaded/missing/corrupt totals,
|
||||||
|
and repeated-Caul ownership/memory to Slice A.
|
||||||
7. Run Release build and the complete Release suite.
|
7. Run Release build and the complete Release suite.
|
||||||
8. Update the parent plan, roadmap, WorldBuilder inventory, divergence
|
8. Update the parent plan, roadmap, WorldBuilder inventory, divergence
|
||||||
register if and only if a real deviation changed, and durable memory.
|
register if and only if a real deviation changed, and durable memory.
|
||||||
|
|
|
||||||
|
|
@ -901,7 +901,8 @@ internal sealed class LivePresentationCompositionPhase
|
||||||
foundation.Terrain,
|
foundation.Terrain,
|
||||||
foundation.SceneLighting,
|
foundation.SceneLighting,
|
||||||
foundation.MeshAdapter,
|
foundation.MeshAdapter,
|
||||||
foundation.TextureCache)
|
foundation.TextureCache,
|
||||||
|
content.PreparedAssets)
|
||||||
: null;
|
: null;
|
||||||
var frameDiagnostics = new RenderFrameDiagnosticsController(
|
var frameDiagnostics = new RenderFrameDiagnosticsController(
|
||||||
new RuntimeRenderFrameTitleFactsSource(
|
new RuntimeRenderFrameTitleFactsSource(
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ using AcDream.App.Rendering.Vfx;
|
||||||
using AcDream.App.Rendering.Wb;
|
using AcDream.App.Rendering.Wb;
|
||||||
using AcDream.App.Streaming;
|
using AcDream.App.Streaming;
|
||||||
using AcDream.App.World;
|
using AcDream.App.World;
|
||||||
|
using AcDream.Content;
|
||||||
using AcDream.Core.Physics;
|
using AcDream.Core.Physics;
|
||||||
using AcDream.Core.Vfx;
|
using AcDream.Core.Vfx;
|
||||||
using AcDream.Core.World;
|
using AcDream.Core.World;
|
||||||
|
|
@ -61,6 +62,7 @@ internal sealed class RuntimeRenderFrameResourceDiagnosticsSource :
|
||||||
private readonly SceneLightingUboBinding? _lighting;
|
private readonly SceneLightingUboBinding? _lighting;
|
||||||
private readonly WbMeshAdapter? _meshes;
|
private readonly WbMeshAdapter? _meshes;
|
||||||
private readonly TextureCache? _textures;
|
private readonly TextureCache? _textures;
|
||||||
|
private readonly IPreparedAssetSource? _preparedAssets;
|
||||||
|
|
||||||
public RuntimeRenderFrameResourceDiagnosticsSource(
|
public RuntimeRenderFrameResourceDiagnosticsSource(
|
||||||
ParticleSystem? particles,
|
ParticleSystem? particles,
|
||||||
|
|
@ -74,7 +76,8 @@ internal sealed class RuntimeRenderFrameResourceDiagnosticsSource :
|
||||||
TerrainModernRenderer? terrain,
|
TerrainModernRenderer? terrain,
|
||||||
SceneLightingUboBinding? lighting,
|
SceneLightingUboBinding? lighting,
|
||||||
WbMeshAdapter? meshes,
|
WbMeshAdapter? meshes,
|
||||||
TextureCache? textures)
|
TextureCache? textures,
|
||||||
|
IPreparedAssetSource? preparedAssets)
|
||||||
{
|
{
|
||||||
_particles = particles;
|
_particles = particles;
|
||||||
_particleBindings = particleBindings;
|
_particleBindings = particleBindings;
|
||||||
|
|
@ -88,6 +91,7 @@ internal sealed class RuntimeRenderFrameResourceDiagnosticsSource :
|
||||||
_lighting = lighting;
|
_lighting = lighting;
|
||||||
_meshes = meshes;
|
_meshes = meshes;
|
||||||
_textures = textures;
|
_textures = textures;
|
||||||
|
_preparedAssets = preparedAssets;
|
||||||
}
|
}
|
||||||
|
|
||||||
public RenderFrameResourceDiagnosticsSnapshot Capture()
|
public RenderFrameResourceDiagnosticsSnapshot Capture()
|
||||||
|
|
@ -98,6 +102,8 @@ internal sealed class RuntimeRenderFrameResourceDiagnosticsSource :
|
||||||
var mesh = meshManager?.Diagnostics ?? default;
|
var mesh = meshManager?.Diagnostics ?? default;
|
||||||
var globalMesh = meshManager?.GlobalBuffer;
|
var globalMesh = meshManager?.GlobalBuffer;
|
||||||
var cpuMesh = _meshes?.CpuMeshCacheDiagnostics ?? default;
|
var cpuMesh = _meshes?.CpuMeshCacheDiagnostics ?? default;
|
||||||
|
PreparedAssetSourceStats prepared =
|
||||||
|
_preparedAssets?.Stats ?? default;
|
||||||
GCMemoryInfo gc = GC.GetGCMemoryInfo();
|
GCMemoryInfo gc = GC.GetGCMemoryInfo();
|
||||||
|
|
||||||
return new RenderFrameResourceDiagnosticsSnapshot(
|
return new RenderFrameResourceDiagnosticsSnapshot(
|
||||||
|
|
@ -141,7 +147,12 @@ internal sealed class RuntimeRenderFrameResourceDiagnosticsSource :
|
||||||
_meshes?.LastMipmapBytes ?? 0,
|
_meshes?.LastMipmapBytes ?? 0,
|
||||||
globalMesh?.CapacityBytes ?? 0,
|
globalMesh?.CapacityBytes ?? 0,
|
||||||
globalMesh?.PhysicalCapacityBytes ?? 0,
|
globalMesh?.PhysicalCapacityBytes ?? 0,
|
||||||
globalMesh?.IsMigrationInProgress ?? false),
|
globalMesh?.IsMigrationInProgress ?? false,
|
||||||
|
prepared.Probes,
|
||||||
|
prepared.Reads,
|
||||||
|
prepared.Loaded,
|
||||||
|
prepared.Missing,
|
||||||
|
prepared.Corrupt),
|
||||||
new TextureStreamResourceDiagnostics(
|
new TextureStreamResourceDiagnostics(
|
||||||
_textures?.OwnedBindlessTextureCount ?? 0,
|
_textures?.OwnedBindlessTextureCount ?? 0,
|
||||||
_textures?.TextureOwnerCount ?? 0,
|
_textures?.TextureOwnerCount ?? 0,
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,12 @@ internal readonly record struct MeshStreamResourceDiagnostics(
|
||||||
long FrameMipmapBytes,
|
long FrameMipmapBytes,
|
||||||
long GlobalCapacityBytes,
|
long GlobalCapacityBytes,
|
||||||
long GlobalPhysicalCapacityBytes,
|
long GlobalPhysicalCapacityBytes,
|
||||||
bool GlobalMigrationInProgress);
|
bool GlobalMigrationInProgress,
|
||||||
|
long PreparedProbes,
|
||||||
|
long PreparedReads,
|
||||||
|
long PreparedLoaded,
|
||||||
|
long PreparedMissing,
|
||||||
|
long PreparedCorrupt);
|
||||||
|
|
||||||
internal readonly record struct TextureStreamResourceDiagnostics(
|
internal readonly record struct TextureStreamResourceDiagnostics(
|
||||||
int OwnedBindlessTextures,
|
int OwnedBindlessTextures,
|
||||||
|
|
@ -254,6 +259,8 @@ internal sealed class RenderFrameDiagnosticsController :
|
||||||
+ $"mipmapFrame={mesh.FrameMipmapArrayCount}/{mesh.FrameMipmapBytes} "
|
+ $"mipmapFrame={mesh.FrameMipmapArrayCount}/{mesh.FrameMipmapBytes} "
|
||||||
+ $"meshCap={mesh.GlobalCapacityBytes} "
|
+ $"meshCap={mesh.GlobalCapacityBytes} "
|
||||||
+ $"meshPhys={mesh.GlobalPhysicalCapacityBytes}/{mesh.GlobalMigrationInProgress} "
|
+ $"meshPhys={mesh.GlobalPhysicalCapacityBytes}/{mesh.GlobalMigrationInProgress} "
|
||||||
|
+ $"prepared={mesh.PreparedProbes}/{mesh.PreparedReads}/"
|
||||||
|
+ $"{mesh.PreparedLoaded}/{mesh.PreparedMissing}/{mesh.PreparedCorrupt} "
|
||||||
+ $"gpuTrack={process.TrackedGpuBytes}/{process.TrackedGpuBuffers}/"
|
+ $"gpuTrack={process.TrackedGpuBytes}/{process.TrackedGpuBuffers}/"
|
||||||
+ $"{process.TrackedGpuTextures} "
|
+ $"{process.TrackedGpuTextures} "
|
||||||
+ $"managed={process.ManagedBytes}/{process.ManagedCommittedBytes} "
|
+ $"managed={process.ManagedBytes}/{process.ManagedCommittedBytes} "
|
||||||
|
|
|
||||||
|
|
@ -204,7 +204,8 @@ public sealed class RenderFrameDiagnosticsControllerTests
|
||||||
+ "lightBuffers=12 mesh=13/14/15 meshEst=16 meshUpload=17/18 "
|
+ "lightBuffers=12 mesh=13/14/15 meshEst=16 meshUpload=17/18 "
|
||||||
+ "uploadFrame=19/20/21/22/23 bufferFrame=24/25/26/27 "
|
+ "uploadFrame=19/20/21/22/23 bufferFrame=24/25/26/27 "
|
||||||
+ "staging=28/29/True/30 cpuMesh=31/32 mipmapFrame=33/34 meshCap=35 "
|
+ "staging=28/29/True/30 cpuMesh=31/32 mipmapFrame=33/34 meshCap=35 "
|
||||||
+ "meshPhys=36/True gpuTrack=57/58/59 managed=55/56 ownedTextures=37/38 "
|
+ "meshPhys=36/True prepared=60/61/62/63/64 "
|
||||||
|
+ "gpuTrack=57/58/59 managed=55/56 ownedTextures=37/38 "
|
||||||
+ "particleTextures=39/40/41/42/43 compositeCache=44/45/46 "
|
+ "particleTextures=39/40/41/42/43 compositeCache=44/45/46 "
|
||||||
+ "compositeAtlas=47/48 compositeUpload=49/50/51",
|
+ "compositeAtlas=47/48 compositeUpload=49/50/51",
|
||||||
actual);
|
actual);
|
||||||
|
|
@ -314,7 +315,8 @@ public sealed class RenderFrameDiagnosticsControllerTests
|
||||||
new DynamicBufferResourceDiagnostics(4, 5, 6, 7, 8, 9, 10, 11, 12),
|
new DynamicBufferResourceDiagnostics(4, 5, 6, 7, 8, 9, 10, 11, 12),
|
||||||
new MeshStreamResourceDiagnostics(
|
new MeshStreamResourceDiagnostics(
|
||||||
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
|
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
|
||||||
24, 25, 26, 27, 28, 29, true, 30, 31, 32, 33, 34, 35, 36, true),
|
24, 25, 26, 27, 28, 29, true, 30, 31, 32, 33, 34, 35, 36, true,
|
||||||
|
60, 61, 62, 63, 64),
|
||||||
new TextureStreamResourceDiagnostics(
|
new TextureStreamResourceDiagnostics(
|
||||||
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51),
|
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51),
|
||||||
new ProcessResourceDiagnostics(55, 56, 57, 58, 59));
|
new ProcessResourceDiagnostics(55, 56, 57, 58, 59));
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue