[go: nahoru, domu]

Xfermode: SSE2 implementation of a number of simple transfer modes

These modes share some common code and not very complex, so group them
together. This CL yields about 50% performance improvement on desktop
i7-3770. Here are the data:
before:
   Xfermode_Screen   8888:  cmsecs =     30.25   565:  cmsecs =     46.81
 Xfermode_Modulate   8888:  cmsecs =     22.48   565:  cmsecs =     40.06
     Xfermode_Plus   8888:  cmsecs =     21.04   565:  cmsecs =     37.51
      Xfermode_Xor   8888:  cmsecs =     37.18   565:  cmsecs =     52.53
  Xfermode_DstATop   8888:  cmsecs =     28.97   565:  cmsecs =     46.42
  Xfermode_SrcATop   8888:  cmsecs =     29.74   565:  cmsecs =     46.25
   Xfermode_DstOut   8888:  cmsecs =      5.34   565:  cmsecs =     24.53
   Xfermode_SrcOut   8888:  cmsecs =     12.25   565:  cmsecs =     24.39
    Xfermode_DstIn   8888:  cmsecs =      5.30   565:  cmsecs =     24.50
    Xfermode_SrcIn   8888:  cmsecs =     12.05   565:  cmsecs =     25.40
  Xfermode_DstOver   8888:  cmsecs =     12.45   565:  cmsecs =      0.15
  Xfermode_SrcOver   8888:  cmsecs =      2.68   565:  cmsecs =      4.42
after:
   Xfermode_Screen   8888:  cmsecs =     13.68   565:  cmsecs =     21.73
 Xfermode_Modulate   8888:  cmsecs =     13.25   565:  cmsecs =     20.97
     Xfermode_Plus   8888:  cmsecs =      9.77   565:  cmsecs =     16.71
      Xfermode_Xor   8888:  cmsecs =     17.64   565:  cmsecs =     25.62
  Xfermode_DstATop   8888:  cmsecs =     15.99   565:  cmsecs =     23.74
  Xfermode_SrcATop   8888:  cmsecs =     15.69   565:  cmsecs =     23.40
   Xfermode_DstOut   8888:  cmsecs =      4.77   565:  cmsecs =     11.85
   Xfermode_SrcOut   8888:  cmsecs =      4.98   565:  cmsecs =     11.84
    Xfermode_DstIn   8888:  cmsecs =      4.68   565:  cmsecs =     11.72
    Xfermode_SrcIn   8888:  cmsecs =      4.93   565:  cmsecs =     11.79
  Xfermode_DstOver   8888:  cmsecs =      5.04   565:  cmsecs =      0.15
  Xfermode_SrcOver   8888:  cmsecs =      2.69   565:  cmsecs =      4.42

BUG=skia:
R=mtklein@google.com

Author: qiankun.miao@intel.com

Review URL: https://codereview.chromium.org/232793002

git-svn-id: http://skia.googlecode.com/svn/trunk/src@14176 2bbb7eff-a529-9590-31e7-b0007b416f81
2 files changed