1/* 2 * Copyright (c) 2022 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 16package ohos.hdi.display.composer.v1_0; 17sequenceable OHOS.HDI.Display.BufferHandleParcelable; 18sequenceable OHOS.HDI.Display.HdifdParcelable; 19 20enum DispCmd { 21 /* request cmd */ 22 REQUEST_CMD_PREPAREDISPLAYLAYERS = 256, 23 REQUEST_CMD_SETDISPLAYCLIENTBUFFER = 257, 24 REQUEST_CMD_SETDISPLAYCLIENTDAMAGE = 258, 25 REQUEST_CMD_COMMIT = 259, 26 REQUEST_CMD_SETLAYERALPHA = 260, 27 REQUEST_CMD_SETLAYERPOSITION = 261, 28 REQUEST_CMD_SETLAYERCROP = 262, 29 REQUEST_CMD_SETLAYERZORDER = 263, 30 REQUEST_CMD_SETLAYERPREMULTI = 264, 31 REQUEST_CMD_SETTRANSFORMMODE = 265, 32 REQUEST_CMD_SETLAYERDIRTYREGION = 266, 33 REQUEST_CMD_SETLAYERVISIBLEREGION = 267, 34 REQUEST_CMD_SETLAYERBUFFER = 268, 35 REQUEST_CMD_SETLAYERCOMPOSITIONTYPE = 269, 36 REQUEST_CMD_SETLAYERBLENDTYPE = 270, 37 REQUEST_CMD_SETLAYERVISIBLE = 271, 38 /* reply cmd */ 39 REPLY_CMD_SETERROR = 1024, 40 REPLY_CMD_PREPAREDISPLAYLAYERS = 1025, 41 REPLY_CMD_COMMIT = 1026, 42 /* Pack control cmd */ 43 CONTROL_CMD_REQUEST_BEGIN = 8192, 44 CONTROL_CMD_REPLY_BEGIN = 8193, 45 CONTROL_CMD_REQUEST_END = 8194, 46 CONTROL_CMD_REPLY_END = 8195, 47}; 48 49enum InterfaceType { 50 DISP_INTF_HDMI = 0, 51 DISP_INTF_LCD = 1, 52 DISP_INTF_BT1120 = 2, 53 DISP_INTF_BT656 = 3, 54 DISP_INTF_YPBPR = 4, 55 DISP_INTF_RGB = 5, 56 DISP_INTF_CVBS = 6, 57 DISP_INTF_SVIDEO = 7, 58 DISP_INTF_VGA = 8, 59 DISP_INTF_MIPI = 9, 60 DISP_INTF_PANEL = 10, 61 DISP_INTF_BUTT = 11, 62}; 63 64enum DispErrCode { 65 DISPLAY_SUCCESS = 0, 66 DISPLAY_FAILURE = -1, 67 DISPLAY_FD_ERR = -2, 68 DISPLAY_PARAM_ERR = -3, 69 DISPLAY_NULL_PTR = -4, 70 DISPLAY_NOT_SUPPORT = -5, 71 DISPLAY_NOMEM = -6, 72 DISPLAY_SYS_BUSY = -7, 73 DISPLAY_NOT_PERM = -8, 74}; 75 76enum LayerType { 77 LAYER_TYPE_GRAPHIC = 0, 78 LAYER_TYPE_OVERLAY = 1, 79 LAYER_TYPE_SIDEBAND = 2, 80 LAYER_TYPE_CURSOR = 3, 81 LAYER_TYPE_BUTT = 4, 82}; 83 84enum BufferUsage { 85 HBM_USE_CPU_READ = ( 1 << 0 ), 86 HBM_USE_CPU_WRITE = ( 1 << 1 ), 87 HBM_USE_MEM_MMZ = ( 1 << 2 ), 88 HBM_USE_MEM_DMA = ( 1 << 3 ), 89 HBM_USE_MEM_SHARE = ( 1 << 4 ), 90 HBM_USE_MEM_MMZ_CACHE = ( 1 << 5 ), 91 HBM_USE_MEM_FB = ( 1 << 6 ), 92 HBM_USE_ASSIGN_SIZE = ( 1 << 7 ), 93}; 94 95enum PixelFormat { 96 PIXEL_FMT_CLUT8 = 0, 97 PIXEL_FMT_CLUT1 = 1, 98 PIXEL_FMT_CLUT4 = 2, 99 PIXEL_FMT_RGB_565 = 3, 100 PIXEL_FMT_RGBA_5658 = 4, 101 PIXEL_FMT_RGBX_4444 = 5, 102 PIXEL_FMT_RGBA_4444 = 6, 103 PIXEL_FMT_RGB_444 = 7, 104 PIXEL_FMT_RGBX_5551 = 8, 105 PIXEL_FMT_RGBA_5551 = 9, 106 PIXEL_FMT_RGB_555 = 10, 107 PIXEL_FMT_RGBX_8888 = 11, 108 PIXEL_FMT_RGBA_8888 = 12, 109 PIXEL_FMT_RGB_888 = 13, 110 PIXEL_FMT_BGR_565 = 14, 111 PIXEL_FMT_BGRX_4444 = 15, 112 PIXEL_FMT_BGRA_4444 = 16, 113 PIXEL_FMT_BGRX_5551 = 17, 114 PIXEL_FMT_BGRA_5551 = 18, 115 PIXEL_FMT_BGRX_8888 = 19, 116 PIXEL_FMT_BGRA_8888 = 20, 117 PIXEL_FMT_YUV_422_I = 21, 118 PIXEL_FMT_YCBCR_422_SP = 22, 119 PIXEL_FMT_YCRCB_422_SP = 23, 120 PIXEL_FMT_YCBCR_420_SP = 24, 121 PIXEL_FMT_YCRCB_420_SP = 25, 122 PIXEL_FMT_YCBCR_422_P = 26, 123 PIXEL_FMT_YCRCB_422_P = 27, 124 PIXEL_FMT_YCBCR_420_P = 28, 125 PIXEL_FMT_YCRCB_420_P = 29, 126 PIXEL_FMT_YUYV_422_PKG = 30, 127 PIXEL_FMT_UYVY_422_PKG = 31, 128 PIXEL_FMT_YVYU_422_PKG = 32, 129 PIXEL_FMT_VYUY_422_PKG = 33, 130 PIXEL_FMT_BUTT = 34, 131}; 132 133enum TransformType { 134 ROTATE_NONE = 0, 135 ROTATE_90 = 1, 136 ROTATE_180 = 2, 137 ROTATE_270 = 3, 138 ROTATE_BUTT = 4, 139}; 140 141enum BlendType { 142 BLEND_NONE = 0, 143 BLEND_CLEAR = 1, 144 BLEND_SRC = 2, 145 BLEND_SRCOVER = 3, 146 BLEND_DSTOVER = 4, 147 BLEND_SRCIN = 5, 148 BLEND_DSTIN = 6, 149 BLEND_SRCOUT = 7, 150 BLEND_DSTOUT = 8, 151 BLEND_SRCATOP = 9, 152 BLEND_DSTATOP = 10, 153 BLEND_ADD = 11, 154 BLEND_XOR = 12, 155 BLEND_DST = 13, 156 BLEND_AKS = 14, 157 BLEND_AKD = 15, 158 BLEND_BUTT = 16, 159}; 160 161enum RopType { 162 ROP_BLACK = 0, 163 ROP_NOTMERGEPEN = 1, 164 ROP_MASKNOTPEN = 2, 165 ROP_NOTCOPYPEN = 3, 166 ROP_MASKPENNOT = 4, 167 ROP_NOT = 5, 168 ROP_XORPEN = 6, 169 ROP_NOTMASKPEN = 7, 170 ROP_MASKPEN = 8, 171 ROP_NOTXORPEN = 9, 172 ROP_NOP = 10, 173 ROP_MERGENOTPEN = 11, 174 ROP_COPYPE = 12, 175 ROP_MERGEPENNOT = 13, 176 ROP_MERGEPEN = 14, 177 ROP_WHITE = 15, 178 ROP_BUTT = 16, 179}; 180 181enum ColorKey { 182 CKEY_NONE = 0, 183 CKEY_SRC = 1, 184 CKEY_DST = 2, 185 CKEY_BUTT = 3, 186}; 187 188enum MirrorType { 189 MIRROR_NONE = 0, 190 MIRROR_LR = 1, 191 MIRROR_TB = 2, 192 MIRROR_BUTT = 3, 193}; 194 195enum Connection { 196 CON_INVALID = 0, 197 CONNECTED = 1, 198 DISCONNECTED = 2, 199}; 200 201enum DispPowerStatus { 202 POWER_STATUS_ON = 0, 203 POWER_STATUS_STANDBY = 1, 204 POWER_STATUS_SUSPEND = 2, 205 POWER_STATUS_OFF = 3, 206 POWER_STATUS_BUTT = 4, 207}; 208 209enum CompositionType { 210 COMPOSITION_CLIENT = 0, 211 COMPOSITION_DEVICE = 1, 212 COMPOSITION_CURSOR = 2, 213 COMPOSITION_VIDEO = 3, 214 COMPOSITION_BUTT = 4, 215}; 216 217enum ColorGamut { 218 COLOR_GAMUT_INVALID = -1, 219 COLOR_GAMUT_NATIVE = 0, 220 COLOR_GAMUT_STANDARD_BT601 = 1, 221 COLOR_GAMUT_STANDARD_BT709 = 2, 222 COLOR_GAMUT_DCI_P3 = 3, 223 COLOR_GAMUT_SRGB = 4, 224 COLOR_GAMUT_ADOBE_RGB = 5, 225 COLOR_GAMUT_DISPLAY_P3 = 6, 226 COLOR_GAMUT_BT2020 = 7, 227 COLOR_GAMUT_BT2100_PQ = 8, 228 COLOR_GAMUT_BT2100_HLG = 9, 229 COLOR_GAMUT_DISPLAY_BT2020 = 10, 230}; 231 232enum GamutMap { 233 GAMUT_MAP_CONSTANT = 0, 234 GAMUT_MAP_EXPANSION = 1, 235 GAMUT_MAP_HDR_CONSTANT = 2, 236 GAMUT_MAP_HDR_EXPANSION = 3, 237}; 238 239enum ColorDataSpace { 240 COLOR_DATA_SPACE_UNKNOWN = 0, 241 GAMUT_BT601 = 1, 242 GAMUT_BT709 = 2, 243 GAMUT_DCI_P3 = 3, 244 GAMUT_SRGB = 4, 245 GAMUT_ADOBE_RGB = 5, 246 GAMUT_DISPLAY_P3 = 6, 247 GAMUT_BT2020 = 7, 248 GAMUT_BT2100_PQ = 8, 249 GAMUT_BT2100_HLG = 9, 250 GAMUT_DISPLAY_BT2020 = 10, 251 TRANSFORM_FUNC_UNSPECIFIED = 256, 252 TRANSFORM_FUNC_LINEAR = 512, 253 TRANSFORM_FUNC_SRGB = 768, 254 TRANSFORM_FUNC_SMPTE_170M = 1024, 255 TRANSFORM_FUNC_GM2_2 = 1280, 256 TRANSFORM_FUNC_GM2_6 = 1536, 257 TRANSFORM_FUNC_GM2_8 = 1792, 258 TRANSFORM_FUNC_ST2084 = 2048, 259 TRANSFORM_FUNC_HLG = 2304, 260 PRECISION_UNSPECIFIED = 65536, 261 PRECISION_FULL = 131072, 262 PRESION_LIMITED = 196608, 263 PRESION_EXTENDED = 262144, 264 BT601_SMPTE170M_FULL = GAMUT_BT601 | TRANSFORM_FUNC_SMPTE_170M | PRECISION_FULL, 265 BT601_SMPTE170M_LIMITED = GAMUT_BT601 | TRANSFORM_FUNC_SMPTE_170M | PRESION_LIMITED, 266 BT709_LINEAR_FULL = GAMUT_BT709 | TRANSFORM_FUNC_LINEAR | PRECISION_FULL, 267 BT709_LINEAR_EXTENDED = GAMUT_BT709 | TRANSFORM_FUNC_LINEAR | PRESION_EXTENDED, 268 BT709_SRGB_FULL = GAMUT_BT709 | TRANSFORM_FUNC_SRGB | PRECISION_FULL, 269 BT709_SRGB_EXTENDED = GAMUT_BT709 | TRANSFORM_FUNC_SRGB | PRESION_EXTENDED, 270 BT709_SMPTE170M_LIMITED = GAMUT_BT709 | TRANSFORM_FUNC_SMPTE_170M | PRESION_LIMITED, 271 DCI_P3_LINEAR_FULL = GAMUT_DCI_P3 | TRANSFORM_FUNC_LINEAR | PRECISION_FULL, 272 DCI_P3_GAMMA26_FULL = GAMUT_DCI_P3 | TRANSFORM_FUNC_GM2_6 | PRECISION_FULL, 273 DISPLAY_P3_LINEAR_FULL = GAMUT_DISPLAY_P3 | TRANSFORM_FUNC_LINEAR | PRECISION_FULL, 274 DCI_P3_SRGB_FULL = GAMUT_DCI_P3 | TRANSFORM_FUNC_SRGB | PRECISION_FULL, 275 ADOBE_RGB_GAMMA22_FULL = GAMUT_ADOBE_RGB | TRANSFORM_FUNC_GM2_2 | PRECISION_FULL, 276 BT2020_LINEAR_FULL = GAMUT_BT2020 | TRANSFORM_FUNC_LINEAR | PRECISION_FULL, 277 BT2020_SRGB_FULL = GAMUT_BT2020 | TRANSFORM_FUNC_SRGB | PRECISION_FULL, 278 BT2020_SMPTE170M_FULL = GAMUT_BT2020 | TRANSFORM_FUNC_SMPTE_170M | PRECISION_FULL, 279 BT2020_ST2084_FULL = GAMUT_BT2020 | TRANSFORM_FUNC_ST2084 | PRECISION_FULL, 280 BT2020_HLG_FULL = GAMUT_BT2020 | TRANSFORM_FUNC_HLG | PRECISION_FULL, 281 BT2020_ST2084_LIMITED = GAMUT_BT2020 | TRANSFORM_FUNC_ST2084 | PRESION_LIMITED, 282}; 283 284enum HDRFormat { 285 NOT_SUPPORT_HDR = 0, 286 DOLBY_VISION = 1, 287 HDR10 = 2, 288 HLG = 3, 289 HDR10_PLUS = 4, 290 HDR_VIVID = 5, 291}; 292 293enum HDRMetadataKey { 294 MATAKEY_RED_PRIMARY_X = 0, 295 MATAKEY_RED_PRIMARY_Y = 1, 296 MATAKEY_GREEN_PRIMARY_X = 2, 297 MATAKEY_GREEN_PRIMARY_Y = 3, 298 MATAKEY_BLUE_PRIMARY_X = 4, 299 MATAKEY_BLUE_PRIMARY_Y = 5, 300 MATAKEY_WHITE_PRIMARY_X = 6, 301 MATAKEY_WHITE_PRIMARY_Y = 7, 302 MATAKEY_MAX_LUMINANCE = 8, 303 MATAKEY_MIN_LUMINANCE = 9, 304 MATAKEY_MAX_CONTENT_LIGHT_LEVEL = 10, 305 MATAKEY_MAX_FRAME_AVERAGE_LIGHT_LEVEL = 11, 306 MATAKEY_HDR10_PLUS = 12, 307 MATAKEY_HDR_VIVID = 13, 308}; 309 310struct HdiBufferHandleInfo { 311 unsigned int seqId; 312 BufferHandleParcelable hdl; 313}; 314 315struct HdifdInfo { 316 int id; 317 HdifdParcelable hdiFd; 318}; 319 320struct PropertyObject { 321 String name; 322 unsigned int propId; 323 unsigned long value; 324}; 325 326struct DisplayCapability { 327 String name; 328 enum InterfaceType type; 329 unsigned int phyWidth; 330 unsigned int phyHeight; 331 unsigned int supportLayers; 332 unsigned int virtualDispCount; 333 boolean supportWriteBack; 334 unsigned int propertyCount; 335 struct PropertyObject[] props; 336}; 337 338struct DisplayInfo { 339 unsigned int width; 340 unsigned int height; 341 int rotAngle; 342}; 343 344struct LayerInfo { 345 int width; 346 int height; 347 enum LayerType type; 348 int bpp; 349 enum PixelFormat pixFormat; 350}; 351 352struct LayerAlpha { 353 boolean enGlobalAlpha; 354 boolean enPixelAlpha; 355 unsigned char alpha0; 356 unsigned char alpha1; 357 unsigned char gAlpha; 358}; 359 360struct BufferData { 361 unsigned long phyAddr; 362 unsigned long long virAddr; 363}; 364 365struct LayerBuffer { 366 FileDescriptor fenceId; 367 int width; 368 int height; 369 int pitch; 370 enum PixelFormat pixFormat; 371 struct BufferData data; 372 BufferHandleParcelable hdl; 373}; 374 375struct IRect { 376 int x; 377 int y; 378 int w; 379 int h; 380}; 381 382struct ISurface { 383 unsigned long phyAddr; 384 int height; 385 int width; 386 int stride; 387 enum PixelFormat enColorFmt; 388 boolean bYCbCrClut; 389 boolean bAlphaMax255; 390 boolean bAlphaExt1555; 391 unsigned char alpha0; 392 unsigned char alpha1; 393 unsigned long cbcrPhyAddr; 394 int cbcrStride; 395 unsigned long clutPhyAddr; 396}; 397 398struct ILine { 399 int x0; 400 int y0; 401 int x1; 402 int y1; 403 unsigned int color; 404}; 405 406struct ICircle { 407 int x; 408 int y; 409 int r; 410 unsigned int color; 411}; 412 413struct Rectangle { 414 struct IRect rect; 415 unsigned int color; 416}; 417 418struct GfxOpt { 419 boolean enGlobalAlpha; 420 unsigned int globalAlpha; 421 boolean enPixelAlpha; 422 enum BlendType blendType; 423 enum ColorKey colorKeyFrom; 424 boolean enableRop; 425 enum RopType colorRopType; 426 enum RopType alphaRopType; 427 boolean enableScale; 428 enum TransformType rotateType; 429 enum MirrorType mirrorType; 430}; 431 432struct DisplayModeInfo { 433 int width; 434 int height; 435 unsigned int freshRate; 436 int id; 437}; 438 439struct HDRCapability { 440 unsigned int formatCount; 441 enum HDRFormat[] formats; 442 float maxLum; 443 float maxAverageLum; 444 float minLum; 445}; 446 447struct HDRMetaData { 448 enum HDRMetadataKey key; 449 float value; 450}; 451 452enum PresentTimestampType { 453 HARDWARE_DISPLAY_PTS_UNSUPPORTED = 0, 454 HARDWARE_DISPLAY_PTS_DELAY = 1 << 0, 455 HARDWARE_DISPLAY_PTS_TIMESTAMP = 1 << 1, 456}; 457 458struct PresentTimestamp { 459 enum PresentTimestampType type; 460 long time; 461}; 462 463struct ExtDataHandle { 464 int fd; 465 unsigned int reserveInts; 466 int[] reserve; 467}; 468 469struct YUVDescInfo { 470 unsigned long baseAddr; 471 unsigned int yOffset; 472 unsigned int uOffset; 473 unsigned int vOffset; 474 unsigned int yStride; 475 unsigned int uvStride; 476 unsigned int uvStep; 477}; 478