zoukankan      html  css  js  c++  java
  • Problems with S3C6410 double framebuffer in Android

    http://hi.baidu.com/aokikyon/blog/item/609ea74530b8f533879473be.html



     

    S3C6410的双Framebuffer于Android系统中存在的问题

    在为S3C6410移植Android系统过程中,发现在拖动任务栏,软键盘输入信息等情况下,屏幕会出现闪烁现象,类似刷新率不足情况。一直认为原因是自己porting的系统没有实现copybit等2D加速功能,导致填充速度不够快。昨天在调试双Framebuffer时发现,问题可能出在双Framebuffer上的交换上。Android使用双Framebuffer机制,front显示,back填充,前后交互显得特别重要。打开三星驱动debug宏,可以发现系统(Android 1.5)在EGL初始化后不断调用显示驱动以下几个函数,实现buffer交换:
    s3cfb_check_var()
    s3cfb_activate_var()
    pan_display()
    打开debug的printk信息后,我发现一件很有意思的情况,原来所谓的闪烁现象,现在都不见了,至少基本看不出了。Printk会降低驱动调用速度,会不会问题出在显示驱动?文章Patch Framebuffer Driver with Double-Buffering to Support Android's Page-Flipping中也提到双buffer驱动导致不断开关LCD。于是查到s3cfb_activate_var()函数,这个函数重写了LCD的寄存器。应该是短时间重写该寄存器导致出现问题。临时的解决方法是在这个函数后添加mdelay(5)延时,但会导致效率降低,更好的解决方法应该修改驱动或者Android中间层调用代码,这个需要跟踪下Android的UI相关代码,待续。


     


  • 相关阅读:
    peerdroid:JXTA peers running on Android platform.
    关于2.7版中对等组任务管理器
    关于java获取操作系统信息
    Failed to login to this group: xxx. Error=0
    jxsev2.5源代码
    PropertyBeanUtils.copyProperties(dest, orig)
    发现两个有关Netbeans RCP开发的项目
    关于AdvertisementFactory废弃的几个方法
    在vs2008中,根据系统引用64和32位的动态库
    vc练习总结1
  • 原文地址:https://www.cnblogs.com/yuzaipiaofei/p/4124592.html
Copyright © 2011-2022 走看看