1# IDisplayComposer 2 3 4## 概述 5 6显示合成接口声明。 7 8主要提供注册热插拔事件回调、获取显示设备能力集等功能,具体方法使用详见函数说明。 9 10**起始版本:** 3.2 11 12**相关模块:**[Display](_display_v10.md) 13 14 15## 汇总 16 17 18### Public 成员函数 19 20| 名称 | 描述 | 21| -------- | -------- | 22| [RegHotPlugCallback](#reghotplugcallback) ([in] [IHotPlugCallback](interface_i_hot_plug_callback_v10.md) cb) | 注册热插拔事件回调。 | 23| [SetClientBufferCacheCount](#setclientbuffercachecount) ([in] unsigned int devId, [in] unsigned int count) | 设置显示设备的客户端缓冲区缓存计数。 | 24| [RegDisplayVBlankCallback](#regdisplayvblankcallback) ([in] unsigned int devId, [in] [IVBlankCallback](interface_i_v_blank_callback_v10.md) cb) | 注册VBlank事件回调。 | 25| [GetDisplayCapability](#getdisplaycapability) ([in] unsigned int devId, [out] struct [DisplayCapability](_display_capability_v10.md) info) | 获取显示设备能力集。 | 26| [GetDisplaySupportedModes](#getdisplaysupportedmodes) ([in] unsigned int devId, [out] struct [DisplayModeInfo](_display_mode_info_v10.md)[] modes) | 获取显示设备支持的显示模式信息。 | 27| [GetDisplayMode](#getdisplaymode) ([in] unsigned int devId, [out] unsigned int modeId) | 获取显示设备当前的显示模式。 | 28| [SetDisplayMode](#setdisplaymode) ([in] unsigned int devId, [in] unsigned int modeId) | 设置显示设备的显示模式。 | 29| [GetDisplayPowerStatus](#getdisplaypowerstatus) ([in] unsigned int devId, [out] enum [DispPowerStatus](_display_v10.md#disppowerstatus) status) | 获取显示设备当前的电源状态。 | 30| [SetDisplayPowerStatus](#setdisplaypowerstatus) ([in] unsigned int devId, [in] enum [DispPowerStatus](_display_v10.md#disppowerstatus) status) | 设置显示设备当前的电源状态。 | 31| [GetDisplayBacklight](#getdisplaybacklight) ([in] unsigned int devId, [out] unsigned int level) | 获取显示设备当前的背光值。 | 32| [SetDisplayBacklight](#setdisplaybacklight) ([in] unsigned int devId, [in] unsigned int level) | 设置显示设备当前的背光值。 | 33| [SetDisplayVsyncEnabled](#setdisplayvsyncenabled) ([in] unsigned int devId, [in] boolean enabled) | 使能垂直同步信号。 | 34| [CreateLayer](#createlayer) ([in] unsigned int devId, [in] struct [LayerInfo](_layer_info_v10.md) layerInfo, [in] unsigned int cacheCount, [out] unsigned int layerId) | 打开图层。 | 35| [DestroyLayer](#destroylayer) ([in] unsigned int devId, [in] unsigned int layerId) | 在指定的显示设备上打开图层。 | 36| [SetDisplayClientCrop](#setdisplayclientcrop) ([in] unsigned int devId, [in] struct [IRect](_i_rect_v10.md) rect) | 设置显示设备的裁剪区域。 | 37| [GetDisplayReleaseFence](#getdisplayreleasefence) ([in] unsigned int devId, [out] unsigned int[] layers, [out] HdifdParcelable[] fences) | 获取显示图层fence。 | 38| [CreateVirtualDisplay](#createvirtualdisplay) ([in] unsigned int width, [in] unsigned int height, [out] int format, [out] unsigned int devId) | 创建虚拟显示设备。 | 39| [DestroyVirtualDisplay](#destroyvirtualdisplay) ([in] unsigned int devId) | 销毁虚拟显示设备。 | 40| [SetVirtualDisplayBuffer](#setvirtualdisplaybuffer) ([in] unsigned int devId, [in] NativeBuffer buffer, [in] HdifdParcelable fence) | 设置虚拟屏的输出缓存。 | 41| [SetDisplayProperty](#setdisplayproperty) ([in] unsigned int devId, [in] unsigned int id, [in] unsigned long value) | 设置显示设备属性值。 | 42| [GetDisplayProperty](#getdisplayproperty) ([in] unsigned int devId, [in] unsigned int id, [out] unsigned long value) | 获取显示设备属性值。 | 43| [InitCmdRequest](#initcmdrequest) ([in] SharedMemQueue< int > request) | | 44| [CmdRequest](#cmdrequest) ([in] unsigned int inEleCnt, [in] struct [HdifdInfo](_hdifd_info_v10.md)[] inFds, [out] unsigned int outEleCnt, [out] struct [HdifdInfo](_hdifd_info_v10.md)[] outFds) | | 45| [GetCmdReply](#getcmdreply) ([out] SharedMemQueue< int > reply) | | 46 47 48## 成员函数说明 49 50 51### CmdRequest() 52 53``` 54IDisplayComposer::CmdRequest ([in] unsigned int inEleCnt, [in] struct HdifdInfo[] inFds, [out] unsigned int outEleCnt, [out] struct HdifdInfo[] outFds ) 55``` 56 57 58### CreateLayer() 59 60``` 61IDisplayComposer::CreateLayer ([in] unsigned int devId, [in] struct LayerInfo layerInfo, [in] unsigned int cacheCount, [out] unsigned int layerId ) 62``` 63**描述** 64打开图层。 65 66GUI在使用图层时,需要先根据图层信息打开图层,打开图层成功可获得图层ID,根据图层ID使用图层各接口。 67 68**起始版本:** 3.2 69 70**参数:** 71 72| 名称 | 描述 | 73| -------- | -------- | 74| devId | 显示设备ID,用于支持多个显示设备,取值从0开始,0表示第一个设备,最大支持5个设备,即取值范围0~4。 | 75| layerInfo | 图层信息,上层GUI打开图层时需传递图层信息,包括图层类型,图层大小,像素格式等信息。 | 76| layerId | 图层ID,打开图层成功后返回给GUI的图层ID,用于标识唯一的图层。 | 77 78**返回:** 79 80DISPLAY_SUCCESS 表示执行成功。 81 82其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 83 84**参见:** 85 86CloseLayer 87 88 89### CreateVirtualDisplay() 90 91``` 92IDisplayComposer::CreateVirtualDisplay ([in] unsigned int width, [in] unsigned int height, [out] int format, [out] unsigned int devId ) 93``` 94**描述** 95创建虚拟显示设备。 96 97该接口用于创建一个虚拟显示设备。 98 99**起始版本:** 3.2 100 101**参数:** 102 103| 名称 | 描述 | 104| -------- | -------- | 105| width | 指定显示设备的像素宽度。 | 106| height | 指定显示设备的像素高度。 | 107| format | 指定显示设备的像素格式。 详情参考[PixelFormat](_display_v10.md#pixelformat),接口实现层可以根据硬件需求,修改format并返回给图形服务。 | 108| devId | 用于接口层返回创建的设备ID。 | 109 110**返回:** 111 112DISPLAY_SUCCESS 表示执行成功。 113 114其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 115 116 117### DestroyLayer() 118 119``` 120IDisplayComposer::DestroyLayer ([in] unsigned int devId, [in] unsigned int layerId ) 121``` 122**描述** 123在指定的显示设备上打开图层。 124 125在 GUI 上使用图层之前,必须根据图层信息打开图层。在图层 打开后,可以获取图层 ID,然后根据图层 ID 使用其他功能。 126 127**起始版本:** 3.2 128 129**参数:** 130 131| 名称 | 描述 | 132| -------- | -------- | 133| devId:显示设备的ID。取值范围为 | 0 到 4,其中 0 表示第一个显示设备,4 表示最后一个显示设备。 | 134| layerId | 指示指向唯一标识层的层 ID 的指针。返回图层 ID到图层成功打开后添加到 GUI。 | 135 136**返回:** 137 138DISPLAY_SUCCESS 表示执行成功。 139 140其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 141 142 143### DestroyVirtualDisplay() 144 145``` 146IDisplayComposer::DestroyVirtualDisplay ([in] unsigned int devId) 147``` 148**描述** 149销毁虚拟显示设备。 150 151该接口用于销毁指定的虚拟显示设备。 152 153**起始版本:** 3.2 154 155**参数:** 156 157| 名称 | 描述 | 158| -------- | -------- | 159| devId | 表示需要操作的设备ID。 | 160 161**返回:** 162 163DISPLAY_SUCCESS 表示执行成功。 164 165其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 166 167 168### GetCmdReply() 169 170``` 171IDisplayComposer::GetCmdReply ([out] SharedMemQueue< int > reply) 172``` 173 174 175### GetDisplayBacklight() 176 177``` 178IDisplayComposer::GetDisplayBacklight ([in] unsigned int devId, [out] unsigned int level ) 179``` 180**描述** 181获取显示设备当前的背光值。 182 183图形服务可以通过该接口获取设置显示设备的背光值。 184 185**起始版本:** 3.2 186 187**参数:** 188 189| 名称 | 描述 | 190| -------- | -------- | 191| devId | 表示需要操作的设备ID。 | 192| level | 保存对应设备的背光值,由接口实现层进行写入。 | 193 194**返回:** 195 196DISPLAY_SUCCESS 表示执行成功。 197 198其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 199 200 201### GetDisplayCapability() 202 203``` 204IDisplayComposer::GetDisplayCapability ([in] unsigned int devId, [out] struct DisplayCapability info ) 205``` 206**描述** 207获取显示设备能力集。 208 209图形服务可以通过该接口获取显示设备具备哪些显示能力。 210 211**起始版本:** 3.2 212 213**参数:** 214 215| 名称 | 描述 | 216| -------- | -------- | 217| devId | 表示需要操作的设备ID。 | 218| info | 设备支持的能力集信息,详情参考 [DisplayCapability](_display_capability_v10.md)。 | 219 220**返回:** 221 222DISPLAY_SUCCESS 表示执行成功。 223 224其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 225 226 227### GetDisplayMode() 228 229``` 230IDisplayComposer::GetDisplayMode ([in] unsigned int devId, [out] unsigned int modeId ) 231``` 232**描述** 233获取显示设备当前的显示模式。 234 235图形服务可以通过该接口获取显示设备当前的显示模式,该模式由接口实现层进行数据的写入。 236 237**起始版本:** 3.2 238 239**参数:** 240 241| 名称 | 描述 | 242| -------- | -------- | 243| devId | 表示需要操作的设备ID。 | 244| modeId | 存放当前设备的显示模式ID。 | 245 246**返回:** 247 248DISPLAY_SUCCESS 表示执行成功。 249 250其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 251 252 253### GetDisplayPowerStatus() 254 255``` 256IDisplayComposer::GetDisplayPowerStatus ([in] unsigned int devId, [out] enum DispPowerStatus status ) 257``` 258**描述** 259获取显示设备当前的电源状态。 260 261图形服务可以通过该接口获取设置显示设备的电源状态,该电源状态由接口实现层进行状态的写入。 262 263**起始版本:** 3.2 264 265**参数:** 266 267| 名称 | 描述 | 268| -------- | -------- | 269| devId | 表示需要操作的设备ID。 | 270| status | 保存对应设备的电源状态,具体电源状态查看[DispPowerStatus](_display_v10.md#disppowerstatus)。 | 271 272**返回:** 273 274DISPLAY_SUCCESS 表示执行成功。 275 276其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 277 278 279### GetDisplayProperty() 280 281``` 282IDisplayComposer::GetDisplayProperty ([in] unsigned int devId, [in] unsigned int id, [out] unsigned long value ) 283``` 284**描述** 285获取显示设备属性值。 286 287图形服务可以通过该接口获取显示设备具体的属性值。 288 289**起始版本:** 3.2 290 291**参数:** 292 293| 名称 | 描述 | 294| -------- | -------- | 295| devId | 指示需要操作的设备ID。 | 296| id | 由接口{\@Link GetDisplayCapability}返回的属性ID。 | 297| value | 属性ID对应的属性值,由接口实现层写入。 | 298 299**返回:** 300 301DISPLAY_SUCCESS 表示执行成功。 302 303其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 304 305 306### GetDisplayReleaseFence() 307 308``` 309IDisplayComposer::GetDisplayReleaseFence ([in] unsigned int devId, [out] unsigned int[] layers, [out] HdifdParcelable[] fences ) 310``` 311**描述** 312获取显示图层fence。 313 314图形服务在调用接口Commit后,需要通过该接口获取图层的fence信息。 315 316**起始版本:** 3.2 317 318**参数:** 319 320| 名称 | 描述 | 321| -------- | -------- | 322| devId | 表示需要操作的设备ID。 | 323| layers | 图层首地址,指向图层数组的首地址。 | 324| fences | fence首地址,指向fence数组的首地址。 | 325 326**返回:** 327 328DISPLAY_SUCCESS 表示执行成功。 329 330其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 331 332 333### GetDisplaySupportedModes() 334 335``` 336IDisplayComposer::GetDisplaySupportedModes ([in] unsigned int devId, [out] struct DisplayModeInfo[] modes ) 337``` 338**描述** 339获取显示设备支持的显示模式信息。 340 341图形服务可以通过该接口获取到显示设备支持哪些显示模式。 342 343**起始版本:** 3.2 344 345**参数:** 346 347| 名称 | 描述 | 348| -------- | -------- | 349| devId | 表示需要操作的设备ID。 | 350| modes | 设备支持的所有模式信息,包括所有能支持的分辨率和刷新率,每一个模式实现层都有一个ID与之对应,在获取当前模式 和设置当前模式时都会使用到,详情参考 [DisplayModeInfo](_display_mode_info_v10.md)。 | 351 352**返回:** 353 354DISPLAY_SUCCESS 表示执行成功。 355 356其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 357 358 359### InitCmdRequest() 360 361``` 362IDisplayComposer::InitCmdRequest ([in] SharedMemQueue< int > request) 363``` 364 365 366### RegDisplayVBlankCallback() 367 368``` 369IDisplayComposer::RegDisplayVBlankCallback ([in] unsigned int devId, [in] IVBlankCallback cb ) 370``` 371**描述** 372注册VBlank事件回调。 373 374注册VBlank事件回调,当有VBlank事件发生时接口实现层需要回调注册的接口。 375 376**起始版本:** 3.2 377 378**参数:** 379 380| 名称 | 描述 | 381| -------- | -------- | 382| devId | 表示需要操作的设备ID。 | 383| cb | VBlank事件回调实例,当有VBlank事件发生时并且DisplayVsync处于Enable状态,接口实现层需要通过该实例通知图形服务。 | 384 385**返回:** 386 387DISPLAY_SUCCESS 表示执行成功。 388 389其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 390 391 392### RegHotPlugCallback() 393 394``` 395IDisplayComposer::RegHotPlugCallback ([in] IHotPlugCallback cb) 396``` 397**描述** 398注册热插拔事件回调。 399 400注册热插拔事件回调,当有热插拔事件发生时接口实现层需要回调注册的接口,通过该实例通知图形服务。 401 402**起始版本:** 3.2 403 404**参数:** 405 406| 名称 | 描述 | 407| -------- | -------- | 408| cb | 热插拔事件回调实例。 | 409 410**返回:** 411 412DISPLAY_SUCCESS 表示执行成功。 413 414其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 415 416 417### SetClientBufferCacheCount() 418 419``` 420IDisplayComposer::SetClientBufferCacheCount ([in] unsigned int devId, [in] unsigned int count ) 421``` 422**描述** 423设置显示设备的客户端缓冲区缓存计数。 424 425**起始版本:** 3.2 426 427**参数:** 428 429| 名称 | 描述 | 430| -------- | -------- | 431| devId | 表示需要操作的设备ID。 | 432| count | 客户端缓冲区缓存计数。 | 433 434**返回:** 435 436DISPLAY_SUCCESS 表示执行成功。 437 438其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 439 440 441### SetDisplayBacklight() 442 443``` 444IDisplayComposer::SetDisplayBacklight ([in] unsigned int devId, [in] unsigned int level ) 445``` 446**描述** 447设置显示设备当前的背光值。 448 449图形服务可以通过该接口获取设置显示设备的背光值。 450 451**起始版本:** 3.2 452 453**参数:** 454 455| 名称 | 描述 | 456| -------- | -------- | 457| devId | 表示需要操作的设备ID。 | 458| level | 表示需要设置的背光值,背光值范围0~255。 | 459 460**返回:** 461 462DISPLAY_SUCCESS 表示执行成功。 463 464其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 465 466 467### SetDisplayClientCrop() 468 469``` 470IDisplayComposer::SetDisplayClientCrop ([in] unsigned int devId, [in] struct IRect rect ) 471``` 472**描述** 473设置显示设备的裁剪区域。 474 475图形服务可以通过该接口设置显示设备的ClientBuffer的裁剪区域,裁剪区域不能超过ClientBuffer的大小。 476 477**起始版本:** 3.2 478 479**参数:** 480 481| 名称 | 描述 | 482| -------- | -------- | 483| devId | 表示需要操作的设备ID。 | 484| rect | ClientBuffer的裁剪区域。 | 485 486**返回:** 487 488DISPLAY_SUCCESS 表示执行成功。 489 490其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 491 492 493### SetDisplayMode() 494 495``` 496IDisplayComposer::SetDisplayMode ([in] unsigned int devId, [in] unsigned int modeId ) 497``` 498**描述** 499设置显示设备的显示模式。 500 501图形服务可以通过该接口获取设置显示设备的显示模式。 502 503**起始版本:** 3.2 504 505**参数:** 506 507| 名称 | 描述 | 508| -------- | -------- | 509| devId | 表示需要操作的设备ID。 | 510| modeId | 指明需要设置的模式ID,接口实现层将设备切换到该参数对应的显示模式。 | 511 512**返回:** 513 514DISPLAY_SUCCESS 表示执行成功。 515 516其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 517 518 519### SetDisplayPowerStatus() 520 521``` 522IDisplayComposer::SetDisplayPowerStatus ([in] unsigned int devId, [in] enum DispPowerStatus status ) 523``` 524**描述** 525设置显示设备当前的电源状态。 526 527图形服务可以通过该接口获取设置显示设备的电源状态。 528 529**起始版本:** 3.2 530 531**参数:** 532 533| 名称 | 描述 | 534| -------- | -------- | 535| devId | 表示需要操作的设备ID。 | 536| status | 表示需要设置的电源状态,具体电源状态查看[DispPowerStatus](_display_v10.md#disppowerstatus)。 | 537 538**返回:** 539 540DISPLAY_SUCCESS 表示执行成功。 541 542其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 543 544 545### SetDisplayProperty() 546 547``` 548IDisplayComposer::SetDisplayProperty ([in] unsigned int devId, [in] unsigned int id, [in] unsigned long value ) 549``` 550**描述** 551设置显示设备属性值。 552 553图形服务可以通过该接口设置显示设备具体的属性值。 554 555**起始版本:** 3.2 556 557**参数:** 558 559| 名称 | 描述 | 560| -------- | -------- | 561| devId | 表示需要操作的设备ID。 | 562| id | 由接口[GetDisplayCapability](#getdisplaycapability)返回属性ID。 | 563| value | 需要设置的属性值。 | 564 565**返回:** 566 567DISPLAY_SUCCESS 表示执行成功。 568 569其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 570 571 572### SetDisplayVsyncEnabled() 573 574``` 575IDisplayComposer::SetDisplayVsyncEnabled ([in] unsigned int devId, [in] boolean enabled ) 576``` 577**描述** 578使能垂直同步信号。 579 580图形服务可以通过该接口使能或取消垂直同步信号,当有垂直同步信号产生时,接口实现层需要回调图形服务通过RegDisplayVBlankCallback注册的 VBlankCallback 回调。 图形服务在需要刷新显示时需要使能垂直同步信号,在收到**VBlankCallback**事件回调时再进行合成送显,不需要刷新显示时需要取消垂直同步信号。 581 582**起始版本:** 3.2 583 584**参数:** 585 586| 名称 | 描述 | 587| -------- | -------- | 588| devId | 表示需要操作的设备ID。 | 589| enabled | 使能状态,true表示能,false表示不能。 | 590 591**返回:** 592 593DISPLAY_SUCCESS 表示执行成功。 594 595其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 596 597 598### SetVirtualDisplayBuffer() 599 600``` 601IDisplayComposer::SetVirtualDisplayBuffer ([in] unsigned int devId, [in] NativeBuffer buffer, [in] HdifdParcelable fence ) 602``` 603**描述** 604设置虚拟屏的输出缓存。 605 606该接口用于设置虚拟屏输出缓存,接口实现层需要将虚拟屏的输出放入到该缓存中,接口实现层需要等待同步栅栏发送信号后才能使用缓存。 607 608**起始版本:** 3.2 609 610**参数:** 611 612| 名称 | 描述 | 613| -------- | -------- | 614| devId | 表示需要操作的设备ID。 | 615| buffer | 输出缓存。 | 616| fence | 同步栅栏。 | 617 618**返回:** 619 620DISPLAY_SUCCESS 表示执行成功。 621 622其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 623