blob: f4bc187d81594cc7bdfeb583544e659fb0f8c49c [file] [log] [blame]
--
-- 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 update_power_state_stats;
CREATE VIEW update_power_state_stats AS
SELECT
CAST(AVG(dur) / 1e3 AS INT64) AS avg_runtime_micro_secs
FROM slice
WHERE slice.name = 'DisplayPowerController#updatePowerState' AND slice.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
)
),
'update_power_state', (
SELECT AndroidDisplayMetrics_UpdatePowerState(
'avg_runtime_micro_secs', avg_runtime_micro_secs
)
FROM update_power_state_stats
)
);