1 /*
2  * Copyright (c) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "hdi_composer_ut.h"
17 #include <chrono>
18 #include <cinttypes>
19 #include <algorithm>
20 #include "v1_0/include/idisplay_composer_interface.h"
21 #include "v1_2/include/idisplay_composer_interface.h"
22 #include "v1_2/display_composer_type.h"
23 #include "v1_0/display_buffer_type.h"
24 #include "display_test.h"
25 #include "display_test_utils.h"
26 #include "hdi_composition_check.h"
27 #include "hdi_test_device.h"
28 #include "hdi_test_device_common.h"
29 #include "hdi_test_display.h"
30 #include "hdi_test_render_utils.h"
31 #include "timer.h"
32 #include <sys/time.h>
33 #include <thread>
34 
35 using namespace OHOS::HDI::Display::Buffer::V1_0;
36 using namespace OHOS::HDI::Display::Composer::V1_2;
37 using namespace OHOS::HDI::Display::TEST;
38 using namespace testing::ext;
39 
40 static sptr<Composer::V1_2::IDisplayComposerInterface> g_composerDevice = nullptr;
41 static std::shared_ptr<IDisplayBuffer> g_gralloc = nullptr;
42 static std::vector<uint32_t> g_displayIds;
43 const int SLEEP_CONT_10 = 10;
44 const int SLEEP_CONT_100 = 100;
45 const int SLEEP_CONT_2000 = 2000;
46 static bool g_isOnSeamlessChangeCalled = false;
47 static bool g_isOnModeCalled = false;
48 static bool g_threadCtrl = false;
49 
GetFirstDisplay()50 static inline std::shared_ptr<HdiTestDisplay> GetFirstDisplay()
51 {
52     return HdiTestDevice::GetInstance().GetFirstDisplay();
53 }
54 
CheckComposition(std::vector<LayerSettings> & layers,BufferHandle * clientBuffer,uint32_t checkType=HdiCompositionCheck::CHECK_VERTEX)55 static int32_t CheckComposition(std::vector<LayerSettings> &layers, BufferHandle* clientBuffer,
56     uint32_t checkType = HdiCompositionCheck::CHECK_VERTEX)
57 {
58     DISPLAY_TEST_CHK_RETURN((clientBuffer == nullptr), DISPLAY_NULL_PTR, DISPLAY_TEST_LOGE("client buffer is nullptr"));
59     return HdiCompositionCheck::GetInstance().Check(layers, *clientBuffer, checkType);
60 }
61 
CreateTestLayer(LayerSettings setting,uint32_t zorder)62 static std::shared_ptr<HdiTestLayer> CreateTestLayer(LayerSettings setting, uint32_t zorder)
63 {
64     int ret;
65     HdiTestDevice::GetInstance();
66     DISPLAY_TEST_LOGD("color 0x%x", setting.color);
67     std::shared_ptr<HdiTestDisplay> display = HdiTestDevice::GetInstance().GetFirstDisplay();
68     DISPLAY_TEST_CHK_RETURN((display == nullptr), nullptr, DISPLAY_TEST_LOGE("can not get display"));
69 
70     std::shared_ptr<HdiTestLayer> layer = display->CreateHdiTestLayer(setting.bufferSize.w, setting.bufferSize.h);
71     DISPLAY_TEST_CHK_RETURN((layer == nullptr), nullptr, DISPLAY_TEST_LOGE("can not create hdi test layer"));
72 
73     layer->SetLayerPosition(setting.displayRect);
74 
75     layer->SetCompType(setting.compositionType);
76 
77     if ((setting.alpha >= 0) && (setting.alpha <= 0xff)) { // alpha rang 0x00 ~ 0xff
78         LayerAlpha alpha = { 0 };
79         alpha.gAlpha = setting.alpha;
80         alpha.enGlobalAlpha = true;
81         layer->SetAlpha(alpha);
82     }
83     HdiGrallocBuffer* handle = layer->GetFrontBuffer();
84     DISPLAY_TEST_CHK_RETURN((handle == nullptr), nullptr, DISPLAY_TEST_LOGE("can not get front buffer"));
85     ClearColor(*(handle->Get()), setting.color);
86     ret = layer->SwapFrontToBackQ();
87     DISPLAY_TEST_CHK_RETURN((ret != DISPLAY_SUCCESS), nullptr, DISPLAY_TEST_LOGE("SwapFrontToBackQ failed"));
88     layer->SetZorder(zorder);
89     layer->SetBlendType(setting.blendType);
90     layer->SetTransform(setting.rotate);
91     return layer;
92 }
93 
PrepareAndCommit()94 static int PrepareAndCommit()
95 {
96     int ret;
97     DISPLAY_TEST_LOGD();
98     std::shared_ptr<HdiTestDisplay> display = HdiTestDevice::GetInstance().GetFirstDisplay();
99     DISPLAY_TEST_CHK_RETURN((display == nullptr), DISPLAY_FAILURE, DISPLAY_TEST_LOGE("can not get display"));
100 
101     ret = display->PrepareDisplayLayers(); // 确定顶压策略(是否走GPU合成)、刷新layer列表
102     DISPLAY_TEST_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE,
103         DISPLAY_TEST_LOGE("PrepareDisplayLayers failed"));
104 
105     ret = display->Commit(); // 送显
106     DISPLAY_TEST_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_TEST_LOGE("Commit failed"));
107     return DISPLAY_SUCCESS;
108 }
109 
LoopCommit()110 static void LoopCommit()
111 {
112     while (!g_threadCtrl) {
113         PrepareAndCommit();
114         std::this_thread::sleep_for(std::chrono::milliseconds(SLEEP_CONT_10));
115     }
116 }
117 
TestVBlankCallback(unsigned int sequence,uint64_t ns,void * data)118 static void TestVBlankCallback(unsigned int sequence, uint64_t ns, void* data)
119 {
120     static uint64_t lastns;
121     DISPLAY_TEST_LOGD("seq %{public}d  ns %" PRId64 " duration %" PRId64 " ns", sequence, ns, (ns - lastns));
122     lastns = ns;
123     VblankCtr::GetInstance().NotifyVblank(sequence, ns, data);
124 }
125 
AdjustLayerSettings(std::vector<LayerSettings> & settings,uint32_t w,uint32_t h)126 static void AdjustLayerSettings(std::vector<LayerSettings> &settings, uint32_t w, uint32_t h)
127 {
128     DISPLAY_TEST_LOGD();
129     for (uint32_t i = 0; i < settings.size(); i++) {
130         LayerSettings& setting = settings[i];
131         DISPLAY_TEST_LOGD(" ratio w: %f  ratio h: %f", setting.rectRatio.w, setting.rectRatio.h);
132         if ((setting.rectRatio.w > 0.0f) && (setting.rectRatio.h > 0.0f)) {
133             setting.displayRect.h = static_cast<uint32_t>(setting.rectRatio.h * h);
134             setting.displayRect.w = static_cast<uint32_t>(setting.rectRatio.w * w);
135             setting.displayRect.x = static_cast<uint32_t>(setting.rectRatio.x * w);
136             setting.displayRect.y = static_cast<uint32_t>(setting.rectRatio.y * h);
137             DISPLAY_TEST_LOGD("display rect adust form %f %f %f %f to %{public}d %{public}d %{public}d %{public}d ",
138                 setting.rectRatio.x, setting.rectRatio.y, setting.rectRatio.w, setting.rectRatio.h,
139                 setting.displayRect.x, setting.displayRect.y, setting.displayRect.w, setting.displayRect.h);
140         }
141 
142         if ((setting.bufferRatio.h > 0.0f) || (setting.bufferRatio.w > 0.0f)) {
143             setting.bufferSize.h = static_cast<uint32_t>(setting.bufferRatio.h * h);
144             setting.bufferSize.w = static_cast<uint32_t>(setting.bufferRatio.w * w);
145             DISPLAY_TEST_LOGD("buffer size adjust for %f %f to %{public}d %{public}d",
146                 setting.bufferRatio.w, setting.bufferRatio.h, setting.bufferSize.w, setting.bufferSize.h);
147         }
148 
149         if ((setting.bufferSize.w == 0) || (setting.bufferSize.h == 0)) {
150             DISPLAY_TEST_LOGD("buffer size adjust for %{public}d %{public}d to %{public}d %{public}d",
151                 setting.bufferSize.w, setting.bufferSize.h, setting.displayRect.w, setting.displayRect.h);
152 
153             setting.bufferSize.w = setting.displayRect.w;
154             setting.bufferSize.h = setting.displayRect.h;
155         }
156     }
157 }
158 
CreateLayers(std::vector<LayerSettings> & settings)159 static std::vector<std::shared_ptr<HdiTestLayer>> CreateLayers(std::vector<LayerSettings> &settings)
160 {
161     DISPLAY_TEST_LOGD("settings %{public}zd", settings.size());
162     std::vector<std::shared_ptr<HdiTestLayer>> layers;
163     DisplayModeInfo mode = GetFirstDisplay()->GetCurrentMode();
164     AdjustLayerSettings(settings, mode.width, mode.height);
165     for (uint32_t i = 0; i < settings.size(); i++) {
166         LayerSettings setting = settings[i];
167 
168         auto layer = CreateTestLayer(setting, i);
169         layers.push_back(layer);
170     }
171 
172     return layers;
173 }
174 
PresentAndCheck(std::vector<LayerSettings> & layerSettings,uint32_t checkType=HdiCompositionCheck::CHECK_VERTEX)175 static inline void PresentAndCheck(std::vector<LayerSettings> &layerSettings,
176     uint32_t checkType = HdiCompositionCheck::CHECK_VERTEX)
177 {
178     int ret = PrepareAndCommit();
179     ASSERT_TRUE((ret == DISPLAY_SUCCESS));
180     if ((GetFirstDisplay()->SnapShot()) != nullptr) {
181         HdiTestDevice::GetInstance().GetGrallocInterface()->InvalidateCache(*(GetFirstDisplay()->SnapShot()));
182         ret = CheckComposition(layerSettings, GetFirstDisplay()->SnapShot(), checkType);
183         ASSERT_TRUE((ret == DISPLAY_SUCCESS));
184     }
185 }
186 
DestroyLayer(std::shared_ptr<HdiTestLayer> layer)187 static void DestroyLayer(std::shared_ptr<HdiTestLayer> layer)
188 {
189     std::this_thread::sleep_for(std::chrono::milliseconds(SLEEP_CONT_100));
190     auto ret = g_composerDevice->DestroyLayer(g_displayIds[0], layer->GetId());
191     if (ret != DISPLAY_SUCCESS && ret != DISPLAY_NOT_SUPPORT) {
192         DISPLAY_TEST_LOGD("DestroyLayer fail or not support, ret: %{public}d", ret);
193         return;
194     }
195     std::this_thread::sleep_for(std::chrono::milliseconds(SLEEP_CONT_100));
196 }
197 
SetUpTestCase()198 void DeviceTest::SetUpTestCase()
199 {
200     int ret = HdiTestDevice::GetInstance().InitDevice();
201     ASSERT_TRUE(ret == DISPLAY_SUCCESS);
202 
203     g_composerDevice = HdiTestDevice::GetInstance().GetDeviceInterface();
204     ASSERT_TRUE(g_composerDevice != nullptr);
205 
206     g_gralloc.reset(IDisplayBuffer::Get());
207     ASSERT_TRUE(g_gralloc != nullptr);
208 
209     g_displayIds = HdiTestDevice::GetInstance().GetDevIds();
210     ASSERT_TRUE(g_displayIds.size() > 0);
211 }
212 
TearDownTestCase()213 void DeviceTest::TearDownTestCase()
214 {
215     HdiTestDevice::GetInstance().Clear();
216     HdiTestDevice::GetInstance().GetFirstDisplay()->ResetClientLayer();
217 }
218 
NotifyVblank(unsigned int sequence,uint64_t ns,const void * data)219 void VblankCtr::NotifyVblank(unsigned int sequence, uint64_t ns, const void* data)
220 {
221     DISPLAY_TEST_LOGD();
222     if (data != nullptr) {
223         DISPLAY_TEST_LOGD("sequence = %{public}u, ns = %" PRIu64 "", sequence, ns);
224     }
225     std::unique_lock<std::mutex> lg(vblankMutex_);
226     hasVblank_ = true;
227     vblankCondition_.notify_one();
228     DISPLAY_TEST_LOGD();
229 }
230 
~VblankCtr()231 VblankCtr::~VblankCtr() {}
232 
WaitVblank(uint32_t ms)233 int32_t VblankCtr::WaitVblank(uint32_t ms)
234 {
235     bool ret = false;
236     DISPLAY_TEST_LOGD();
237     std::unique_lock<std::mutex> lck(vblankMutex_);
238     ret = vblankCondition_.wait_for(lck, std::chrono::milliseconds(ms), [=] { return hasVblank_; });
239     DISPLAY_TEST_LOGD();
240     if (!ret) {
241         return DISPLAY_FAILURE;
242     }
243     return DISPLAY_SUCCESS;
244 }
245 
246 HWTEST_F(DeviceTest, test_SetClientBufferCacheCount, TestSize.Level1)
247 {
248     const uint32_t CACHE_COUNT = 5;
249     auto ret = g_composerDevice->SetClientBufferCacheCount(g_displayIds[0], CACHE_COUNT);
250     EXPECT_EQ(DISPLAY_SUCCESS, ret);
251 }
252 
253 HWTEST_F(DeviceTest, test_GetDisplayCapability, TestSize.Level1)
254 {
255     DisplayCapability info;
256     auto ret = g_composerDevice->GetDisplayCapability(g_displayIds[0], info);
257     EXPECT_EQ(DISPLAY_SUCCESS, ret);
258 }
259 
260 HWTEST_F(DeviceTest, test_GetDisplaySupportedModes, TestSize.Level1)
261 {
262     std::vector<DisplayModeInfo> modes;
263     auto ret = g_composerDevice->GetDisplaySupportedModes(g_displayIds[0], modes);
264     EXPECT_EQ(DISPLAY_SUCCESS, ret);
265 }
266 
267 HWTEST_F(DeviceTest, test_GetDisplayMode, TestSize.Level1)
268 {
269     uint32_t MODE = 0;
270     auto ret = g_composerDevice->GetDisplayMode(g_displayIds[0], MODE);
271     EXPECT_EQ(DISPLAY_SUCCESS, ret);
272 }
273 
274 HWTEST_F(DeviceTest, test_SetDisplayMode, TestSize.Level1)
275 {
276     const uint32_t MODE = 0;
277     auto ret = g_composerDevice->SetDisplayMode(g_displayIds[0], MODE);
278     EXPECT_EQ(DISPLAY_SUCCESS, ret);
279 }
280 
281 HWTEST_F(DeviceTest, test_GetDisplayPowerStatus, TestSize.Level1)
282 {
283     Composer::V1_0::DispPowerStatus powerStatus = Composer::V1_0::DispPowerStatus::POWER_STATUS_OFF;
284     auto ret = g_composerDevice->GetDisplayPowerStatus(g_displayIds[0], powerStatus);
285     EXPECT_EQ(DISPLAY_SUCCESS, ret);
286 }
287 
288 HWTEST_F(DeviceTest, test_SetDisplayPowerStatus, TestSize.Level1)
289 {
290     auto ret = g_composerDevice->SetDisplayPowerStatus(g_displayIds[0],
291         Composer::V1_0::DispPowerStatus::POWER_STATUS_STANDBY);
292     EXPECT_EQ(DISPLAY_SUCCESS, ret);
293 
294     ret = g_composerDevice->SetDisplayPowerStatus(g_displayIds[0], Composer::V1_0::DispPowerStatus::POWER_STATUS_ON);
295     EXPECT_EQ(DISPLAY_SUCCESS, ret);
296 }
297 
298 #ifdef DISPLAY_COMMUNITY
299 HWTEST_F(DeviceTest, test_GetDisplayBacklight, TestSize.Level1)
300 {
301     uint32_t level;
302     auto ret = g_composerDevice->GetDisplayBacklight(g_displayIds[0], level);
303     EXPECT_EQ(DISPLAY_SUCCESS, ret);
304 }
305 #endif
306 
307 HWTEST_F(DeviceTest, test_SetDisplayBacklight, TestSize.Level1)
308 {
309     const uint32_t LEVEL = 10;
310     auto ret = g_composerDevice->SetDisplayBacklight(g_displayIds[0], LEVEL);
311     EXPECT_EQ(DISPLAY_SUCCESS, ret);
312 }
313 
314 HWTEST_F(DeviceTest, test_GetDisplayProperty, TestSize.Level1)
315 {
316     const uint32_t PROPERTY_ID = 1;
317     uint64_t propertyValue = 0;
318     auto ret = g_composerDevice->GetDisplayProperty(g_displayIds[0], PROPERTY_ID, propertyValue);
319     int32_t result = DISPLAY_FAILURE;
320     if (ret == DISPLAY_SUCCESS || ret == DISPLAY_NOT_SUPPORT) {
321         result = DISPLAY_SUCCESS;
322     }
323     EXPECT_EQ(DISPLAY_SUCCESS, result);
324 }
325 
326 HWTEST_F(DeviceTest, test_SetHardwareCursorPosition, TestSize.Level1)
327 {
328     int32_t x = 1;
329     int32_t y = 1;
330     auto ret = g_composerDevice->SetHardwareCursorPosition(g_displayIds[0], x, y);
331     if (ret == DISPLAY_SUCCESS || ret == DISPLAY_NOT_SUPPORT) {
332         ret = DISPLAY_SUCCESS;
333     }
334     EXPECT_EQ(DISPLAY_SUCCESS, ret);
335 }
336 
337 HWTEST_F(DeviceTest, test_EnableHardwareCursorStats, TestSize.Level1)
338 {
339     bool enable = true;
340     auto ret = g_composerDevice->EnableHardwareCursorStats(g_displayIds[0], enable);
341     if (ret == DISPLAY_SUCCESS || ret == DISPLAY_NOT_SUPPORT) {
342         ret = DISPLAY_SUCCESS;
343     }
344     EXPECT_EQ(DISPLAY_SUCCESS, ret);
345 }
346 
347 HWTEST_F(DeviceTest, test_GetHardwareCursorStats, TestSize.Level1)
348 {
349     uint32_t frameCount = 0;
350     uint32_t vsyncCount = 0;
351     auto ret = g_composerDevice->GetHardwareCursorStats(g_displayIds[0], frameCount, vsyncCount);
352     if (ret == DISPLAY_SUCCESS || ret == DISPLAY_NOT_SUPPORT) {
353         ret = DISPLAY_SUCCESS;
354     }
355     EXPECT_EQ(DISPLAY_SUCCESS, ret);
356 }
357 
358 HWTEST_F(DeviceTest, test_GetDisplayCompChange, TestSize.Level1)
359 {
360     std::vector<uint32_t> layers {};
361     std::vector<int32_t> type {};
362     auto ret = g_composerDevice->GetDisplayCompChange(g_displayIds[0], layers, type);
363     EXPECT_EQ(DISPLAY_SUCCESS, ret);
364 }
365 
366 HWTEST_F(DeviceTest, test_SetDisplayClientCrop, TestSize.Level1)
367 {
368     const int32_t WIDTH = 1920;
369     const int32_t HEIGHT = 1080;
370     IRect rect = {0, 0, WIDTH, HEIGHT};
371     auto ret = g_composerDevice->SetDisplayClientCrop(g_displayIds[0], rect);
372     // not support
373     EXPECT_EQ(DISPLAY_FAILURE, ret);
374 }
375 
376 HWTEST_F(DeviceTest, test_GetDisplayReleaseFence, TestSize.Level1)
377 {
378     std::vector<uint32_t> layers {};
379     std::vector<int32_t> fences {};
380     auto ret = g_composerDevice->GetDisplayReleaseFence(g_displayIds[0], layers, fences);
381     EXPECT_EQ(DISPLAY_SUCCESS, ret);
382 }
383 
384 HWTEST_F(DeviceTest, test_SetDisplayClientBuffer, TestSize.Level1)
385 {
386     BufferHandle* buffer = nullptr;
387     const int32_t WIDTH = 800;
388     const int32_t HEIGHT = 600;
389 
390     AllocInfo info;
391     info.width  = WIDTH;
392     info.height = HEIGHT;
393     info.usage = OHOS::HDI::Display::Composer::V1_0::HBM_USE_MEM_DMA |
394             OHOS::HDI::Display::Composer::V1_0::HBM_USE_CPU_READ |
395             OHOS::HDI::Display::Composer::V1_0::HBM_USE_CPU_WRITE;
396     info.format = Composer::V1_0::PIXEL_FMT_RGBA_8888;
397 
398     g_gralloc->AllocMem(info, buffer);
399     ASSERT_TRUE(buffer != nullptr);
400 
401     uint32_t bufferSeq = 1;
402     auto ret = g_composerDevice->SetDisplayClientBuffer(g_displayIds[0], buffer, bufferSeq, -1);
403     g_gralloc->FreeMem(*buffer);
404     EXPECT_EQ(DISPLAY_SUCCESS, ret);
405 }
406 
407 HWTEST_F(DeviceTest, test_SetDisplayClientDamage, TestSize.Level1)
408 {
409     const int32_t WIDTH = 1920;
410     const int32_t HEIGHT = 1080;
411     IRect rect = {0, 0, WIDTH, HEIGHT};
412     std::vector<IRect> vRects;
413     vRects.push_back(rect);
414     auto ret = g_composerDevice->SetDisplayClientDamage(g_displayIds[0], vRects);
415     // not support
416     EXPECT_EQ(DISPLAY_SUCCESS, ret);
417 }
418 
419 HWTEST_F(DeviceTest, test_CreateVirtualDisplay, TestSize.Level1)
420 {
421     const uint32_t WIDTH = 1920;
422     const uint32_t HEIGHT = 1080;
423     int32_t format = 0;
424     uint32_t devId = 0;
425     auto ret = g_composerDevice->CreateVirtualDisplay(WIDTH, HEIGHT, format, devId);
426     // not support
427     EXPECT_EQ(DISPLAY_FAILURE, ret);
428 }
429 
430 HWTEST_F(DeviceTest, test_DestroyVirtualDisplay, TestSize.Level1)
431 {
432     uint32_t devId = 0;
433     auto ret = g_composerDevice->DestroyVirtualDisplay(devId);
434     // not support
435     EXPECT_EQ(DISPLAY_FAILURE, ret);
436 }
437 
438 HWTEST_F(DeviceTest, test_SetVirtualDisplayBuffer, TestSize.Level1)
439 {
440     BufferHandle* buffer = nullptr;
441     int32_t fence = -1;
442     const int32_t WIDTH = 800;
443     const int32_t HEIGHT = 600;
444 
445     AllocInfo info;
446     info.width  = WIDTH;
447     info.height = HEIGHT;
448     info.usage = OHOS::HDI::Display::Composer::V1_0::HBM_USE_MEM_DMA |
449             OHOS::HDI::Display::Composer::V1_0::HBM_USE_CPU_READ |
450             OHOS::HDI::Display::Composer::V1_0::HBM_USE_CPU_WRITE;
451     info.format = Composer::V1_0::PIXEL_FMT_RGBA_8888;
452 
453     g_gralloc->AllocMem(info, buffer);
454     ASSERT_TRUE(buffer != nullptr);
455 
456     auto ret = g_composerDevice->SetVirtualDisplayBuffer(g_displayIds[0], *buffer, fence);
457     g_gralloc->FreeMem(*buffer);
458     // not support
459     EXPECT_EQ(DISPLAY_FAILURE, ret);
460 }
461 
462 HWTEST_F(DeviceTest, test_SetDisplayProperty, TestSize.Level1)
463 {
464     const uint32_t PROPERTY_ID = 1;
465     const uint64_t PROPERTY_VALUE = 0;
466     auto ret = g_composerDevice->SetDisplayProperty(g_displayIds[0], PROPERTY_ID, PROPERTY_VALUE);
467     // not support
468     EXPECT_EQ(DISPLAY_FAILURE, ret);
469 }
470 
471 HWTEST_F(DeviceTest, test_SetLayerCrop, TestSize.Level1)
472 {
473     std::vector<LayerSettings> settings = {
474         {
475             .rectRatio = { 0, 0, 1.0f, 1.0f },
476             .color = RED
477         },
478     };
479     std::vector<uint32_t> splitColors = { { RED, GREEN, YELLOW, BLUE, PINK, PURPLE, CYAN, TRANSPARENT } };
480 
481     std::vector<std::shared_ptr<HdiTestLayer>> layers = CreateLayers(settings);
482     ASSERT_TRUE((layers.size() > 0));
483     // split the buffer
484     auto layer = layers[0];
485     HdiGrallocBuffer* handle = layer->GetBackBuffer(); // the backbuffer has not present now
486     ASSERT_TRUE((handle != nullptr));
487     auto splitRects = SplitBuffer(*(handle->Get()), splitColors);
488     PrepareAndCommit();
489     for (uint32_t i = 0; i < splitRects.size(); i++) {
490         settings[0].color = splitColors[i];
491         layer->SetLayerCrop(splitRects[i]);
492         PresentAndCheck(settings);
493     }
494 
495     DestroyLayer(layer);
496 }
497 
498 HWTEST_F(DeviceTest, test_SetLayerZorder, TestSize.Level1)
499 {
500     std::vector<LayerSettings> settings = {
501         {
502             .rectRatio = { 0, 0, 1.0f, 1.0f },
503             .color = RED
504         },
505         {
506             .rectRatio = { 0, 0, 1.0f, 1.0f },
507             .color = GREEN
508         },
509         {
510             .rectRatio = { 0, 0, 1.0f, 1.0f },
511             .color = YELLOW
512         },
513     };
514 
515     std::vector<std::vector<int>> zorders = {
516         { 3, 2, 1 }, { 1, 3, 2 }, { 3, 1, 2 }, { 1, 2, 3 }, { 2, 1, 3 }, { 2, 3, 1 },
517     };
518     std::vector<std::shared_ptr<HdiTestLayer>> layers = CreateLayers(settings);
519 
520     for (const auto& zorderList : zorders) {
521         // adjust the zorder
522         for (uint32_t i = 0; i < zorderList.size(); i++) {
523             settings[i].zorder = zorderList[i];
524             layers[i]->SetZorder(zorderList[i]);
525         }
526         std::vector<LayerSettings> tempSettings = settings;
527         std::sort(tempSettings.begin(), tempSettings.end(),
__anon7b907af90202(const auto& l, auto const & r) 528             [=](const auto& l, auto const & r) { return l.zorder < r.zorder; });
529         // present and check
530         PresentAndCheck(tempSettings);
531     }
532     HdiTestDevice::GetInstance().Clear();
533 }
534 
535 HWTEST_F(DeviceTest, test_SetLayerPreMulti, TestSize.Level1)
536 {
537     std::vector<LayerSettings> settings = {
538         {
539             .rectRatio = { 0, 0, 1.0f, 1.0f },
540             .color = GREEN
541         },
542     };
543 
544     std::vector<std::shared_ptr<HdiTestLayer>> layers = CreateLayers(settings);
545     ASSERT_TRUE((layers.size() > 0));
546     PrepareAndCommit();
547 
548     auto layer = layers[0];
549     bool preMul = true;
550     auto ret = g_composerDevice->SetLayerPreMulti(g_displayIds[0], layer->GetId(), preMul);
551 
552     PrepareAndCommit();
553     HdiTestDevice::GetInstance().Clear();
554     EXPECT_EQ(DISPLAY_SUCCESS, ret);
555 
556     DestroyLayer(layer);
557 }
558 
559 HWTEST_F(DeviceTest, test_SetLayerAlpha, TestSize.Level1)
560 {
561     std::vector<LayerSettings> settings = {
562         {
563             .rectRatio = { 0, 0, 1.0f, 1.0f },
564             .color = GREEN
565         },
566         {
567             .rectRatio = { 0, 0, 1.0f, 1.0f },
568             .color = RED
569         },
570     };
571 
572     std::vector<std::shared_ptr<HdiTestLayer>> layers = CreateLayers(settings);
573     ASSERT_TRUE((layers.size() > 0));
574 
575     auto layer = layers[1];
576     LayerAlpha alpha = { 0 };
577     alpha.enGlobalAlpha = true;
578     alpha.enPixelAlpha = true;
579     alpha.gAlpha = 0;
580     alpha.alpha0 = 0;
581     alpha.alpha1 = 0;
582     layer->SetAlpha(alpha);
583 
584     PrepareAndCommit();
585     HdiTestDevice::GetInstance().Clear();
586 
587     DestroyLayer(layer);
588 }
589 
590 HWTEST_F(DeviceTest, test_SetLayerRegion, TestSize.Level1)
591 {
592     std::vector<LayerSettings> settings = {
593         {.rectRatio = {0, 0, 1.0f, 1.0f}, .color = GREEN, .alpha = 0xFF}
594     };
595 
596     std::vector<std::shared_ptr<HdiTestLayer>> layers = CreateLayers(settings);
597     ASSERT_TRUE((layers.size() > 0));
598 
599     const int32_t WIDTH = 100;
600     const int32_t HEIGHT = 100;
601     auto layer = layers[0];
602     IRect rect = {0, 0, WIDTH, HEIGHT};
603     auto ret = g_composerDevice->SetLayerRegion(g_displayIds[0], layer->GetId(), rect);
604 
605     PrepareAndCommit();
606     EXPECT_EQ(DISPLAY_SUCCESS, ret);
607 
608     DestroyLayer(layer);
609 }
610 
611 HWTEST_F(DeviceTest, test_SetLayerDirtyRegion, TestSize.Level1)
612 {
613     std::vector<LayerSettings> settings = {
614         {
615             .rectRatio = { 0, 0, 1.0f, 1.0f },
616             .color = BLUE
617         }
618     };
619 
620     std::vector<std::shared_ptr<HdiTestLayer>> layers = CreateLayers(settings);
621     ASSERT_TRUE((layers.size() > 0));
622 
623     auto layer = layers[0];
624 
625     const int32_t WIDTH = 100;
626     const int32_t HEIGHT = 100;
627     IRect rect = {0, 0, WIDTH, HEIGHT};
628     std::vector<IRect> vRects;
629     vRects.push_back(rect);
630     auto ret = g_composerDevice->SetLayerDirtyRegion(g_displayIds[0], layer->GetId(), vRects);
631 
632     PrepareAndCommit();
633     HdiTestDevice::GetInstance().Clear();
634 
635     EXPECT_EQ(DISPLAY_SUCCESS, ret);
636 
637     DestroyLayer(layer);
638 }
639 
640 HWTEST_F(DeviceTest, test_SetLayerTransformMode, TestSize.Level1)
641 {
642     std::vector<LayerSettings> settings = {
643         {
644             .rectRatio = { 0, 0, 1.0f, 1.0f },
645             .color = RED
646         }
647     };
648 
649     std::vector<std::shared_ptr<HdiTestLayer>> layers = CreateLayers(settings);
650     ASSERT_TRUE((layers.size() > 0));
651 
652     PrepareAndCommit();
653 
654     auto layer = layers[0];
655 
656     TransformType type = TransformType::ROTATE_90;
657     auto ret = g_composerDevice->SetLayerTransformMode(g_displayIds[0], layer->GetId(), type);
658     PrepareAndCommit();
659 
660     type = TransformType::ROTATE_180;
661     ret = g_composerDevice->SetLayerTransformMode(g_displayIds[0], layer->GetId(), type);
662     PrepareAndCommit();
663 
664     type = TransformType::ROTATE_270;
665     ret = g_composerDevice->SetLayerTransformMode(g_displayIds[0], layer->GetId(), type);
666     PrepareAndCommit();
667 
668     EXPECT_EQ(DISPLAY_SUCCESS, ret);
669 
670     DestroyLayer(layer);
671 }
672 
673 HWTEST_F(DeviceTest, test_SetLayerVisibleRegion, TestSize.Level1)
674 {
675     std::vector<LayerSettings> settings = {
676         {
677             .rectRatio = { 0, 0, 1.0f, 1.0f },
678             .color = BLUE
679         }
680     };
681 
682     std::vector<std::shared_ptr<HdiTestLayer>> layers = CreateLayers(settings);
683     ASSERT_TRUE((layers.size() > 0));
684     PrepareAndCommit();
685     auto layer = layers[0];
686 
687     const int32_t WIDTH = 500;
688     const int32_t HEIGHT = 500;
689     IRect region = {0, 0, WIDTH, HEIGHT};
690     std::vector<IRect> regions = {};
691     regions.push_back(region);
692     auto ret = g_composerDevice->SetLayerVisibleRegion(g_displayIds[0], layer->GetId(), regions);
693     PrepareAndCommit();
694 
695     EXPECT_EQ(DISPLAY_SUCCESS, ret);
696 
697     DestroyLayer(layer);
698 }
699 
700 HWTEST_F(DeviceTest, test_SetLayerBuffer, TestSize.Level1)
701 {
702     std::vector<LayerSettings> settings = {
703         {
704             .rectRatio = { 0, 0, 1.0f, 1.0f },
705             .color = GREEN
706         }
707     };
708 
709     std::vector<std::shared_ptr<HdiTestLayer>> layers = CreateLayers(settings);
710     ASSERT_TRUE((layers.size() > 0));
711 
712     auto layer = layers[0];
713 
714     auto graphicBuffer = layer->AcquireBackBuffer();
__anon7b907af90302(const BufferHandle* buffer, uint32_t seqNo) 715     int32_t ret = graphicBuffer->SetGraphicBuffer([&](const BufferHandle* buffer, uint32_t seqNo) -> int32_t {
716         std::vector<uint32_t> deletingList;
717         int32_t result = g_composerDevice->SetLayerBuffer(g_displayIds[0], layer->GetId(), buffer, seqNo, -1,
718             deletingList);
719         return result;
720     });
721     PrepareAndCommit();
722 
723     EXPECT_EQ(DISPLAY_SUCCESS, ret);
724 
725     DestroyLayer(layer);
726 }
727 
728 HWTEST_F(DeviceTest, test_SetLayerCompositionType, TestSize.Level1)
729 {
730     std::vector<LayerSettings> settings = {
731         {
732             .rectRatio = { 0, 0, 1.0f, 1.0f },
733             .color = BLUE
734         }
735     };
736 
737     std::vector<std::shared_ptr<HdiTestLayer>> layers = CreateLayers(settings);
738     ASSERT_TRUE((layers.size() > 0));
739 
740     auto layer = layers[0];
741 
742     Composer::V1_0::CompositionType type = Composer::V1_0::CompositionType::COMPOSITION_CLIENT;
743     auto ret = g_composerDevice->SetLayerCompositionType(g_displayIds[0], layer->GetId(), type);
744 
745     PrepareAndCommit();
746 
747     EXPECT_EQ(DISPLAY_SUCCESS, ret);
748 
749     DestroyLayer(layer);
750 }
751 
752 HWTEST_F(DeviceTest, test_SetLayerBlendType, TestSize.Level1)
753 {
754     std::vector<LayerSettings> settings = {
755         {
756             .rectRatio = { 0, 0, 1.0f, 1.0f },
757             .color = GREEN
758         }
759     };
760 
761     std::vector<std::shared_ptr<HdiTestLayer>> layers = CreateLayers(settings);
762     ASSERT_TRUE((layers.size() > 0));
763 
764     auto layer = layers[0];
765 
766     BlendType type = BlendType::BLEND_NONE;
767     auto ret = g_composerDevice->SetLayerBlendType(g_displayIds[0], layer->GetId(), type);
768 
769     PrepareAndCommit();
770 
771     EXPECT_EQ(DISPLAY_SUCCESS, ret);
772 
773     DestroyLayer(layer);
774 }
775 
776 HWTEST_F(DeviceTest, test_SetLayerMaskInfo, TestSize.Level1)
777 {
778     std::vector<LayerSettings> settings = {
779         {
780             .rectRatio = { 0, 0, 1.0f, 1.0f },
781             .color = GREEN
782         }
783     };
784 
785     std::vector<std::shared_ptr<HdiTestLayer>> layers = CreateLayers(settings);
786     ASSERT_TRUE((layers.size() > 0));
787 
788     auto layer = layers[0];
789 
790     MaskInfo maskInfo = MaskInfo::LAYER_HBM_SYNC;
791     auto ret = g_composerDevice->SetLayerMaskInfo(g_displayIds[0], layer->GetId(), maskInfo);
792 
793     HdiTestDevice::GetInstance().Clear();
794 
795     EXPECT_EQ(DISPLAY_SUCCESS, ret);
796 }
797 
798 HWTEST_F(DeviceTest, test_SetLayerColor, TestSize.Level1)
799 {
800     std::vector<LayerSettings> settings = {
801         {
802             .rectRatio = { 0, 0, 1.0f, 1.0f },
803             .color = GREEN
804         }
805     };
806 
807     std::vector<std::shared_ptr<HdiTestLayer>> layers = CreateLayers(settings);
808     ASSERT_TRUE((layers.size() > 0));
809 
810     auto layer = layers[0];
811     const uint32_t COLOR_R = 155;
812     const uint32_t COLOR_G = 224;
813     const uint32_t COLOR_B = 88;
814     const uint32_t COLOR_A = 128;
815 
816     LayerColor layerColor = {
817         .r = COLOR_R,
818         .g = COLOR_G,
819         .b = COLOR_B,
820         .a = COLOR_A
821     };
822 
823     auto ret = g_composerDevice->SetLayerColor(g_displayIds[0], layer->GetId(), layerColor);
824 
825     PrepareAndCommit();
826 
827     EXPECT_EQ(DISPLAY_SUCCESS, ret);
828 
829     DestroyLayer(layer);
830 }
831 
832 HWTEST_F(DeviceTest, test_DestroyLayer, TestSize.Level1)
833 {
834     std::vector<LayerSettings> settings = {
835         {
836             .rectRatio = { 0, 0, 1.0f, 1.0f },
837             .color = PURPLE
838         }
839     };
840 
841     std::vector<std::shared_ptr<HdiTestLayer>> layers = CreateLayers(settings);
842     ASSERT_TRUE((layers.size() > 0));
843     auto layer = layers[0];
844     PrepareAndCommit();
845 
846     sleep(1);
847     auto ret = g_composerDevice->DestroyLayer(g_displayIds[0], layer->GetId());
848     EXPECT_EQ(DISPLAY_SUCCESS, ret);
849     std::this_thread::sleep_for(std::chrono::milliseconds(SLEEP_CONT_100));
850 }
851 
852 HWTEST_F(DeviceTest, test_RegDisplayVBlankCallback, TestSize.Level1)
853 {
854     int ret;
855     DISPLAY_TEST_LOGD();
856     std::shared_ptr<HdiTestDisplay> display = HdiTestDevice::GetInstance().GetFirstDisplay();
857     ASSERT_TRUE(display != nullptr) << "get display failed";
858     ret = display->RegDisplayVBlankCallback(TestVBlankCallback, nullptr);
859     ASSERT_TRUE(ret == DISPLAY_SUCCESS) << "RegDisplayVBlankCallback failed";
860     ret = display->SetDisplayVsyncEnabled(true);
861     ASSERT_TRUE(ret == DISPLAY_SUCCESS) << "SetDisplayVsyncEnabled failed";
862 
863     std::vector<LayerSettings> settings = {
864         {
865             .rectRatio = { 0, 0, 1.0f, 1.0f },
866             .color = PINK
867         },
868     };
869     std::vector<std::shared_ptr<HdiTestLayer>> layers = CreateLayers(settings);
870     ASSERT_TRUE((layers.size() > 0));
871     VblankCtr::GetInstance().hasVblank_ = false;
872     PrepareAndCommit();
873     ret = VblankCtr::GetInstance().WaitVblank(SLEEP_CONT_100); // 100ms
874     ASSERT_TRUE(ret == DISPLAY_SUCCESS) << "WaitVblank timeout";
875     ret = display->SetDisplayVsyncEnabled(false);
876     ASSERT_TRUE(ret == DISPLAY_SUCCESS) << "SetDisplayVsyncEnabled failed";
877     usleep(SLEEP_CONT_100 * SLEEP_CONT_2000); // wait for 100ms avoid the last vsync.
878     VblankCtr::GetInstance().hasVblank_ = false;
879     ret = VblankCtr::GetInstance().WaitVblank(SLEEP_CONT_100); // 100ms
880     ASSERT_TRUE(ret != DISPLAY_SUCCESS) << "vblank do not disable";
881 
882     DestroyLayer(layers[0]);
883 }
884 
OnMode(uint32_t modeId,uint64_t vBlankPeriod,void * data)885 void DeviceTest::OnMode(uint32_t modeId, uint64_t vBlankPeriod, void* data)
886 {
887     g_isOnModeCalled = true;
888 }
889 
OnSeamlessChange(uint32_t devId,void * data)890 void DeviceTest::OnSeamlessChange(uint32_t devId, void* data)
891 {
892     g_isOnSeamlessChangeCalled = true;
893 }
894 
895 HWTEST_F(DeviceTest, test_GetDisplaySupportedModesExt, TestSize.Level1)
896 {
897     std::vector<DisplayModeInfoExt> modes;
898     auto ret = g_composerDevice->GetDisplaySupportedModesExt(g_displayIds[0], modes);
899     if (ret == DISPLAY_NOT_SUPPORT) {
900         DISPLAY_TEST_LOGD("GetDisplaySupportedModesExt not support");
901         return;
902     }
903     EXPECT_EQ(DISPLAY_SUCCESS, ret);
904 }
905 
906 HWTEST_F(DeviceTest, test_SetDisplayModeAsync, TestSize.Level1)
907 {
908     g_isOnModeCalled = false;
909     std::vector<DisplayModeInfo> oldModes;
910     std::vector<LayerSettings> settings = {
911         {
912             .rectRatio = { 0, 0, 1.0f, 1.0f },
913             .color = RED
914         }
915     };
916 
917     // 先注册VBlankCallback
918     auto ret = g_composerDevice->RegDisplayVBlankCallback(g_displayIds[0], TestVBlankCallback, nullptr);
919     ASSERT_TRUE(ret == DISPLAY_SUCCESS) << "RegDisplayVBlankCallback failed";
920 
921     ret = g_composerDevice->GetDisplaySupportedModes(g_displayIds[0], oldModes);
922     ASSERT_EQ(DISPLAY_SUCCESS, ret);
923     ASSERT_EQ(oldModes.size() > 0, true);
924 
925     uint32_t modeid = oldModes[0].id;
926     ret = g_composerDevice->SetDisplayModeAsync(g_displayIds[0], modeid, OnMode);
927     if (ret == DISPLAY_NOT_SUPPORT) {
928         return;
929     }
930     EXPECT_EQ(DISPLAY_SUCCESS, ret);
931     if (ret == DISPLAY_SUCCESS) {
932         std::vector<std::shared_ptr<HdiTestLayer>> layers = CreateLayers(settings);
933         ASSERT_TRUE((layers.size() > 0));
934         g_threadCtrl = false;
935         std::thread commitThread(LoopCommit);
936         std::this_thread::sleep_for(std::chrono::milliseconds(SLEEP_CONT_100));
937         g_threadCtrl = true;
938         commitThread.join();
939         ASSERT_EQ(g_isOnModeCalled, true);
940 
941         DestroyLayer(layers[0]);
942     }
943 }
944 
945 HWTEST_F(DeviceTest, test_GetDisplayVBlankPeriod, TestSize.Level1)
946 {
947     uint64_t period = 0;
948     auto ret = g_composerDevice->GetDisplayVBlankPeriod(g_displayIds[0], period);
949     if (ret == DISPLAY_NOT_SUPPORT) {
950         DISPLAY_TEST_LOGD("GetDisplayVBlankPeriod not support");
951         return;
952     }
953     EXPECT_EQ(DISPLAY_SUCCESS, ret);
954     EXPECT_EQ(period != 0, true);
955 }
956 
957 HWTEST_F(DeviceTest, test_RegSeamlessChangeCallback, TestSize.Level1)
958 {
959     g_isOnSeamlessChangeCalled = false;
960     auto ret = g_composerDevice->RegSeamlessChangeCallback(OnSeamlessChange, nullptr);
961     if (ret == DISPLAY_NOT_SUPPORT) {
962         DISPLAY_TEST_LOGD("RegSeamlessChangeCallback not support");
963         return;
964     }
965     EXPECT_EQ(DISPLAY_SUCCESS, ret);
966     if (ret == DISPLAY_SUCCESS) {
967         std::this_thread::sleep_for(std::chrono::milliseconds(5000));
968         ASSERT_EQ(g_isOnSeamlessChangeCalled, true);
969     }
970 }
971 
972 HWTEST_F(DeviceTest, test_SetLayerPerFrameParameter, TestSize.Level1)
973 {
974     std::vector<LayerSettings> settings = {
975         {
976             .rectRatio = { 0, 0, 1.0f, 1.0f },
977             .color = GREEN
978         },
979     };
980 
981     std::vector<std::shared_ptr<HdiTestLayer>> layers = CreateLayers(settings);
982     ASSERT_TRUE((layers.size() > 0));
983     auto layer = layers[0];
984     std::vector<std::string> ValidKeys = { "FilmFilter", "ArsrDoEnhance", "SDRBrightnessRatio", "BrightnessNit",
985         "ViewGroupHasValidAlpha", "SourceCropTuning" };
986     std::string key;
987     std::vector<int8_t> value = { 1 };
988     key = "NotSupportKey";
989     auto ret = g_composerDevice->SetLayerPerFrameParameter(g_displayIds[0], layer->GetId(), key, value);
990     if (ret == DISPLAY_NOT_SUPPORT) {
991         DISPLAY_TEST_LOGD("SetLayerPerFrameParameter not support");
992         return;
993     }
994     ASSERT_EQ(ret, -1) << "key not support, ret:" << ret;
995     key = ValidKeys[0];
996     ret = g_composerDevice->SetLayerPerFrameParameter(g_displayIds[0], layer->GetId(), key, value);
997     ASSERT_EQ(ret, 0) << "key support, ret:" << ret;
998     if (ret == DISPLAY_NOT_SUPPORT) {
999         DISPLAY_TEST_LOGD("SetLayerPerFrameParameter not support");
1000         return;
1001     }
1002     EXPECT_EQ(DISPLAY_SUCCESS, ret);
1003 }
1004 
1005 HWTEST_F(DeviceTest, test_GetSupportedLayerPerFrameParameterKey, TestSize.Level1)
1006 {
1007     std::vector<std::string> keys;
1008     auto ret = g_composerDevice->GetSupportedLayerPerFrameParameterKey(keys);
1009     if (ret == DISPLAY_NOT_SUPPORT) {
1010         DISPLAY_TEST_LOGD("GetSupportedLayerPerFrameParameterKey not support");
1011         return;
1012     }
1013     EXPECT_EQ(DISPLAY_SUCCESS, ret);
1014 }
1015 
1016 HWTEST_F(DeviceTest, test_SetDisplayOverlayResolution, TestSize.Level1)
1017 {
1018     DisplayModeInfo mode = GetFirstDisplay()->GetCurrentMode();
1019     auto ret = g_composerDevice->SetDisplayOverlayResolution(g_displayIds[0], mode.width, mode.height);
1020     if (ret == DISPLAY_NOT_SUPPORT) {
1021         DISPLAY_TEST_LOGD("SetDisplayOverlayResolution not support");
1022         return;
1023     }
1024     EXPECT_EQ(DISPLAY_SUCCESS, ret);
1025 }
1026 
TestRefreshCallback(uint32_t devId,void * data)1027 static void TestRefreshCallback(uint32_t devId, void* data)
1028 {
1029 }
1030 
1031 HWTEST_F(DeviceTest, test_RegRefreshCallback, TestSize.Level1)
1032 {
1033     auto ret = g_composerDevice->RegRefreshCallback(TestRefreshCallback, nullptr);
1034     if (ret == DISPLAY_NOT_SUPPORT) {
1035         DISPLAY_TEST_LOGD("RegRefreshCallback not support");
1036         return;
1037     }
1038     EXPECT_EQ(DISPLAY_SUCCESS, ret);
1039 }
1040 
1041 HWTEST_F(DeviceTest, test_GetDisplaySupportedColorGamuts, TestSize.Level1)
1042 {
1043     std::vector<ColorGamut> gamuts;
1044     auto ret = g_composerDevice->GetDisplaySupportedColorGamuts(g_displayIds[0], gamuts);
1045     if (ret == DISPLAY_NOT_SUPPORT) {
1046         DISPLAY_TEST_LOGD("GetDisplaySupportedColorGamuts not support");
1047         return;
1048     }
1049     EXPECT_EQ(DISPLAY_SUCCESS, ret);
1050 }
1051 
1052 HWTEST_F(DeviceTest, test_GetHDRCapabilityInfos, TestSize.Level1)
1053 {
1054     HDRCapability info = { 0 };
1055     auto ret = g_composerDevice->GetHDRCapabilityInfos(g_displayIds[0], info);
1056     if (ret == DISPLAY_NOT_SUPPORT) {
1057         DISPLAY_TEST_LOGD("GetHDRCapabilityInfos not support");
1058         return;
1059     }
1060     EXPECT_EQ(DISPLAY_SUCCESS, ret);
1061 }
1062