关于S3C6410的2D加速的ALPHABLEND问题

ruiqing2007   2010-3-8 20:24 楼主
    如题,三星6410默认的显示驱动打开了2D加速,使用它的ALPHABLEND加速时,显示一小幅图片,要34到35MS

的样子,将2D加速全部关掉,显示一小幅图片,反而降到了27到28MS的样子,但是用同样的程序在魅族的M8机器

上试,显示该幅图片只要4到5MS,请问高手,有什么办法能够达到这个效果?不然我们机器上刷SHELL时会很慢!

回复评论 (6)

2D加速,最近可能要上这个,

帮顶下,MARK,期待做过这方面的高人、 、 、 、 、
点赞  2010-3-9 09:08
没整过,关注一下!!!
点赞  2010-3-9 09:21
lg~~~~~~~~~~~
点赞  2010-3-9 21:35
这几天也在弄6410的2D,不过我是linux的。
这两天在弄bitblt,最简单的从一块区域拷贝到另外一块区域显示。ALPHABLEND还没看过。
开发板的代码移植过来,根本不能用。
自己按照手册配置的寄存器,从FIFO state和中断来看,已经执行了。但是看不到任何效果!

开始怀疑是dst_addr、src_addr的问题。但后来试过Line Drawing,也不能画线!!!

现在都不知道怀疑啥了。网上也找不到资料。
希望借着贵地能一起讨论一下6410的2D。
点赞  2010-3-17 14:19
呵呵,我那个问题早已经解决了。

我这里是在WINCE6.0平台下的:

Bitblt的优化:打开显示驱动的precomp.h,里面有个G2D_ACCELERATE,这个是是否使用
              三星2D加速的总开关,关闭它,Bitblt可以优化到9MS的样子,不关大概
              20到30MS的样子吧!
alphablend:   precomp.h中,打开G2D_ACCELERATE,针对alphablend的宏设置如下:
  1.               #define G2D_BYPASS_HW_ALPHABLEND    (FALSE) //ture
  2.     /// Below is suboption
  3.     /// In our HW PPA feature has different bleding equation to SW.
  4.     #define G2D_BYPASS_PERPIXEL_ALPHABLEND          (FALSE)
  5.     /// In our HW SCA feature does not change alphavalue, so this can lead to test fail when repetive alphablending.
  6.     #define G2D_BYPASS_SOURCECONSTANT_ALPHABLEND    (FALSE)
  7.     /// This will run HW Bitblt twice, one for SCA and other for PPA, The result has incorrect alphabit
  8.     #define G2D_BYPASS_2STEP_PROCESS_PPA_AFTER_SCA  (FALSE)

              设置好后重编显示驱动更新NK,alphablend可由原来的38MS变到2到4MS的样子。

STRETCHBLT的设置:同样在precomp.h里面,打开G2D_ACCELERATE,将G2D_BYPASS_HW_STRETCHBLT设置为0,可由原来的200MS左右的时间优化为14MS左右。
点赞  2010-3-20 13:24
我的问题也搞定了。
手册写的寄存器配置不全!后来参考wince的驱动写的,现在可以实现bitblt的透明功能。800*600的时间大约是5~6ms
当时配置寄存器错误的几个地方如下:
1、DST_BASE_ADDR和SRC_BASE_ADDR要设置物理地址。不能是内核的虚拟地址或者应用程序中的地址。对于FB,要使用 dma_alloc_writecombine 第三个参数返回的物理地址 fbi->fix.smem_start。
2、在手册里bitblt没说要设置 clip 的寄存器,但是clip不设是不行的,感觉是使用默认值的0话就把图像全部剪掉了!我直接设为屏幕的分辨率了。
3、使用透明模式要设置的是 BS_COLOR,而不是BG_COLOR。开始我还以为是代码写错了。后来试了一下,感觉是手册写错了。Blue Screen Mode咋设置我就没有试了。
4、使用2D的画线和画点功能,也要设置DST_BASE_ADDR和clip的!手册里面都没说!
5、设置COORDn_X_REG+COORDn_Y_REG和设置COORDn_REG好像是一样的,都能跑。

代码详见 http://blog.chinaunix.net/u3/111323/showart.php?id=2200014
点赞  2010-3-26 10:05
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复