Closed 18611429192 closed 3 years ago
我将awtk-port/lcd_linux/lcd_linux_fb.c
中的__FB_ASYNC_SWAP
定义成1,发现这个定义打开,看这个代码就有点像是三个frame buffer工作了,,两块fb.var地址fbmem0和fbmem_offline,加上在函数lcd_mem_bgr565_create_single_fb
创建的内存。最后的效果感觉还行,不知道我这么理解对不对。
解决撕裂感只要fb_number>=2 就会自动有效果,不需要改代码,也不需要3fb 开启__FB_ASYNC_SWAP会使用单独的线程切换fb, 对提高帧率有一定的帮助
要使用3fb,需要用fbset命令设置虚拟高=实际高*3,要看具体的板子平台,不一定能设置成功
tk_strncpy:308 condition(dst != NULL && src != NULL) failed! 这个问题麻烦你跟踪一下,把调用栈打印出来,我们没有测试出这个问题
貌似只能是双buffer了,我算了下,最多只能是开2个frame buffer。1843200/1920 = 960
我看了以前的贴子issues220,没有看的很明白,想详细了解下怎么在linux下使用三个frame buffer的方法。 目前我在awtk-port/lcd_linux/lcd_linux_fb.c中找到了使用两个frame buffer的代码,但是不知道用的是不是不对,画面有撕裂感。 我看到在下面这个函数中会调用
lcd_linux_create_swappable(fb);
,开启一个framebuffer,来使用,于是我把这段注释了,强制使用return lcd_linux_create_flushable(fb);
来使用两个frame buffer。 结果是虽然帧率上升了,但是画面仍然不够流畅,且有撕裂感。我想直接直接使用fb方式,启用三个frame buffer。请帮我看下我的设备能不能启用三个frame buffer。我的一些打印信息如下。
还有个问题,,这个
tk_strncpy:308 condition(dst != NULL && src != NULL) failed!
错误是因为什么呢?