• 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_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 (*GetSupportedLayerPerFrameParameterKey)(std::vector<std::string>& keys);
83     int32_t (*SetDisplayOverlayResolution)(uint32_t devId, uint32_t width, uint32_t height);
84     int32_t (*RegRefreshCallback)(RefreshCallback cb, void* data);
85     int32_t (*GetDisplaySupportedColorGamuts)(uint32_t devId, std::vector<ColorGamut>& gamuts);
86     int32_t (*GetHDRCapabilityInfos)(uint32_t devId, HDRCapability& info);
87     int32_t (*RegDisplayVBlankIdleCallback)(VBlankIdleCallback cb, void* data);
88     int32_t (*SetDisplayConstraint)(uint32_t devId, uint64_t frameID, uint64_t ns, uint32_t type);
89     int32_t (*SetHardwareCursorPosition)(uint32_t devId, int32_t x, int32_t y);
90     int32_t (*EnableHardwareCursorStats)(uint32_t devId, bool enable);
91     int32_t (*GetHardwareCursorStats)(uint32_t devId, uint32_t& frameCount, uint32_t& vsyncCount);
92     int32_t (*SetDisplayActiveRegion)(uint32_t devId, const IRect& rect);
93 };
94 
95 using LoadVdiImplFunc = int32_t (*)();
96 using DestroyVdiImplFunc = int32_t (*)();
97 using RegHotPlugCallbackFunc = int32_t (*)(HotPlugCallback cb, void* data);
98 using GetDisplayCapabilityFunc = int32_t (*)(uint32_t devId, DisplayCapability& info);
99 using GetDisplaySupportedModesFunc = int32_t (*)(uint32_t devId, std::vector<DisplayModeInfo>& modes);
100 using GetDisplayModeFunc = int32_t (*)(uint32_t devId, uint32_t& modeId);
101 using SetDisplayModeFunc = int32_t (*)(uint32_t devId, uint32_t modeId);
102 using GetDisplayPowerStatusFunc = int32_t (*)(uint32_t devId, V1_0::DispPowerStatus& status);
103 using SetDisplayPowerStatusFunc = int32_t (*)(uint32_t devId, V1_0::DispPowerStatus status);
104 using GetDisplayBacklightFunc = int32_t (*)(uint32_t devId, uint32_t& level);
105 using SetDisplayBacklightFunc = int32_t (*)(uint32_t devId, uint32_t level);
106 using GetDisplayPropertyFunc = int32_t (*)(uint32_t devId, uint32_t id, uint64_t& value);
107 using GetDisplayCompChangeFunc = int32_t (*)(
108     uint32_t devId, std::vector<uint32_t>& layers, std::vector<int32_t>& types);
109 using SetDisplayClientCropFunc = int32_t (*)(uint32_t devId, const IRect& rect);
110 using SetDisplayClientBufferFunc = int32_t (*)(uint32_t devId, const BufferHandle& buffer, int32_t fence);
111 using SetDisplayClientDamageFunc = int32_t (*)(uint32_t devId, std::vector<IRect>& rects);
112 using SetDisplayVsyncEnabledFunc = int32_t (*)(uint32_t devId, bool enabled);
113 using RegDisplayVBlankCallbackFunc = int32_t (*)(uint32_t devId, VBlankCallback cb, void* data);
114 using GetDisplayReleaseFenceFunc = int32_t (*)(
115     uint32_t devId, std::vector<uint32_t>& layers, std::vector<int32_t>& fences);
116 using CreateVirtualDisplayFunc = int32_t (*)(uint32_t width, uint32_t height, int32_t& format, uint32_t& devId);
117 using DestroyVirtualDisplayFunc = int32_t (*)(uint32_t devId);
118 using SetVirtualDisplayBufferFunc = int32_t (*)(uint32_t devId, const BufferHandle& buffer, const int32_t fence);
119 using SetDisplayPropertyFunc = int32_t (*)(uint32_t devId, uint32_t id, uint64_t value);
120 using CommitFunc = int32_t (*)(uint32_t devId, int32_t& fence);
121 using CreateLayerFunc = int32_t (*)(uint32_t devId, const LayerInfo& layerInfo, uint32_t& layerId);
122 using DestroyLayerFunc = int32_t (*)(uint32_t devId, uint32_t layerId);
123 using PrepareDisplayLayersFunc = int32_t (*)(uint32_t devId, bool& needFlushFb);
124 using SetLayerAlphaFunc = int32_t (*)(uint32_t devId, uint32_t layerId, const LayerAlpha& alpha);
125 using SetLayerRegionFunc = int32_t (*)(uint32_t devId, uint32_t layerId, const IRect& rect);
126 using SetLayerCropFunc = int32_t (*)(uint32_t devId, uint32_t layerId, const IRect& rect);
127 using SetLayerZorderFunc = int32_t (*)(uint32_t devId, uint32_t layerId, uint32_t zorder);
128 using SetLayerPreMultiFunc = int32_t (*)(uint32_t devId, uint32_t layerId, bool preMul);
129 using SetLayerTransformModeFunc = int32_t (*)(uint32_t devId, uint32_t layerId, TransformType type);
130 using SetLayerDirtyRegionFunc = int32_t (*)(uint32_t devId, uint32_t layerId, const std::vector<IRect>& rects);
131 using SetLayerVisibleRegionFunc = int32_t (*)(uint32_t devId, uint32_t layerId, std::vector<IRect>& rects);
132 using SetLayerBufferFunc = int32_t (*)(uint32_t devId, uint32_t layerId, const BufferHandle& buffer, int32_t fence);
133 using SetLayerCompositionTypeFunc = int32_t (*)(uint32_t devId, uint32_t layerId, V1_0::CompositionType type);
134 using SetLayerBlendTypeFunc = int32_t (*)(uint32_t devId, uint32_t layerId, BlendType type);
135 using SetLayerMaskInfoFunc = int32_t (*)(uint32_t devId, uint32_t layerId, const MaskInfo maskInfo);
136 using SetLayerColorFunc = int32_t (*)(uint32_t devId, uint32_t layerId, const LayerColor& layerColor);
137 using RegSeamlessChangeCallbackFunc = int32_t (*)(SeamlessChangeCallback cb, void* data);
138 using GetDisplaySupportedModesExtFunc = int32_t (*)(uint32_t devId, std::vector<DisplayModeInfoExt>& modes);
139 using SetDisplayModeAsyncFunc = int32_t (*)(uint32_t devId, uint32_t modeId, ModeCallback cb, void *data);
140 using GetDisplayVBlankPeriodFunc = int32_t (*)(uint32_t devId, uint64_t& period);
141 using SetLayerPerFrameParameterFunc = int32_t (*)(
142     uint32_t devId, uint32_t layerId, const std::string& key, const std::vector<int8_t>& value);
143 using GetSupportedLayerPerFrameParameterKeyFunc = int32_t (*)(std::vector<std::string>& keys);
144 using SetDisplayOverlayResolutionFunc = int32_t (*)(uint32_t devId, uint32_t width, uint32_t height);
145 using RegRefreshCallbackFunc = int32_t (*)(RefreshCallback cb, void* data);
146 using GetDisplaySupportedColorGamutsFunc = int32_t (*)(uint32_t devId, std::vector<ColorGamut>& gamuts);
147 using GetHDRCapabilityInfosFunc = int32_t (*)(uint32_t devId, HDRCapability& info);
148 using RegDisplayVBlankIdleCallbackFunc = int32_t (*)(VBlankIdleCallback cb, void* data);
149 using SetDisplayConstraintFunc = int32_t (*)(uint32_t devId, uint64_t frameID, uint64_t ns, uint32_t type);
150 using SetHardwareCursorPositionFunc = int32_t (*)(uint32_t devId, int32_t x, int32_t y);
151 using EnableHardwareCursorStatsFunc = int32_t (*)(uint32_t devId, bool enable);
152 using GetHardwareCursorStatsFunc = int32_t (*)(uint32_t devId, uint32_t& frameCount, uint32_t& vsyncCount);
153 using SetDisplayActiveRegionFunc = int32_t (*)(uint32_t devId, const IRect& rect);
154 
155 } // namespace Composer
156 } // namespace Display
157 } // namespace HDI
158 } // namespace OHOS
159 #endif // OHOS_HDI_VDI_ADAPTER_INTERFACE_H
160