- for (i = 0; i < 100; i++) {
- double t = 1.0 - (i / 100.0);
- acre_data_add_point_2d (data1, i, -1000 * (1.0 - t*t*t));
- }
-
- for (i = 0; i <= 1000; i++) {
- double t, x, y;
- t = i/10.0 - 50;
- x = t + 50;
- if (t == 0.0)
- y = -200;
- else
- y = -1200 + 1000 * sin(t) / t;
- acre_data_add_point_2d (data2, x, y);
+ charts->cpu_gpu_load = _create_chart ("CPU/GPU load", "Frame #", "Load");
+ charts->frame_time = _create_chart ("Frame time", "Frame #", "Time (ms)");
+ charts->frame_latency = _create_chart ("Frame latency", "Frame #", "Latency (ms)");
+
+ cpu_load_data = acre_data_create ();
+ acre_data_set_name (cpu_load_data, "CPU");
+
+ gpu_load_data = acre_data_create ();
+ acre_data_set_name (gpu_load_data, "GPU");
+
+ cpu_bound_frame_time_data = acre_data_create ();
+ acre_data_set_style (cpu_bound_frame_time_data, ACRE_STYLE_BARS);
+ acre_data_set_name (cpu_bound_frame_time_data, "CPU Bound");
+
+ gpu_bound_frame_time_data = acre_data_create ();
+ acre_data_set_style (gpu_bound_frame_time_data, ACRE_STYLE_BARS);
+ acre_data_set_name (gpu_bound_frame_time_data, "GPU Bound");
+
+ frame_latency_data = acre_data_create ();
+
+ while (1) {
+ int scanned;
+
+ bytes = getline (&line, &line_size, file);
+ if (bytes == -1)
+ break;
+
+ s = line;
+
+ if (STRNCMP_LITERAL (s, "frame: ") == 0) {
+ unsigned frame;
+ double frame_time_ms, frame_latency_ms;
+ double cpu_load, gpu_load;
+
+ s += strlen("frame: ");
+
+ scanned = sscanf (s, "%d %lg %lg %lg %lg",
+ &frame,
+ &frame_time_ms,
+ &frame_latency_ms,
+ &cpu_load,
+ &gpu_load);
+ if (scanned != 5) {
+ fprintf (stderr, "Warning: Failed to parse line: %s\n", line);
+ continue;
+ }
+
+ acre_data_add_point_2d (cpu_load_data, frame, cpu_load);
+ acre_data_add_point_2d (gpu_load_data, frame, gpu_load);
+ if (cpu_load > gpu_load) {
+ acre_data_add_point_2d (
+ cpu_bound_frame_time_data,
+ frame, frame_time_ms);
+ } else {
+ acre_data_add_point_2d (
+ gpu_bound_frame_time_data,
+ frame, frame_time_ms);
+ }
+ acre_data_add_point_2d (frame_latency_data, frame,
+ frame_latency_ms);
+
+ } else {
+ /* Ignore all other lines. */
+ }