Json telemetry
All checks were successful
CI / React UI Build (push) Successful in 11s
CI / Native Windows Build And Tests (push) Successful in 2m52s
CI / Windows Release Package (push) Successful in 3m19s

This commit is contained in:
Aiden
2026-05-12 12:13:21 +10:00
parent 44b198b14d
commit 79f7ac6c86
7 changed files with 536 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
#pragma once
#include "CadenceTelemetry.h"
#include "../json/JsonWriter.h"
#include <cstdint>
#include <string>
namespace RenderCadenceCompositor
{
inline void WriteCadenceTelemetryJson(JsonWriter& writer, const CadenceTelemetrySnapshot& snapshot)
{
writer.BeginObject();
writer.KeyDouble("sampleSeconds", snapshot.sampleSeconds);
writer.KeyDouble("renderFps", snapshot.renderFps);
writer.KeyDouble("scheduleFps", snapshot.scheduleFps);
writer.KeyUInt("free", static_cast<uint64_t>(snapshot.freeFrames));
writer.KeyUInt("completed", static_cast<uint64_t>(snapshot.completedFrames));
writer.KeyUInt("scheduled", static_cast<uint64_t>(snapshot.scheduledFrames));
writer.KeyUInt("renderedTotal", snapshot.renderedTotal);
writer.KeyUInt("scheduledTotal", snapshot.scheduledTotal);
writer.KeyUInt("completedPollMisses", snapshot.completedPollMisses);
writer.KeyUInt("scheduleFailures", snapshot.scheduleFailures);
writer.KeyUInt("completions", snapshot.completions);
writer.KeyUInt("late", snapshot.displayedLate);
writer.KeyUInt("dropped", snapshot.dropped);
writer.KeyUInt("shaderCommitted", snapshot.shaderBuildsCommitted);
writer.KeyUInt("shaderFailures", snapshot.shaderBuildFailures);
writer.KeyBool("deckLinkBufferedAvailable", snapshot.deckLinkBufferedAvailable);
writer.Key("deckLinkBuffered");
if (snapshot.deckLinkBufferedAvailable)
writer.UInt(snapshot.deckLinkBuffered);
else
writer.Null();
writer.KeyDouble("scheduleCallMs", snapshot.deckLinkScheduleCallMilliseconds);
writer.EndObject();
}
inline std::string CadenceTelemetryToJson(const CadenceTelemetrySnapshot& snapshot)
{
JsonWriter writer;
WriteCadenceTelemetryJson(writer, snapshot);
return writer.StringValue();
}
}