double buffer切换vram时,是直接改layer0的buffer地址,我的疑问是,这个地址是每个帧开始时奇效还是立即生效,如果立即生效,那么生效时如果上个frame刚显示一半,那么就会造成一帧数据显示的不一致,导致flicker
我之所以这么怀疑,是发现我画的动画在移动过程中能发现图案的边缘在闪烁,我不确定是这个原因还是LCD的拖尾效应导致的。
我查了microchip 的SAMA5和NXP的RT1052, 他们都有两个buffer地址,一个是current,一个是next,要求在一个帧中断时准备好next,也就是说它的实现肯定是帧同步的,不会有flicker效应
离线
当时和你有同样疑问,也发现移动图案边缘有闪烁。不过现在我觉得全志应该是帧开始时起效的,如果是立即起效,flicker应该更明显。我看到的边缘闪动是在移动方向上拖尾的感觉。而如果是真的立即生效,那么flicker效果应该是图案被切成两半,上下部分有明显偏移。
想验证这点,可以每帧换个颜色看看,是否被切两半。我自己试了下drm的驱动跑颜色变换demo,没有发现这个问题。除非drm驱动不是用这种方式切换Framebuffer
离线
真是英雄所见略同,我当时有了疑问之后也是去查microchip 的SAMA5和NXP的RT1052
离线
我是在TCON中断里面去切显存地址,这样就不会有闪烁或者撕裂现象。
离线
切换地址基本不会闪烁. 闪烁是因为你往正在显示的buffer里面写数据了.
只有三缓存逻辑才能完全避免闪烁.
离线