Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/evas

Dir     : e17/libs/evas/src/lib/engines/common


Modified Files:
        evas_blend_alpha_color_pixel.c evas_blend_color_pixel.c 
        evas_blend_pixel_cmod_pixel.c evas_blend_pixel_mul_pixel.c 
        evas_blend_pixel_pixel.c 


Log Message:


a good 20% speedup on my p4 and minor speedup on this p3. no difference on my
ipaq...

===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/evas/src/lib/engines/common/evas_blend_alpha_color_pixel.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- evas_blend_alpha_color_pixel.c      12 May 2003 02:26:26 -0000      1.3
+++ evas_blend_alpha_color_pixel.c      16 Mar 2004 08:03:00 -0000      1.4
@@ -17,22 +17,34 @@
    src_ptr = src;
    dst_ptr = dst;
    dst_end_ptr = dst + len;
-
+   
+   if (A_VAL(&col) == 0) return;
+   
    while (dst_ptr < dst_end_ptr)
      {
        DATA32 tmp;
        DATA8 aa;
        
        aa = (((*src_ptr) +1) * A_VAL(&col)) >> 8;
-       BLEND_COLOR(aa, R_VAL(dst_ptr), 
-                   R_VAL(&col), R_VAL(dst_ptr), 
-                   tmp);
-       BLEND_COLOR(aa, G_VAL(dst_ptr), 
-                   G_VAL(&col), G_VAL(dst_ptr), 
-                   tmp);
-       BLEND_COLOR(aa, B_VAL(dst_ptr), 
-                   B_VAL(&col), B_VAL(dst_ptr), 
-                   tmp);
+       switch (aa)
+         {
+          case 0:
+            break;
+          case 255:
+            *dst_ptr = col;
+            break;
+          default:
+            BLEND_COLOR(aa, R_VAL(dst_ptr), 
+                        R_VAL(&col), R_VAL(dst_ptr), 
+                        tmp);
+            BLEND_COLOR(aa, G_VAL(dst_ptr), 
+                        G_VAL(&col), G_VAL(dst_ptr), 
+                        tmp);
+            BLEND_COLOR(aa, B_VAL(dst_ptr), 
+                        B_VAL(&col), B_VAL(dst_ptr), 
+                        tmp);
+            break;
+         }
        src_ptr++;
        dst_ptr++;
      }
@@ -46,6 +58,8 @@
    DATA8 *src_ptr;
    DATA32 *dst_ptr, *dst_end_ptr;
    
+   if (A_VAL(&col) == 0) return;
+   
    src_ptr = src;
    dst_ptr = dst;
    dst_end_ptr = dst + len;
@@ -62,45 +76,56 @@
    while (dst_ptr < dst_end_ptr)
      {
        DATA32 tmp;
-
-       tmp = 0xffffff;
-       A_VAL(&tmp) = *src_ptr;
-       
-       movd_m2r(tmp, mm1);
-
-       /* this could be more optimial.. but it beats the c code by almost */
-       /* double */
-       pxor_r2r(mm7, mm7);
-       punpcklbw_r2r(mm1, mm7);
-       psrlw_i2r(8, mm7);
-       pmullw_r2r(mm6, mm7);
-       psrlw_i2r(8, mm7);
-       packuswb_r2r(mm7, mm7);
-       movq_r2r(mm7, mm1);
-       /* and back to our normal programming... */
-       movd_m2r(dst_ptr[0], mm2);
-       
-       movq_r2r(mm1, mm3);
-       
-       punpcklbw_r2r(mm3, mm3);
-       punpckhwd_r2r(mm3, mm3);
-       punpckhdq_r2r(mm3, mm3);        
-       psrlw_i2r(1, mm3);
-       
-       psrlq_i2r(16, mm3);
-       
-       punpcklbw_r2r(mm4, mm1);
-       punpcklbw_r2r(mm4, mm2);
-       
-       psubw_r2r(mm2, mm1);
-       psllw_i2r(1, mm1);
-       paddw_r2r(mm5, mm1);
-       pmulhw_r2r(mm3, mm1);
-       paddw_r2r(mm1, mm2);
-       
-       packuswb_r2r(mm4, mm2);
-       movd_r2m(mm2, dst_ptr[0]);
+        DATA8 aa;
        
+       aa = (((*src_ptr) +1) * A_VAL(&col)) >> 8;
+       switch (aa)
+         {
+          case 0:
+            break;
+          case 255:
+            *dst_ptr = col;
+            break;
+          default:
+            tmp = 0xffffff;
+            A_VAL(&tmp) = *src_ptr;
+       
+            movd_m2r(tmp, mm1);
+
+            /* this could be more optimial.. but it beats the c code by almost */
+            /* double */
+            pxor_r2r(mm7, mm7);
+            punpcklbw_r2r(mm1, mm7);
+            psrlw_i2r(8, mm7);
+            pmullw_r2r(mm6, mm7);
+            psrlw_i2r(8, mm7);
+            packuswb_r2r(mm7, mm7);
+            movq_r2r(mm7, mm1);
+            /* and back to our normal programming... */
+            movd_m2r(dst_ptr[0], mm2);
+            
+            movq_r2r(mm1, mm3);
+            
+            punpcklbw_r2r(mm3, mm3);
+            punpckhwd_r2r(mm3, mm3);
+            punpckhdq_r2r(mm3, mm3);   
+            psrlw_i2r(1, mm3);
+            
+            psrlq_i2r(16, mm3);
+            
+            punpcklbw_r2r(mm4, mm1);
+            punpcklbw_r2r(mm4, mm2);
+            
+            psubw_r2r(mm2, mm1);
+            psllw_i2r(1, mm1);
+            paddw_r2r(mm5, mm1);
+            pmulhw_r2r(mm3, mm1);
+            paddw_r2r(mm1, mm2);
+            
+            packuswb_r2r(mm4, mm2);
+            movd_r2m(mm2, dst_ptr[0]);
+            break;
+         }
        src_ptr++;
        dst_ptr++;
      }   
