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