/*
* Copyright (c) 2020-2021 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @addtogroup Display
* @{
*
* @brief Defines driver functions of the display module.
*
* This module provides driver functions for the graphics subsystem, including graphics layer management,
* device control, graphics hardware acceleration, display memory management, and callbacks.
*
* @since 1.0
* @version 1.0
*/
/**
* @file display_layer.h
*
* @brief Declares the driver functions for implementing layer operations.
*
* @since 1.0
* @version 2.0
*/
#ifndef DISPLAY_LAYTER_H
#define DISPLAY_LAYTER_H
#include "display_type.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Defines pointers to the layer driver functions.
*/
typedef struct {
/**
* @brief Initializes a display device.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @see DeinitDisplay
* @since 1.0
* @version 1.0
*/
int32_t (*InitDisplay)(uint32_t devId);
/**
* @brief Deinitializes a display device.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @see InitDisplay
* @since 1.0
* @version 1.0
*/
int32_t (*DeinitDisplay)(uint32_t devId);
/**
* @brief Obtains information about a display device.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param dispInfo Indicates the pointer to the display device information obtained.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @since 1.0
* @version 1.0
*/
int32_t (*GetDisplayInfo)(uint32_t devId, DisplayInfo *dispInfo);
/**
* @brief Opens a layer on a specified display device.
*
* Before using a layer on the GUI, you must open the layer based on the layer information. After the layer is
* opened, you can obtain the layer ID and then use other functions based on the layer ID.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerInfo Indicates the pointer to the layer information passed to open a layer, including the layer
* type, layer size, and pixel format.
* @param layerId Indicates the pointer to the layer ID, which uniquely identifies a layer. The layer ID is returned
* to the GUI after the layer is successfully opened.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @see CloseLayer
* @since 1.0
* @version 1.0
*/
int32_t (*CreateLayer)(uint32_t devId, const LayerInfo *layerInfo, uint32_t *layerId);
/**
* @brief Closes a layer that is no longer required on a specified display device.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @see OpenLayer
* @since 1.0
* @version 1.0
*/
int32_t (*CloseLayer)(uint32_t devId, uint32_t layerId);
/**
* @brief Sets whether a layer is visible.
*
* A visible layer is displayed on the screen, whereas an invisible layer is not displayed on the screen.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param visible Indicates the visibility to set for the layer. The value true means to set the layer to be
* visible, and false means the opposite.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @see GetLayerVisibleState
* @since 1.0
* @version 1.0
*/
int32_t (*SetLayerVisible)(uint32_t devId, uint32_t layerId, bool visible);
/**
* @brief Checks whether a layer is visible.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param visible Indicates the pointer to the obtained layer visibility. The value true indicates that the
* layer is visible, and false indicates that the layer is invisible.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @see SetLayerVisible
* @since 1.0
* @version 1.0
*/
int32_t (*GetLayerVisibleState)(uint32_t devId, uint32_t layerId, bool *visible);
/**
* @brief Sets the size of a layer.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param rect Indicates the pointer to the layer size to set, in pixels.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @see GetLayerSize
* @since 1.0
* @version 1.0
*/
int32_t (*SetLayerSize)(uint32_t devId, uint32_t layerId, IRect *rect);
/**
* @brief Obtains the size of a layer.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param rect Indicates the pointer to the obtained layer size.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @see SetLayerSize
* @since 1.0
* @version 1.0
*/
int32_t (*GetLayerSize)(uint32_t devId, uint32_t layerId, IRect *rect);
/**
* @brief Sets the rectangular area to crop for a layer.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param rect Indicates the pointer to the rectangular area to crop.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @since 1.0
* @version 1.0
*/
int32_t (*SetLayerCrop)(uint32_t devId, uint32_t layerId, IRect *rect);
/**
* @brief Sets the z-order for a layer.
*
* A larger z-order value indicates a higher layer.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param zorder Indicates the z-order to set. The value is an integer ranging from 0 to 255.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @see GetLayerZorder
* @since 1.0
* @version 1.0
*/
int32_t (*SetLayerZorder)(uint32_t devId, uint32_t layerId, uint32_t zorder);
/**
* @brief Obtains the z-order of a layer.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param zorder Indicates the pointer to the obtained z-order. The value is an integer ranging from 0 to 255.
* A larger z-order value indicates a higher layer.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @see SetLayerZorder
* @since 1.0
* @version 1.0
*/
int32_t (*GetLayerZorder)(uint32_t devId, uint32_t layerId, uint32_t *zorder);
/**
* @brief Sets layer premultiplication.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param preMul Specifies whether to enable layer premultiplication. The value 1 means to enable layer
* premultiplication, and 0 means the opposite.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @see GetLayerPreMulti
* @since 1.0
* @version 1.0
*/
int32_t (*SetLayerPreMulti)(uint32_t devId, uint32_t layerId, bool preMul);
/**
* @brief Obtains the premultiplication flag of a layer.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param preMul Indicates the pointer to the obtained layer premultiplication flag.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @see SetLayerPreMulti
* @since 1.0
* @version 1.0
*/
int32_t (*GetLayerPreMulti)(uint32_t devId, uint32_t layerId, bool *preMul);
/**
* @brief Sets the alpha value for a layer.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param alpha Indicates the pointer to the alpha value to set.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @see GetLayerAlpha
* @since 1.0
* @version 1.0
*/
int32_t (*SetLayerAlpha)(uint32_t devId, uint32_t layerId, LayerAlpha *alpha);
/**
* @brief Obtains the alpha value of a layer.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param alpha Indicates the pointer to the obtained alpha value.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @see SetLayerAlpha
* @since 1.0
* @version 1.0
*/
int32_t (*GetLayerAlpha)(uint32_t devId, uint32_t layerId, LayerAlpha *alpha);
/**
* @brief Sets the color key for a layer. The color key is used during layer overlay.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param enable Specify whether to enable the color key.
* @param key Indicates the color key.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @see GetLayerColorKey
* @since 1.0
* @version 1.0
*/
int32_t (*SetLayerColorKey)(uint32_t devId, uint32_t layerId, bool enable, uint32_t key);
/**
* @brief Obtains the color key of a layer.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param enable Indicates the pointer to the color key enable bit.
* @param key Indicates the pointer to the color key.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @see SetLayerColorKey
* @since 1.0
* @version 1.0
*/
int32_t (*GetLayerColorKey)(uint32_t devId, uint32_t layerId, bool *enable, uint32_t *key);
/**
* @brief Sets the palette for a layer.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param palette Indicates the pointer to the palette to set.
* @param len Indicates the length of the palette.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @see GetLayerPalette
* @since 1.0
* @version 1.0
*/
int32_t (*SetLayerPalette)(uint32_t devId, uint32_t layerId, uint32_t *palette, uint32_t len);
/**
* @brief Obtains the palette of a layer.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param palette Indicates the pointer to the obtained palette.
* @param len Indicates the length of the palette.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @see SetLayerPalette
* @since 1.0
* @version 1.0
*/
int32_t (*GetLayerPalette)(uint32_t devId, uint32_t layerId, uint32_t *palette, uint32_t len);
/**
* @brief Sets the transform mode for rotating, scaling, or moving a layer.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param type Indicates the transformation mode to set.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @since 1.0
* @version 1.0
*/
int32_t (*SetTransformMode)(uint32_t devId, uint32_t layerId, TransformType type);
/**
* @brief Sets the compression feature for a layer.
*
* In specific scenarios, images need to be compressed. You can set whether to enable layer compression.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param compType Specifies whether to enable the compression feature. The value true>/b> means to enable
* compression, and false> means the opposite.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @see GetLayerCompression
* @since 1.0
* @version 1.0
*/
int32_t (*SetLayerCompression)(uint32_t devId, uint32_t layerId, int32_t compType);
/**
* @brief Checks whether the compression feature is enabled for a layer.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param compType Indicates the pointer to the variable specifying whether the compression feature is enabled.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @see SetLayerCompression
* @since 1.0
* @version 1.0
*/
int32_t (*GetLayerCompression)(uint32_t devId, uint32_t layerId, int32_t *compType);
/**
* @brief Sets the flushing area for a layer.
*
* After the GUI draws an image, you must set the layer flushing area before calling the {@link Flush} function to
* flush the screen.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param region Indicates the pointer to the flushing area to set.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @since 1.0
* @version 1.0
*/
int32_t (*SetLayerDirtyRegion)(uint32_t devId, uint32_t layerId, IRect *region);
/**
* @brief Obtains the buffer of a layer.
*
* After drawing a picture in the buffer, the application calls the {@link Flush} function to display the picture
* on the screen.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param buffer Indicates the pointer to the obtained buffer.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @see Flush
* @since 1.0
* @version 1.0
*/
int32_t (*GetLayerBuffer)(uint32_t devId, uint32_t layerId, LayerBuffer *buffer);
/**
* @brief Flushes a layer.
*
* Display data in the buffer is flushed to a specified layer so that the image data is displayed on the screen.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param buffer Indicates the pointer to the buffer in which the display data is to flush.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @since 1.0
* @version 1.0
*/
int32_t (*Flush)(uint32_t devId, uint32_t layerId, LayerBuffer *buffer);
/**
* @brief Waits for the arrival of vertical blanking.
*
* This function blocks the process until vertical blanking arrives, implementing the synchronization between
* software and hardware.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param timeOut Indicates the maximum duration that the process waits for the arrival of vertical blanking.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @since 1.0
* @version 1.0
*/
int32_t (*WaitForVBlank)(uint32_t devId, uint32_t layerId, int32_t timeOut);
/**
* @brief Implements the snapshot feature.
*
* This function saves the screenshot of image data on the display device to the buffer for debugging or as
* requested by applications.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param buffer Indicates the pointer to the buffer for saving screenshots.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @since 1.0
* @version 1.0
*/
int32_t (*SnapShot)(uint32_t devId, LayerBuffer *buffer);
/**
* @brief Set the visible region for a layer
*
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param num Indicates the count of rect. the region contains multiple IRect, the num means how much rects in the
* region.
* @param rect Indicates the pointer of the rectes.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @since 2.0
* @version 2.0
*/
int32_t (*SetLayerVisibleRegion)(uint32_t devId, uint32_t layerId, uint32_t num, IRect *rect);
/**
* @brief Set the buffer for a layer.
*
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param buffer Indicates the pointer of the buffer handle. The buffer handle should contain all information of the
* buffer which will be used for composition.
* @param fence Indicates the fd of a sync file.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @since 2.0
* @version 2.0
*/
int32_t (*SetLayerBuffer)(uint32_t devId, uint32_t layerId, const BufferHandle *buffer, int32_t fence);
/**
* @brief Extension interface
*
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param cmd Indicates extension cmd to be used to identify different intention.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @since 2.0
* @version 2.0
*/
int32_t (*InvokeLayerCmd)(uint32_t devId, uint32_t layerId, uint32_t cmd, ...);
/**
* @brief set the composition type which the client expect
*
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param type Indicates the composition type which the client expect. It may vary with the implementation.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @since 2.0
* @version 2.0
*/
int32_t (*SetLayerCompositionType)(uint32_t devId, uint32_t layerId, CompositionType type);
/**
* @brief set the blend type
*
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param type Indicates blend type
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @since 2.0
* @version 2.0
*/
int32_t (*SetLayerBlendType)(uint32_t devId, uint32_t layerId, BlendType type);
/**
* @brief Sets a 4x4 color transformation matrix.
*
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param matrix Indicates the 4x4 color transformation matrix.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @since 1.0
* @version 1.0
*/
int32_t (*SetLayerColorTransform)(uint32_t devId, uint32_t layerId, const float *matrix);
/**
* @brief Sets a color data space for a layer.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param colorSpace Indicates the color data space to set.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @since 1.0
* @version 1.0
*/
int32_t (*SetLayerColorDataSpace)(uint32_t devId, uint32_t layerId, ColorDataSpace colorSpace);
/**
* @brief Obtains the color data space of a layer.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param colorSpace Indicates the pointer to the color data space obtained.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @since 1.0
* @version 1.0
*/
int32_t (*GetLayerColorDataSpace)(uint32_t devId, uint32_t layerId, ColorDataSpace *colorSpace);
/**
* @brief Sets metadata for a layer.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param num Indicates the number of metadata records.
* @param metaData Indicates the pointer to the metadata to set.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @since 1.0
* @version 1.0
*/
int32_t (*SetLayerMetaData)(uint32_t devId, uint32_t layerId, uint32_t num, const HDRMetaData *metaData);
/**
* @brief Sets a metadata set for a layer.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param key Indicates the metadata key.
* @param num Indicates the number of metadata records.
* @param metaData Indicates the pointer to the metadata set of the uint8_t type to set.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @since 1.0
* @version 1.0
*/
int32_t (*SetLayerMetaDataSet)(uint32_t devId, uint32_t layerId, HDRMetadataKey key, uint32_t num,
const uint8_t *metaData);
/**
* @brief Obtains the hardware display present timestamp type supported by a layer.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param type Indicates the pointer to the present timestamp type obtained.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @since 1.0
* @version 1.0
*/
int32_t (*GetSupportedPresentTimestamp)(uint32_t devId, uint32_t layerId, PresentTimestampType *type);
/**
* @brief Obtains the hardware display present timestamp of a layer.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param pts Indicates the pointer to the present timestamp obtained.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @since 1.0
* @version 1.0
*/
int32_t (*GetHwPresentTimestamp)(uint32_t devId, uint32_t layerId, PresentTimestamp *pts);
/**
* @brief Sets a tunnel handle for a layer.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param handle Indicates the handle of ExtDataHandle.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @since 3.2
* @version 1.0
*/
int32_t (*SetLayerTunnelHandle)(uint32_t devId, uint32_t layerId, ExtDataHandle *handle);
/**
* @brief Obtains the release fence of a layer.
*
* @param devId Indicates the ID of the display device. The value ranges from 0 to 4, where 0 indicates the first
* display device, and 4 indicates the last display device.
* @param layerId Indicates the layer ID, which uniquely identifies a layer. You can perform operations on the layer
* with the specified layer ID.
* @param fence Indicates the pointer to the release fence obtained.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @since 3.2
* @version 1.0
*/
int32_t (*GetLayerReleaseFence)(uint32_t devId, uint32_t layerId, int32_t *fence);
} LayerFuncs;
/**
* @brief Initializes the layer to apply for resources used by the layer and obtain the pointer to functions for
* layer operations.
*
* @param funcs Indicates the double pointer to functions for layer operations. Memory is allocated automatically when
* you initiate the layer module, so you can simply use the pointer to gain access to the functions.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @see LayerUninitialize
* @since 1.0
* @version 1.0
*/
int32_t LayerInitialize(LayerFuncs **funcs);
/**
* @brief Deinitializes the layer module to release the memory allocated to the pointer to functions for
* layer operations.
*
* @param funcs Indicates the pointer to functions for layer operations.
*
* @return Returns 0 if the operation is successful; returns an error code defined in {@link DispErrCode}
* otherwise.
* @see LayerInitialize
* @since 1.0
* @version 1.0
*/
int32_t LayerUninitialize(LayerFuncs *funcs);
#ifdef __cplusplus
}
#endif
#endif
/** @} */