1 /* 2 * Copyright (c) 2024 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 OHOS_HDI_VDI_ADAPTER_INTERFACE_H 17 #define OHOS_HDI_VDI_ADAPTER_INTERFACE_H 18 19 #include <vector> 20 #include <string> 21 #include "base/buffer_handle.h" 22 #include "v1_0/include/idisplay_composer_interface.h" 23 #include "v1_0/display_composer_type.h" 24 #include "v1_2/display_composer_type.h" 25 #include "v1_3/display_composer_type.h" 26 #include "v1_1/imode_callback.h" 27 #include "v1_1/iseamless_change_callback.h" 28 29 namespace OHOS { 30 namespace HDI { 31 namespace Display { 32 namespace Composer { 33 using namespace OHOS::HDI::Display::Composer::V1_0; 34 using namespace OHOS::HDI::Display::Composer::V1_1; 35 using namespace OHOS::HDI::Display::Composer::V1_2; 36 using namespace OHOS::HDI::Display::Composer::V1_3; 37 struct DisplayComposerVdiAdapter { 38 int32_t (*LoadVdiImpl)(); 39 int32_t (*DestroyVdiImpl)(); 40 int32_t (*RegHotPlugCallback)(HotPlugCallback cb, void* data); 41 int32_t (*GetDisplayCapability)(uint32_t devId, DisplayCapability& info); 42 int32_t (*GetDisplaySupportedModes)(uint32_t devId, std::vector<DisplayModeInfo>& modes); 43 int32_t (*GetDisplayMode)(uint32_t devId, uint32_t& modeId); 44 int32_t (*SetDisplayMode)(uint32_t devId, uint32_t modeId); 45 int32_t (*GetDisplayPowerStatus)(uint32_t devId, V1_0::DispPowerStatus& status); 46 int32_t (*SetDisplayPowerStatus)(uint32_t devId, V1_0::DispPowerStatus status); 47 int32_t (*GetDisplayBacklight)(uint32_t devId, uint32_t& level); 48 int32_t (*SetDisplayBacklight)(uint32_t devId, uint32_t level); 49 int32_t (*GetDisplayProperty)(uint32_t devId, uint32_t id, uint64_t& value); 50 int32_t (*GetDisplayCompChange)(uint32_t devId, std::vector<uint32_t>& layers, std::vector<int32_t>& types); 51 int32_t (*SetDisplayClientCrop)(uint32_t devId, const IRect& rect); 52 int32_t (*SetDisplayClientBuffer)(uint32_t devId, const BufferHandle& buffer, int32_t fence); 53 int32_t (*SetDisplayClientDamage)(uint32_t devId, std::vector<IRect>& rects); 54 int32_t (*SetDisplayVsyncEnabled)(uint32_t devId, bool enabled); 55 int32_t (*RegDisplayVBlankCallback)(uint32_t devId, VBlankCallback cb, void* data); 56 int32_t (*GetDisplayReleaseFence)(uint32_t devId, std::vector<uint32_t>& layers, std::vector<int32_t>& fences); 57 int32_t (*CreateVirtualDisplay)(uint32_t width, uint32_t height, int32_t& format, uint32_t& devId); 58 int32_t (*DestroyVirtualDisplay)(uint32_t devId); 59 int32_t (*SetVirtualDisplayBuffer)(uint32_t devId, const BufferHandle& buffer, const int32_t fence); 60 int32_t (*SetDisplayProperty)(uint32_t devId, uint32_t id, uint64_t value); 61 int32_t (*Commit)(uint32_t devId, int32_t& fence); 62 int32_t (*CreateLayer)(uint32_t devId, const LayerInfo& layerInfo, uint32_t& layerId); 63 int32_t (*DestroyLayer)(uint32_t devId, uint32_t layerId); 64 int32_t (*PrepareDisplayLayers)(uint32_t devId, bool& needFlushFb); 65 int32_t (*SetLayerAlpha)(uint32_t devId, uint32_t layerId, const LayerAlpha& alpha); 66 int32_t (*SetLayerRegion)(uint32_t devId, uint32_t layerId, const IRect& rect); 67 int32_t (*SetLayerCrop)(uint32_t devId, uint32_t layerId, const IRect& rect); 68 int32_t (*SetLayerZorder)(uint32_t devId, uint32_t layerId, uint32_t zorder); 69 int32_t (*SetLayerPreMulti)(uint32_t devId, uint32_t layerId, bool preMul); 70 int32_t (*SetLayerTransformMode)(uint32_t devId, uint32_t layerId, TransformType type); 71 int32_t (*SetLayerDirtyRegion)(uint32_t devId, uint32_t layerId, const std::vector<IRect>& rects); 72 int32_t (*SetLayerVisibleRegion)(uint32_t devId, uint32_t layerId, std::vector<IRect>& rects); 73 int32_t (*SetLayerBuffer)(uint32_t devId, uint32_t layerId, const BufferHandle& buffer, int32_t fence); 74 int32_t (*SetLayerCompositionType)(uint32_t devId, uint32_t layerId, V1_0::CompositionType type); 75 int32_t (*SetLayerBlendType)(uint32_t devId, uint32_t layerId, BlendType type); 76 int32_t (*SetLayerMaskInfo)(uint32_t devId, uint32_t layerId, const MaskInfo maskInfo); 77 int32_t (*SetLayerColor)(uint32_t devId, uint32_t layerId, const LayerColor& layerColor); 78 int32_t (*RegSeamlessChangeCallback)(SeamlessChangeCallback cb, void* data); 79 int32_t (*GetDisplaySupportedModesExt)(uint32_t devId, std::vector<DisplayModeInfoExt>& modes); 80 int32_t (*SetDisplayModeAsync)(uint32_t devId, uint32_t modeId, ModeCallback cb, void *data); 81 int32_t (*GetDisplayVBlankPeriod)(uint32_t devId, uint64_t& period); 82 int32_t (*SetLayerPerFrameParameter)( 83 uint32_t devId, uint32_t layerId, const std::string& key, const std::vector<int8_t>& value); 84 int32_t (*SetDisplayPerFrameParameter)( 85 uint32_t devId, const std::string& key, const std::vector<int8_t>& value); 86 int32_t (*GetSupportedLayerPerFrameParameterKey)(std::vector<std::string>& keys); 87 int32_t (*SetDisplayOverlayResolution)(uint32_t devId, uint32_t width, uint32_t height); 88 int32_t (*RegRefreshCallback)(RefreshCallback cb, void* data); 89 int32_t (*GetDisplaySupportedColorGamuts)(uint32_t devId, std::vector<ColorGamut>& gamuts); 90 int32_t (*GetHDRCapabilityInfos)(uint32_t devId, HDRCapability& info); 91 int32_t (*RegDisplayVBlankIdleCallback)(VBlankIdleCallback cb, void* data); 92 int32_t (*SetDisplayConstraint)(uint32_t devId, uint64_t frameID, uint64_t ns, uint32_t type); 93 int32_t (*UpdateHardwareCursor)(uint32_t devId, int32_t x, int32_t y, BufferHandle* buffer); 94 int32_t (*EnableHardwareCursorStats)(uint32_t devId, bool enable); 95 int32_t (*GetHardwareCursorStats)(uint32_t devId, uint32_t& frameCount, uint32_t& vsyncCount); 96 int32_t (*SetDisplayActiveRegion)(uint32_t devId, const IRect& rect); 97 int32_t (*FastPresent)(uint32_t devId, const PresentParam& param, 98 const std::vector<BufferHandle*>& inHandles); 99 int32_t (*ClearDisplayClientBuffer)(uint32_t devId); 100 int32_t (*ClearLayerBuffer)(uint32_t devId, uint32_t layerId); 101 int32_t (*GetDisplayIdentificationData)(uint32_t devId, uint8_t& portId, std::vector<uint8_t>& edidData); 102 int32_t (*RegHwcEventCallback)(HwcEventCallback cb, void *data); 103 }; 104 105 using LoadVdiImplFunc = int32_t (*)(); 106 using DestroyVdiImplFunc = int32_t (*)(); 107 using RegHotPlugCallbackFunc = int32_t (*)(HotPlugCallback cb, void* data); 108 using GetDisplayCapabilityFunc = int32_t (*)(uint32_t devId, DisplayCapability& info); 109 using GetDisplaySupportedModesFunc = int32_t (*)(uint32_t devId, std::vector<DisplayModeInfo>& modes); 110 using GetDisplayModeFunc = int32_t (*)(uint32_t devId, uint32_t& modeId); 111 using SetDisplayModeFunc = int32_t (*)(uint32_t devId, uint32_t modeId); 112 using GetDisplayPowerStatusFunc = int32_t (*)(uint32_t devId, V1_0::DispPowerStatus& status); 113 using SetDisplayPowerStatusFunc = int32_t (*)(uint32_t devId, V1_0::DispPowerStatus status); 114 using GetDisplayBacklightFunc = int32_t (*)(uint32_t devId, uint32_t& level); 115 using SetDisplayBacklightFunc = int32_t (*)(uint32_t devId, uint32_t level); 116 using GetDisplayPropertyFunc = int32_t (*)(uint32_t devId, uint32_t id, uint64_t& value); 117 using GetDisplayCompChangeFunc = int32_t (*)( 118 uint32_t devId, std::vector<uint32_t>& layers, std::vector<int32_t>& types); 119 using SetDisplayClientCropFunc = int32_t (*)(uint32_t devId, const IRect& rect); 120 using SetDisplayClientBufferFunc = int32_t (*)(uint32_t devId, const BufferHandle& buffer, int32_t fence); 121 using SetDisplayClientDamageFunc = int32_t (*)(uint32_t devId, std::vector<IRect>& rects); 122 using SetDisplayVsyncEnabledFunc = int32_t (*)(uint32_t devId, bool enabled); 123 using RegDisplayVBlankCallbackFunc = int32_t (*)(uint32_t devId, VBlankCallback cb, void* data); 124 using GetDisplayReleaseFenceFunc = int32_t (*)( 125 uint32_t devId, std::vector<uint32_t>& layers, std::vector<int32_t>& fences); 126 using CreateVirtualDisplayFunc = int32_t (*)(uint32_t width, uint32_t height, int32_t& format, uint32_t& devId); 127 using DestroyVirtualDisplayFunc = int32_t (*)(uint32_t devId); 128 using SetVirtualDisplayBufferFunc = int32_t (*)(uint32_t devId, const BufferHandle& buffer, const int32_t fence); 129 using SetDisplayPropertyFunc = int32_t (*)(uint32_t devId, uint32_t id, uint64_t value); 130 using CommitFunc = int32_t (*)(uint32_t devId, int32_t& fence); 131 using CreateLayerFunc = int32_t (*)(uint32_t devId, const LayerInfo& layerInfo, uint32_t& layerId); 132 using DestroyLayerFunc = int32_t (*)(uint32_t devId, uint32_t layerId); 133 using PrepareDisplayLayersFunc = int32_t (*)(uint32_t devId, bool& needFlushFb); 134 using SetLayerAlphaFunc = int32_t (*)(uint32_t devId, uint32_t layerId, const LayerAlpha& alpha); 135 using SetLayerRegionFunc = int32_t (*)(uint32_t devId, uint32_t layerId, const IRect& rect); 136 using SetLayerCropFunc = int32_t (*)(uint32_t devId, uint32_t layerId, const IRect& rect); 137 using SetLayerZorderFunc = int32_t (*)(uint32_t devId, uint32_t layerId, uint32_t zorder); 138 using SetLayerPreMultiFunc = int32_t (*)(uint32_t devId, uint32_t layerId, bool preMul); 139 using SetLayerTransformModeFunc = int32_t (*)(uint32_t devId, uint32_t layerId, TransformType type); 140 using SetLayerDirtyRegionFunc = int32_t (*)(uint32_t devId, uint32_t layerId, const std::vector<IRect>& rects); 141 using SetLayerVisibleRegionFunc = int32_t (*)(uint32_t devId, uint32_t layerId, std::vector<IRect>& rects); 142 using SetLayerBufferFunc = int32_t (*)(uint32_t devId, uint32_t layerId, const BufferHandle& buffer, int32_t fence); 143 using SetLayerCompositionTypeFunc = int32_t (*)(uint32_t devId, uint32_t layerId, V1_0::CompositionType type); 144 using SetLayerBlendTypeFunc = int32_t (*)(uint32_t devId, uint32_t layerId, BlendType type); 145 using SetLayerMaskInfoFunc = int32_t (*)(uint32_t devId, uint32_t layerId, const MaskInfo maskInfo); 146 using SetLayerColorFunc = int32_t (*)(uint32_t devId, uint32_t layerId, const LayerColor& layerColor); 147 using RegSeamlessChangeCallbackFunc = int32_t (*)(SeamlessChangeCallback cb, void* data); 148 using GetDisplaySupportedModesExtFunc = int32_t (*)(uint32_t devId, std::vector<DisplayModeInfoExt>& modes); 149 using SetDisplayModeAsyncFunc = int32_t (*)(uint32_t devId, uint32_t modeId, ModeCallback cb, void *data); 150 using GetDisplayVBlankPeriodFunc = int32_t (*)(uint32_t devId, uint64_t& period); 151 using SetLayerPerFrameParameterFunc = int32_t (*)( 152 uint32_t devId, uint32_t layerId, const std::string& key, const std::vector<int8_t>& value); 153 using SetDisplayPerFrameParameterFunc = int32_t (*)( 154 uint32_t devId, const std::string& key, const std::vector<int8_t>& value); 155 using GetSupportedLayerPerFrameParameterKeyFunc = int32_t (*)(std::vector<std::string>& keys); 156 using SetDisplayOverlayResolutionFunc = int32_t (*)(uint32_t devId, uint32_t width, uint32_t height); 157 using RegRefreshCallbackFunc = int32_t (*)(RefreshCallback cb, void* data); 158 using GetDisplaySupportedColorGamutsFunc = int32_t (*)(uint32_t devId, std::vector<ColorGamut>& gamuts); 159 using GetHDRCapabilityInfosFunc = int32_t (*)(uint32_t devId, HDRCapability& info); 160 using RegDisplayVBlankIdleCallbackFunc = int32_t (*)(VBlankIdleCallback cb, void* data); 161 using SetDisplayConstraintFunc = int32_t (*)(uint32_t devId, uint64_t frameID, uint64_t ns, uint32_t type); 162 using UpdateHardwareCursorFunc = int32_t (*)(uint32_t devId, int32_t x, int32_t y, BufferHandle* buffer); 163 using EnableHardwareCursorStatsFunc = int32_t (*)(uint32_t devId, bool enable); 164 using GetHardwareCursorStatsFunc = int32_t (*)(uint32_t devId, uint32_t& frameCount, uint32_t& vsyncCount); 165 using SetDisplayActiveRegionFunc = int32_t (*)(uint32_t devId, const IRect& rect); 166 using FastPresentFunc = int32_t (*)(uint32_t devId, const PresentParam& param, 167 const std::vector<BufferHandle*>& inHandles); 168 using ClearDisplayClientBufferFunc = int32_t (*)(uint32_t devId); 169 using ClearLayerBufferFunc = int32_t (*)(uint32_t devId, uint32_t layerId); 170 using GetDisplayIdentificationDataFunc = int32_t (*)(uint32_t devId, uint8_t& portId, std::vector<uint8_t>& edidData); 171 using RegHwcEventCallbackFunc = int32_t (*)(HwcEventCallback cb, void *data); 172 173 174 } // namespace Composer 175 } // namespace Display 176 } // namespace HDI 177 } // namespace OHOS 178 #endif // OHOS_HDI_VDI_ADAPTER_INTERFACE_H 179