Correct whole-frame GPU timestamps so they bracket only the accepted render transaction and associate delayed query results with the owning CPU frame. Add route-wide frame-history summaries, fixed-camera screenshot comparison, process counters, contention traces, a pinned Arwic workload, and credential-safe launch disclosure. The reference hardware/display contract now keeps local and RDP populations separate and defines the screenshot and re-baseline rules needed by later prepared-content gates. Co-Authored-By: Codex <noreply@openai.com>
32 lines
907 B
C#
32 lines
907 B
C#
using AcDream.App.Diagnostics;
|
|
using Silk.NET.OpenGL;
|
|
|
|
namespace AcDream.App.Rendering;
|
|
|
|
/// <summary>
|
|
/// Production render-transaction measurement adapter. CPU frame boundaries
|
|
/// remain owned by <see cref="FrameProfiler"/> while this adapter places the
|
|
/// GPU query around only the GL-producing render phases.
|
|
/// </summary>
|
|
internal sealed class FrameProfilerGpuMeasurement : IRenderFrameGpuMeasurement
|
|
{
|
|
private readonly FrameProfiler _profiler;
|
|
private readonly GL _gl;
|
|
|
|
public FrameProfilerGpuMeasurement(FrameProfiler profiler, GL gl)
|
|
{
|
|
_profiler = profiler ?? throw new ArgumentNullException(nameof(profiler));
|
|
_gl = gl ?? throw new ArgumentNullException(nameof(gl));
|
|
}
|
|
|
|
public void BeginFrame()
|
|
{
|
|
_profiler.FrameBoundary(_gl);
|
|
_profiler.BeginGpuFrame();
|
|
}
|
|
|
|
public void EndFrame()
|
|
{
|
|
_profiler.EndGpuFrame();
|
|
}
|
|
}
|