lvgl 使用g2d加速性能问题
-
lvgl开启g2d硬件加速表现与想象中有些差异。
在tina系统中,开启lvgl的g2d加速选项,并使用LV_USE_PERF_MONITOR监测帧率,运行lvgl自带demo进行测试。相比不开启g2d加速,lv_g2d_test帧率有明显提升,但是lv_demo_benchmark测试帧率下降,且其他lv_example的帧率也有明显下降,大概相差两到三倍。
请问有人知道是什么原因吗?
-
1、首先LV_USE_PERF_MONITOR统计的不是真实的fps,lvgl可以没有限制的一直刷画面,看起来帧率的确高,但是滑动场景下,比较容易看到画面撕裂,不想看到撕裂就只能开双缓冲,像QT,MiniGUI这些框架也是如此,默认是没有用上双缓冲的,可以传入下面的宏看fps打印
TARGET_CFLAGS+=-DLV_USE_SUNXIFB_DEBUG
2、开启LVGL8_USE_SUNXIFB_DOUBLE_BUFFER后,可以解决画面撕裂的问题,但是需要做整屏buffer的拷贝,这里会比较耗时
3、开启LVGL8_USE_SUNXIFB_G2D后,就是把整屏buffer的拷贝从用cpu拷贝,切换到g2d拷贝
4、开启LVGL8_USE_SUNXIFB_G2D_ROTATE后,就可以用G2D旋转整个屏幕,会比原来的CPU旋转快很多
5、G2D的优势在于blend,scale,rotate,lv_g2d_test在使能g2d的场景下,会传入宏
TARGET_CFLAGS+=-DLV_USE_SUNXIFB_G2D_FILL \ -DLV_USE_SUNXIFB_G2D_BLEND \ -DLV_USE_SUNXIFB_G2D_BLIT \ -DLV_USE_SUNXIFB_G2D_SCALE
6、lv_demo_benchmark、lv_example不能使能第5步的宏,因为其中的图片不是申请的物理连续内存,不能使用g2d来进行blend等功能,但是可以使能LVGL8_USE_SUNXIFB_DOUBLE_BUFFER,LVGL8_USE_SUNXIFB_G2D,LVGL8_USE_SUNXIFB_G2D_ROTATE来加速双缓冲情况下的拷贝与屏幕旋转功能,但是整体还是单缓冲的帧率要高
-
@anruliu
感谢解答!
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号