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