blob: 41a4d308cee14748132a7316350c21fde5605c8b [file] [log] [blame]
Ady Abraham9e16a482019-12-03 17:19:41 -08001/*
2 * Copyright 2019 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#undef LOG_TAG
18#define LOG_TAG "SchedulerUnittests"
19
20#include <gmock/gmock.h>
21#include <log/log.h>
Marin Shalamanov526c3382020-12-10 15:22:29 +010022#include <chrono>
Ady Abraham9e16a482019-12-03 17:19:41 -080023#include <thread>
24
Ady Abrahamc581d3c2020-08-06 17:34:27 -070025#include "Scheduler/VsyncConfiguration.h"
Ady Abraham9e16a482019-12-03 17:19:41 -080026
27using namespace testing;
28
Dominik Laskowski08d05c22020-07-22 00:05:08 -070029namespace android::scheduler {
Ady Abraham9e16a482019-12-03 17:19:41 -080030
Marin Shalamanov526c3382020-12-10 15:22:29 +010031using namespace std::chrono_literals;
32
Ady Abraham8287e852020-08-12 14:44:58 -070033class TestableWorkDuration : public impl::WorkDuration {
Ady Abraham9e16a482019-12-03 17:19:41 -080034public:
Marin Shalamanove8a663d2020-11-24 17:48:00 +010035 TestableWorkDuration(Fps currentFps, nsecs_t sfDuration, nsecs_t appDuration,
Ady Abraham8287e852020-08-12 14:44:58 -070036 nsecs_t sfEarlyDuration, nsecs_t appEarlyDuration,
Ady Abrahamcaba2982021-06-16 16:45:04 -070037 nsecs_t sfEarlyGlDuration, nsecs_t appEarlyGlDuration,
38 nsecs_t hwcMinWorkDuration)
Marin Shalamanov526c3382020-12-10 15:22:29 +010039 : impl::WorkDuration(currentFps, sfDuration, appDuration, sfEarlyDuration,
Ady Abrahamcaba2982021-06-16 16:45:04 -070040 appEarlyDuration, sfEarlyGlDuration, appEarlyGlDuration,
41 hwcMinWorkDuration) {}
Ady Abraham9e16a482019-12-03 17:19:41 -080042};
43
Ady Abraham8287e852020-08-12 14:44:58 -070044class WorkDurationTest : public testing::Test {
Ady Abraham9e16a482019-12-03 17:19:41 -080045protected:
Ady Abraham8287e852020-08-12 14:44:58 -070046 WorkDurationTest()
Marin Shalamanove8a663d2020-11-24 17:48:00 +010047 : mWorkDuration(Fps(60.0f), 10'500'000, 20'500'000, 16'000'000, 16'500'000, 13'500'000,
Ady Abrahamcaba2982021-06-16 16:45:04 -070048 21'000'000, 1234) {}
Ady Abraham9e16a482019-12-03 17:19:41 -080049
Ady Abraham8287e852020-08-12 14:44:58 -070050 ~WorkDurationTest() = default;
Ady Abraham9e16a482019-12-03 17:19:41 -080051
Ady Abraham8287e852020-08-12 14:44:58 -070052 TestableWorkDuration mWorkDuration;
Ady Abraham9e16a482019-12-03 17:19:41 -080053};
54
Ady Abraham9e16a482019-12-03 17:19:41 -080055/* ------------------------------------------------------------------------
56 * Test cases
57 */
Ady Abraham8287e852020-08-12 14:44:58 -070058TEST_F(WorkDurationTest, getConfigsForRefreshRate_60Hz) {
Marin Shalamanove8a663d2020-11-24 17:48:00 +010059 mWorkDuration.setRefreshRateFps(Fps(60.0f));
Ady Abraham8287e852020-08-12 14:44:58 -070060 auto currentOffsets = mWorkDuration.getCurrentConfigs();
Marin Shalamanove8a663d2020-11-24 17:48:00 +010061 auto offsets = mWorkDuration.getConfigsForRefreshRate(Fps(60.0f));
Ady Abraham9e16a482019-12-03 17:19:41 -080062
63 EXPECT_EQ(currentOffsets, offsets);
Ady Abraham8287e852020-08-12 14:44:58 -070064 EXPECT_EQ(offsets.late.sfOffset, 6'166'667);
65 EXPECT_EQ(offsets.late.appOffset, 2'333'334);
Ady Abraham9e16a482019-12-03 17:19:41 -080066
Ady Abraham8287e852020-08-12 14:44:58 -070067 EXPECT_EQ(offsets.late.sfWorkDuration, 10'500'000ns);
68 EXPECT_EQ(offsets.late.appWorkDuration, 20'500'000ns);
Ady Abraham9e16a482019-12-03 17:19:41 -080069
Ady Abraham8287e852020-08-12 14:44:58 -070070 EXPECT_EQ(offsets.early.sfOffset, 666'667);
71 EXPECT_EQ(offsets.early.appOffset, 833'334);
Ady Abraham9e16a482019-12-03 17:19:41 -080072
Ady Abraham8287e852020-08-12 14:44:58 -070073 EXPECT_EQ(offsets.early.sfWorkDuration, 16'000'000ns);
74 EXPECT_EQ(offsets.early.appWorkDuration, 16'500'000ns);
Ady Abraham9e16a482019-12-03 17:19:41 -080075
Ady Abraham8287e852020-08-12 14:44:58 -070076 EXPECT_EQ(offsets.earlyGpu.sfOffset, 3'166'667);
77 EXPECT_EQ(offsets.earlyGpu.appOffset, 15'500'001);
Ady Abraham9e16a482019-12-03 17:19:41 -080078
Ady Abraham8287e852020-08-12 14:44:58 -070079 EXPECT_EQ(offsets.earlyGpu.sfWorkDuration, 13'500'000ns);
80 EXPECT_EQ(offsets.earlyGpu.appWorkDuration, 21'000'000ns);
Ady Abraham9e16a482019-12-03 17:19:41 -080081}
82
Ady Abraham8287e852020-08-12 14:44:58 -070083TEST_F(WorkDurationTest, getConfigsForRefreshRate_90Hz) {
Marin Shalamanove8a663d2020-11-24 17:48:00 +010084 mWorkDuration.setRefreshRateFps(Fps(90.0f));
Ady Abraham8287e852020-08-12 14:44:58 -070085 auto currentOffsets = mWorkDuration.getCurrentConfigs();
Marin Shalamanove8a663d2020-11-24 17:48:00 +010086 auto offsets = mWorkDuration.getConfigsForRefreshRate(Fps(90.0f));
Ady Abraham9e16a482019-12-03 17:19:41 -080087
88 EXPECT_EQ(currentOffsets, offsets);
Ady Abraham8287e852020-08-12 14:44:58 -070089 EXPECT_EQ(offsets.late.sfOffset, 611'111);
90 EXPECT_EQ(offsets.late.appOffset, 2'333'333);
Ady Abraham9e16a482019-12-03 17:19:41 -080091
Ady Abraham8287e852020-08-12 14:44:58 -070092 EXPECT_EQ(offsets.late.sfWorkDuration, 10'500'000ns);
93 EXPECT_EQ(offsets.late.appWorkDuration, 20'500'000ns);
Ady Abraham9e16a482019-12-03 17:19:41 -080094
Ady Abraham8287e852020-08-12 14:44:58 -070095 EXPECT_EQ(offsets.early.sfOffset, -4'888'889);
96 EXPECT_EQ(offsets.early.appOffset, 833'333);
Ady Abraham9e16a482019-12-03 17:19:41 -080097
Ady Abraham8287e852020-08-12 14:44:58 -070098 EXPECT_EQ(offsets.early.sfWorkDuration, 16'000'000ns);
99 EXPECT_EQ(offsets.early.appWorkDuration, 16'500'000ns);
Ady Abraham9e16a482019-12-03 17:19:41 -0800100
Ady Abraham8287e852020-08-12 14:44:58 -0700101 EXPECT_EQ(offsets.earlyGpu.sfOffset, -2'388'889);
102 EXPECT_EQ(offsets.earlyGpu.appOffset, 9'944'444);
Ady Abraham9e16a482019-12-03 17:19:41 -0800103
Ady Abraham8287e852020-08-12 14:44:58 -0700104 EXPECT_EQ(offsets.earlyGpu.sfWorkDuration, 13'500'000ns);
105 EXPECT_EQ(offsets.earlyGpu.appWorkDuration, 21'000'000ns);
Ady Abraham9e16a482019-12-03 17:19:41 -0800106}
107
Ady Abraham8287e852020-08-12 14:44:58 -0700108TEST_F(WorkDurationTest, getConfigsForRefreshRate_DefaultOffsets) {
Ady Abrahamcaba2982021-06-16 16:45:04 -0700109 TestableWorkDuration phaseOffsetsWithDefaultValues(Fps(60.0f), -1, -1, -1, -1, -1, -1, 0);
Ady Abraham9e16a482019-12-03 17:19:41 -0800110
Ady Abraham8287e852020-08-12 14:44:58 -0700111 auto validateOffsets = [](const auto& offsets, std::chrono::nanoseconds vsyncPeriod) {
112 EXPECT_EQ(offsets.late.sfOffset, 1'000'000);
113 EXPECT_EQ(offsets.late.appOffset, 1'000'000);
Ady Abraham9e16a482019-12-03 17:19:41 -0800114
Ady Abraham8287e852020-08-12 14:44:58 -0700115 EXPECT_EQ(offsets.late.sfWorkDuration, vsyncPeriod - 1'000'000ns);
116 EXPECT_EQ(offsets.late.appWorkDuration, vsyncPeriod);
Ady Abraham9e16a482019-12-03 17:19:41 -0800117
Ady Abraham8287e852020-08-12 14:44:58 -0700118 EXPECT_EQ(offsets.early.sfOffset, 1'000'000);
119 EXPECT_EQ(offsets.early.appOffset, 1'000'000);
Ady Abraham9e16a482019-12-03 17:19:41 -0800120
Ady Abraham8287e852020-08-12 14:44:58 -0700121 EXPECT_EQ(offsets.early.sfWorkDuration, vsyncPeriod - 1'000'000ns);
122 EXPECT_EQ(offsets.early.appWorkDuration, vsyncPeriod);
Ady Abraham9e16a482019-12-03 17:19:41 -0800123
Ady Abraham8287e852020-08-12 14:44:58 -0700124 EXPECT_EQ(offsets.earlyGpu.sfOffset, 1'000'000);
125 EXPECT_EQ(offsets.earlyGpu.appOffset, 1'000'000);
Ady Abraham9e16a482019-12-03 17:19:41 -0800126
Ady Abraham8287e852020-08-12 14:44:58 -0700127 EXPECT_EQ(offsets.earlyGpu.sfWorkDuration, vsyncPeriod - 1'000'000ns);
128 EXPECT_EQ(offsets.earlyGpu.appWorkDuration, vsyncPeriod);
Ady Abrahamcaba2982021-06-16 16:45:04 -0700129
130 EXPECT_EQ(offsets.hwcMinWorkDuration, 0ns);
Ady Abraham9e16a482019-12-03 17:19:41 -0800131 };
132
Marin Shalamanove8a663d2020-11-24 17:48:00 +0100133 const auto testForRefreshRate = [&](Fps refreshRate) {
Ady Abraham8287e852020-08-12 14:44:58 -0700134 phaseOffsetsWithDefaultValues.setRefreshRateFps(refreshRate);
135 auto currentOffsets = phaseOffsetsWithDefaultValues.getCurrentConfigs();
136 auto offsets = phaseOffsetsWithDefaultValues.getConfigsForRefreshRate(refreshRate);
137 EXPECT_EQ(currentOffsets, offsets);
Marin Shalamanove8a663d2020-11-24 17:48:00 +0100138 validateOffsets(offsets, std::chrono::nanoseconds(refreshRate.getPeriodNsecs()));
Dominik Laskowski08d05c22020-07-22 00:05:08 -0700139 };
Ady Abraham60120a02020-03-23 11:23:26 -0700140
Marin Shalamanove8a663d2020-11-24 17:48:00 +0100141 testForRefreshRate(Fps(90.0f));
142 testForRefreshRate(Fps(60.0f));
Ady Abraham8287e852020-08-12 14:44:58 -0700143}
Ady Abraham60120a02020-03-23 11:23:26 -0700144
Ady Abraham8287e852020-08-12 14:44:58 -0700145TEST_F(WorkDurationTest, getConfigsForRefreshRate_unknownRefreshRate) {
Marin Shalamanove8a663d2020-11-24 17:48:00 +0100146 auto offsets = mWorkDuration.getConfigsForRefreshRate(Fps(14.7f));
Ady Abraham60120a02020-03-23 11:23:26 -0700147
Ady Abraham8287e852020-08-12 14:44:58 -0700148 EXPECT_EQ(offsets.late.sfOffset, 57'527'208);
149 EXPECT_EQ(offsets.late.appOffset, 37'027'208);
Ady Abraham60120a02020-03-23 11:23:26 -0700150
Ady Abraham8287e852020-08-12 14:44:58 -0700151 EXPECT_EQ(offsets.late.sfWorkDuration, 10'500'000ns);
152 EXPECT_EQ(offsets.late.appWorkDuration, 20'500'000ns);
Ady Abraham60120a02020-03-23 11:23:26 -0700153
Ady Abraham8287e852020-08-12 14:44:58 -0700154 EXPECT_EQ(offsets.early.sfOffset, 52'027'208);
155 EXPECT_EQ(offsets.early.appOffset, 35'527'208);
Ady Abraham60120a02020-03-23 11:23:26 -0700156
Ady Abraham8287e852020-08-12 14:44:58 -0700157 EXPECT_EQ(offsets.early.sfWorkDuration, 16'000'000ns);
158 EXPECT_EQ(offsets.early.appWorkDuration, 16'500'000ns);
Ady Abraham60120a02020-03-23 11:23:26 -0700159
Ady Abraham8287e852020-08-12 14:44:58 -0700160 EXPECT_EQ(offsets.earlyGpu.sfOffset, 54'527'208);
161 EXPECT_EQ(offsets.earlyGpu.appOffset, 33'527'208);
162
163 EXPECT_EQ(offsets.earlyGpu.sfWorkDuration, 13'500'000ns);
164 EXPECT_EQ(offsets.earlyGpu.appWorkDuration, 21'000'000ns);
165}
166
Ady Abrahamcaba2982021-06-16 16:45:04 -0700167TEST_F(WorkDurationTest, minHwcWorkDuration) {
168 EXPECT_EQ(mWorkDuration.getCurrentConfigs().hwcMinWorkDuration, 1234ns);
169}
170
Ady Abraham8287e852020-08-12 14:44:58 -0700171class TestablePhaseOffsets : public impl::PhaseOffsets {
172public:
173 TestablePhaseOffsets(nsecs_t vsyncPhaseOffsetNs, nsecs_t sfVSyncPhaseOffsetNs,
174 std::optional<nsecs_t> earlySfOffsetNs,
175 std::optional<nsecs_t> earlyGpuSfOffsetNs,
176 std::optional<nsecs_t> earlyAppOffsetNs,
177 std::optional<nsecs_t> earlyGpuAppOffsetNs,
178 nsecs_t highFpsVsyncPhaseOffsetNs, nsecs_t highFpsSfVSyncPhaseOffsetNs,
179 std::optional<nsecs_t> highFpsEarlySfOffsetNs,
180 std::optional<nsecs_t> highFpsEarlyGpuSfOffsetNs,
181 std::optional<nsecs_t> highFpsEarlyAppOffsetNs,
182 std::optional<nsecs_t> highFpsEarlyGpuAppOffsetNs,
Ady Abrahamcaba2982021-06-16 16:45:04 -0700183 nsecs_t thresholdForNextVsync, nsecs_t hwcMinWorkDuration)
Marin Shalamanov526c3382020-12-10 15:22:29 +0100184 : impl::PhaseOffsets(Fps(60.0f), vsyncPhaseOffsetNs, sfVSyncPhaseOffsetNs,
185 earlySfOffsetNs, earlyGpuSfOffsetNs, earlyAppOffsetNs,
186 earlyGpuAppOffsetNs, highFpsVsyncPhaseOffsetNs,
Ady Abraham8287e852020-08-12 14:44:58 -0700187 highFpsSfVSyncPhaseOffsetNs, highFpsEarlySfOffsetNs,
188 highFpsEarlyGpuSfOffsetNs, highFpsEarlyAppOffsetNs,
Ady Abrahamcaba2982021-06-16 16:45:04 -0700189 highFpsEarlyGpuAppOffsetNs, thresholdForNextVsync,
190 hwcMinWorkDuration) {}
Ady Abraham8287e852020-08-12 14:44:58 -0700191};
192
193class PhaseOffsetsTest : public testing::Test {
194protected:
195 PhaseOffsetsTest() = default;
196 ~PhaseOffsetsTest() = default;
197
Ady Abrahamcaba2982021-06-16 16:45:04 -0700198 TestablePhaseOffsets mPhaseOffsets{2'000'000, 6'000'000, 7'000'000, 8'000'000, 3'000'000,
199 4'000'000, 2'000'000, 1'000'000, 2'000'000, 3'000'000,
200 3'000'000, 4'000'000, 10'000'000, 1234};
Ady Abraham8287e852020-08-12 14:44:58 -0700201};
202
203TEST_F(PhaseOffsetsTest, getConfigsForRefreshRate_unknownRefreshRate) {
Marin Shalamanove8a663d2020-11-24 17:48:00 +0100204 auto offsets = mPhaseOffsets.getConfigsForRefreshRate(Fps(14.7f));
Ady Abraham8287e852020-08-12 14:44:58 -0700205
206 EXPECT_EQ(offsets.late.sfOffset, 6'000'000);
207 EXPECT_EQ(offsets.late.appOffset, 2'000'000);
208
209 EXPECT_EQ(offsets.late.sfWorkDuration, 62'027'208ns);
210 EXPECT_EQ(offsets.late.appWorkDuration, 72'027'208ns);
211
212 EXPECT_EQ(offsets.early.sfOffset, 7'000'000);
213 EXPECT_EQ(offsets.early.appOffset, 3'000'000);
214
215 EXPECT_EQ(offsets.early.sfWorkDuration, 61'027'208ns);
216 EXPECT_EQ(offsets.early.appWorkDuration, 72'027'208ns);
217
218 EXPECT_EQ(offsets.earlyGpu.sfOffset, 8'000'000);
219 EXPECT_EQ(offsets.earlyGpu.appOffset, 4'000'000);
220
221 EXPECT_EQ(offsets.earlyGpu.sfWorkDuration, 60'027'208ns);
222 EXPECT_EQ(offsets.earlyGpu.appWorkDuration, 72'027'208ns);
223}
224
225TEST_F(PhaseOffsetsTest, getConfigsForRefreshRate_60Hz) {
Marin Shalamanove8a663d2020-11-24 17:48:00 +0100226 auto offsets = mPhaseOffsets.getConfigsForRefreshRate(Fps(60.0f));
Ady Abraham8287e852020-08-12 14:44:58 -0700227
228 EXPECT_EQ(offsets.late.sfOffset, 6'000'000);
229 EXPECT_EQ(offsets.late.appOffset, 2'000'000);
230
231 EXPECT_EQ(offsets.late.sfWorkDuration, 10'666'667ns);
232 EXPECT_EQ(offsets.late.appWorkDuration, 20'666'667ns);
233
234 EXPECT_EQ(offsets.early.sfOffset, 7'000'000);
235 EXPECT_EQ(offsets.early.appOffset, 3'000'000);
236
237 EXPECT_EQ(offsets.early.sfWorkDuration, 9'666'667ns);
238 EXPECT_EQ(offsets.early.appWorkDuration, 20'666'667ns);
239
240 EXPECT_EQ(offsets.earlyGpu.sfOffset, 8'000'000);
241 EXPECT_EQ(offsets.earlyGpu.appOffset, 4'000'000);
242
243 EXPECT_EQ(offsets.earlyGpu.sfWorkDuration, 8'666'667ns);
244 EXPECT_EQ(offsets.earlyGpu.appWorkDuration, 20'666'667ns);
245}
246
247TEST_F(PhaseOffsetsTest, getConfigsForRefreshRate_90Hz) {
Marin Shalamanove8a663d2020-11-24 17:48:00 +0100248 auto offsets = mPhaseOffsets.getConfigsForRefreshRate(Fps(90.0f));
Ady Abraham8287e852020-08-12 14:44:58 -0700249
250 EXPECT_EQ(offsets.late.sfOffset, 1'000'000);
251 EXPECT_EQ(offsets.late.appOffset, 2'000'000);
252
253 EXPECT_EQ(offsets.late.sfWorkDuration, 10'111'111ns);
254 EXPECT_EQ(offsets.late.appWorkDuration, 21'222'222ns);
255
256 EXPECT_EQ(offsets.early.sfOffset, 2'000'000);
257 EXPECT_EQ(offsets.early.appOffset, 3'000'000);
258
259 EXPECT_EQ(offsets.early.sfWorkDuration, 9'111'111ns);
260 EXPECT_EQ(offsets.early.appWorkDuration, 21'222'222ns);
261
262 EXPECT_EQ(offsets.earlyGpu.sfOffset, 3'000'000);
263 EXPECT_EQ(offsets.earlyGpu.appOffset, 4'000'000);
264
265 EXPECT_EQ(offsets.earlyGpu.sfWorkDuration, 8'111'111ns);
266 EXPECT_EQ(offsets.earlyGpu.appWorkDuration, 21'222'222ns);
267}
268
269TEST_F(PhaseOffsetsTest, getConfigsForRefreshRate_DefaultValues_60Hz) {
Ady Abrahamcaba2982021-06-16 16:45:04 -0700270 TestablePhaseOffsets phaseOffsets{1'000'000, 1'000'000, {}, {}, {}, {}, 2'000'000,
271 1'000'000, {}, {}, {}, {}, 10'000'000, 1234};
Marin Shalamanove8a663d2020-11-24 17:48:00 +0100272 auto offsets = phaseOffsets.getConfigsForRefreshRate(Fps(60.0f));
Ady Abraham8287e852020-08-12 14:44:58 -0700273
274 EXPECT_EQ(offsets.late.sfOffset, 1'000'000);
275 EXPECT_EQ(offsets.late.appOffset, 1'000'000);
276
277 EXPECT_EQ(offsets.late.sfWorkDuration, 15'666'667ns);
278 EXPECT_EQ(offsets.late.appWorkDuration, 16'666'667ns);
279
280 EXPECT_EQ(offsets.early.sfOffset, 1'000'000);
281 EXPECT_EQ(offsets.early.appOffset, 1'000'000);
282
283 EXPECT_EQ(offsets.early.sfWorkDuration, 15'666'667ns);
284 EXPECT_EQ(offsets.early.appWorkDuration, 16'666'667ns);
285
286 EXPECT_EQ(offsets.earlyGpu.sfOffset, 1'000'000);
287 EXPECT_EQ(offsets.earlyGpu.appOffset, 1'000'000);
288
289 EXPECT_EQ(offsets.earlyGpu.sfWorkDuration, 15'666'667ns);
290 EXPECT_EQ(offsets.earlyGpu.appWorkDuration, 16'666'667ns);
291}
292
293TEST_F(PhaseOffsetsTest, getConfigsForRefreshRate_DefaultValues_90Hz) {
Ady Abrahamcaba2982021-06-16 16:45:04 -0700294 TestablePhaseOffsets phaseOffsets{1'000'000, 1'000'000, {}, {}, {}, {}, 2'000'000,
295 1'000'000, {}, {}, {}, {}, 10'000'000, 1234};
Marin Shalamanove8a663d2020-11-24 17:48:00 +0100296 auto offsets = phaseOffsets.getConfigsForRefreshRate(Fps(90.0f));
Ady Abraham8287e852020-08-12 14:44:58 -0700297
298 EXPECT_EQ(offsets.late.sfOffset, 1'000'000);
299 EXPECT_EQ(offsets.late.appOffset, 2'000'000);
300
301 EXPECT_EQ(offsets.late.sfWorkDuration, 10'111'111ns);
302 EXPECT_EQ(offsets.late.appWorkDuration, 21'222'222ns);
303
304 EXPECT_EQ(offsets.early.sfOffset, 1'000'000);
305 EXPECT_EQ(offsets.early.appOffset, 2'000'000);
306
307 EXPECT_EQ(offsets.early.sfWorkDuration, 10'111'111ns);
308 EXPECT_EQ(offsets.early.appWorkDuration, 21'222'222ns);
309
310 EXPECT_EQ(offsets.earlyGpu.sfOffset, 1'000'000);
311 EXPECT_EQ(offsets.earlyGpu.appOffset, 2'000'000);
312
313 EXPECT_EQ(offsets.earlyGpu.sfWorkDuration, 10'111'111ns);
314 EXPECT_EQ(offsets.earlyGpu.appWorkDuration, 21'222'222ns);
Ady Abraham60120a02020-03-23 11:23:26 -0700315}
316
Ady Abrahamcaba2982021-06-16 16:45:04 -0700317TEST_F(PhaseOffsetsTest, minHwcWorkDuration) {
318 TestablePhaseOffsets phaseOffsets{1'000'000, 1'000'000, {}, {}, {}, {}, 2'000'000,
319 1'000'000, {}, {}, {}, {}, 10'000'000, 1234};
320 EXPECT_EQ(phaseOffsets.getCurrentConfigs().hwcMinWorkDuration, 1234ns);
321}
322
Dominik Laskowski08d05c22020-07-22 00:05:08 -0700323} // namespace android::scheduler