public PerfettoCpuCountersEventCooker() : base(PerfettoPluginConstants.CpuCountersEventCookerPath) { this.CpuCountersEvents = new ProcessedEventData <PerfettoCpuCountersEvent>(); }
public PerfettoProcessTrackCooker() : base(PerfettoPluginConstants.ProcessTrackCookerPath) { this.ProcessTrackEvents = new ProcessedEventData <PerfettoProcessTrackEvent>(); }
public PerfettoPackageListCooker() : base(PerfettoPluginConstants.PackageListCookerPath) { this.PackageListEvents = new ProcessedEventData <PerfettoPackageListEvent>(); }
public PerfettoExpectedFrameCooker() : base(PerfettoPluginConstants.ExpectedFrameCookerPath) { this.ExpectedFrameEvents = new ProcessedEventData <PerfettoExpectedFrameEvent>(); }
public PerfettoSchedSliceCooker() : base(PerfettoPluginConstants.SchedSliceCookerPath) { this.SchedSliceEvents = new ProcessedEventData <PerfettoSchedSliceEvent>(); }
void PopulateFrameEvents(IDataExtensionRetrieval requiredData, ProcessedEventData <PerfettoThreadEvent> threadData, ProcessedEventData <PerfettoProcessRawEvent> processData) { var actualFrameData = requiredData.QueryOutput <ProcessedEventData <PerfettoActualFrameEvent> >(new DataOutputPath(PerfettoPluginConstants.ActualFrameCookerPath, nameof(PerfettoActualFrameCooker.ActualFrameEvents))); var expectedFrameData = requiredData.QueryOutput <ProcessedEventData <PerfettoExpectedFrameEvent> >(new DataOutputPath(PerfettoPluginConstants.ExpectedFrameCookerPath, nameof(PerfettoExpectedFrameCooker.ExpectedFrameEvents))); // Gather from both actual/expected tables and join with process info var joinedActual = from frame in actualFrameData join process in processData on frame.Upid equals process.Upid into pd orderby frame.Id from process in pd.DefaultIfEmpty() select new { frame, process }; var joinedExpected = from frame in expectedFrameData join process in processData on frame.Upid equals process.Upid into pd orderby frame.Id from process in pd.DefaultIfEmpty() select new { frame, process }; // Create FrameEvents out of each type of event foreach (var result in joinedExpected) { Timestamp startTimestamp = new Timestamp(result.frame.RelativeTimestamp); Timestamp endTimestamp = new Timestamp(result.frame.RelativeTimestamp + result.frame.Duration); PerfettoFrameEvent ev = new PerfettoFrameEvent ( "Expected", result.process.Name, result.frame.Upid, result.frame.DisplayFrameToken, result.frame.SurfaceFrameToken, new TimestampDelta(result.frame.Duration), startTimestamp, endTimestamp, String.Empty, String.Empty, String.Empty, String.Empty, String.Empty, String.Empty ); this.FrameEvents.AddEvent(ev); } foreach (var result in joinedActual) { Timestamp startTimestamp = new Timestamp(result.frame.RelativeTimestamp); Timestamp endTimestamp = new Timestamp(result.frame.RelativeTimestamp + result.frame.Duration); PerfettoFrameEvent ev = new PerfettoFrameEvent ( "Actual", result.process.Name, result.frame.Upid, result.frame.DisplayFrameToken, result.frame.SurfaceFrameToken, new TimestampDelta(result.frame.Duration), startTimestamp, endTimestamp, result.frame.JankType, result.frame.JankTag, result.frame.PresentType, result.frame.PredictionType, result.frame.OnTimeFinish.ToString(), result.frame.GpuComposition.ToString() ); this.FrameEvents.AddEvent(ev); } this.FrameEvents.FinalizeData(); }
public EventProjection(ProcessedEventData <T> events) { this.events = events; }