diff --git a/zh-cn/device_api/hdi/display/buffer/v1_0/DisplayBufferType.idl b/zh-cn/device_api/hdi/display/buffer/v1_0/DisplayBufferType.idl new file mode 100644 index 0000000000000000000000000000000000000000..a679f9df053d476dc663856192b96485d06d5930 --- /dev/null +++ b/zh-cn/device_api/hdi/display/buffer/v1_0/DisplayBufferType.idl @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2022 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. + */ + +/** + * @brief 定义关于要分配的内存的信息。 + * + */ +struct AllocInfo { + unsigned int width; /**< 申请内存宽度 */ + unsigned int height; /**< 申请内存高度 */ + unsigned long usage; /**< 申请内存的使用场景 */ + unsigned int format; /**< 申请内存格式 */ + unsigned int expectedSize; /**< 申请内存大小 */ +}; + +/** + * @brief 用于验证内存分配信息的结构体定义 + * + */ +struct VerifyAllocInfo { + unsigned int width; /**< 分配内存的宽度 */ + unsigned int height; /**< 分配内存的高度 */ + unsigned long usage; /**< 内存的用处 */ + unsigned int format; /**< 分配内存的像素格式 */ +}; diff --git a/zh-cn/device_api/hdi/display/buffer/v1_0/IAllocatorInterface.idl b/zh-cn/device_api/hdi/display/buffer/v1_0/IAllocatorInterface.idl new file mode 100644 index 0000000000000000000000000000000000000000..30dd8e3ed8e9ca316f0c268aa36492ed16f487e1 --- /dev/null +++ b/zh-cn/device_api/hdi/display/buffer/v1_0/IAllocatorInterface.idl @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2022 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. + */ + +/** + * @brief Display模块接口的包路径。 + * + * @since 1.0 + * @version 1.0 + */ +package ohos.hdi.display.buffer.v1_0; + +import ohos.hdi.display.buffer.v1_0.DisplayBufferType; + +sequenceable OHOS.HDI.Display.BufferHandleParcelable; + +interface IAllocatorInterface { + /** + * @brief 显示内存分配。 + * + * 根据GUI图形系统传递的参数分配内存,分配的内存根据类型可分为共享内存、cache内存和非cache内存等。 + * + * @param info 指示申请内存AllocInfo信息. + * @param handle 指向申请的内存handle指针。 + * + * @return DISPLAY_SUCCESS 表示执行成功。 + * @return 其他值表示执行失败,具体错误码查看{@link DispErrCode}。 + * + * @since 1.0 + * @version 1.0 + */ + AllocMem([in] struct AllocInfo info, [out] BufferHandleParcelable handle); +} diff --git a/zh-cn/device_api/hdi/display/buffer/v1_0/IMapperInterface.idl b/zh-cn/device_api/hdi/display/buffer/v1_0/IMapperInterface.idl new file mode 100644 index 0000000000000000000000000000000000000000..553001da2b7b11e5932c045d4243ec655c6f5d00 --- /dev/null +++ b/zh-cn/device_api/hdi/display/buffer/v1_0/IMapperInterface.idl @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2022 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. + */ + +/** + * @brief Display模块接口的包路径。 + * + * @since 1.0 + * @version 1.0 + */ +package ohos.hdi.display.buffer.v1_0; + +import ohos.hdi.display.buffer.v1_0.DisplayBufferType; + +sequenceable OHOS.HDI.Display.BufferHandleParcelable; + +interface IMapperInterface { + /** + * @brief 显示内存释放。 + * + * @param handle 待释放的内存handle指针。 + * + * @return 成功返回有效地址,失败返回NULL。 + * + * @since 1.0 + * @version 1.0 + */ + FreeMem([in] BufferHandleParcelable handle); + + /** + * @brief 显示内存映射,将内存映射到对应的进程地址空间中。 + * + * @param handle 待映射内存handle指针。 + * + * @return 成功返回有效地址,失败返回NULL。 + * + * @since 1.0 + * @version 1.0 + */ + Mmap([in] BufferHandleParcelable handle); + + /** + * @brief YUV 内存映射。 + * + * @param handle 指示内存映射的输出缓存。 + * @param info 指示内存映射的YUVDescInfo信息。 + * + * @return 成功返回有效地址,失败返回 NULL。 + * + * @since 3.2 + * @version 1.0 + */ + MmapCache([in] BufferHandleParcelable buffer); + + /** + * @brief 内存反映射,将内存进行反映射。 + * + * @param handle 待反映射内存handle指针。 + * + * @return DISPLAY_SUCCESS 表示执行成功。 + * @return 其他值表示执行失败,具体错误码查看{@link DispErrCode}。 + * + * @since 1.0 + * @version 1.0 + */ + Unmap([in] BufferHandleParcelable handle); + + /** + * @brief 刷新Mmap映射的cache,刷新Mmap映射的cache里的内容到内存并且使cache里的内容无效。 + * + * @param handle 待刷新cache的handle指针。 + * + * @return DISPLAY_SUCCESS 表示执行成功。 + * @return 其他值表示执行失败,具体错误码查看{@link DispErrCode}。 + * + * @since 1.0 + * @version 1.0 + */ + FlushCache([in] BufferHandleParcelable handle); + + /** + * @brief 刷新Mmap映射的cache,刷新Mmap映射的cache里的内容到内存并且使cache里的内容无效。 + * + * @param handle 待刷新cache的handle指针。 + * + * @return DISPLAY_SUCCESS 表示执行成功。 + * @return 其他值表示执行失败,具体错误码查看{@link DispErrCode}。 + * + * @since 1.0 + * @version 1.0 + */ + FlushMCache([in] BufferHandleParcelable buffer); + + /** + * @brief 检测给定的VerifyAllocInfo数组信息能否申请内存成功。 + * + * @param num VerifyAllocInfo数组个数。 + * @param infos VerifyAllocInfo数组首地址。 + * @param supporteds supporteds数组首地址, 表示能否申请成功。 + * + * @return DISPLAY_SUCCESS 表示执行成功。 + * @return 其他值表示执行失败,具体错误码查看{@link DispErrCode}。 + * + * @since 1.0 + * @version 1.0 + */ + InvalidateCache([in] BufferHandleParcelable handle); +} diff --git a/zh-cn/device_api/hdi/display/composer/v1_0/DisplayComposerType.idl b/zh-cn/device_api/hdi/display/composer/v1_0/DisplayComposerType.idl new file mode 100644 index 0000000000000000000000000000000000000000..cb6dfd004ba05c2bdc9eb6e2da56847d9028e864 --- /dev/null +++ b/zh-cn/device_api/hdi/display/composer/v1_0/DisplayComposerType.idl @@ -0,0 +1,675 @@ +/* + * Copyright (c) 2022 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. + */ + +/** + * @brief Display模块接口的包路径。 + * + * @since 1.0 + * @version 1.0 + */ +package ohos.hdi.display.composer.v1_0; +sequenceable OHOS.HDI.Display.BufferHandleParcelable; +sequenceable OHOS.HDI.Display.HdifdParcelable; + +enum DispCmd { + /* request cmd */ + REQUEST_CMD_PREPAREDISPLAYLAYERS = 256, + REQUEST_CMD_SETDISPLAYCLIENTBUFFER = 257, + REQUEST_CMD_SETDISPLAYCLIENTDAMAGE = 258, + REQUEST_CMD_COMMIT = 259, + REQUEST_CMD_SETLAYERALPHA = 260, + REQUEST_CMD_SETLAYERPOSITION = 261, + REQUEST_CMD_SETLAYERCROP = 262, + REQUEST_CMD_SETLAYERZORDER = 263, + REQUEST_CMD_SETLAYERPREMULTI = 264, + REQUEST_CMD_SETTRANSFORMMODE = 265, + REQUEST_CMD_SETLAYERDIRTYREGION = 266, + REQUEST_CMD_SETLAYERVISIBLEREGION = 267, + REQUEST_CMD_SETLAYERBUFFER = 268, + REQUEST_CMD_SETLAYERCOMPOSITIONTYPE = 269, + REQUEST_CMD_SETLAYERBLENDTYPE = 270, + REQUEST_CMD_SETLAYERVISIBLE = 271, + /* reply cmd */ + REPLY_CMD_SETERROR = 1024, + REPLY_CMD_PREPAREDISPLAYLAYERS = 1025, + REPLY_CMD_COMMIT = 1026, + /* Pack control cmd */ + CONTROL_CMD_REQUEST_BEGIN = 8192, + CONTROL_CMD_REPLY_BEGIN = 8193, + CONTROL_CMD_REQUEST_END = 8194, + CONTROL_CMD_REPLY_END = 8195, +}; + +/** + * @brief 枚举接口类型。 + * + */ +enum InterfaceType { + DISP_INTF_HDMI = 0, /**< HDMI 接口 */ + DISP_INTF_LCD = 1, /**< LCD 接口 */ + DISP_INTF_BT1120 = 2, /**< BT1120 接口 */ + DISP_INTF_BT656 = 3, /**< BT656 接口 */ + DISP_INTF_YPBPR = 4, /**< YPBPR 接口 */ + DISP_INTF_RGB = 5, /**< RGB 接口 */ + DISP_INTF_CVBS = 6, /**< CVBS 接口 */ + DISP_INTF_SVIDEO = 7, /**< SVIDEO 接口 */ + DISP_INTF_VGA = 8, /**< VGA 接口 */ + DISP_INTF_MIPI = 9, /**< MIPI 接口 */ + DISP_INTF_PANEL = 10, /**< PANEL 接口 */ + DISP_INTF_BUTT = 11, /**< BUTT 接口, 一个不可用类型, 用于默认初始化 */ +}; + +/** + * @brief 返回值类型定义。 + * + */ +enum DispErrCode { + DISPLAY_SUCCESS = 0, /**< 成功 */ + DISPLAY_FAILURE = -1, /**< 失败 */ + DISPLAY_FD_ERR = -2, /**< fd错误 */ + DISPLAY_PARAM_ERR = -3, /**< 参数错误 */ + DISPLAY_NULL_PTR = -4, /**< 空指针 */ + DISPLAY_NOT_SUPPORT = -5, /**< 不支持的特性 */ + DISPLAY_NOMEM = -6, /**< 内存不足 */ + DISPLAY_SYS_BUSY = -7, /**< 系统繁忙 */ + DISPLAY_NOT_PERM = -8, /**< 操作不允许 */ +}; + +/** + * @brief 图层类型定义。 + * + */ +enum LayerType { + LAYER_TYPE_GRAPHIC = 0, /**< 图形层 */ + LAYER_TYPE_OVERLAY = 1, /**< 视频层 */ + LAYER_TYPE_SDIEBAND = 2, /**< 媒体播放 */ + LAYER_TYPE_CURSOR = 3, /**< 光标层 */ + LAYER_TYPE_BUTT = 4, /**< 空图层 */ +}; + +enum BufferUsage { + HBM_USE_CPU_READ = ( 1 << 0 ), + HBM_USE_CPU_WRITE = ( 1 << 1 ), + HBM_USE_MEM_MMZ = ( 1 << 2 ), + HBM_USE_MEM_DMA = ( 1 << 3 ), + HBM_USE_MEM_SHARE = ( 1 << 4 ), + HBM_USE_MEM_MMZ_CACHE = ( 1 << 5 ), + HBM_USE_MEM_FB = ( 1 << 6 ), + HBM_USE_ASSIGN_SIZE = ( 1 << 7 ), +}; + +/** + * @brief 像素格式类型定义。 + * + */ +enum PixelFormat { + PIXEL_FMT_CLUT8 = 0, /**< CLUT8 格式 */ + PIXEL_FMT_CLUT1 = 1, /**< CLUT1 格式 */ + PIXEL_FMT_CLUT4 = 2, /**< CLUT4 格式 */ + PIXEL_FMT_RGB_565 = 3, /**< RGB565 格式 */ + PIXEL_FMT_RGBA_5658 = 4, /**< RGBA5658 格式 */ + PIXEL_FMT_RGBX_4444 = 5, /**< RGBX4444 格式 */ + PIXEL_FMT_RGBA_4444 = 6, /**< RGBA4444 格式 */ + PIXEL_FMT_RGB_444 = 7, /**< RGB444 格式 */ + PIXEL_FMT_RGBX_5551 = 8, /**< RGBX5551 格式 */ + PIXEL_FMT_RGBA_5551 = 9, /**< RGBA5551 格式 */ + PIXEL_FMT_RGB_555 = 10, /**< RGB555 格式 */ + PIXEL_FMT_RGBX_8888 = 11, /**< RGBX8888 格式 */ + PIXEL_FMT_RGBA_8888 = 12, /**< RGBA8888 格式 */ + PIXEL_FMT_RGB_888 = 13, /**< RGB888 格式 */ + PIXEL_FMT_BGR_565 = 14, /**< BGR565 格式 */ + PIXEL_FMT_BGRX_4444 = 15, /**< BGRX4444 格式 */ + PIXEL_FMT_BGRA_4444 = 16, /**< BGRA4444 格式 */ + PIXEL_FMT_BGRX_5551 = 17, /**< BGRX5551 格式 */ + PIXEL_FMT_BGRA_5551 = 18, /**< BGRA5551 格式 */ + PIXEL_FMT_BGRX_8888 = 19, /**< BGRX8888 格式 */ + PIXEL_FMT_BGRA_8888 = 20, /**< BGRA8888 格式 */ + PIXEL_FMT_YUV_422_I = 21, /**< YUV422 交错格式 */ + PIXEL_FMT_YCBCR_422_SP = 22, /**< YCBCR422 半平面格式 */ + PIXEL_FMT_YCRCB_422_SP = 23, /**< YCRCB422 半平面格式 */ + PIXEL_FMT_YCBCR_420_SP = 24, /**< YCBCR420 半平面格式 */ + PIXEL_FMT_YCRCB_420_SP = 25, /**< YCRCB420 半平面格式 */ + PIXEL_FMT_YCBCR_422_P = 26, /**< YCBCR422 平面格式 */ + PIXEL_FMT_YCRCB_422_P = 27, /**< YCRCB422 平面格式 */ + PIXEL_FMT_YCBCR_420_P = 28, /**< YCBCR420 平面格式 */ + PIXEL_FMT_YCRCB_420_P = 29, /**< YCRCB420 平面格式 */ + PIXEL_FMT_YUYV_422_PKG = 30, /**< YUYV422 打包格式 */ + PIXEL_FMT_UYVY_422_PKG = 31, /**< UYVY422 打包格式t */ + PIXEL_FMT_YVYU_422_PKG = 32, /**< YVYU422 打包格式 */ + PIXEL_FMT_VYUY_422_PKG = 33, /**< VYUY422 打包格式*/ + PIXEL_FMT_BUTT = 34, /**< Invalid 像素格式 */ +}; + +/** + * @brief 图层变换类型定义。 + * + */ +enum TransformType { + ROTATE_NONE = 0, /**< 不旋转 */ + ROTATE_90 = 1, /**< 旋转90度 */ + ROTATE_180 = 2, /**< 旋转180度 */ + ROTATE_270 = 3, /**< 旋转270度 */ + ROTATE_BUTT = 4, /**< 无效操作 */ +}; + +/** + * @brief 显示内存类型定义。 + * + * 根据图形系统指定的类型进行分配,包括带cache或者不带cache的内存。 + * + */ +enum BlendType { + BLEND_NONE = 0, /**< No 混合操作 */ + BLEND_CLEAR = 1, /**< CLEAR 混合操作 */ + BLEND_SRC = 2, /**< SRC 混合操作 */ + BLEND_SRCOVER = 3, /**< SRC_OVER 混合操作 */ + BLEND_DSTOVER = 4, /**< DST_OVER 混合操作 */ + BLEND_SRCIN = 5, /**< SRC_IN 混合操作 */ + BLEND_DSTIN = 6, /**< DST_IN 混合操作 */ + BLEND_SRCOUT = 7, /**< SRC_OUT 混合操作 */ + BLEND_DSTOUT = 8, /**< DST_OUT 混合操作 */ + BLEND_SRCATOP = 9, /**< SRC_ATOP 混合操作 */ + BLEND_DSTATOP = 10, /**< DST_ATOP 混合操作 */ + BLEND_ADD = 11, /**< ADD 混合操作 */ + BLEND_XOR = 12, /**< XOR 混合操作 */ + BLEND_DST = 13, /**< DST 混合操作 */ + BLEND_AKS = 14, /**< AKS 混合操作 */ + BLEND_AKD = 15, /**< AKD 混合操作 */ + BLEND_BUTT = 16, /**< 空操作 */ +}; + +/** + * @brief 硬件加速支持的ROP操作类型。 + * + * 硬件加速支持的ROP操作类型,在将前景位图的RGB颜色分量和Alpha分量值与背景位图的RGB颜色 + * 分量值和Alpha分量值进行按位的布尔运算(包括按位与,按位或等),将结果输出。 + * + */ +enum RopType { + ROP_BLACK = 0, /**< 黑色 */ + ROP_NOTMERGEPEN = 1, /**< ~(S2+S1) */ + ROP_MASKNOTPEN = 2, /**< ~S2&S1 */ + ROP_NOTCOPYPEN = 3, /**< ~S2 */ + ROP_MASKPENNOT = 4, /**< S2&~S1 */ + ROP_NOT = 5, /**< ~S1 */ + ROP_XORPEN = 6, /**< S2^S1 */ + ROP_NOTMASKPEN = 7, /**< ~(S2&S1) */ + ROP_MASKPEN = 8, /**< S2&S1 */ + ROP_NOTXORPEN = 9, /**< ~(S2^S1) */ + ROP_NOP = 10, /**< S1 */ + ROP_MERGENOTPEN = 11, /**< ~S2+S1 */ + ROP_COPYPE = 12, /**< S2 */ + ROP_MERGEPENNOT = 13, /**< S2+~S1 */ + ROP_MERGEPEN = 14, /**< S2+S1 */ + ROP_WHITE = 15, /**< 白色 */ + ROP_BUTT = 16, /**< 无效值 */ +}; + +/** + * @brief Color key操作类型定义,即硬件加速支持的Color key操作类型。 + * + */ +enum ColorKey { + CKEY_NONE = 0, /**< 不使用colorkey */ + CKEY_SRC = 1, /**< 使用源colorkey */ + CKEY_DST = 2, /**< 使用目标colorkey */ + CKEY_BUTT = 3, /**< 空操作 */ +}; + +/** + * @brief 硬件加速支持的镜像操作类型定义 + * + */ +enum MirrorType { + MIRROR_NONE = 0, /**< 不使用镜像 */ + MIRROR_LR = 1, /**< 左右镜像 */ + MIRROR_TB = 2, /**< 上下镜像 */ + MIRROR_BUTT = 3, /**< 空操作 */ +}; + +/** + * @brief 热插拔连接类型定义 + * + */ +enum Connection { + CON_INVALID = 0, /**< 无效类型 */ + CONNECTED = 1, /**< 已连接 */ + DISCONNECTED = 2, /**< 断开连接 */ +}; + +/** + * @brief 枚举显示状态 + */ +enum DispPowerStatus { + POWER_STATUS_ON = 0, /**< 上电模式 */ + POWER_STATUS_STANDBY = 1, /**< 待机模式 */ + POWER_STATUS_SUSPEND = 2, /**< 休眠模式 */ + POWER_STATUS_OFF = 3, /**< 下电模式 */ + POWER_STATUS_BUTT = 4, /**< 默认模式 */ +}; + +/** + * @brief 枚举特殊层的组合类型。 + */ +enum CompositionType { + COMPOSITION_CLIENT = 0, /**< Client 合成类型,使用CPU或者GPU合成 */ + COMPOSITION_DEVICE = 1, /**< Device 合成类型,使用Device合成 */ + COMPOSITION_CURSOR = 2, /**< Cursor合成类型,用于光标合成 */ + COMPOSITION_VIDEO = 3, /**< Video合成类型,用于视频层合成 */ + COMPOSITION_BUTT = 4, /**< 合成类型, 一个不可用类型, 用于默认初始化 */ +}; + +/** + * @brief 色域类型枚举值 + * + */ +enum ColorGamut { + COLOR_GAMUT_INVALID = -1, /**< 无效值 */ + COLOR_GAMUT_NATIVE = 0, /**< 默认值 */ + COLOR_GAMUT_SATNDARD_BT601 = 1, /**< Standard BT601类型 */ + COLOR_GAMUT_STANDARD_BT709 = 2, /**< Standard BT709类型 */ + COLOR_GAMUT_DCI_P3 = 3, /**< DCI P3类型 */ + COLOR_GAMUT_SRGB = 4, /**< SRGB类型 */ + COLOR_GAMUT_ADOBE_RGB = 5, /**< Adobe RGB类型 */ + COLOR_GAMUT_DISPLAY_P3 = 6, /**< display P3类型 */ + COLOR_GAMUT_BT2020 = 7, /**< BT2020类型 */ + COLOR_GAMUT_BT2100_PQ = 8, /**< BT2100 PQ类型 */ + COLOR_GAMUT_BT2100_HLG = 9, /**< BT2100 HLG类型 */ + COLOR_GAMUT_DISPLAY_BT2020 = 10, /**< Display BT2020类型 */ +}; + +/** + * @brief 枚举色域的映射类型 + * + */ +enum GamutMap { + GAMUT_MAP_CONSTANT = 0, /**< 不变 */ + GAMUT_MAP_EXPANSION = 1, /**< 映射增强 */ + GAMUT_MAP_HDR_CONSTANT = 2, /**< 不变,用于HDR */ + GAMUT_MAP_HDR_EXPANSION = 3, /**< 映射增强, 用于HDR */ +}; + +/** + * @brief 枚举颜色空间的类型 + * + */ +enum ColorDataSpace { + /** 未知的 */ + COLOR_DATA_SPACE_UNKNOWN = 0, + /** BT601色域 */ + GAMUT_BT601 = 1, + /** BT709色域 */ + GAMUT_BT709 = 2, + /** DCI_P3色域 */ + GAMUT_DCI_P3 = 3, + /** SRGB色域 */ + GAMUT_SRGB = 4, + /** ADOBE_RGB色域 */ + GAMUT_ADOBE_RGB = 5, + /** DISPLAY_P3色域 */ + GAMUT_DISPLAY_P3 = 6, + /** BT2020色域 */ + GAMUT_BT2020 = 7, + /** BT2100_PQ色域 */ + GAMUT_BT2100_PQ = 8, + /** BT2100_HLG色域 */ + GAMUT_BT2100_HLG = 9, + /** DISPLAY_BT2020色域 */ + GAMUT_DISPLAY_BT2020 = 10, + /** UNSPECIFIED转换函数 */ + TRANSFORM_FUNC_UNSPECIFIED = 256, + /** LINEAR转换函数 */ + TRANSFORM_FUNC_LINEAR = 512, + /** SRGB转换函数 */ + TRANSFORM_FUNC_SRGB = 768, + /** SMPTE_170M转换函数 */ + TRANSFORM_FUNC_SMPTE_170M = 1024, + /** GM2_2转换函数 */ + TRANSFORM_FUNC_GM2_2 = 1280, + /** GM2_6转换函数 */ + TRANSFORM_FUNC_GM2_6 = 1536, + /** GM2_8转换函数 */ + TRANSFORM_FUNC_GM2_8 = 1792, + /** ST2084转换函数 */ + TRANSFORM_FUNC_ST2084 = 2048, + /** HLG转换函数 */ + TRANSFORM_FUNC_HLG = 2304, + /** UNSPECIFIED精度 */ + PRECISION_UNSPECIFIED = 65536, + /** FULL精度 */ + PRECISION_FULL = 131072, + /** LIMITED精度 */ + PRESION_LIMITED = 196608, + /** EXTENDED精度 */ + PRESION_EXTENDED = 262144, + /** BT601色域 | SMPTE_170M转换函数 | FULL精度 */ + BT601_SMPTE170M_FULL = GAMUT_BT601 | TRANSFORM_FUNC_SMPTE_170M | PRECISION_FULL, + /** BT601色域 | SMPTE_170M转换函数 | LIMITED精度 */ + BT601_SMPTE170M_LIMITED = GAMUT_BT601 | TRANSFORM_FUNC_SMPTE_170M | PRESION_LIMITED, + /** BT709色域 | LINEAR转换函数 | FULL精度 */ + BT709_LINEAR_FULL = GAMUT_BT709 | TRANSFORM_FUNC_LINEAR | PRECISION_FULL, + /** BT709色域 | LINEAR转换函数 | EXTENDED精度 */ + BT709_LINEAR_EXTENDED = GAMUT_BT709 | TRANSFORM_FUNC_LINEAR | PRESION_EXTENDED, + /** BT709色域 | SRGB转换函数 | FULL精度 */ + BT709_SRGB_FULL = GAMUT_BT709 | TRANSFORM_FUNC_SRGB | PRECISION_FULL, + /** BT709色域 | SRGB转换函数 | EXTENDED精度 */ + BT709_SRGB_EXTENDED = GAMUT_BT709 | TRANSFORM_FUNC_SRGB | PRESION_EXTENDED, + /** BT709色域 | SMPTE_170M转换函数 | LIMITED精度 */ + BT709_SMPTE170M_LIMITED = GAMUT_BT709 | TRANSFORM_FUNC_SMPTE_170M | PRESION_LIMITED, + /** DCI_P3色域 | LINEAR转换函数 | FULL精度 */ + DCI_P3_LINEAR_FULL = GAMUT_DCI_P3 | TRANSFORM_FUNC_LINEAR | PRECISION_FULL, + /** DCI_P3色域 | GM2_6转换函数 | FULL精度 */ + DCI_P3_GAMMA26_FULL = GAMUT_DCI_P3 | TRANSFORM_FUNC_GM2_6 | PRECISION_FULL, + /** DISPLAY_P3色域 | LINEAR转换函数 | FULL精度 */ + DISPLAY_P3_LINEAR_FULL = GAMUT_DISPLAY_P3 | TRANSFORM_FUNC_LINEAR | PRECISION_FULL, + /** DCI_P3色域 | SRGB转换函数 | FULL精度 */ + DCI_P3_SRGB_FULL = GAMUT_DCI_P3 | TRANSFORM_FUNC_SRGB | PRECISION_FULL, + /** ADOBE_RGB色域 | GM2_2转换函数 | FULL精度 */ + ADOBE_RGB_GAMMA22_FULL = GAMUT_ADOBE_RGB | TRANSFORM_FUNC_GM2_2 | PRECISION_FULL, + /** BT2020色域 | LINEAR转换函数 | FULL精度 */ + BT2020_LINEAR_FULL = GAMUT_BT2020 | TRANSFORM_FUNC_LINEAR | PRECISION_FULL, + /** BT2020色域 | SRGB转换函数 | FULL精度 */ + BT2020_SRGB_FULL = GAMUT_BT2020 | TRANSFORM_FUNC_SRGB | PRECISION_FULL, + /** BT2020色域 | SMPTE_170M转换函数 | FULL精度 */ + BT2020_SMPTE170M_FULL = GAMUT_BT2020 | TRANSFORM_FUNC_SMPTE_170M | PRECISION_FULL, + /** BT2020色域 | ST2084转换函数 | FULL精度 */ + BT2020_ST2084_FULL = GAMUT_BT2020 | TRANSFORM_FUNC_ST2084 | PRECISION_FULL, + /** BT2020色域 | HLG转换函数 | FULL精度 */ + BT2020_HLG_FULL = GAMUT_BT2020 | TRANSFORM_FUNC_HLG | PRECISION_FULL, + /** BT2020色域 | ST2084转换函数 | LIMITED精度 */ + BT2020_ST2084_LIMITED = GAMUT_BT2020 | TRANSFORM_FUNC_ST2084 | PRESION_LIMITED, +}; + +/** + * @brief 枚举HDR格式 + * + */ +enum HDRFormat { + NOT_SUPPORT_HDR = 0, /**< 不支持HDR */ + DOLBY_VISION = 1, /**< Dolby Vision格式 */ + HDR10 = 2, /**< HDR10格式 */ + HLG = 3, /**< HLG格式 */ + HDR10_PLUS = 4, /**< HDR10 Plus格式 */ + HDR_VIVID = 5, /**< Vivid格式 */ +}; + +/** + * @brief 枚举HDR元数据关键字 + * + */ +enum HDRMetadataKey { + MATAKEY_RED_PRIMARY_X = 0, /**< 红基色X坐标 */ + MATAKEY_RED_PRIMARY_Y = 1, /**< 红基色Y坐标 */ + MATAKEY_GREEN_PRIMARY_X = 2, /**< 绿基色X坐标 */ + MATAKEY_GREEN_PRIMARY_Y = 3, /**< 绿基色Y坐标 */ + MATAKEY_BLUE_PRIMARY_X = 4, /**< 蓝基色X坐标 */ + MATAKEY_BLUE_PRIMARY_Y = 5, /**< 蓝基色Y坐标 */ + MATAKEY_WHITE_PRIMARY_X = 6, /**< 白点X坐标 */ + MATAKEY_WHITE_PRIMARY_Y = 7, /**< 白点Y坐标 */ + MATAKEY_MAX_LUMINANCE = 8, /**< 最大的光亮度 */ + MATAKEY_MIN_LUMINANCE = 9, /**< 最小的光亮度 */ + MATAKEY_MAX_CONTENT_LIGHT_LEVEL = 10, /**< 最大的内容亮度水平 */ + MATAKEY_MAX_FRAME_AVERAGE_LIGHT_LEVEL = 11, /**< 最大的帧平均亮度水平 */ + MATAKEY_HDR10_PLUS = 12, /**< HDR10 Plus */ + MATAKEY_HDR_VIVID = 13, /**< Vivid */ +}; + +struct HdiBufferHandleInfo { + unsigned int seqId; + BufferHandleParcelable hdl; +}; + +struct HdifdInfo { + int id; + HdifdParcelable hdiFd; +}; + +/** + * @brief 定义包含名称、属性ID和值的属性对象。 + * + */ +struct PropertyObject { + String name; /**< 属性名称 */ + unsigned int propId; /**< 属性ID */ + unsigned long value; /**< 属性值 */ +}; + +/** + * @brief 定义输出性能。 + */ +struct DisplayCapability { + String name; /**< 显示设备名称 */ + enum InterfaceType type; /**< 显示屏接口类型 */ + unsigned int phyWidth; /**< 物理宽度 */ + unsigned int phyHeight; /**< 物理高度 */ + unsigned int supportLayers; /**< 支持的图层数 */ + unsigned int virtualDispCount; /**< 支持的虚拟屏数 */ + boolean supportWriteBack; /**< 是否支持回写 */ + unsigned int propertyCount; /**< 属性数组大小 */ + struct PropertyObject[] props; /**< 属性数组*/ +}; + +/** + * @brief 定义显示信息结构体 + * + */ +struct DisplayInfo { + unsigned int width; /**< 显示屏宽度 */ + unsigned int height; /**< 显示屏高度 */ + int rotAngle; /**< 显示屏旋转角度 */ +}; + +/** + * @brief 定义图层信息结构体 + * + * 在创建图层时,需要将LayerInfo传递给创建图层接口,创建图层接口根据图层信息创建相应图层。 + * + */ +struct LayerInfo { + int width; /**< 图层宽度 */ + int height; /**< 图层高度 */ + enum LayerType type; /**< 图层类型,包括图形层、视频层和媒体播放模式 */ + int bpp; /**< 每像素所占bit数 */ + enum PixelFormat pixFormat; /**< 图层像素格式 */ +}; + +/** + * @brief 定义图层Alpha信息的结构体 + * + */ +struct LayerAlpha { + boolean enGlobalAlpha; /**< 全局alpha使能标志 */ + boolean enPixelAlpha; /**< 像素alpha使能标志 */ + unsigned char alpha0; /**< alpha0值,取值范围:[0, 255] */ + unsigned char alpha1; /**< alpha1值,取值范围:[0, 255] */ + unsigned char gAlpha; /**< 全局alpha值,取值范围:[0, 255] */ +}; + +/** + * @brief 定义一层的缓冲区数据,包括虚拟和物理内存地址。 + * + */ +struct BufferData { + unsigned long phyAddr; /**< 物理内存地址 */ + unsigned long long virAddr; /**< 虚拟内存地址 */ +}; + +/** + * @brief 图层Buffer,用于存放图层数据。 + * + */ +struct LayerBuffer { + FileDescriptor fenceId; /**< buffer 的fence号r */ + int width; /**< buffer宽度 */ + int height; /**< buffer高度 */ + int pitch; /**< 一行数据所占字节数 */ + enum PixelFormat pixFormat; /**< buffer像素格式r */ + struct BufferData data; /**< 图层buffer数据 */ + BufferHandleParcelable hdl; /**< 图层buffer句柄 */ +}; + +/** + * @brief 定义矩形信息 + * + */ +struct IRect { + int x; /**< 矩形框起始x坐标 */ + int y; /**< 矩形框起始y坐标 */ + int w; /**< 矩形框宽度 */ + int h; /**< 矩形框高度 */ +}; + +/** + * @brief 用于存放窗口相关信息的结构体定义,提供给硬件加速使用,例如图像合成,位图搬移等操作。 + */ +struct ISurface { + unsigned long phyAddr; /**< 图像首地址 */ + int height; /**< 图像高度 */ + int width; /**< 图像宽度 */ + int stride; /**< 图像跨度 */ + enum PixelFormat enColorFmt; /**< 图像格式 */ + boolean bYCbCrClut; /**< CLUT表是否位于 YCbCr 空间 */ + boolean bAlphaMax255; /**< 图像alpha最大值为255还是128 */ + boolean bAlphaExt1555; /**< 是否使能1555的Alpha扩展 */ + unsigned char alpha0; /**< Alpha0值,取值范围:[0,255] */ + unsigned char alpha1; /**< Alpha1值,取值范围:[0,255] */ + unsigned long cbcrPhyAddr; /**< CbCr分量地址 */ + int cbcrStride; /**< CbCr分量跨度 */ + unsigned long clutPhyAddr; /**< Clut表首地址,用作颜色扩展或颜色校正 */ +}; + +/** + * @brief 线条描述结构体定义,用于硬件加速绘制直线。 + * + */ +struct ILine { + int x0; /**< 线条起点的x坐标 */ + int y0; /**< 线条起点的y坐标 */ + int x1; /**< 线条终点的x坐标 */ + int y1; /**< 线条终点的y坐标 */ + unsigned int color; /**< 线条颜色 */ +}; + +/** + * @brief 圆形描述结构体定义,用于硬件加速绘制圆形。 + * + */ +struct ICircle { + int x; /**< 圆心x坐标 */ + int y; /**< 圆心y坐标r */ + int r; /**< 圆的半径 */ + unsigned int color; /**< 圆的颜色 */ +}; + +/** + * @brief 矩形描述结构体定义,用于硬件加速绘制矩形, + * + */ +struct Rectangle { + struct IRect rect; /**< 矩形区域 */ + unsigned int color; /**< 矩形颜色 */ +}; + +/** + * @brief 图像硬件加速相关的操作选项结构体定义,用于图像硬件加速时的操作选项。 + * + */ +struct GfxOpt { + boolean enGlobalAlpha; /**< 全局alpha使能位 */ + unsigned int globalAlpha; /**< 全局alpha的值 */ + boolean enPixelAlpha; /**< 像素alpha使能位 */ + enum BlendType blendType; /**< 混合方式 */ + enum ColorKey colorKeyFrom; /**< 色键模式 */ + boolean enableRop; /**< Rop功能使能位 */ + enum RopType colorRopType; /**< 颜色的Rop类型 */ + enum RopType alphaRopType; /**< Alpha的Rop类型 */ + boolean enableScale; /**< 缩放功能使能位 */ + enum TransformType rotateType; /**< 旋转类型 */ + enum MirrorType mirrorType; /**< 镜像类型 */ +}; + +/** + * @brief 定义输出模式信息。 + */ +struct DisplayModeInfo { + int width; /**< 像素宽度 */ + int height; /**< 像素高度 */ + unsigned int freshRate; /**< 刷新速率 */ + int id; /**< 模式ID */ +}; + +/** + * @brief HDR属性结构体定义 + * + */ +struct HDRCapability { + unsigned int formatCount; /**< 支持的HDR格式的数量 */ + enum HDRFormat[] formats; /**< 支持的HDR格式的数组首地址 */ + float maxLum; /**< 最大的光亮度luminance值 */ + float maxAverageLum; /**< 最大的平均光亮度luminance值 */ + float minLum; /**< 最小的光亮度luminance值 */ +}; + +/** + * @brief HDR元数据结构体定义 + * + */ +struct HDRMetaData { + enum HDRMetadataKey key; /**< HDR元数据关键字 */ + float value; /**< 关键字对应的值 */ +}; + +/** + * @brief 上屏时间戳类型枚举值 + * + */ +enum PresentTimestampType { + HARDWARE_DISPLAY_PTS_UNSUPPORTED = 0, /**< 不支持 */ + HARDWARE_DISPLAY_PTS_DELAY = 1 << 0, /**< Delay 时延类型 */ + HARDWARE_DISPLAY_PTS_TIMESTAMP = 1 << 1, /**< 时间戳类型 */ +}; + +/** + * @brief 上屏时间戳结构体定义 + * + */ +struct PresentTimestamp { + enum PresentTimestampType type; /**< 上屏时间戳类型 */ + long time; /**< 类型对应的值 */ +}; + +/** + * @brief 扩展数据句柄结构体定义 + * + */ +struct ExtDataHandle { + int fd; /**< 句柄 fd, -1代表不支持 */ + unsigned int reserveInts; /**< reserve数组的个数 */ + int[] reserve; /**< reserve数组 */ +}; + +/** + * @brief YUV描述信息结构体定义 + * + */ +struct YUVDescInfo { + unsigned long baseAddr; /**< 内存的初始地址 */ + unsigned int yOffset; /**< Y的偏移量 */ + unsigned int uOffset; /**< U的偏移量 */ + unsigned int vOffset; /**< V的偏移量 */ + unsigned int yStride; /**< Y的stride信息 */ + unsigned int uvStride; /**< UV的stride信息 */ + unsigned int uvStep; /**< UV的step信息 */ +}; diff --git a/zh-cn/device_api/hdi/display/composer/v1_0/IDisplayComposer.idl b/zh-cn/device_api/hdi/display/composer/v1_0/IDisplayComposer.idl new file mode 100644 index 0000000000000000000000000000000000000000..48b9ea4ae8143e7d6fab148b9f615de4584963c0 --- /dev/null +++ b/zh-cn/device_api/hdi/display/composer/v1_0/IDisplayComposer.idl @@ -0,0 +1,389 @@ +/* + * Copyright (c) 2022 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. + */ + +/** + * @brief Display模块接口的包路径。 + * + * @since 1.0 + * @version 1.0 + */ +package ohos.hdi.display.composer.v1_0; + +import ohos.hdi.display.composer.v1_0.DisplayComposerType; +import ohos.hdi.display.composer.v1_0.IHotPlugCallback; +import ohos.hdi.display.composer.v1_0.IVBlankCallback; +import ohos.hdi.display.composer.v1_0.IRefreshCallback; + +sequenceable OHOS.HDI.Display.HdifdParcelable; +sequenceable OHOS.HDI.Display.BufferHandleParcelable; + +interface IDisplayComposer { + /** + * @brief 注册热插拔事件回调。 + * + * 注册热插拔事件回调,当有热插拔事件发生时接口实现层需要回调注册的接口。 + * + * @param callback 热插拔事件回调实例,当有热插拔事件发生时,接口实现层需要通过该实例通知图形服务。 + * @param data 图形服务携带的私有数据,在事件回调接口中需要返回给图形服务。 + * + * @return DISPLAY_SUCCESS 表示执行成功。 + * @return 其他值表示执行失败,具体错误码查看{@link DispErrCode}。 + * + * @since 1.0 + * @version 1.0 + */ + RegHotPlugCallback([in] IHotPlugCallback cb); + + /** + * @brief 获取显示设备能力集。 + * + * 图形服务可以通过该接口获取显示设备具备哪些显示能力。 + * + * @param devId 指示需要操作的设备ID。 + * @param info 设备支持的能力级信息,详情参考 {@link DisplayCapability}。 + * + * @return DISPLAY_SUCCESS 表示执行成功。 + * @return 其他值表示执行失败,具体错误码查看{@link DispErrCode}。 + * + * @since 1.0 + * @version 1.0 + */ + GetDisplayCapability([in] unsigned int devId, [out] struct DisplayCapability info); + + /** + * @brief 获取显示设备支持的显示模式信息。 + * + * 图形服务可以通过该接口获取到显示设备支持哪些显示模式。 + * + * @param devId 指示需要操作的设备ID。 + * @param num 设备支持的模式数量。 + * @param modes 设备支持的所有模式信息,包括所有能支持的分辨率和刷新率,每一个模式实现层都有一个Id与之对应,在获取当前模式 + * 和设置当前模式时都会使用到,详情参考 {@link DisplayModeInfo}。 + * + * @return DISPLAY_SUCCESS 表示执行成功。 + * @return 其他值表示执行失败,具体错误码查看{@link DispErrCode}。 + * + * @since 1.0 + * @version 1.0 + */ + GetDisplaySupportedModes([in] unsigned int devId, [out] struct DisplayModeInfo[] modes); + + /** + * @brief 获取显示设备当前的显示模式。 + * + * 图形服务可以通过该接口获取显示设备当前的显示模式。 + * + * @param devId 指示需要操作的设备ID。 + * @param modeId 存放当前设备的显示模式ID, 由接口实现层进行数据的写入。 + * + * @return DISPLAY_SUCCESS 表示执行成功。 + * @return 其他值表示执行失败,具体错误码查看{@link DispErrCode}。 + * + * @since 1.0 + * @version 1.0 + */ + GetDisplayMode([in] unsigned int devId, [out] unsigned int modeId); + + /** + * @brief 设置显示设备的显示模式。 + * + * 图形服务可以通过该接口获设置显示设备的显示模式。 + * + * @param devId 指示需要操作的设备ID。 + * @param modeId 指明需要设置的模式ID,接口实现层将设备切换到该参数对应的显示模式。 + * + * @return DISPLAY_SUCCESS 表示执行成功。 + * @return 其他值表示执行失败,具体错误码查看{@link DispErrCode}。 + * + * @since 1.0 + * @version 1.0 + */ + SetDisplayMode([in] unsigned int devId, [in] unsigned int modeId); + + /** + * @brief 获取显示设备当前的电源状态。 + * + * 图形服务可以通过该接口获设置显示设备的电源状态。 + * + * @param devId 指示需要操作的设备ID。 + * @param status 保存对应设备的电源状态,由接口实现层进行状态的写入。 + * + * @return DISPLAY_SUCCESS 表示执行成功。 + * @return 其他值表示执行失败,具体错误码查看{@link DispErrCode}。 + * + * @since 1.0 + * @version 1.0 + */ + GetDisplayPowerStatus([in] unsigned int devId, [out] enum DispPowerStatus status); + + /** + * @brief 设置显示设备当前的电源状态。 + * + * 图形服务可以通过该接口获设置显示设备的电源状态。 + * + * @param devId 指示需要操作的设备ID。 + * @param status 表示需要设置的电源状态。 + * + * @return DISPLAY_SUCCESS 表示执行成功。 + * @return 其他值表示执行失败,具体错误码查看{@link DispErrCode}。 + * + * @since 1.0 + * @version 1.0 + */ + SetDisplayPowerStatus([in] unsigned int devId, [in] enum DispPowerStatus status); + + /** + * @brief 获取显示设备当前的背光值。 + * + * 图形服务可以通过该接口获取设置显示设备的背光值。 + * + * @param devId 指示需要操作的设备ID。 + * @param level 保存对应设备的背光值,由接口实现层进行写入。 + * + * @return DISPLAY_SUCCESS 表示执行成功。 + * @return 其他值表示执行失败,具体错误码查看{@link DispErrCode}。 + * + * @since 1.0 + * @version 1.0 + */ + GetDisplayBacklight([in] unsigned int devId, [out] unsigned int level); + + /** + * @brief 设置显示设备当前的背光值。 + * + * 图形服务可以通过该接口获设置显示设备的背光值。 + * + * @param devId 指示需要操作的设备ID。 + * @param level 表示需要设置的背光值。 + * + * @return DISPLAY_SUCCESS 表示执行成功。 + * @return 其他值表示执行失败,具体错误码查看{@link DispErrCode}。 + * + * @since 1.0 + * @version 1.0 + */ + SetDisplayBacklight([in] unsigned int devId, [in] unsigned int level); + + /** + * @brief 获取显示设备属性值。 + * + * 图形服务可以通过该接口获取显示设备具体的属性值。 + * + * @param devId 指示需要操作的设备ID。 + * @param id 由接口GetDisplayCapability返回属性ID。 + * @param level 属性ID对应的属性值,由接口实现层写入。 + * + * @return DISPLAY_SUCCESS 表示执行成功。 + * @return 其他值表示执行失败,具体错误码查看{@link DispErrCode}。 + * + * @since 1.0 + * @version 1.0 + */ + GetDisplayProperty([in] unsigned int devId, [in] unsigned int id, [out] unsigned long value); + + /** + * @brief 获取显示设备合成类型有变化的layer。 + * + * 在合成准备阶段,显示设备会根据设备的合成能力修改图层的合成类型,该接口会返回哪些图层合成类型发生了变化。 + * + * @param devId 指示需要操作的设备ID。 + * @param num 表示合成类型发生了变化的图层数量。 + * @param Layers 指向图层数组首地址。 + * @param type 指向合成类型数组首地址。 + * + * @return DISPLAY_SUCCESS 表示执行成功。 + * @return 其他值表示执行失败,具体错误码查看{@link DispErrCode}。 + * + * @since 1.0 + * @version 1.0 + */ + GetDisplayCompChange([in] unsigned int devId, [out] unsigned int[] layers, [out] int[] type); + + /** + * @brief 设置显示设备的裁剪区域。 + * + * 图形服务可以通过该接口设置显示设备的ClientBuffer的裁剪区域,裁剪区域不能超过ClientBuffer的大小。 + * + * @param devId 指示需要操作的设备ID。 + * @param rect ClientBuffer的裁剪区域。 + * + * @return DISPLAY_SUCCESS 表示执行成功。 + * @return 其他值表示执行失败,具体错误码查看{@link DispErrCode}。 + * + * @since 1.0 + * @version 1.0 + */ + SetDisplayClientCrop([in] unsigned int devId, [in] struct IRect rect); + + /** + * @brief 设置显示设备的显示区域。 + * + * 图形服务可以通过该接口设置显示设备的显示区域。 + * + * @param devId 指示需要操作的设备ID。 + * @param rect 显示区域。 + * + * @return DISPLAY_SUCCESS 表示执行成功。 + * @return 其他值表示执行失败,具体错误码查看{@link DispErrCode}。 + * + * @since 1.0 + * @version 1.0 + */ + SetDisplayClientDestRect([in] unsigned int devId, [in] struct IRect rect); + + /** + * @brief 使能垂直同步信号。 + * + * 图形服务可以通过该接口使能或取消垂直同步信号,当有垂直同步信号产生时,接口实现层需要回调图形服务通过RegDisplayVBlankCallback注册的 + * VBlankCallback 回调。 + * 图形服务在需要刷新显示时需要使能垂直同步信号,在收到VBlankCallback事件回调时再进行合成送显,不需要刷新显示时需要取消垂直同步信号。 + * @param devId 指示需要操作的设备ID。 + * @param enabled 使能状态,true表示能,false表示不能。 + * + * @return DISPLAY_SUCCESS 表示执行成功。 + * @return 其他值表示执行失败,具体错误码查看{@link DispErrCode}。 + * + * @since 1.0 + * @version 1.0 + */ + SetDisplayVsyncEnabled([in] unsigned int devId, [in] boolean enabled); + + /** + * @brief 注册VBlank事件回调。 + * + * 注册VBlank事件回调,当有VBlank事件发生时接口实现层需要回调注册的接口。 + * + * @param devId 指示需要操作的设备ID。 + * @param callback VBlank事件回调实例,当有VBlank事件发生时并且DisplayVsync处于Enable状态,接口实现层需要通过该实例通知图形服务。 + * @param data 图形服务携带的私有数据,在事件回调接口中需要返回给图形服务。 + * + * @return DISPLAY_SUCCESS 表示执行成功。 + * @return 其他值表示执行失败,具体错误码查看{@link DispErrCode}。 + * + * @since 1.0 + * @version 1.0 + */ + RegDisplayVBlankCallback([in] unsigned int devId, [in] IVBlankCallback cb); + + /** + * @brief 获取显示图层fence。 + * + * 图形服务在调用接口Commit后,需要通过该接口获取图层的fence信息。 + * + * @param devId 指示需要操作的设备ID。 + * @param num 图层个数。 + * @param layers 图层首地址,指向图层数组的首地址。 + * @param fences fence首地址,指向fence数组的首地址。 + * + * @return DISPLAY_SUCCESS 表示执行成功。 + * @return 其他值表示执行失败,具体错误码查看{@link DispErrCode}。 + * + * @since 1.0 + * @version 1.0 + */ + GetDisplayReleaseFence([in] unsigned int devId, [out] unsigned int[] layers, [out] HdifdParcelable[] fences); + + /** + * @brief 创建虚拟显示设备。 + * + * 该接口用于创建一个虚拟显示设备。 + * + * @param width 指定显示设备的像素宽度。 + * @param height 指定显示设备的像素高度。 + * @param format 指定显示设备的像素格式。 + * 详情参考{@link PixelFormat},接口实现层可以根据硬件需求,修改format并返回给图形服务。 + * @param devId 用于接口层返回创建的设备ID。 + * + * @return DISPLAY_SUCCESS 表示执行成功。 + * @return 其他值表示执行失败,具体错误码查看{@link DispErrCode}。 + * + * @since 1.0 + * @version 1.0 + */ + CreateVirtualDisplay([in] unsigned int width, [in] unsigned int height, [out] int format, [out] unsigned int devId); + + /** + * @brief 销毁虚拟显示设备。 + * + * 该接口用于销毁指定的虚拟显示设备。 + * + * @param devId 指示需要操作的设备ID。 + * + * @return DISPLAY_SUCCESS 表示执行成功。 + * @return 其他值表示执行失败,具体错误码查看{@link DispErrCode}。 + * + * @since 1.0 + * @version 1.0 + */ + DestroyVirtualDisplay([in] unsigned int devId); + + /** + * @brief 设置虚拟屏的输出缓存。 + * + * 该接口用于设置虚拟屏输出缓存,接口实现层需要将虚拟屏的输出放入到该缓存中,接口实现层需要等待同步栅栏发送信号后才能使用缓存。 + * + * @param devId 指示需要操作的设备ID。 + * @param buffer 输出缓存。 + * @param fence 同步栅栏。 + * + * @return DISPLAY_SUCCESS 表示执行成功。 + * @return 其他值表示执行失败,具体错误码查看{@link DispErrCode}。 + * + * @since 1.0 + * @version 1.0 + */ + SetVirtualDisplayBuffer([in] unsigned int devId, [in] BufferHandleParcelable buffer, [in] HdifdParcelable fence); + + /** + * @brief 设置显示设备属性值。 + * + * 图形服务可以通过该接口设置显示设备具体的属性值。 + * + * @param devId 指示需要操作的设备ID。 + * @param id 由接口GetDisplayCapability返回属性ID。 + * @param value 需要设置的属性值。 + * + * @return DISPLAY_SUCCESS 表示执行成功。 + * @return 其他值表示执行失败,具体错误码查看{@link DispErrCode}。 + * + * @since 1.0 + * @version 1.0 + */ + SetDisplayProperty([in] unsigned int devId, [in] unsigned int id, [in] unsigned long value); + + /** + * @brief 打开图层。 + * + * GUI在使用图层时,需要先根据图层信息打开图层,打开图层成功可获得图层ID,根据图层ID使用图层各接口。 + * + * @param devId 显示设备ID,用于支持多个显示设备,取值从0开始,0表示第一个设备,最大支持5个设备。 + * @param layerInfo 图层信息,上层GUI打开图层时需传递图层信息,包括图层类型,图层大小,像素格式等信息。 + * @param layerId 图层ID,打开图层成功后返回给GUI的图层ID,用于标识唯一的图层。 + * + * @return DISPLAY_SUCCESS 表示执行成功。 + * @return 其他值表示执行失败,具体错误码查看{@link DispErrCode}。 + * + * @see CloseLayer + * @since 1.0 + * @version 1.0 + */ + CreateLayer([in] unsigned int devId, [in] struct LayerInfo layerInfo, [out] unsigned int layerId); + DestroyLayer([in] unsigned int devId, [in] unsigned int layerId); + /* func for smq transfer */ + InitCmdRequest([in] SharedMemQueue request); + CmdRequest([in] unsigned int inEleCnt, [in] struct HdifdInfo[] inFds, [out] unsigned int outEleCnt, + [out] struct HdifdInfo[] outFds); + GetCmdReply([out] SharedMemQueue reply); +} \ No newline at end of file diff --git a/zh-cn/device_api/hdi/display/composer/v1_0/IHotPlugCallback.idl b/zh-cn/device_api/hdi/display/composer/v1_0/IHotPlugCallback.idl new file mode 100644 index 0000000000000000000000000000000000000000..80119eb981950472dce8adf583cf2b159d57ac1d --- /dev/null +++ b/zh-cn/device_api/hdi/display/composer/v1_0/IHotPlugCallback.idl @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2022 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. + */ + +/** + * @brief Display模块接口的包路径。 + * + * @since 1.0 + * @version 1.0 + */ +package ohos.hdi.display.composer.v1_0; + +import ohos.hdi.display.composer.v1_0.DisplayComposerType; + +[callback] interface IHotPlugCallback { + OnHotPlug([in] unsigned int outputId, [in] boolean connected); +} \ No newline at end of file diff --git a/zh-cn/device_api/hdi/display/composer/v1_0/IRefreshCallback.idl b/zh-cn/device_api/hdi/display/composer/v1_0/IRefreshCallback.idl new file mode 100644 index 0000000000000000000000000000000000000000..8e8c3e26f5d0e6ef08e6b7c058ca99d6956790ac --- /dev/null +++ b/zh-cn/device_api/hdi/display/composer/v1_0/IRefreshCallback.idl @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2022 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. + */ + +/** + * @brief Display模块接口的包路径。 + * + * @since 1.0 + * @version 1.0 + */ +package ohos.hdi.display.composer.v1_0; + +import ohos.hdi.display.composer.v1_0.DisplayComposerType; + +[callback] interface IRefreshCallback { + OnRefresh([in] unsigned int devId); +} \ No newline at end of file diff --git a/zh-cn/device_api/hdi/display/composer/v1_0/IVBlankCallback.idl b/zh-cn/device_api/hdi/display/composer/v1_0/IVBlankCallback.idl new file mode 100644 index 0000000000000000000000000000000000000000..bfb8bb530e7f1909accd6ef7371b51a3be2790fe --- /dev/null +++ b/zh-cn/device_api/hdi/display/composer/v1_0/IVBlankCallback.idl @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2022 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. + */ + +/** + * @brief Display模块接口的包路径。 + * + * @since 1.0 + * @version 1.0 + */ +package ohos.hdi.display.composer.v1_0; + +import ohos.hdi.display.composer.v1_0.DisplayComposerType; + +[callback] interface IVBlankCallback { + OnVBlank([in] unsigned int sequence, [in] unsigned long ns); +} \ No newline at end of file