internal static void UpdateLog() { if (!MetricsEnabled) { return; } if (pending.Count == 0) { return; } InitFile(); bool loop = true; do { var p = pending.Peek(); if (p[p.Length - 1].IsReady()) { var m = new GenericMeasurement() { CPUTimestamp = DateTime.Now.Ticks - start_ticks, Elapsed = p[0].Read(), Timestamp = p[0].Timestamp(), VerticesSubmitted = p[1].Read(), PrimitivesSubmitted = p[2].Read(), VertexShaderInvocations = p[3].Read(), TessControlPatches = p[4].Read(), TessEvalInvocations = p[5].Read(), GeometryShaderInvocations = p[6].Read(), GeometryShaderPrimitivesEmitted = p[7].Read(), FragmentShaderInvocations = p[8].Read(), ComputeShaderInvocations = p[9].Read(), ClippingInputPrimitives = p[10].Read(), ClippingOutputPrimitives = p[11].Read() }; var hdr = ""; var fields = typeof(GenericMeasurement).GetFields(); for (int i = 0; i < fields.Length; i++) { hdr += (long)fields[i].GetValue(m) + ","; } hdr = hdr.Substring(0, hdr.Length - 1); logFile.WriteLine(hdr); logFile.Flush(); pending.Dequeue(); loop = true; } else { loop = false; } if (pending.Count == 0) { loop = false; } } while (loop); }
public static void EndFrame() { if (!MetricsEnabled) { return; } InitFile(); var m = new GenericMeasurement() { CPUTimestamp = DateTime.Now.Ticks - start_ticks, Elapsed = -1 }; var hdr = ""; var fields = typeof(GenericMeasurement).GetFields(); for (int i = 0; i < fields.Length; i++) { hdr += (long)fields[i].GetValue(m) + ","; } hdr = hdr.Substring(0, hdr.Length - 1); logFile.WriteLine(hdr); logFile.Flush(); }