• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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