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 59 60发送命令请求。 61 62**起始版本:** 3.2 63 64**参数:** 65 66| 名称 | 描述 | 67| -------- | -------- | 68| inEleCnt | 表示元素的个数。 | 69| inFds | 表示 HdifdParcelable 的 ID。 | 70| outEleCnt | 指示要获取的元素数。 | 71| outFds | 指示要获取的 HdifdParcelable 的 ID。 | 72 73**返回:** 74 75DISPLAY_SUCCESS 表示执行成功。 76 77其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 78 79 80### CreateLayer() 81 82``` 83IDisplayComposer::CreateLayer ([in] unsigned int devId, [in] struct LayerInfo layerInfo, [in] unsigned int cacheCount, [out] unsigned int layerId) 84``` 85 86**描述** 87 88 89打开图层。 90 91GUI在使用图层时,需要先根据图层信息打开图层,打开图层成功可获得图层ID,根据图层ID使用图层各接口。 92 93**起始版本:** 3.2 94 95**参数:** 96 97| 名称 | 描述 | 98| -------- | -------- | 99| devId | 显示设备ID,用于支持多个显示设备,取值从0开始,0表示第一个设备,最大支持5个设备,即取值范围0~4。 | 100| layerInfo | 图层信息,上层GUI打开图层时需传递图层信息,包括图层类型,图层大小,像素格式等信息。 | 101| cacheCount | 缓冲区缓存的计数。 | 102| layerId | 图层ID,打开图层成功后返回给GUI的图层ID,用于标识唯一的图层。 | 103 104**返回:** 105 106DISPLAY_SUCCESS 表示执行成功。 107 108其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 109 110**参见:** 111 112CloseLayer 113 114 115### CreateVirtualDisplay() 116 117``` 118IDisplayComposer::CreateVirtualDisplay ([in] unsigned int width, [in] unsigned int height, [out] int format, [out] unsigned int devId) 119``` 120 121**描述** 122 123 124创建虚拟显示设备。 125 126该接口用于创建一个虚拟显示设备。 127 128**起始版本:** 3.2 129 130**参数:** 131 132| 名称 | 描述 | 133| -------- | -------- | 134| width | 指定显示设备的像素宽度。 | 135| height | 指定显示设备的像素高度。 | 136| format | 指定显示设备的像素格式。 详情参考[PixelFormat](_display_v10.md#pixelformat),接口实现层可以根据硬件需求,修改format并返回给图形服务。 | 137| devId | 用于接口层返回创建的设备ID。 | 138 139**返回:** 140 141DISPLAY_SUCCESS 表示执行成功。 142 143其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 144 145 146### DestroyLayer() 147 148``` 149IDisplayComposer::DestroyLayer ([in] unsigned int devId, [in] unsigned int layerId) 150``` 151 152**描述** 153 154 155在指定的显示设备上打开图层。 156 157在 GUI 上使用图层之前,必须根据图层信息打开图层。在图层 打开后,可以获取图层 ID,然后根据图层 ID 使用其他功能。 158 159**起始版本:** 3.2 160 161**参数:** 162 163| 名称 | 描述 | 164| -------- | -------- | 165| devId| 显示设备的ID。<br/>取值范围为 0 到 4,其中 0 表示第一个显示设备,4 表示最后一个显示设备。 | 166| layerId | 指示指向唯一标识层的层 ID 的指针。返回图层 ID到图层成功打开后添加到 GUI。 | 167 168**返回:** 169 170DISPLAY_SUCCESS 表示执行成功。 171 172其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 173 174 175### DestroyVirtualDisplay() 176 177``` 178IDisplayComposer::DestroyVirtualDisplay ([in] unsigned int devId) 179``` 180 181**描述** 182 183 184销毁虚拟显示设备。 185 186该接口用于销毁指定的虚拟显示设备。 187 188**起始版本:** 3.2 189 190**参数:** 191 192| 名称 | 描述 | 193| -------- | -------- | 194| devId | 表示需要操作的设备ID。 | 195 196**返回:** 197 198DISPLAY_SUCCESS 表示执行成功。 199 200其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 201 202 203### GetCmdReply() 204 205``` 206IDisplayComposer::GetCmdReply ([out] SharedMemQueue< int > reply) 207``` 208 209**描述** 210 211 212获取命令请求的返回结果。 213 214**起始版本:** 3.2 215 216**参数:** 217 218| 名称 | 描述 | 219| -------- | -------- | 220| reply | 表示返回的结果。 | 221 222**返回:** 223 224DISPLAY_SUCCESS 表示执行成功。 225 226其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 227 228 229### GetDisplayBacklight() 230 231``` 232IDisplayComposer::GetDisplayBacklight ([in] unsigned int devId, [out] unsigned int level) 233``` 234 235**描述** 236 237 238获取显示设备当前的背光值。 239 240图形服务可以通过该接口获取设置显示设备的背光值。 241 242**起始版本:** 3.2 243 244**参数:** 245 246| 名称 | 描述 | 247| -------- | -------- | 248| devId | 表示需要操作的设备ID。 | 249| level | 保存对应设备的背光值,由接口实现层进行写入。 | 250 251**返回:** 252 253DISPLAY_SUCCESS 表示执行成功。 254 255其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 256 257 258### GetDisplayCapability() 259 260``` 261IDisplayComposer::GetDisplayCapability ([in] unsigned int devId, [out] struct DisplayCapability info) 262``` 263 264**描述** 265 266 267获取显示设备能力集。 268 269图形服务可以通过该接口获取显示设备具备哪些显示能力。 270 271**起始版本:** 3.2 272 273**参数:** 274 275| 名称 | 描述 | 276| -------- | -------- | 277| devId | 表示需要操作的设备ID。 | 278| info | 设备支持的能力集信息,详情参考 [DisplayCapability](_display_capability_v10.md)。 | 279 280**返回:** 281 282DISPLAY_SUCCESS 表示执行成功。 283 284其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 285 286 287### GetDisplayMode() 288 289``` 290IDisplayComposer::GetDisplayMode ([in] unsigned int devId, [out] unsigned int modeId) 291``` 292 293**描述** 294 295 296获取显示设备当前的显示模式。 297 298图形服务可以通过该接口获取显示设备当前的显示模式,该模式由接口实现层进行数据的写入。 299 300**起始版本:** 3.2 301 302**参数:** 303 304| 名称 | 描述 | 305| -------- | -------- | 306| devId | 表示需要操作的设备ID。 | 307| modeId | 存放当前设备的显示模式ID。 | 308 309**返回:** 310 311DISPLAY_SUCCESS 表示执行成功。 312 313其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 314 315 316### GetDisplayPowerStatus() 317 318``` 319IDisplayComposer::GetDisplayPowerStatus ([in] unsigned int devId, [out] enum DispPowerStatus status) 320``` 321 322**描述** 323 324 325获取显示设备当前的电源状态。 326 327图形服务可以通过该接口获取设置显示设备的电源状态,该电源状态由接口实现层进行状态的写入。 328 329**起始版本:** 3.2 330 331**参数:** 332 333| 名称 | 描述 | 334| -------- | -------- | 335| devId | 表示需要操作的设备ID。 | 336| status | 保存对应设备的电源状态,具体电源状态查看[DispPowerStatus](_display_v10.md#disppowerstatus)。 | 337 338**返回:** 339 340DISPLAY_SUCCESS 表示执行成功。 341 342其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 343 344 345### GetDisplayProperty() 346 347``` 348IDisplayComposer::GetDisplayProperty ([in] unsigned int devId, [in] unsigned int id, [out] unsigned long value) 349``` 350 351**描述** 352 353 354获取显示设备属性值。 355 356图形服务可以通过该接口获取显示设备具体的属性值。 357 358**起始版本:** 3.2 359 360**参数:** 361 362| 名称 | 描述 | 363| -------- | -------- | 364| devId | 指示需要操作的设备ID。 | 365| id | 由接口{\@Link GetDisplayCapability}返回的属性ID。 | 366| value | 属性ID对应的属性值,由接口实现层写入。 | 367 368**返回:** 369 370DISPLAY_SUCCESS 表示执行成功。 371 372其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 373 374 375### GetDisplayReleaseFence() 376 377``` 378IDisplayComposer::GetDisplayReleaseFence ([in] unsigned int devId, [out] unsigned int[] layers, [out] HdifdParcelable[] fences) 379``` 380 381**描述** 382 383 384获取显示图层fence。 385 386图形服务在调用接口Commit后,需要通过该接口获取图层的fence信息。 387 388**起始版本:** 3.2 389 390**参数:** 391 392| 名称 | 描述 | 393| -------- | -------- | 394| devId | 表示需要操作的设备ID。 | 395| layers | 图层首地址,指向图层数组的首地址。 | 396| fences | fence首地址,指向fence数组的首地址。 | 397 398**返回:** 399 400DISPLAY_SUCCESS 表示执行成功。 401 402其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 403 404 405### GetDisplaySupportedModes() 406 407``` 408IDisplayComposer::GetDisplaySupportedModes ([in] unsigned int devId, [out] struct DisplayModeInfo[] modes) 409``` 410 411**描述** 412 413 414获取显示设备支持的显示模式信息。 415 416图形服务可以通过该接口获取到显示设备支持哪些显示模式。 417 418**起始版本:** 3.2 419 420**参数:** 421 422| 名称 | 描述 | 423| -------- | -------- | 424| devId | 表示需要操作的设备ID。 | 425| modes | 设备支持的所有模式信息,包括所有能支持的分辨率和刷新率,每一个模式实现层都有一个ID与之对应,在获取当前模式 和设置当前模式时都会使用到,详情参考 [DisplayModeInfo](_display_mode_info_v10.md)。 | 426 427**返回:** 428 429DISPLAY_SUCCESS 表示执行成功。 430 431其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 432 433 434### InitCmdRequest() 435 436``` 437IDisplayComposer::InitCmdRequest ([in] SharedMemQueue< int > request) 438``` 439 440**描述** 441 442 443初始化命令请求对象。 444 445**起始版本:** 3.2 446 447**参数:** 448 449| 名称 | 描述 | 450| -------- | -------- | 451| request | 指示要初始化的 SharedMemQueue。 | 452 453**返回:** 454 455DISPLAY_SUCCESS 表示执行成功。 456 457其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 458 459 460### RegDisplayVBlankCallback() 461 462``` 463IDisplayComposer::RegDisplayVBlankCallback ([in] unsigned int devId, [in] IVBlankCallback cb) 464``` 465 466**描述** 467 468 469注册VBlank事件回调,当有VBlank事件发生时接口实现层需要回调注册的接口。 470 471**起始版本:** 3.2 472 473**参数:** 474 475| 名称 | 描述 | 476| -------- | -------- | 477| devId | 表示需要操作的设备ID。 | 478| cb | VBlank事件回调实例,当有VBlank事件发生时并且DisplayVsync处于Enable状态,接口实现层需要通过该实例通知图形服务。 | 479 480**返回:** 481 482DISPLAY_SUCCESS 表示执行成功。 483 484其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 485 486 487### RegHotPlugCallback() 488 489``` 490IDisplayComposer::RegHotPlugCallback ([in] IHotPlugCallback cb) 491``` 492 493**描述** 494 495 496注册热插拔事件回调,当有热插拔事件发生时接口实现层需要回调注册的接口,通过该实例通知图形服务。 497 498**起始版本:** 3.2 499 500**参数:** 501 502| 名称 | 描述 | 503| -------- | -------- | 504| cb | 热插拔事件回调实例。 | 505 506**返回:** 507 508DISPLAY_SUCCESS 表示执行成功。 509 510其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 511 512 513### SetClientBufferCacheCount() 514 515``` 516IDisplayComposer::SetClientBufferCacheCount ([in] unsigned int devId, [in] unsigned int count) 517``` 518 519**描述** 520 521 522设置显示设备的客户端缓冲区缓存计数。 523 524**起始版本:** 3.2 525 526**参数:** 527 528| 名称 | 描述 | 529| -------- | -------- | 530| devId | 表示需要操作的设备ID。 | 531| count | 客户端缓冲区缓存计数。 | 532 533**返回:** 534 535DISPLAY_SUCCESS 表示执行成功。 536 537其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 538 539 540### SetDisplayBacklight() 541 542``` 543IDisplayComposer::SetDisplayBacklight ([in] unsigned int devId, [in] unsigned int level) 544``` 545 546**描述** 547 548 549设置显示设备当前的背光值。 550 551图形服务可以通过该接口获取设置显示设备的背光值。 552 553**起始版本:** 3.2 554 555**参数:** 556 557| 名称 | 描述 | 558| -------- | -------- | 559| devId | 表示需要操作的设备ID。 | 560| level | 表示需要设置的背光值,背光值范围0~255。 | 561 562**返回:** 563 564DISPLAY_SUCCESS 表示执行成功。 565 566其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 567 568 569### SetDisplayClientCrop() 570 571``` 572IDisplayComposer::SetDisplayClientCrop ([in] unsigned int devId, [in] struct IRect rect) 573``` 574 575**描述** 576 577 578设置显示设备的裁剪区域。 579 580图形服务可以通过该接口设置显示设备的ClientBuffer的裁剪区域,裁剪区域不能超过ClientBuffer的大小。 581 582**起始版本:** 3.2 583 584**参数:** 585 586| 名称 | 描述 | 587| -------- | -------- | 588| devId | 表示需要操作的设备ID。 | 589| rect | ClientBuffer的裁剪区域。 | 590 591**返回:** 592 593DISPLAY_SUCCESS 表示执行成功。 594 595其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 596 597 598### SetDisplayMode() 599 600``` 601IDisplayComposer::SetDisplayMode ([in] unsigned int devId, [in] unsigned int modeId) 602``` 603 604**描述** 605 606 607设置显示设备的显示模式。 608 609图形服务可以通过该接口获取设置显示设备的显示模式。 610 611**起始版本:** 3.2 612 613**参数:** 614 615| 名称 | 描述 | 616| -------- | -------- | 617| devId | 表示需要操作的设备ID。 | 618| modeId | 指明需要设置的模式ID,接口实现层将设备切换到该参数对应的显示模式。 | 619 620**返回:** 621 622DISPLAY_SUCCESS 表示执行成功。 623 624其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 625 626 627### SetDisplayPowerStatus() 628 629``` 630IDisplayComposer::SetDisplayPowerStatus ([in] unsigned int devId, [in] enum DispPowerStatus status) 631``` 632 633**描述** 634 635 636设置显示设备当前的电源状态。 637 638图形服务可以通过该接口获取设置显示设备的电源状态。 639 640**起始版本:** 3.2 641 642**参数:** 643 644| 名称 | 描述 | 645| -------- | -------- | 646| devId | 表示需要操作的设备ID。 | 647| status | 表示需要设置的电源状态,具体电源状态查看[DispPowerStatus](_display_v10.md#disppowerstatus)。 | 648 649**返回:** 650 651DISPLAY_SUCCESS 表示执行成功。 652 653其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 654 655 656### SetDisplayProperty() 657 658``` 659IDisplayComposer::SetDisplayProperty ([in] unsigned int devId, [in] unsigned int id, [in] unsigned long value) 660``` 661 662**描述** 663 664 665设置显示设备属性值。 666 667图形服务可以通过该接口设置显示设备具体的属性值。 668 669**起始版本:** 3.2 670 671**参数:** 672 673| 名称 | 描述 | 674| -------- | -------- | 675| devId | 表示需要操作的设备ID。 | 676| id | 由接口[GetDisplayCapability](#getdisplaycapability)返回属性ID。 | 677| value | 需要设置的属性值。 | 678 679**返回:** 680 681DISPLAY_SUCCESS 表示执行成功。 682 683其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 684 685 686### SetDisplayVsyncEnabled() 687 688``` 689IDisplayComposer::SetDisplayVsyncEnabled ([in] unsigned int devId, [in] boolean enabled) 690``` 691 692**描述** 693 694 695使能垂直同步信号。 696 697图形服务可以通过该接口使能或取消垂直同步信号,当有垂直同步信号产生时,接口实现层需要回调图形服务通过RegDisplayVBlankCallback注册的 VBlankCallback 回调。 图形服务在需要刷新显示时需要使能垂直同步信号,在收到**VBlankCallback**事件回调时再进行合成送显,不需要刷新显示时需要取消垂直同步信号。 698 699**起始版本:** 3.2 700 701**参数:** 702 703| 名称 | 描述 | 704| -------- | -------- | 705| devId | 表示需要操作的设备ID。 | 706| enabled | 使能状态,true表示能,false表示不能。 | 707 708**返回:** 709 710DISPLAY_SUCCESS 表示执行成功。 711 712其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 713 714 715### SetVirtualDisplayBuffer() 716 717``` 718IDisplayComposer::SetVirtualDisplayBuffer ([in] unsigned int devId, [in] NativeBuffer buffer, [in] HdifdParcelable fence) 719``` 720 721**描述** 722 723 724设置虚拟屏的输出缓存。 725 726该接口用于设置虚拟屏输出缓存,接口实现层需要将虚拟屏的输出放入到该缓存中,接口实现层需要等待同步栅栏发送信号后才能使用缓存。 727 728**起始版本:** 3.2 729 730**参数:** 731 732| 名称 | 描述 | 733| -------- | -------- | 734| devId | 表示需要操作的设备ID。 | 735| buffer | 输出缓存。 | 736| fence | 同步栅栏。 | 737 738**返回:** 739 740DISPLAY_SUCCESS 表示执行成功。 741 742其他值表示执行失败,具体错误码查看[DispErrCode](_display_v10.md#disperrcode)。 743