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_LAYER_H 179762338dSopenharmony_ci#define HDI_TEST_LAYER_H 189762338dSopenharmony_ci#include <queue> 199762338dSopenharmony_ci#include "v1_1/display_composer_type.h" 209762338dSopenharmony_ci#include "v1_0/include/idisplay_buffer.h" 219762338dSopenharmony_ci 229762338dSopenharmony_cinamespace OHOS { 239762338dSopenharmony_cinamespace HDI { 249762338dSopenharmony_cinamespace Display { 259762338dSopenharmony_cinamespace TEST { 269762338dSopenharmony_ciusing namespace OHOS::HDI::Display::Composer::V1_1; 279762338dSopenharmony_ci 289762338dSopenharmony_ciclass HdiGrallocBuffer { 299762338dSopenharmony_cipublic: 309762338dSopenharmony_ci HdiGrallocBuffer(uint32_t seqNo, uint32_t w, uint32_t h, Composer::V1_0::PixelFormat fmt); 319762338dSopenharmony_ci ~HdiGrallocBuffer(); 329762338dSopenharmony_ci BufferHandle* Get() const 339762338dSopenharmony_ci { 349762338dSopenharmony_ci return buffer_; 359762338dSopenharmony_ci } 369762338dSopenharmony_ci void SetReleaseFence(int fd); 379762338dSopenharmony_ci void SetAcquirceFence(int fd); 389762338dSopenharmony_ci int GetAcquireFence() const 399762338dSopenharmony_ci { 409762338dSopenharmony_ci return mAcquireFence; 419762338dSopenharmony_ci } 429762338dSopenharmony_ci int GetReleaseFence() const 439762338dSopenharmony_ci { 449762338dSopenharmony_ci return mReleaseFence; 459762338dSopenharmony_ci } 469762338dSopenharmony_ci int32_t SetGraphicBuffer(std::function<int32_t (const BufferHandle*, uint32_t)> realFunc); 479762338dSopenharmony_ci 489762338dSopenharmony_ciprivate: 499762338dSopenharmony_ci BufferHandle* buffer_ = nullptr; 509762338dSopenharmony_ci int mAcquireFence = -1; 519762338dSopenharmony_ci int mReleaseFence = -1; 529762338dSopenharmony_ci uint32_t seqNo_ = UINT32_MAX; 539762338dSopenharmony_ci bool cacheValid_ = false; 549762338dSopenharmony_ci}; 559762338dSopenharmony_ci 569762338dSopenharmony_ciclass HdiTestLayer { 579762338dSopenharmony_cipublic: 589762338dSopenharmony_ci static const uint32_t MAX_BUFFER_COUNT = 3; 599762338dSopenharmony_ci HdiTestLayer(LayerInfo& info, uint32_t id, uint32_t displayId); 609762338dSopenharmony_ci virtual ~HdiTestLayer(); 619762338dSopenharmony_ci int32_t Init(uint32_t bufferCount = MAX_BUFFER_COUNT); 629762338dSopenharmony_ci int32_t PreparePresent(); 639762338dSopenharmony_ci 649762338dSopenharmony_ci uint32_t GetId() const 659762338dSopenharmony_ci { 669762338dSopenharmony_ci return id_; 679762338dSopenharmony_ci } 689762338dSopenharmony_ci Composer::V1_0::CompositionType GetCompType() const 699762338dSopenharmony_ci { 709762338dSopenharmony_ci return compType_; 719762338dSopenharmony_ci } 729762338dSopenharmony_ci 739762338dSopenharmony_ci HdiGrallocBuffer* GetFrontBuffer() const; 749762338dSopenharmony_ci HdiGrallocBuffer* GetBackBuffer() const; 759762338dSopenharmony_ci HdiGrallocBuffer* AcquireBackBuffer(); 769762338dSopenharmony_ci 779762338dSopenharmony_ci int32_t SwapFrontToBackQ(); 789762338dSopenharmony_ci int32_t SwapBackToFrontQ(); 799762338dSopenharmony_ci 809762338dSopenharmony_ci void SetLayerPosition(const IRect& rect); 819762338dSopenharmony_ci void SetLayerCrop(const IRect& rect); 829762338dSopenharmony_ci void SetZorder(uint32_t zorder); 839762338dSopenharmony_ci void SetCompType(Composer::V1_0::CompositionType type); 849762338dSopenharmony_ci void SetReleaseFence(int fd); 859762338dSopenharmony_ci void SetAlpha(LayerAlpha alpha); 869762338dSopenharmony_ci void SetBlendType(BlendType type); 879762338dSopenharmony_ci void SetTransform(TransformType transform); 889762338dSopenharmony_ci uint32_t GetLayerBuffercount() const; 899762338dSopenharmony_ci 909762338dSopenharmony_ciprivate: 919762338dSopenharmony_ci uint32_t id_; 929762338dSopenharmony_ci uint32_t displayID_; 939762338dSopenharmony_ci uint32_t layerBufferCount_; 949762338dSopenharmony_ci std::queue<std::unique_ptr<HdiGrallocBuffer>> frontBuffers_; 959762338dSopenharmony_ci std::queue<std::unique_ptr<HdiGrallocBuffer>> backBuffers_; 969762338dSopenharmony_ci LayerInfo layerInfo_ = { 0 }; 979762338dSopenharmony_ci 989762338dSopenharmony_ci#ifdef DISPLAY_COMMUNITY 999762338dSopenharmony_ci Composer::V1_0::CompositionType compType_ = Composer::V1_0::CompositionType::COMPOSITION_CLIENT; 1009762338dSopenharmony_ci#else 1019762338dSopenharmony_ci Composer::V1_0::CompositionType compType_ = Composer::V1_0::CompositionType::COMPOSITION_DEVICE; 1029762338dSopenharmony_ci#endif // DISPLAY_COMMUNITY 1039762338dSopenharmony_ci IRect displayRect_ = { 0 }; 1049762338dSopenharmony_ci IRect cropRect_ = { 0 }; 1059762338dSopenharmony_ci uint32_t zorder_ = 0; 1069762338dSopenharmony_ci LayerAlpha alpha_ = { 0 }; 1079762338dSopenharmony_ci BlendType blendType_ = BLEND_SRC; 1089762338dSopenharmony_ci std::unique_ptr<HdiGrallocBuffer> currentBuffer_; 1099762338dSopenharmony_ci TransformType transform_ = ROTATE_NONE; 1109762338dSopenharmony_ci}; 1119762338dSopenharmony_ci} // OHOS 1129762338dSopenharmony_ci} // HDI 1139762338dSopenharmony_ci} // Display 1149762338dSopenharmony_ci} // TEST 1159762338dSopenharmony_ci 1169762338dSopenharmony_ci#endif // HDI_TEST_LAYER_H 117