-- -- Copyright 2020 The Android Open Source Project -- -- Licensed under the Apache License, Version 2.0 (the "License"); -- you may not use this file except in compliance with the License. -- You may obtain a copy of the License at -- -- https://www.apache.org/licenses/LICENSE-2.0 -- -- Unless required by applicable law or agreed to in writing, software -- distributed under the License is distributed on an "AS IS" BASIS, -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- See the License for the specific language governing permissions and -- limitations under the License. -- DROP VIEW IF EXISTS same_frame; CREATE VIEW same_frame AS SELECT COUNT(name) AS total_duplicate_frames FROM counters WHERE name='SAME_FRAME' AND value=1; DROP VIEW IF EXISTS duplicate_frames_logged; CREATE VIEW duplicate_frames_logged AS SELECT CASE WHEN COUNT(name) > 0 THEN 1 ELSE 0 END AS logs_found FROM counters WHERE name='SAME_FRAME' AND value=0; DROP VIEW IF EXISTS dpu_underrun; CREATE VIEW dpu_underrun AS SELECT COUNT(name) AS total_dpu_underrun_count FROM counters WHERE name='DPU_UNDERRUN' AND value=1; DROP VIEW IF EXISTS non_repeated_panel_fps; CREATE VIEW non_repeated_panel_fps AS SELECT * FROM ( SELECT ts, value, track_id, LAG(value, 1, 0) OVER (PARTITION BY track_id ORDER BY ts) AS prev_value FROM counter c JOIN track t ON c.track_id = t.id WHERE t.name = 'panel_fps' ORDER BY ts ) WHERE prev_value != value; DROP VIEW IF EXISTS panel_fps_spans; CREATE VIEW panel_fps_spans AS SELECT * FROM ( SELECT ts, value, LEAD(ts) OVER (PARTITION BY track_id ORDER BY ts) - ts AS dur FROM non_repeated_panel_fps ORDER BY ts ) WHERE dur > 0; DROP VIEW IF EXISTS display_metrics_output; CREATE VIEW display_metrics_output AS SELECT AndroidDisplayMetrics( 'total_duplicate_frames', (SELECT total_duplicate_frames FROM same_frame), 'duplicate_frames_logged', (SELECT logs_found FROM duplicate_frames_logged), 'total_dpu_underrun_count', (SELECT total_dpu_underrun_count FROM dpu_underrun), 'refresh_rate_switches', (SELECT COUNT(*) FROM panel_fps_spans), 'refresh_rate_stats', ( SELECT RepeatedField(metric) FROM ( SELECT AndroidDisplayMetrics_RefreshRateStat( 'refresh_rate_fps', CAST(value AS UINT32), 'count', COUNT(*), 'total_dur_ms', SUM(dur) / 1e6, 'avg_dur_ms', AVG(dur) / 1e6 ) AS metric FROM panel_fps_spans GROUP BY value ORDER BY value ) ) );