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