• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 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_DISPLAY_V1_0_IDISPLAY_COMPOSER_INTERFACE_H
17 #define OHOS_HDI_DISPLAY_V1_0_IDISPLAY_COMPOSER_INTERFACE_H
18 
19 #include <vector>
20 #include "buffer_handle.h"
21 #include "common/include/display_common.h"
22 #include "iproxy_broker.h"
23 #include "v1_0/display_composer_type.h"
24 
25 namespace OHOS {
26 namespace HDI {
27 namespace Display {
28 namespace Composer {
29 namespace V1_0 {
30 using namespace OHOS::HDI::Display::Composer::V1_0;
31 
32 class IDisplayComposerInterface : public virtual RefBase {
33 public:
34     virtual ~IDisplayComposerInterface() = default;
35 
36     /**
37      * @brief Obtains all interfaces of IDisplayComposerInterface.
38      *
39      * @return Returns <b>IDisplayComposerInterface*</b> if the operation is successful;
40      * returns an null point otherwise.
41      * @since 4.0
42      * @version 1.0
43      */
44     static IDisplayComposerInterface* Get();
45 
46     /**
47      * @brief Adds a recipient for death notifications of a remote stub object.
48      *
49      * @param recipient Indicates the recipient of the DeathRecipient pointer.
50      *
51      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
52      * in {@link DispErrCode} otherwise.
53      * @since 4.0
54      * @version 1.0
55      */
56     virtual bool AddDeathRecipient(const sptr<IRemoteObject::DeathRecipient>& recipient) = 0;
57 
58     /**
59      * @brief Removes the recipient for death notifications of a remote stub object.
60      *
61      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
62      * in {@link DispErrCode} otherwise.
63      * @since 4.0
64      * @version 1.0
65      */
66     virtual bool RemoveDeathRecipient() = 0;
67 
68     /* device func */
69     /**
70      * @brief Registers the callback to be invoked when a hot plug event occurs.
71      *
72      * @param cb Indicates the instance used to notify the graphics service of a hot plug event occurred.
73      * @param data Indicates the pointer to the private data returned to the graphics service in the
74      * <b>HotPlugCallback</b> callback.
75 
76      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
77      * in {@link DispErrCode} otherwise.
78      * @since 4.0
79      * @version 1.0
80      */
81     virtual int32_t RegHotPlugCallback(HotPlugCallback cb, void* data) = 0;
82 
83     /**
84      * @brief Sets the client buffer cache count of a display device.
85      *
86      * @param devId Indicates the ID of the display device.
87      * @param count client buffer cache count.
88      *
89      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
90      * in {@link DispErrCode} otherwise.
91      * @since 4.0
92      * @version 1.0
93      */
94     virtual int32_t SetClientBufferCacheCount(uint32_t devId, uint32_t count) = 0;
95 
96     /**
97      * @brief Obtains the capabilities of a display device.
98      *
99      * @param devId Indicates the ID of the display device.
100      * @param info Indicates the pointer to the capabilities supported by the display device. For details,
101      * see {@link DisplayCapability}.
102      *
103      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
104      * in {@link DispErrCode} otherwise.
105      * @since 4.0
106      * @version 1.0
107      */
108     virtual int32_t GetDisplayCapability(uint32_t devId, DisplayCapability& info) = 0;
109 
110     /**
111      * @brief Obtains the display modes supported by a display device.
112      *
113      * @param devId Indicates the ID of the display device.
114      * @param modes Indicates the vector of the information about all modes supported by the display device,
115      * including all supported resolutions and refresh rates. Each mode has an ID, which will be used when
116      * the mode is set or obtained. For details, see {@link DisplayModeInfo}.
117      *
118      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
119      * in {@link DispErrCode} otherwise.
120      * @since 4.0
121      * @version 1.0
122      */
123     virtual int32_t GetDisplaySupportedModes(uint32_t devId, std::vector<DisplayModeInfo>& modes) = 0;
124 
125     /**
126      * @brief Obtains the current display mode of a display device.
127      *
128      * @param devId Indicates the ID of the display device.
129      * @param modeId indicates the pointer to the ID of the current display mode of the device. The display mode ID
130      * is written by this API.
131      *
132      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
133      * in {@link DispErrCode} otherwise.
134      * @since 4.0
135      * @version 1.0
136      */
137     virtual int32_t GetDisplayMode(uint32_t devId, uint32_t& modeId) = 0;
138 
139     /**
140      * @brief Sets the display mode of a display device.
141      *
142      * @param devId Indicates the ID of the display device.
143      * @param modeId Indicates the ID of the display mode. The device is switched to the display mode specified by
144      * this parameter in this interface.
145      *
146      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
147      * in {@link DispErrCode} otherwise.
148      * @since 4.0
149      * @version 1.0
150      */
151     virtual int32_t SetDisplayMode(uint32_t devId, uint32_t modeId) = 0;
152 
153     /**
154      * @brief Obtains the power status of a display device.
155      *
156      * @param devId Indicates the ID of the display device.
157      * @param status Indicates the pointer to the power status of the device. The status is written by this interface.
158      *
159      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
160      * in {@link DispErrCode} otherwise.
161      * @since 4.0
162      * @version 1.0
163      */
164     virtual int32_t GetDisplayPowerStatus(uint32_t devId, DispPowerStatus& status) = 0;
165 
166     /**
167      * @brief Sets the power status of a display device.
168      *
169      * @param devId Indicates the ID of the display device.
170      * @param status Indicates the power status to set.
171      *
172      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
173      * in {@link DispErrCode} otherwise.
174      * @since 4.0
175      * @version 1.0
176      */
177     virtual int32_t SetDisplayPowerStatus(uint32_t devId, DispPowerStatus status) = 0;
178 
179     /**
180      * @brief Obtains the backlight value of a display device.
181      *
182      * @param devId Indicates the ID of the display device.
183      * @param level Indicates the pointer to the backlight value of the device. The backlight value is written
184      * by this interface.
185      *
186      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
187      * in {@link DispErrCode} otherwise.
188      * @since 4.0
189      * @version 1.0
190      */
191     virtual int32_t GetDisplayBacklight(uint32_t devId, uint32_t& level) = 0;
192 
193     /**
194      * @brief Sets the backlight value for a display device.
195      *
196      * @param devId Indicates the ID of the display device.
197      * @param level Indicates the backlight value to set.
198      *
199      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
200      * in {@link DispErrCode} otherwise.
201      * @since 4.0
202      * @version 1.0
203      */
204     virtual int32_t SetDisplayBacklight(uint32_t devId, uint32_t level) = 0;
205 
206     /**
207      * @brief Obtains the property for a display device.
208      *
209      * @param devId Indicates the ID of the display device.
210      * @param id Indicates the property ID returned by <b>GetDisplayCapability</b>.
211      * @param value Indicates the property to get.
212      *
213      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
214      * in {@link DispErrCode} otherwise.
215      * @since 4.0
216      * @version 1.0
217      */
218     virtual int32_t GetDisplayProperty(uint32_t devId, uint32_t id, uint64_t& value) = 0;
219 
220     /**
221      * @brief Obtains the layers whose composition types have changed.
222      *
223      * In the preparation for composition, the display device changes the composition type for each layer based on
224      * the composition capability of the device. This function returns the layers whose composition types have changed.
225      *
226      * @param devId Indicates the ID of the display device.
227      * @param layers Indicates the vector of the start address of the layer array.
228      * @param types Indicates the vector of the start address of the composition type array.
229      *
230      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
231      * in {@link DispErrCode} otherwise.
232      * @since 4.0
233      * @version 1.0
234      */
235     virtual int32_t GetDisplayCompChange(uint32_t devId, std::vector<uint32_t>& layers,
236         std::vector<int32_t>& types) = 0;
237 
238     /**
239      * @brief Sets the cropped region for a display device.
240      *
241      * You can use this interface to set the cropped region of the client buffer of the display device.
242      * The cropped region cannot exceed the size of the client buffer.
243      *
244      * @param devId Indicates the ID of the display device.
245      * @param rect Indicates the pointer to the cropped region of the client buffer.
246      *
247      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
248      * in {@link DispErrCode} otherwise.
249      * @since 4.0
250      * @version 1.0
251      */
252     virtual int32_t SetDisplayClientCrop(uint32_t devId, const IRect& rect) = 0;
253 
254     /**
255      * @brief Sets the display buffer for a display device.
256      *
257      * The display buffer stores the hardware composition result of the display device.
258      *
259      * @param devId Indicates the ID of the display device.
260      * @param buffer Indicates the pointer to the display buffer.
261      * @param seqNo Indicates the sequence number of buffer cache.
262      * @param fence Indicates the sync fence that specifies whether the display buffer can be accessed. The display
263      * buffer is created and released by the graphics service. It can be accessed only when the sync fence is in the
264      * signaled state.
265      *
266      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
267      * in {@link DispErrCode} otherwise.
268      * @since 4.0
269      * @version 1.0
270      */
271     virtual int32_t SetDisplayClientBuffer(uint32_t devId, const BufferHandle* buffer, uint32_t seqNo,
272         int32_t fence) = 0;
273 
274     /**
275      * @brief Sets the dirty region for a display device.
276      *
277      * The dirty region consists of multiple rectangular regions. The rectangular regions can be refreshed based on
278      * the settings.
279      *
280      * @param devId Indicates the ID of the display device.
281      * @param rects Indicates the vector of the start address of the rectangle array.
282      *
283      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
284      * in {@link DispErrCode} otherwise.
285      * @since 4.0
286      * @version 1.0
287      */
288     virtual int32_t SetDisplayClientDamage(uint32_t devId, std::vector<IRect>& rects) = 0;
289     /**
290      * @brief Enables or disables the vertical sync signal.
291      *
292      * When the vertical sync signal is generated, the <b>VBlankCallback</b> callback registered
293      * by <b>RegDisplayVBlankCallback</b> will be invoked. The vertical sync signal must be enabled when the graphics
294      * service needs to refresh the display, and disabled when display refresh is not required. The display does not
295      * need to refresh when <b>VBlankCallback</b> is invoked and the graphics service composes layers and sends the
296      * composition result to the device for display.
297      *
298      * @param devId Indicates the ID of the display device.
299      * @param enabled Specifies whether to enable the vertical sync signal. The value <b>true</b> means to enable the
300      * vertical sync signal, and <b>false</b> means to disable it.
301      *
302      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
303      * in {@link DispErrCode}otherwise.
304      * @since 4.0
305      * @version 1.0
306      */
307     virtual int32_t SetDisplayVsyncEnabled(uint32_t devId, bool enabled) = 0;
308 
309     /**
310      * @brief Registers the callback to be invoked when a VBLANK event occurs.
311      *
312      * @param devId Indicates the ID of the display device.
313      * @param cb Indicates the instance used to notify the graphics service of the VBLANK event occurred when
314      * <b>DisplayVsync</b> is enabled.
315      * @param data Indicates the pointer to the private data returned to the graphics service in the
316      * <b>VBlankCallback</b> callback.
317      *
318      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
319      * in {@link DispErrCode} otherwise.
320      * @since 4.0
321      * @version 1.0
322      */
323     virtual int32_t RegDisplayVBlankCallback(uint32_t devId, VBlankCallback cb, void* data) = 0;
324 
325     /**
326      * @brief Obtains the fences of the display layers after the commit operation.
327      *
328      * @param devId Indicates the ID of the display device.
329      * @param layers Indicates the vector of the start address of the layer array.
330      * @param fences Indicates the vector of the start address of the fence array.
331      *
332      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
333      * in {@link DispErrCode} otherwise.
334      * @since 4.0
335      * @version 1.0
336      */
337     virtual int32_t GetDisplayReleaseFence(uint32_t devId, std::vector<uint32_t>& layers,
338         std::vector<int32_t>& fences) = 0;
339 
340     /**
341      * @brief Creates a virtual display device.
342      *
343      * @param width Indicates the pixel width of the display device.
344      * @param height Indicates the pixel height of the display device.
345      * @param format Indicates the pointer to the pixel format of the display device.
346      * For details, see {@link PixelFormat}. The <b>format</b> can be modified based on hardware requirements and
347      * returned to the graphics service.
348      * @param devId Indicates the pointer to the ID of the virtual display device created.
349      *
350      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
351      * in {@link DispErrCode} otherwise.
352      * @since 4.0
353      * @version 1.0
354      */
355     virtual int32_t CreateVirtualDisplay(uint32_t width, uint32_t height, int32_t& format, uint32_t& devId) = 0;
356 
357     /**
358      * @brief Destroys a virtual display device.
359      *
360      * @param devId Indicates the ID of the display device.
361      *
362      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
363      * in {@link DispErrCode} otherwise.
364      * @since 4.0
365      * @version 1.0
366      */
367     virtual int32_t DestroyVirtualDisplay(uint32_t devId) = 0;
368 
369     /**
370      * @brief Sets the output buffer for a virtual display device.
371      *
372      * This buffer stores the output of the virtual display device. The buffer can be used only after the sync fence
373      * is in the signaled state.
374      *
375      * @param devId Indicates the ID of the display device.
376      * @param buffer Indicates the pointer to the output buffer.
377      * @param fence Indicates the sync fence.
378      *
379      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
380      * in {@link DispErrCode} otherwise.
381      * @since 4.0
382      * @version 1.0
383      */
384     virtual int32_t SetVirtualDisplayBuffer(uint32_t devId, const BufferHandle& buffer, const int32_t fence) = 0;
385 
386     /**
387      * @brief Sets the property for a display device.
388      *
389      * @param devId Indicates the ID of the display device.
390      * @param id Indicates the property ID returned by <b>GetDisplayCapability</b>.
391      * @param value Indicates the property to set.
392      *
393      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
394      * in {@link DispErrCode} otherwise.
395      * @since 4.0
396      * @version 1.0
397      */
398     virtual int32_t SetDisplayProperty(uint32_t devId, uint32_t id, uint64_t value) = 0;
399 
400     /**
401      * @brief Commits the request for composition and display.
402      *
403      * If there is a hardware composition layer, the composition is performed and the composition result is sent to
404      * the hardware for display.
405      *
406      * @param devId Indicates the ID of the display device.
407      * @param fence Indicates the pointer to the start address of the fence array.
408      *
409      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
410      * in {@link DispErrCode} otherwise.
411      * @since 4.0
412      * @version 1.0
413      */
414     virtual int32_t Commit(uint32_t devId, int32_t& fence) = 0;
415 
416     /**
417      * @brief Obtains the color gamuts supported by a display device.
418      *
419      * @param devId Indicates the ID of the display device.
420      * @param gamuts Indicates the vector of the information about all color gamuts supported by the display device.
421      *
422      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
423      * in {@link DispErrCode} otherwise.
424      * @since 4.0
425      * @version 1.0
426      */
427     virtual int32_t GetDisplaySupportedColorGamuts(uint32_t devId, std::vector<ColorGamut>& gamuts) = 0;
428 
429     /**
430      * @brief Obtains the color gamut of a display device.
431      *
432      * @param devId Indicates the ID of the display device.
433      * @param gamut Indicates the pointer to the color gamut of the device. The color gamut is written
434      * by this interface.
435      *
436      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
437      * in {@link DispErrCode} otherwise.
438      * @since 4.0
439      * @version 1.0
440      */
441     virtual int32_t GetDisplayColorGamut(uint32_t devId, ColorGamut& gamut) = 0;
442 
443     /**
444      * @brief Sets the color gamut for a display device.
445      *
446      * @param devId Indicates the ID of the display device.
447      * @param gamut Indicates the color gamut to set.
448      *
449      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
450      * in {@link DispErrCode} otherwise.
451      * @since 4.0
452      * @version 1.0
453      */
454     virtual int32_t SetDisplayColorGamut(uint32_t devId, const ColorGamut& gamut) = 0;
455 
456     /**
457      * @brief Obtains the gamut map of a display device.
458      *
459      * @param devId Indicates the ID of the display device.
460      * @param gamutMap Indicates the pointer to the gamut map of the device. The gamut map is written
461      * by this interface.
462      *
463      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
464      * in {@link DispErrCode} otherwise.
465      * @since 4.0
466      * @version 1.0
467      */
468     virtual int32_t GetDisplayGamutMap(uint32_t devId, GamutMap& gamutMap) = 0;
469 
470     /**
471      * @brief Sets the gamut map for a display device.
472      *
473      * @param devId Indicates the ID of the display device.
474      * @param gamutMap Indicates the gamut map to set.
475      *
476      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
477      * in {@link DispErrCode} otherwise.
478      * @since 4.0
479      * @version 1.0
480      */
481     virtual int32_t SetDisplayGamutMap(uint32_t devId, const GamutMap& gamutMap) = 0;
482 
483     /**
484      * @brief Sets a 4x4 color transformation matrix for a display device.
485      *
486      * @param devId Indicates the ID of the display device.
487      * @param matrix Indicates the vector of the 4x4 color transformation matrix to set.
488      *
489      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
490      * in {@link DispErrCode} otherwise.
491      * @since 4.0
492      * @version 1.0
493      */
494     virtual int32_t SetDisplayColorTransform(uint32_t devId, const std::vector<float>& matrix) = 0;
495 
496     /**
497      * @brief Obtains the HDR capability of a display device.
498      *
499      * @param devId Indicates the ID of the display device.
500      * @param info Indicates the pointer to the HDR capability of the device. The <b>info</b> is written
501      * by this interface.
502      *
503      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
504      * in {@link DispErrCode} otherwise.
505      * @since 4.0
506      * @version 1.0
507      */
508     virtual int32_t GetHDRCapabilityInfos(uint32_t devId, HDRCapability& info) = 0;
509 
510     /**
511      * @brief Obtains the HDR metadata keys supported by a display device.
512      *
513      * @param devId Indicates the ID of the display device.
514      * @param keys Indicates the vector of the information about all HDR metadata keys supported by the display device.
515      *
516      * @return Returns <b>0</b> if the operation is successful; returns an error code defined
517      * in {@link DispErrCode} otherwise.
518      * @since 4.0
519      * @version 1.0
520      */
521     virtual int32_t GetSupportedMetadataKey(uint32_t devId, std::vector<HDRMetadataKey>& keys) = 0;
522 
523     /* layer func */
524     /**
525      * @brief Opens a layer on a specified display device.
526      *
527      * Before using a layer on the GUI, you must open the layer based on the layer information. After the layer is
528      * opened, you can obtain the layer ID and then use other functions based on the layer ID.
529      *
530      * @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
531      * display device, and 4 indicates the last display device.
532      * @param layerInfo Indicates the pointer to the layer information passed to open a layer, including the layer
533      * type, layer size, and pixel format.
534      * @param cacheCount Indicates the count of buffer cache.
535      * @param layerId Indicates the pointer to the layer ID, which uniquely identifies a layer. The layer ID is returned
536      * to the GUI after the layer is successfully opened.
537      *
538      * @return Returns <b>0</b> if the operation is successful; returns an error code defined in {@link DispErrCode}
539      * otherwise.
540      * @see DestroyLayer
541      * @since 4.0
542      * @version 1.0
543      */
544     virtual int32_t CreateLayer(uint32_t devId, const LayerInfo& layerInfo, uint32_t cacheCount, uint32_t& layerId) = 0;
545 
546     /**
547      * @brief Closes a layer that is no longer required on a specified display device.
548      *
549      * @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
550      * display device, and 4 indicates the last display device.
551      * @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
552      * with the specified layer ID.
553      *
554      * @return Returns <b>0</b> if the operation is successful; returns an error code defined in {@link DispErrCode}
555      * otherwise.
556      * @see OpenLayer
557      * @since 4.0
558      * @version 1.0
559      */
560     virtual int32_t DestroyLayer(uint32_t devId, uint32_t layerId) = 0;
561 
562     /**
563     * @brief Prepares for the composition to be performed by a display device.
564     *
565     * Before the composition, the graphics service needs to notify the display device of the preparation to be made
566     * through this interface.
567     *
568     * @param devId Indicates the ID of the display device.
569     * @param needFlushFb Indicates the pointer that specifies whether the graphics service needs to reset the display
570     * framebuffer by using <b>SetDisplayClientBuffer</b> before the commit operation.
571     * The value <b>true</b> means that the framebuffer needs to be reset, and <b>false</b> means the opposite.
572     *
573     * @return Returns <b>0</b> if the operation is successful; returns an error code defined
574     * in {@link DispErrCode} otherwise.
575     * @since 4.0
576     * @version 1.0
577     */
578     virtual int32_t PrepareDisplayLayers(uint32_t devId, bool& needFlushFb) = 0;
579 
580     /**
581      * @brief Sets the alpha value for a layer.
582      *
583      * @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
584      * display device, and 4 indicates the last display device.
585      * @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
586      * with the specified layer ID.
587      * @param alpha Indicates the pointer to the alpha value to set.
588      *
589      * @return Returns <b>0</b> if the operation is successful; returns an error code defined in {@link DispErrCode}
590      * otherwise.
591      * @see GetLayerAlpha
592      * @since 4.0
593      * @version 1.0
594      */
595     virtual int32_t SetLayerAlpha(uint32_t devId, uint32_t layerId, const LayerAlpha& alpha) = 0;
596 
597     /**
598      * @brief Sets the region for a layer.
599      *
600      * @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
601      * display device, and 4 indicates the last display device.
602      * @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
603      * with the specified layer ID.
604      * @param rect Indicates the pointer to the region where set.
605      *
606      * @return Returns <b>0</b> if the operation is successful; returns an error code defined in {@link DispErrCode}
607      * otherwise.
608      * @see GetLayerAlpha
609      * @since 4.0
610      * @version 1.0
611      */
612     virtual int32_t SetLayerRegion(uint32_t devId, uint32_t layerId, const IRect& rect) = 0;
613 
614     /**
615      * @brief Sets the rectangular area to crop for a layer.
616      *
617      * @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
618      * display device, and 4 indicates the last display device.
619      * @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
620      * with the specified layer ID.
621      * @param rect Indicates the pointer to the rectangular area to crop.
622      *
623      * @return Returns <b>0</b> if the operation is successful; returns an error code defined in {@link DispErrCode}
624      * otherwise.
625      * @since 4.0
626      * @version 1.0
627      */
628     virtual int32_t SetLayerCrop(uint32_t devId, uint32_t layerId, const IRect& rect) = 0;
629 
630     /**
631      * @brief Sets the z-order for a layer.
632      *
633      * A larger z-order value indicates a higher layer.
634      *
635      * @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
636      * display device, and 4 indicates the last display device.
637      * @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
638      * with the specified layer ID.
639      * @param zorder Indicates the z-order to set. The value is an integer ranging from 0 to 255.
640      *
641      * @return Returns <b>0</b> if the operation is successful; returns an error code defined in {@link DispErrCode}
642      * otherwise.
643      * @see GetLayerZorder
644      * @since 4.0
645      * @version 1.0
646      */
647     virtual int32_t SetLayerZorder(uint32_t devId, uint32_t layerId, uint32_t zorder) = 0;
648 
649     /**
650      * @brief Sets layer premultiplication.
651      *
652      * @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
653      * display device, and 4 indicates the last display device.
654      * @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
655      * with the specified layer ID.
656      * @param preMul Specifies whether to enable layer premultiplication. The value <b>1</b> means to enable layer
657      * premultiplication, and <b>0</b> means the opposite.
658      *
659      * @return Returns <b>0</b> if the operation is successful; returns an error code defined in {@link DispErrCode}
660      * otherwise.
661      * @see GetLayerPreMulti
662      * @since 4.0
663      * @version 1.0
664      */
665     virtual int32_t SetLayerPreMulti(uint32_t devId, uint32_t layerId, bool preMul) = 0;
666 
667     /**
668      * @brief Sets the type of graphic rotation.
669      *
670      * @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
671      * display device, and 4 indicates the last display device.
672      * @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
673      * with the specified layer ID.
674      * @param type Indicates the transform types of images.
675      *
676      * @return Returns <b>0</b> if the operation is successful; returns an error code defined in {@link DispErrCode}
677      * otherwise.
678      * @since 4.0
679      * @version 1.0
680      */
681     virtual int32_t SetLayerTransformMode(uint32_t devId, uint32_t layerId, TransformType type) = 0;
682 
683     /**
684      * @brief Sets the flushing area for a layer.
685      *
686      * After the GUI draws an image, you must set the layer flushing area before calling the {@link Flush} function to
687      * flush the screen.
688      *
689      * @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
690      * display device, and 4 indicates the last display device.
691      * @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
692      * with the specified layer ID.
693      * @param regions Indicates the vector of the flushing area to set.
694      *
695      * @return Returns <b>0</b> if the operation is successful; returns an error code defined in {@link DispErrCode}
696      * otherwise.
697      * @since 4.0
698      * @version 1.0
699      */
700     virtual int32_t SetLayerDirtyRegion(uint32_t devId, uint32_t layerId, std::vector<IRect>& regions) = 0;
701 
702     /**
703      * @brief Set the visible region for a layer
704      *
705      *
706      * @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
707      * display device, and 4 indicates the last display device.
708      * @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
709      * with the specified layer ID.
710      * @param rects Indicates the vector of the rectes.
711      *
712      * @return Returns <b>0</b> if the operation is successful; returns an error code defined in {@link DispErrCode}
713      * otherwise.
714      * @since 2.0
715      * @version 2.0
716      */
717     virtual int32_t SetLayerVisibleRegion(uint32_t devId, uint32_t layerId, std::vector<IRect>& rects) = 0;
718 
719     /**
720      * @brief Set the buffer for a layer.
721      *
722      *
723      * @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
724      * display device, and 4 indicates the last display device.
725      * @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
726      * with the specified layer ID.
727      * @param buffer Indicates the pointer of the buffer handle. The buffer handle should contain all information of the
728      * buffer which will be used for composition.
729      * @param seqNo Indicates the sequence number of buffer cache.
730      * @param fence Indicates the fd of a sync file.
731      * @param deletingList Indicates the list of buffer cache to delete.
732      *
733      * @return Returns <b>0</b> if the operation is successful; returns an error code defined in {@link DispErrCode}
734      * otherwise.
735      * @since 2.0
736      * @version 2.0
737      */
738     virtual int32_t SetLayerBuffer(uint32_t devId, uint32_t layerId, const BufferHandle* buffer, uint32_t seqNo,
739         int32_t fence, const std::vector<uint32_t>& deletingList) = 0;
740 
741     /**
742      * @brief set the composition type which the client expect
743      *
744      *
745      * @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
746      * display device, and 4 indicates the last display device.
747      * @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
748      * with the specified layer ID.
749      * @param type Indicates the composition type which the client expect. It may vary with the implementation.
750      *
751      * @return Returns <b>0</b> if the operation is successful; returns an error code defined in {@link DispErrCode}
752      * otherwise.
753      * @since 2.0
754      * @version 2.0
755      */
756     virtual int32_t SetLayerCompositionType(uint32_t devId, uint32_t layerId, CompositionType type) = 0;
757 
758     /**
759      * @brief set the blend type
760      *
761      *
762      * @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
763      * display device, and 4 indicates the last display device.
764      * @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
765      * with the specified layer ID.
766      * @param type Indicates blend type
767      *
768      * @return Returns <b>0</b> if the operation is successful; returns an error code defined in {@link DispErrCode}
769      * otherwise.
770      * @since 2.0
771      * @version 2.0
772      */
773     virtual int32_t SetLayerBlendType(uint32_t devId, uint32_t layerId, BlendType type) = 0;
774 
775     /**
776      * @brief Sets a 4x4 color transformation matrix.
777      *
778      *
779      * @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
780      * display device, and 4 indicates the last display device.
781      * @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
782      * with the specified layer ID.
783      * @param matrix Indicates the 4x4 color transformation matrix.
784      *
785      * @return Returns <b>0</b> if the operation is successful; returns an error code defined in {@link DispErrCode}
786      * otherwise.
787      * @since 4.0
788      * @version 1.0
789      */
790     virtual int32_t SetLayerColorTransform(uint32_t devId, uint32_t layerId, const std::vector<float>& matrix) = 0;
791 
792     /**
793      * @brief Sets a color data space for a layer.
794      *
795      * @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
796      * display device, and 4 indicates the last display device.
797      * @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
798      * with the specified layer ID.
799      * @param colorSpace Indicates the color data space to set.
800      *
801      * @return Returns <b>0</b> if the operation is successful; returns an error code defined in {@link DispErrCode}
802      * otherwise.
803      * @since 4.0
804      * @version 1.0
805      */
806     virtual int32_t SetLayerColorDataSpace(uint32_t devId, uint32_t layerId, const ColorDataSpace colorSpace) = 0;
807 
808     /**
809      * @brief Obtains the color data space of a layer.
810      *
811      * @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
812      * display device, and 4 indicates the last display device.
813      * @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
814      * with the specified layer ID.
815      * @param colorSpace Indicates the pointer to the color data space obtained.
816      *
817      * @return Returns <b>0</b> if the operation is successful; returns an error code defined in {@link DispErrCode}
818      * otherwise.
819      * @since 4.0
820      * @version 1.0
821      */
822     virtual int32_t GetLayerColorDataSpace(uint32_t devId, uint32_t layerId, ColorDataSpace& colorSpace) = 0;
823 
824     /**
825      * @brief Sets metadata for a layer.
826      *
827      * @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
828      * display device, and 4 indicates the last display device.
829      * @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
830      * with the specified layer ID.
831      * @param num Indicates the number of metadata records.
832      * @param metaData Indicates the vecter of the metadata to set.
833      *
834      * @return Returns <b>0</b> if the operation is successful; returns an error code defined in {@link DispErrCode}
835      * otherwise.
836      * @since 4.0
837      * @version 1.0
838      */
839     virtual int32_t SetLayerMetaData(uint32_t devId, uint32_t layerId, const std::vector<HDRMetaData>& metaData) = 0;
840 
841     /**
842      * @brief Sets a metadata set for a layer.
843      *
844      * @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
845      * display device, and 4 indicates the last display device.
846      * @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
847      * with the specified layer ID.
848      * @param key Indicates the metadata key.
849      * @param metaData Indicates the vector of the metadata set of the uint8_t type to set.
850      *
851      * @return Returns <b>0</b> if the operation is successful; returns an error code defined in {@link DispErrCode}
852      * otherwise.
853      * @since 4.0
854      * @version 1.0
855      */
856     virtual int32_t SetLayerMetaDataSet(uint32_t devId, uint32_t layerId, HDRMetadataKey key,
857          const std::vector<uint8_t>& metaData) = 0;
858 
859     /**
860      * @brief Obtains the hardware display present timestamp type supported by a layer.
861      *
862      * @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
863      * display device, and 4 indicates the last display device.
864      * @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
865      * with the specified layer ID.
866      * @param type Indicates the pointer to the present timestamp type obtained.
867      *
868      * @return Returns <b>0</b> if the operation is successful; returns an error code defined in {@link DispErrCode}
869      * otherwise.
870      * @since 4.0
871      * @version 1.0
872      */
873     virtual int32_t GetSupportedPresentTimestamp(uint32_t devId, uint32_t layerId, PresentTimestampType& type) = 0;
874 
875     /**
876      * @brief Obtains the hardware display present timestamp of a layer.
877      *
878      * @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
879      * display device, and 4 indicates the last display device.
880      * @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
881      * with the specified layer ID.
882      * @param pts Indicates the pointer to the present timestamp obtained.
883      *
884      * @return Returns <b>0</b> if the operation is successful; returns an error code defined in {@link DispErrCode}
885      * otherwise.
886      * @since 4.0
887      * @version 1.0
888      */
889     virtual int32_t GetHwPresentTimestamp(uint32_t devId, uint32_t layerId, PresentTimestamp& pts) = 0;
890 
891     /**
892      * @brief Sets a tunnel handle for a layer.
893      *
894      * @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
895      * display device, and 4 indicates the last display device.
896      * @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
897      * with the specified layer ID.
898      * @param handle Indicates the handle of ExtDataHandle.
899      *
900      * @return Returns <b>0</b> if the operation is successful; returns an error code defined in {@link DispErrCode}
901      * otherwise.
902      * @since 3.2
903      * @version 1.0
904      */
905     virtual int32_t SetLayerTunnelHandle(uint32_t devId, uint32_t layerId, const ExtDataHandle& handle) = 0;
906 
907     /**
908      * @brief Sets the current mask frame information to the vendor driver.
909      *
910      * @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
911      * display device, and 4 indicates the last display device.
912      * @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
913      * with the specified layer ID.
914      * @param maskInfo Indicates the contains all of the information for a single mask.
915      *
916      * @return Returns <b>0</b> if the operation is successful; returns an error code defined in {@link DispErrCode}
917      * otherwise.
918      * @since 3.2
919      * @version 1.0
920      */
921     virtual int32_t SetLayerMaskInfo(uint32_t devId, uint32_t layerId, const MaskInfo maskInfo) = 0;
922 
923     /**
924      * @brief Sets the solid color layer.
925      *
926      * @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
927      * display device, and 4 indicates the last display device.
928      * @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
929      * with the specified layer ID.
930      * @param layerColor Indicates the current color.
931      *
932      * @return Returns <b>0</b> if the operation is successful; returns an error code defined in {@link DispErrCode}
933      * otherwise.
934      * @since 3.2
935      * @version 1.0
936      */
937     virtual int32_t SetLayerColor(uint32_t devId, uint32_t layerId, const LayerColor& layerColor) = 0;
938 };
939 } // V1_0
940 } // Composer
941 } // Display
942 } // HDI
943 } // OHOS
944 #endif // OHOS_HDI_DISPLAY_V1_0_IDISPLAY_COMPOSER_INTERFACE_H
945