WhyCan Forum(哇酷开发者社区)

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

您尚未登录。

#1 2020-09-24 02:07:37

lfs911
会员
注册时间: 2020-09-24
累计积分: 3

double buffer切换vram时直接改layer0的buffer地址

double buffer切换vram时,是直接改layer0的buffer地址,我的疑问是,这个地址是每个帧开始时奇效还是立即生效,如果立即生效,那么生效时如果上个frame刚显示一半,那么就会造成一帧数据显示的不一致,导致flicker

我之所以这么怀疑,是发现我画的动画在移动过程中能发现图案的边缘在闪烁,我不确定是这个原因还是LCD的拖尾效应导致的。

我查了microchip 的SAMA5和NXP的RT1052, 他们都有两个buffer地址,一个是current,一个是next,要求在一个帧中断时准备好next,也就是说它的实现肯定是帧同步的,不会有flicker效应

离线

#2 2020-09-24 08:33:53

达克罗德
会员
注册时间: 2018-04-10
累计积分: 958

Re: double buffer切换vram时直接改layer0的buffer地址

当时和你有同样疑问,也发现移动图案边缘有闪烁。不过现在我觉得全志应该是帧开始时起效的,如果是立即起效,flicker应该更明显。我看到的边缘闪动是在移动方向上拖尾的感觉。而如果是真的立即生效,那么flicker效果应该是图案被切成两半,上下部分有明显偏移。
想验证这点,可以每帧换个颜色看看,是否被切两半。我自己试了下drm的驱动跑颜色变换demo,没有发现这个问题。除非drm驱动不是用这种方式切换Framebuffer

离线

#3 2020-09-24 08:36:16

达克罗德
会员
注册时间: 2018-04-10
累计积分: 958

Re: double buffer切换vram时直接改layer0的buffer地址

真是英雄所见略同,我当时有了疑问之后也是去查microchip 的SAMA5和NXP的RT1052

离线

#4 2020-09-24 13:28:09

zhouyu2019
会员
注册时间: 2019-11-07
累计积分: 37

Re: double buffer切换vram时直接改layer0的buffer地址

我是在TCON中断里面去切显存地址,这样就不会有闪烁或者撕裂现象。

离线

#5 2020-09-27 17:10:37

tpu
会员
注册时间: 2020-06-15
累计积分: 11

Re: double buffer切换vram时直接改layer0的buffer地址

切换地址基本不会闪烁. 闪烁是因为你往正在显示的buffer里面写数据了.
只有三缓存逻辑才能完全避免闪烁.

离线

页脚

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