@@ -113,6 +138,8 @@
    DATA8 *src_ptr;
    DATA32 *dst_ptr, *dst_end_ptr;
    
+   if (A_VAL(&col) == 0) return;
+   
    src_ptr = src;
    dst_ptr = dst;
    dst_end_ptr = dst + len;
@@ -125,17 +152,27 @@
        
        aa = (((*src_ptr) + 1) * A_VAL(&col)) >> 8;
        a = _evas_pow_lut[aa][A_VAL(dst_ptr)];
-       
-       BLEND_COLOR(a, R_VAL(dst_ptr), 
-                   R_VAL(&col), R_VAL(dst_ptr), 
-                   tmp);
-       BLEND_COLOR(a, G_VAL(dst_ptr), 
-                   G_VAL(&col), G_VAL(dst_ptr), 
-                   tmp);
-       BLEND_COLOR(a, B_VAL(dst_ptr), 
-                   B_VAL(&col), B_VAL(dst_ptr), 
-                   tmp);
-       A_VAL(dst_ptr) = A_VAL(dst_ptr) + ((aa * (255 - A_VAL(dst_ptr))) / 255);
+        switch (a)
+         {
+          case 0:
+            break;
+          case 255:
+            *dst_ptr = col;
+            break;
+          default:
+            BLEND_COLOR(a, R_VAL(dst_ptr), 
+                        R_VAL(&col), R_VAL(dst_ptr), 
+                        tmp);
+            BLEND_COLOR(a, G_VAL(dst_ptr), 
+                        G_VAL(&col), G_VAL(dst_ptr), 
+                        tmp);
+            BLEND_COLOR(a, B_VAL(dst_ptr), 
+                        B_VAL(&col), B_VAL(dst_ptr), 
+                        tmp);
+            BLEND_COLOR(A_VAL(src),A_VAL(dst),255,A_VAL(dst),tmp);
+/*          A_VAL(dst_ptr) = A_VAL(dst_ptr) + ((aa * (255 - A_VAL(dst_ptr))) / 255);*/
+            break;
+         }
        src_ptr++;
        dst_ptr++;
      }
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/evas/src/lib/engines/common/evas_blend_color_pixel.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- evas_blend_color_pixel.c    12 May 2003 02:26:26 -0000      1.3
+++ evas_blend_color_pixel.c    16 Mar 2004 08:03:00 -0000      1.4
@@ -105,7 +105,8 @@
        BLEND_COLOR(a, B_VAL(dst_ptr), 
                    B_VAL(&src), B_VAL(dst_ptr), 
                    tmp);       
