1 /* 2 * Copyright (c) 2021-2022 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 #ifndef HDI_BACKEND_HDI_DEVICE_IMPL_H 17 #define HDI_BACKEND_HDI_DEVICE_IMPL_H 18 19 #include "hdi_device.h" 20 #include "graphic_error.h" 21 #include "v1_0/include/idisplay_composer_interface.h" 22 23 namespace OHOS { 24 namespace Rosen { 25 class HdiDeviceImpl : public HdiDevice { 26 public: 27 HdiDeviceImpl(); 28 virtual ~HdiDeviceImpl(); 29 RosenError Init(); 30 /* set & get device screen info begin */ 31 int32_t RegHotPlugCallback(HotPlugCallback callback, void *data) override; 32 int32_t RegScreenVBlankCallback(uint32_t screenId, VBlankCallback callback, void *data) override; 33 bool RegHwcDeadCallback(OnHwcDeadCallback callback, void *data) override; 34 int32_t GetScreenCapability(uint32_t screenId, GraphicDisplayCapability &info) override; 35 int32_t GetScreenSupportedModes(uint32_t screenId, std::vector<GraphicDisplayModeInfo> &modes) override; 36 int32_t GetScreenMode(uint32_t screenId, uint32_t &modeId) override; 37 int32_t SetScreenMode(uint32_t screenId, uint32_t modeId) override; 38 int32_t GetScreenPowerStatus(uint32_t screenId, GraphicDispPowerStatus &status) override; 39 int32_t SetScreenPowerStatus(uint32_t screenId, GraphicDispPowerStatus status) override; 40 int32_t GetScreenBacklight(uint32_t screenId, uint32_t &level) override; 41 int32_t SetScreenBacklight(uint32_t screenId, uint32_t level) override; 42 int32_t PrepareScreenLayers(uint32_t screenId, bool &needFlushFb) override; 43 int32_t GetScreenCompChange(uint32_t screenId, std::vector<uint32_t> &layersId, 44 std::vector<int32_t> &types) override; 45 int32_t SetScreenClientBuffer(uint32_t screenId, const BufferHandle *buffer, uint32_t cacheIndex, 46 const sptr<SyncFence> &fence) override; 47 int32_t SetScreenClientBufferCacheCount(uint32_t screen, uint32_t count) override; 48 int32_t SetScreenClientDamage(uint32_t screenId, const std::vector<GraphicIRect> &damageRect) override; 49 int32_t SetScreenVsyncEnabled(uint32_t screenId, bool enabled) override; 50 int32_t GetScreenReleaseFence(uint32_t screenId, std::vector<uint32_t> &layersId, 51 std::vector<sptr<SyncFence>> &fences) override; 52 int32_t GetScreenSupportedColorGamuts(uint32_t screenId, std::vector<GraphicColorGamut> &gamuts) override; 53 int32_t SetScreenColorGamut(uint32_t screenId, GraphicColorGamut gamut) override; 54 int32_t GetScreenColorGamut(uint32_t screenId, GraphicColorGamut &gamut) override; 55 int32_t SetScreenGamutMap(uint32_t screenId, GraphicGamutMap gamutMap) override; 56 int32_t GetScreenGamutMap(uint32_t screenId, GraphicGamutMap &gamutMap) override; 57 int32_t SetScreenColorTransform(uint32_t screenId, const std::vector<float>& matrix) override; 58 int32_t GetHDRCapabilityInfos(uint32_t screenId, GraphicHDRCapability &info) override; 59 int32_t GetSupportedMetaDataKey(uint32_t screenId, std::vector<GraphicHDRMetadataKey> &keys) override; 60 int32_t Commit(uint32_t screenId, sptr<SyncFence> &fence) override; 61 /* set & get device screen info end */ 62 63 /* set & get device layer info begin */ 64 int32_t SetLayerAlpha(uint32_t screenId, uint32_t layerId, const GraphicLayerAlpha &alpha) override; 65 int32_t SetLayerSize(uint32_t screenId, uint32_t layerId, const GraphicIRect &layerRect) override; 66 int32_t SetTransformMode(uint32_t screenId, uint32_t layerId, GraphicTransformType type) override; 67 int32_t SetLayerVisibleRegion(uint32_t screenId, uint32_t layerId, 68 const std::vector<GraphicIRect> &visibles) override; 69 int32_t SetLayerDirtyRegion(uint32_t screenId, uint32_t layerId, 70 const std::vector<GraphicIRect> &dirtyRegions) override; 71 int32_t SetLayerBuffer(uint32_t screenId, uint32_t layerId, const GraphicLayerBuffer &layerBuffer) override; 72 int32_t SetLayerCompositionType(uint32_t screenId, uint32_t layerId, GraphicCompositionType type) override; 73 int32_t SetLayerBlendType(uint32_t screenId, uint32_t layerId, GraphicBlendType type) override; 74 int32_t SetLayerCrop(uint32_t screenId, uint32_t layerId, const GraphicIRect &crop) override; 75 int32_t SetLayerZorder(uint32_t screenId, uint32_t layerId, uint32_t zorder) override; 76 int32_t SetLayerPreMulti(uint32_t screenId, uint32_t layerId, bool isPreMulti) override; 77 int32_t SetLayerColorTransform(uint32_t screenId, uint32_t layerId, const std::vector<float> &matrix) override; 78 int32_t SetLayerColorDataSpace(uint32_t screenId, uint32_t layerId, GraphicColorDataSpace colorSpace) override; 79 int32_t GetLayerColorDataSpace(uint32_t screenId, uint32_t layerId, GraphicColorDataSpace &colorSpace) override; 80 int32_t SetLayerMetaData(uint32_t screenId, uint32_t layerId, 81 const std::vector<GraphicHDRMetaData> &metaData) override; 82 int32_t SetLayerMetaDataSet(uint32_t screenId, uint32_t layerId, GraphicHDRMetadataKey key, 83 const std::vector<uint8_t> &metaData) override; 84 int32_t SetLayerTunnelHandle(uint32_t screenId, uint32_t layerId, GraphicExtDataHandle *handle) override; 85 int32_t GetSupportedPresentTimestampType(uint32_t screenId, uint32_t layerId, 86 GraphicPresentTimestampType &type) override; 87 int32_t GetPresentTimestamp(uint32_t screenId, uint32_t layerId, GraphicPresentTimestamp ×tamp) override; 88 int32_t SetLayerMaskInfo(uint32_t screenId, uint32_t layerId, uint32_t maskInfo) override; 89 /* set & get device layer info end */ 90 91 int32_t CreateLayer(uint32_t screenId, const GraphicLayerInfo &layerInfo, uint32_t cacheCount, 92 uint32_t &layerId) override; 93 int32_t CloseLayer(uint32_t screenId, uint32_t layerId) override; 94 void Destroy() override; 95 96 private: 97 HdiDeviceImpl(const HdiDeviceImpl& rhs) = delete; 98 HdiDeviceImpl& operator=(const HdiDeviceImpl& rhs) = delete; 99 HdiDeviceImpl(HdiDeviceImpl&& rhs) = delete; 100 HdiDeviceImpl& operator=(HdiDeviceImpl&& rhs) = delete; 101 }; 102 103 } // namespace Rosen 104 } // namespace OHOS 105 #endif // HDI_BACKEND_HDI_DEVICE_IMPL_H