19762338dSopenharmony_ci/* 29762338dSopenharmony_ci * Copyright (c) 2023-2024 Huawei Device Co., Ltd. 39762338dSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 49762338dSopenharmony_ci * you may not use this file except in compliance with the License. 59762338dSopenharmony_ci * You may obtain a copy of the License at 69762338dSopenharmony_ci * 79762338dSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 89762338dSopenharmony_ci * 99762338dSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 109762338dSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 119762338dSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 129762338dSopenharmony_ci * See the License for the specific language governing permissions and 139762338dSopenharmony_ci * limitations under the License. 149762338dSopenharmony_ci */ 159762338dSopenharmony_ci 169762338dSopenharmony_ci#ifndef HDI_TEST_DISPLAY_H 179762338dSopenharmony_ci#define HDI_TEST_DISPLAY_H 189762338dSopenharmony_ci#include <cinttypes> 199762338dSopenharmony_ci#include "v1_0/include/idisplay_buffer.h" 209762338dSopenharmony_ci#include "v1_2/include/idisplay_composer_interface.h" 219762338dSopenharmony_ci#include "v1_1/display_composer_type.h" 229762338dSopenharmony_ci#include "display_test.h" 239762338dSopenharmony_ci#include "hdi_test_device_common.h" 249762338dSopenharmony_ci#include "hdi_test_layer.h" 259762338dSopenharmony_ci 269762338dSopenharmony_cinamespace OHOS { 279762338dSopenharmony_cinamespace HDI { 289762338dSopenharmony_cinamespace Display { 299762338dSopenharmony_cinamespace TEST { 309762338dSopenharmony_ciusing namespace OHOS::HDI::Display::Composer::V1_1; 319762338dSopenharmony_ciclass HdiTestDisplay { 329762338dSopenharmony_cipublic: 339762338dSopenharmony_ci HdiTestDisplay(uint32_t id, sptr<Composer::V1_2::IDisplayComposerInterface> device); 349762338dSopenharmony_ci virtual ~HdiTestDisplay() {} 359762338dSopenharmony_ci int32_t Init(); 369762338dSopenharmony_ci int32_t GetModeInfoFromId(int32_t id, DisplayModeInfo& modeInfo) const; 379762338dSopenharmony_ci std::shared_ptr<HdiTestLayer> CreateHdiTestLayer(LayerInfo& info); 389762338dSopenharmony_ci std::shared_ptr<HdiTestLayer> CreateHdiTestLayer(uint32_t w, uint32_t h); 399762338dSopenharmony_ci int32_t Commit(); 409762338dSopenharmony_ci int32_t PrepareDisplayLayers(); 419762338dSopenharmony_ci DisplayModeInfo GetCurrentMode() const 429762338dSopenharmony_ci { 439762338dSopenharmony_ci return currentMode_; 449762338dSopenharmony_ci } 459762338dSopenharmony_ci int32_t RegDisplayVBlankCallback(VBlankCallback cb, void* data) const; 469762338dSopenharmony_ci int32_t SetDisplayVsyncEnabled(bool enabled) const; 479762338dSopenharmony_ci std::shared_ptr<HdiTestLayer> GetLayerFromId(uint32_t id); 489762338dSopenharmony_ci std::unordered_map<uint32_t, std::shared_ptr<HdiTestLayer>> &GetLayers() 499762338dSopenharmony_ci { 509762338dSopenharmony_ci return layerMaps_; 519762338dSopenharmony_ci } 529762338dSopenharmony_ci void Clear(); 539762338dSopenharmony_ci BufferHandle* SnapShot() 549762338dSopenharmony_ci { 559762338dSopenharmony_ci return currentFb_; 569762338dSopenharmony_ci } 579762338dSopenharmony_ci void ResetClientLayer() 589762338dSopenharmony_ci { 599762338dSopenharmony_ci clientLayer_.reset(); 609762338dSopenharmony_ci } 619762338dSopenharmony_ci 629762338dSopenharmony_ciprivate: 639762338dSopenharmony_ci int32_t RefreshLayersCompType(); 649762338dSopenharmony_ci int32_t GetLayersReleaseFence(); 659762338dSopenharmony_ci uint32_t activeModeId_ = 0; 669762338dSopenharmony_ci DisplayModeInfo currentMode_ = { 0 }; 679762338dSopenharmony_ci uint32_t id_; 689762338dSopenharmony_ci sptr<Composer::V1_2::IDisplayComposerInterface> device_; 699762338dSopenharmony_ci 709762338dSopenharmony_ci DisplayCapability cap_; 719762338dSopenharmony_ci std::vector<DisplayModeInfo> modes_; 729762338dSopenharmony_ci std::unordered_map<uint32_t, std::shared_ptr<HdiTestLayer>> layerMaps_; 739762338dSopenharmony_ci std::unique_ptr<HdiTestLayer> clientLayer_; 749762338dSopenharmony_ci BufferHandle* currentFb_; 759762338dSopenharmony_ci bool needFlushFb_ = false; 769762338dSopenharmony_ci}; 779762338dSopenharmony_ci} // OHOS 789762338dSopenharmony_ci} // HDI 799762338dSopenharmony_ci} // Display 809762338dSopenharmony_ci} // TEST 819762338dSopenharmony_ci#endif // HDI_TEST_DISPLAY_H 82