-       A_VAL(dst_ptr) = A_VAL(dst_ptr) + ((A_VAL(&src) * (255 - A_VAL(dst_ptr))) / 
255);
+       BLEND_COLOR(A_VAL(src),A_VAL(dst),255,A_VAL(dst),tmp);
+/*     A_VAL(dst_ptr) = A_VAL(dst_ptr) + ((A_VAL(&src) * (255 - A_VAL(dst_ptr))) / 
255);*/
        
        dst_ptr++;
      }
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/evas/src/lib/engines/common/evas_blend_pixel_cmod_pixel.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- evas_blend_pixel_cmod_pixel.c       12 May 2003 02:26:26 -0000      1.3
+++ evas_blend_pixel_cmod_pixel.c       16 Mar 2004 08:03:00 -0000      1.4
@@ -22,8 +22,14 @@
        DATA8  a;
        
        a = amod[A_VAL(src_ptr)];
-       if (a) /* hmmm - do we need this? */
+       switch (a)
          {
+          case 0:
+            break;
+          case 255:
+            *dst_ptr = *src_ptr;
+            break;
+          default:
             BLEND_COLOR(a, R_VAL(dst_ptr), 
                         rmod[R_VAL(src_ptr)], R_VAL(dst_ptr), 
                         tmp);
@@ -33,6 +39,7 @@
             BLEND_COLOR(a, B_VAL(dst_ptr), 
                         bmod[B_VAL(src_ptr)], B_VAL(dst_ptr), 
                         tmp);
+            break;
          }
        src_ptr++;
        dst_ptr++;
@@ -56,8 +63,14 @@
        DATA8  a;
        
        a = _evas_pow_lut[amod[A_VAL(src_ptr)]][A_VAL(dst_ptr)];
-       if (a) /* hmmm - do we need this? */
+       switch (a)
          {
+          case 0:
+            break;
+          case 255:
+            *dst_ptr = *src_ptr;
+            break;
+          default:
             BLEND_COLOR(a, R_VAL(dst_ptr), 
                         rmod[R_VAL(src_ptr)], R_VAL(dst_ptr), 
                         tmp);
@@ -67,7 +80,9 @@
             BLEND_COLOR(a, B_VAL(dst_ptr), 
                         bmod[B_VAL(src_ptr)], B_VAL(dst_ptr), 
                         tmp);  
-            A_VAL(dst_ptr) = A_VAL(dst_ptr) + ((amod[A_VAL(src_ptr)] * (255 - 
A_VAL(dst_ptr))) / 255);
+            BLEND_COLOR(A_VAL(src),A_VAL(dst),255,A_VAL(dst),tmp);
+/*          A_VAL(dst_ptr) = A_VAL(dst_ptr) + ((amod[A_VAL(src_ptr)] * (255 - 
A_VAL(dst_ptr))) / 255);*/
+            break;
          }
        src_ptr++;
        dst_ptr++;
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/evas/src/lib/engines/common/evas_blend_pixel_mul_pixel.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- evas_blend_pixel_mul_pixel.c        12 May 2003 02:26:26 -0000      1.3
+++ evas_blend_pixel_mul_pixel.c        16 Mar 2004 08:03:00 -0000      1.4
@@ -27,8 +27,14 @@
             DATA8  a;
             
             a = (A_VAL(src_ptr) * (A_VAL(&mul_color) + 1)) >> 8;
-            if (a) /* hmmm - do we need this? */              
+            switch (a)
               {
+               case 0:
+                 break;
+               case 255:
+                 *dst_ptr = *src_ptr;
+                 break;
+               default:
                  BLEND_COLOR(a, R_VAL(dst_ptr), 
                              R_VAL(src_ptr), R_VAL(dst_ptr), 
                              tmp);
@@ -38,6 +44,7 @@
                  BLEND_COLOR(a, B_VAL(dst_ptr), 
                              B_VAL(src_ptr), B_VAL(dst_ptr), 
                              tmp);
+                 break;
               }
             src_ptr++;
             dst_ptr++;
@@ -51,8 +58,16 @@
             DATA8  a;
             
             a = (A_VAL(src_ptr) * (A_VAL(&mul_color) + 1)) >> 8;
