您尚未登录。

楼主 # 2024-08-09 11:00:43

memory
会员
注册时间: 2021-08-11
已发帖子: 442
积分: 418

解决全志科技A133特殊分辨率下使用GPU,导致 Qt5 OpenGL ES2程序撕裂问题

现象:
A133 下 720x1440分辨率的LCD,使用GPU的应用屏幕大幅变化的时候会撕裂

分析:
这个问题可能与buffer对齐相关

gpu需要的framebuffer需要宽32对齐

有小数点,不是对齐的
720/32=22.5

可以整除,是对齐的
736/32=23


解决方案:
1、将 board.dts 中的,

fb0_width = 720,fb0_height = 1440
改为:
fb0_width = 736,fb0_height = 1440

lcd保持不变:
lcd_x = 720,lcd_y = 1440

2. dev_fb.c 代码补丁:

diff --git a/drivers/video/fbdev/sunxi/disp2/disp/dev_fb.c b/drivers/video/fbdev/sunxi/disp2/disp/dev_fb.c
index 224eff6e6f67..6f87b0327e99 100644
--- a/drivers/video/fbdev/sunxi/disp2/disp/dev_fb.c
+++ b/drivers/video/fbdev/sunxi/disp2/disp/dev_fb.c
@@ -716,9 +716,9 @@ static int sunxi_fb_pan_display(struct fb_var_screeninfo *var,
 				config.info.fb.crop.y =
 				    ((unsigned long long)(var->yoffset)) << 32;
 				config.info.fb.crop.width =
-				    ((long long)var->xres) << 32;
+				    ((long long)config.info.screen_win.width) << 32;
 				config.info.fb.crop.height =
-				    ((long long)(var->yres / buffer_num)) << 32;
+				    ((long long)(config.info.screen_win.height / buffer_num)) << 32;
 
 #if defined(CONFIG_SUNXI_DISP2_FB_ROTATION_SUPPORT)
 				if (mgr->rot_sw && mgr->rot_sw->apply) {

3、如果是QT的应用程序,上层还是按照这个配置,这样就只在720x1440上面绘图

export QT_QPA_EGLFS_WIDTH=720
export QT_QPA_EGLFS_HEIGHT=1440

离线

楼主 #1 2024-08-09 11:02:29

memory
会员
注册时间: 2021-08-11
已发帖子: 442
积分: 418

Re: 解决全志科技A133特殊分辨率下使用GPU,导致 Qt5 OpenGL ES2程序撕裂问题

QQ截图20240809105656.png

修复前,撕裂!

离线

楼主 #2 2024-08-09 11:14:49

memory
会员
注册时间: 2021-08-11
已发帖子: 442
积分: 418

Re: 解决全志科技A133特殊分辨率下使用GPU,导致 Qt5 OpenGL ES2程序撕裂问题

修改后,无撕裂!

离线

#3 2024-08-09 11:41:12

shaoxi2010
会员
注册时间: 2019-06-13
已发帖子: 389
积分: 338

Re: 解决全志科技A133特殊分辨率下使用GPU,导致 Qt5 OpenGL ES2程序撕裂问题

大佬,要不研究下A133的QT双缓冲切换问题。在静态画面下,最后一帧在缓冲内一直不显示的毛病。

离线

楼主 #4 2024-08-09 11:44:35

memory
会员
注册时间: 2021-08-11
已发帖子: 442
积分: 418

Re: 解决全志科技A133特殊分辨率下使用GPU,导致 Qt5 OpenGL ES2程序撕裂问题

shaoxi2010 说:

大佬,要不研究下A133的QT双缓冲切换问题。在静态画面下,最后一帧在缓冲内一直不显示的毛病。

具体是什么情况呢,有视频吗?

离线

#5 2024-08-09 15:38:28

shaoxi2010
会员
注册时间: 2019-06-13
已发帖子: 389
积分: 338

Re: 解决全志科技A133特殊分辨率下使用GPU,导致 Qt5 OpenGL ES2程序撕裂问题

有点久了,视频应该是没有了,具体现象很明显。
用qt5的webegine显示一个静态画面,只要网页没有动画,大概率会得到一个渲染中的画面,点击下鼠标就恢复了。
主动调用pandisplay是能够显示出最终画面的,当时还是觉得双缓冲哪里有问题,就在QT渲染结束的50ms后强制刷了一次屏幕。

离线

#6 2024-08-10 00:04:41

jlau
会员
注册时间: 2018-06-11
已发帖子: 209
积分: 201.5

Re: 解决全志科技A133特殊分辨率下使用GPU,导致 Qt5 OpenGL ES2程序撕裂问题

全志的sdk就是垃圾,随时给你来个bug

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn