基于NSR3588开发板Android12三屏拼接显示实例
1.硬件接口
2路HDMI接口
1路Type-c DP转HDMI
如下图:
2.多屏显示拼接简介
RK3588可以支持如下多种拼接模式:
我们采用水平3x1的方式,接3个1920x1080的HDMI 显示输出。
总分辨率为:5760x1080
这里可以理解为我们此时要配置了一个分辨率为5760x1080的大屏幕。
3.代码实现
(1)dts部分
dts部分没有什么特别之处,主要是把HDMI0+HDMI1+DP0都打开即可,如下:
&hdmi0 {
enable-gpios = <&gpio4 RK_PB1 GPIO_ACTIVE_HIGH>;
status = "okay";
};
&hdmi0_in_vp0 {
status = "okay";
};
&route_hdmi0 {
status = "okay";
connect = <&vp0_out_hdmi0>;
};
&hdmi1 {
status = "okay";
};
&hdmi1_in_vp1 {
status = "okay";
};
&route_hdmi1 {
status = "okay";
connect = <&vp1_out_hdmi1>;
};
&dp0 {
status = "okay";
};
&dp0_in_vp2 {
status = "okay";
};
(2)drmhwc2部分
配置文件位于:hardware/rockchip/hwcomposer/drmhwc2/HwComposerEnv.xml
改动如下:
diff --git a/HwComposerEnv.xml b/HwComposerEnv.xml
index d0ab850..f7a4765 100755
--- a/HwComposerEnv.xml
+++ b/HwComposerEnv.xml
@@ -31,7 +31,7 @@
| 3840 | 1920 | - FbWidth = 5760
- ConnectorCnt = 4
-->
- <DsiplayMode Mode="0" FbWidth="11520" FbHeight="1080" ConnectorCnt="4">
+ <DsiplayMode Mode="1" FbWidth="5760" FbHeight="1080" ConnectorCnt="3">
<Connector>
<!--
Example 1 - Slicing-6x1 1920x1080:
@@ -78,7 +78,7 @@
<TypeId>1</TypeId>
<SrcX>0</SrcX> <!-- Framebuffer x 0ffset -->
<SrcY>0</SrcY> <!-- Framebuffer y 0ffset -->
- <SrcW>3840</SrcW> <!-- Framebuffer Width -->
+ <SrcW>1920</SrcW> <!-- Framebuffer Width -->
<SrcH>1080</SrcH> <!-- Framebuffer Height-->
<DstX>0</DstX> <!-- unuse , reserved -->
<DstY>0</DstY> <!-- unuse , reserved -->
@@ -88,19 +88,7 @@
<Connector>
<Type>HDMI-A</Type>
<TypeId>2</TypeId>
- <SrcX>3840</SrcX> <!-- Framebuffer x 0ffset -->
- <SrcY>0</SrcY> <!-- Framebuffer y 0ffset -->
- <SrcW>1920</SrcW> <!-- Framebuffer Width -->
- <SrcH>1080</SrcH> <!-- Framebuffer Height-->
- <DstX>0</DstX> <!-- unuse , reserved-->
- <DstY>0</DstY> <!-- unuse , reserved-->
- <DstW>0</DstW> <!-- unuse , reserved-->
- <DstH>0</DstH> <!-- unuse , reserved-->
- </Connector>
- <Connector>
- <Type>HDMI-A</Type>
- <TypeId>3</TypeId>
- <SrcX>5760</SrcX> <!-- Framebuffer x 0ffset -->
+ <SrcX>1920</SrcX> <!-- Framebuffer x 0ffset -->
<SrcY>0</SrcY> <!-- Framebuffer y 0ffset -->
<SrcW>1920</SrcW> <!-- Framebuffer Width -->
<SrcH>1080</SrcH> <!-- Framebuffer Height-->
@@ -112,9 +100,9 @@
<Connector>
<Type>DP</Type>
<TypeId>1</TypeId>
- <SrcX>7680</SrcX> <!-- Framebuffer x 0ffset -->
+ <SrcX>3840</SrcX> <!-- Framebuffer x 0ffset -->
<SrcY>0</SrcY> <!-- Framebuffer y 0ffset -->
- <SrcW>3840</SrcW> <!-- Framebuffer Width -->
+ <SrcW>1920</SrcW> <!-- Framebuffer Width -->
<SrcH>1080</SrcH> <!-- Framebuffer Height-->
<DstX>0</DstX> <!-- unuse , reserved-->
<DstY>0</DstY> <!-- unuse , reserved-->
4.效果演示
三屏拼接的整体演示效果如下:
演示视频地址:
RK3588三屏拼接显示