-            if (a) /* hmmm - do we need this? */              
+            switch (a)
               {
+               case 0:
+                 break;
+               case 255:
+                 R_VAL(dst_ptr) = ((R_VAL(src_ptr) * (R_VAL(&mul_color) + 1)) >> 8);
+                 G_VAL(dst_ptr) = ((G_VAL(src_ptr) * (G_VAL(&mul_color) + 1)) >> 8);
+                 B_VAL(dst_ptr) = ((B_VAL(src_ptr) * (B_VAL(&mul_color) + 1)) >> 8);
+                 break;
+               default:
                  BLEND_COLOR(a, R_VAL(dst_ptr), 
                              ((R_VAL(src_ptr) * (R_VAL(&mul_color) + 1)) >> 8), 
R_VAL(dst_ptr), 
                              tmp);
@@ -62,6 +77,7 @@
                  BLEND_COLOR(a, B_VAL(dst_ptr), 
                              ((B_VAL(src_ptr) * (B_VAL(&mul_color) + 1)) >> 8), 
B_VAL(dst_ptr), 
                              tmp);
+                 break;
               }
             src_ptr++;
             dst_ptr++;
@@ -91,41 +107,64 @@
    
    while (dst_ptr < dst_end_ptr)
      {
-       movd_m2r(src_ptr[0], mm1);
-
-       /* this could be more optimial.. but it beats the c code by almost */
-       /* double */
-       pxor_r2r(mm7, mm7);
-       punpcklbw_r2r(mm1, mm7);
-       psrlw_i2r(8, mm7);
-       pmullw_r2r(mm6, mm7);
-       psrlw_i2r(8, mm7);
-       packuswb_r2r(mm7, mm7);
-       movq_r2r(mm7, mm1);
-       /* and back to our normal programming... */
-       movd_m2r(dst_ptr[0], mm2);
-       
-       movq_r2r(mm1, mm3);
-       
-       punpcklbw_r2r(mm3, mm3);
-       punpckhwd_r2r(mm3, mm3);
-       punpckhdq_r2r(mm3, mm3);        
-       psrlw_i2r(1, mm3);
-       
-       psrlq_i2r(16, mm3);
-       
-       punpcklbw_r2r(mm4, mm1);
-       punpcklbw_r2r(mm4, mm2);
-       
-       psubw_r2r(mm2, mm1);
-       psllw_i2r(1, mm1);
-       paddw_r2r(mm5, mm1);
-       pmulhw_r2r(mm3, mm1);
-       paddw_r2r(mm1, mm2);
-       
-       packuswb_r2r(mm4, mm2);
-       movd_r2m(mm2, dst_ptr[0]);
+       DATA8 a;
        
+       a = (A_VAL(src_ptr) * (A_VAL(&mul_color) + 1)) >> 8;
+       switch (a)
+         {
+          case 0:
+            break;
+          case 255:
+            movd_m2r(src_ptr[0], mm1);
+
+            /* this could be more optimial.. but it beats the c code by almost */
+            /* double */
+            pxor_r2r(mm7, mm7);
+            punpcklbw_r2r(mm1, mm7);
+            psrlw_i2r(8, mm7);
+            pmullw_r2r(mm6, mm7);
+            psrlw_i2r(8, mm7);
+            packuswb_r2r(mm7, mm7);
+            movq_r2r(mm7, mm1);
+            movd_r2m(mm1, dst_ptr[0]);
+            break;
+          default:
+            movd_m2r(src_ptr[0], mm1);
+
+            /* this could be more optimial.. but it beats the c code by almost */
+            /* double */
+            pxor_r2r(mm7, mm7);
+            punpcklbw_r2r(mm1, mm7);
+            psrlw_i2r(8, mm7);
+            pmullw_r2r(mm6, mm7);
+            psrlw_i2r(8, mm7);
+            packuswb_r2r(mm7, mm7);
+            movq_r2r(mm7, mm1);
+            /* and back to our normal programming... */
+            movd_m2r(dst_ptr[0], mm2);
+            
+            movq_r2r(mm1, mm3);
+            
+            punpcklbw_r2r(mm3, mm3);
+            punpckhwd_r2r(mm3, mm3);
+            punpckhdq_r2r(mm3, mm3);   
+            psrlw_i2r(1, mm3);
+            
+            psrlq_i2r(16, mm3);
+            
+            punpcklbw_r2r(mm4, mm1);
+            punpcklbw_r2r(mm4, mm2);
+            
+            psubw_r2r(mm2, mm1);
+            psllw_i2r(1, mm1);
+            paddw_r2r(mm5, mm1);
+            pmulhw_r2r(mm3, mm1);
+            paddw_r2r(mm1, mm2);
+            
+            packuswb_r2r(mm4, mm2);
+            movd_r2m(mm2, dst_ptr[0]);
+            break;
+         }
        src_ptr++;
        dst_ptr++;
      }
