EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
2 o2 w- s6 | mRK3588 VOP介绍 RK3588具有性能强大VOP,分为4个VP port ,下图是RK3588VP 和各显示接口的连接关系 file:///C:/Users/%E5%BC%A0%E5%B7%A5/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png
- U: k! d j2 Q# D+ Z9 E需要注意的是,RK3588 的HDMI 和 DP 支持 8K 输出,但是在 8K 输出模式下,一个显示接口需要同时占用 VP0 和 VP1 。所以如果产品上需要支持 8K 显示输出,VP1 上要注意不要连接其他显示接口。 : y8 ^( @( q/ y$ U: Z
vop-split功能 这里我们重点介绍VOP的vop-split功能,是一种类似 mipi 双通道模式的技术,可以让一路 Video Port 输出按照水平方向平分成左右两路,同时驱动两个显示接口,显示时序相同,内容独立的画面。RK3588的Video Port0、VideoPort 1、Video Port 2三个port都可以支持split功能,Video Port3不支持split功能。下面以Video Port0为例来介绍split功能。 file:///C:/Users/%E5%BC%A0%E5%B7%A5/AppData/Local/Temp/msohtmlclip1/01/clip_image003.jpg 如上图所示,在默认情况下一个VP0只能驱动一个显示接口(如1个HDMI或者1个eDP),如果在 VP0 上开启 split 模式,则 VP0 的输出可以同时驱动两个显示接口(HDMI0/1、eDP0/1 或者其他能与 VP0 连接的显示接口),两个显示接口上显示的内容为 VP0 输出的内容水平方向左右平分,比如 VP0 以 3840x1080的分辨率输出,则两个显示接口各显示 1920x1080 的输出。
S% f1 V: e3 n+ U通过这种技术,可以在 RK3588 上扩展出 7 路独立的显示输出。
( W& ]* |! i1 G每一个 VP 上参与 split 输出的两个显示接口,输出的时序,帧率必须相同。 ( `5 y: G7 q& }9 `9 _
vop-split软件配置 vop-split可以通过 dts 开关,dts 只要把参与 split 的两个显示接口挂接在同一个 VP 上,并打开主显示接口的 split-mode 属性。 0 P( K0 R; y+ ~# q5 S* I
比如 ,按照如下配置,打开 hdmi0 和 hdmi1 在 VP0 上的split 功能: &hdmi0 { status= "okay"; split-mode; }; 4 T7 G( [- s. E9 d% c; w
&hdmi1 { status = "okay"; };
" F/ e: G/ \9 j" `% k+ O0 O7 B5 O&hdmi0_in_vp0 { status = "okay"; }; ' B# X' R2 E. l- A
&hdmi1_in_vp0 { status = "okay"; }; 5 g8 X# ?" G5 `; ~6 N# E; b {
&hdmi0_in_vp1 { status = "disabled"; }; . y/ {" b f0 E7 ~. {6 k. m6 k, @: Q
&hdmi0_in_vp2 { status = "disabled"; }; / G& S* e1 h6 R/ z; h6 L0 {) H. E
&hdmi1_in_vp1 { status = "disabled"; };
3 K7 q/ x5 b/ N7 T a&hdmi1_in_vp2 { status = "disabled"; }; 通过 vop-split 功能,可以扩展出更多的多屏异显功能。 2 c8 J1 e* p8 }
在驱动实现上,为了方便上层应用适配,尽量和 MIPI 双通道技术接近,屏蔽底层实现差异,每个 Video Port 上进行 split 的两个显示接口只会向 drm 系统注册一个 encoder 和 connector,所以在用户空间,每一 CRTC(Video Port) 上只会看到一个 connector 设备,这个信息可以通过 modetest 的输出确认。
0 q0 R0 A x# W3 V+ g V" u对于 Android 应用,希望每一个屏幕都对应一个独立的显示设备,针对这种需求,Rockchip 平台的 Android hwc 有做针对性的优化,具体修改如下: 配置文件位于:hardware/rockchip/hwcomposer/drmhwc2/HwComposerEnv.xml # I0 ~/ }! @8 p( u+ I' H' V$ \) o
仅需要将 Mode=“2” 设置即可,其余配置不需要设置,当前版本建议点对点输出,系统会直接将屏幕分辨率作为渲染分辨率
/ b8 {/ n' [, k/ i: T0 {; \# I) A& OMode=“1” 表示多屏拼接功能 Mode=“2” 表示异显功能 @sys2_206:~/4_Android12_29_sdk/hardware/rockchip/hwcomposer/drmhwc2$git diff diff --git a/HwComposerEnv.xmlb/HwComposerEnv.xml index d0ab850..02e95dc 100755 --- a/HwComposerEnv.xml +++ b/HwComposerEnv.xml | 3840 | 1920 | - FbWidth = 5760 - ConnectorCnt = 4 --> - <DsiplayMode Mode="0" FbWidth="11520"FbHeight="1080" ConnectorCnt="4"> + <DsiplayMode Mode="2" FbWidth="0"FbHeight="0" ConnectorCnt="4"> <Connector> <!-- Example 1 - Slicing-6x1 1920x1080: / C0 q" H* D3 O& ?5 B( D
+ Y7 R. R6 ^, H& i5 Z
# @8 f; x: N8 o+ ^, I7 h
$ L/ A2 ^% d( _/ z+ n, v( D- j0 v* q5 p* U" N0 w" Y! D+ t |
; `. g8 d7 M9 ^9 J |