@@ -153,8 +192,14 @@
             DATA8  a, aa;
             
             aa = (A_VAL(src_ptr) * (A_VAL(&mul_color) + 1)) >> 8;
-            if (aa) /* hmmm - do we need this? */
+            switch (aa)
               {
+               case 0:
+                 break;
+               case 255:
+                 *dst_ptr = *src_ptr;
+                 break;
+               default:
                  a = _evas_pow_lut[aa][A_VAL(dst_ptr)];
                  
                  BLEND_COLOR(a, R_VAL(dst_ptr), 
@@ -166,11 +211,13 @@
                  BLEND_COLOR(a, B_VAL(dst_ptr), 
                              B_VAL(src_ptr), B_VAL(dst_ptr), 
                              tmp);
-                 A_VAL(dst_ptr) = A_VAL(dst_ptr) + ((aa * (255 - A_VAL(dst_ptr))) / 
255);
+                 BLEND_COLOR(A_VAL(src),A_VAL(dst),255,A_VAL(dst),tmp);
+/*               A_VAL(dst_ptr) = A_VAL(dst_ptr) + ((aa * (255 - A_VAL(dst_ptr))) / 
255);*/
+                 break;
               }
             src_ptr++;
             dst_ptr++;
-              }
+         }
      }
    else
      {
@@ -180,8 +227,17 @@
             DATA8  a, aa;
             
             aa = (A_VAL(src_ptr) * (A_VAL(&mul_color) + 1)) >> 8;
-            if (aa) /* hmmm - do we need this? */
+            switch (aa)
               {
+               case 0:
+                 break;
+               case 255:
+                 R_VAL(dst_ptr) = ((R_VAL(src_ptr) * (R_VAL(&mul_color) + 1)) >> 8);
+                 G_VAL(dst_ptr) = ((G_VAL(src_ptr) * (G_VAL(&mul_color) + 1)) >> 8);
+                 B_VAL(dst_ptr) = ((B_VAL(src_ptr) * (B_VAL(&mul_color) + 1)) >> 8);
+                 A_VAL(dst_ptr) = 255;
+                 break;
+               default:
                  a = _evas_pow_lut[aa][A_VAL(dst_ptr)];
                  
                  BLEND_COLOR(a, R_VAL(dst_ptr), 
@@ -193,7 +249,9 @@
                  BLEND_COLOR(a, B_VAL(dst_ptr), 
                              ((B_VAL(src_ptr) * (B_VAL(&mul_color) + 1)) >> 8), 
B_VAL(dst_ptr), 
                              tmp);
-                 A_VAL(dst_ptr) = A_VAL(dst_ptr) + ((aa * (255 - A_VAL(dst_ptr))) / 
255);
+                 BLEND_COLOR(A_VAL(src),A_VAL(dst),255,A_VAL(dst),tmp);
+/*               A_VAL(dst_ptr) = A_VAL(dst_ptr) + ((aa * (255 - A_VAL(dst_ptr))) / 
255);*/
+                 break;
               }
             src_ptr++;
             dst_ptr++;
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/evas/src/lib/engines/common/evas_blend_pixel_pixel.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- evas_blend_pixel_pixel.c    16 Mar 2004 04:13:05 -0000      1.6
+++ evas_blend_pixel_pixel.c    16 Mar 2004 08:03:00 -0000      1.7
@@ -4,6 +4,8 @@
 #include "evas_mmx.h"
 #endif
 
+#define CONDITIONAL_BLEND 1
+
 extern DATA8        _evas_pow_lut[256][256];
 extern const DATA16 _evas_const_c1[4];
 
@@ -21,7 +23,28 @@
      {
        DATA32 tmp;
 
-       if (A_VAL(src_ptr)) /* hmmm - do we need this? */
+#ifdef CONDITIONAL_BLEND
+       switch (A_VAL(src_ptr))
+         {
+          case 0:
+            break;
+          case 255:
+            *dst_ptr = *src_ptr;
+            break;
+          default:
+            BLEND_COLOR(A_VAL(src_ptr), R_VAL(dst_ptr), 
+                        R_VAL(src_ptr), R_VAL(dst_ptr), 
+                        tmp);
+            BLEND_COLOR(A_VAL(src_ptr), G_VAL(dst_ptr), 
+                        G_VAL(src_ptr), G_VAL(dst_ptr), 
+                        tmp);
+            BLEND_COLOR(A_VAL(src_ptr), B_VAL(dst_ptr), 
+                        B_VAL(src_ptr), B_VAL(dst_ptr), 
+                        tmp);
+            break;
+         }
+#else
+       if (A_VAL(src_ptr))
          {
             BLEND_COLOR(A_VAL(src_ptr), R_VAL(dst_ptr), 
                         R_VAL(src_ptr), R_VAL(dst_ptr), 
@@ -33,6 +56,7 @@
                         B_VAL(src_ptr), B_VAL(dst_ptr), 
                         tmp);
          }
+#endif        
        src_ptr++;
        dst_ptr++;
      }
@@ -54,29 +78,38 @@
    
    while (dst_ptr < dst_end_ptr)
      {
-       movd_m2r(src_ptr[0], mm1);
-       movd_m2r(dst_ptr[0], mm2);
-       
-       movq_r2r(mm1, mm3);
-       punpcklbw_r2r(mm3, mm3);
-       punpckhwd_r2r(mm3, mm3);
-       punpckhdq_r2r(mm3, mm3);        
-       psrlw_i2r(1, mm3);
-       
-       psrlq_i2r(16, mm3);
-       
-       punpcklbw_r2r(mm4, mm1);
-       punpcklbw_r2r(mm4, mm2);
-       
-       psubw_r2r(mm2, mm1);
-       psllw_i2r(1, mm1);
-       paddw_r2r(mm5, mm1);
-       pmulhw_r2r(mm3, mm1);
-       paddw_r2r(mm1, mm2);
-       
-       packuswb_r2r(mm4, mm2);
-       movd_r2m(mm2, dst_ptr[0]);
-       
+       switch (A_VAL(src_ptr))
+         {
+          case 0:
+            break;
+          case 255:
+            *dst_ptr = *src_ptr;
+            break;
+          default:
+            movd_m2r(src_ptr[0], mm1);
+            movd_m2r(dst_ptr[0], mm2);
+            
+            movq_r2r(mm1, mm3);
+            punpcklbw_r2r(mm3, mm3);
+            punpckhwd_r2r(mm3, mm3);
+            punpckhdq_r2r(mm3, mm3);   
+            psrlw_i2r(1, mm3);
+            
+            psrlq_i2r(16, mm3);
+            
+            punpcklbw_r2r(mm4, mm1);
+            punpcklbw_r2r(mm4, mm2);
+            
+            psubw_r2r(mm2, mm1);
+            psllw_i2r(1, mm1);
+            paddw_r2r(mm5, mm1);
+            pmulhw_r2r(mm3, mm1);
+            paddw_r2r(mm1, mm2);
+            
+            packuswb_r2r(mm4, mm2);
+            movd_r2m(mm2, dst_ptr[0]);
+            break;
+         }
        src_ptr++;
        dst_ptr++;
      }
@@ -97,8 +130,14 @@
        DATA32 tmp;
        DATA8  a;
        
-       if (A_VAL(src_ptr)) /* hmmm - do we need this? */
+       switch (A_VAL(src_ptr))
          {
+          case 0:
+            break;
+          case 255:
+            *dst_ptr = *src_ptr;
+            break;
+          default:
             a = _evas_pow_lut[A_VAL(src_ptr)][A_VAL(dst_ptr)];
             
             BLEND_COLOR(a, R_VAL(dst_ptr), 
@@ -110,9 +149,8 @@
             BLEND_COLOR(a, B_VAL(dst_ptr), 
                         B_VAL(src_ptr), B_VAL(dst_ptr), 
                         tmp);  
-/* FIXME: Maybe this is faster and equivalent: ??? */       
-/*          BLEND_COLOR(A_VAL(src),A_VAL(dst),255,A_VAL(dst),tmp) */
-            A_VAL(dst_ptr) = A_VAL(dst_ptr) + ((A_VAL(src_ptr) * (255 - 
A_VAL(dst_ptr))) / 255);
+            BLEND_COLOR(A_VAL(src),A_VAL(dst),255,A_VAL(dst),tmp);
+/*          A_VAL(dst_ptr) = A_VAL(dst_ptr) + ((A_VAL(src_ptr) * (255 - 
A_VAL(dst_ptr))) / 255);*/
          }
        src_ptr++;
        dst_ptr++;




-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to