Enlightenment CVS committal
Author : raster
Project : e17
Module : libs/evas
Dir : e17/libs/evas/src/lib/engines/common
Modified Files:
evas_blend_pixel_pixel.c evas_image_main.c
evas_scale_smooth_scaler.c evas_scale_smooth_scaler_noscale.c
Log Message:
span lists were a failure. sloweer than the current brute force method - and
slower to boot.
ooh.. found i was fuckign up the memcpy's. fixed :) and much faster too :)
===================================================================
RCS file:
/cvsroot/enlightenment/e17/libs/evas/src/lib/engines/common/evas_blend_pixel_pixel.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- evas_blend_pixel_pixel.c 26 May 2004 02:45:40 -0000 1.11
+++ evas_blend_pixel_pixel.c 27 Jan 2005 10:05:41 -0000 1.12
@@ -204,13 +204,13 @@
src_ptr = src;
dst_ptr = dst;
dst_end_ptr = dst + len;
- dst_end_ptr_pre = dst + ((len / 10) * 10);
+ dst_end_ptr_pre = dst + ((len / 16) * 16);
while (dst_ptr < dst_end_ptr_pre)
{
- MOVE_10DWORDS_MMX(src_ptr, dst_ptr);
- src_ptr+=10;
- dst_ptr+=10;
+ MOVE_16DWORDS_MMX(src_ptr, dst_ptr);
+ src_ptr+=16;
+ dst_ptr+=16;
}
while (dst_ptr < dst_end_ptr)
{
@@ -310,15 +310,14 @@
src_ptr = src;
dst_ptr = dst;
dst_end_ptr = dst + len;
- dst_end_ptr_pre = dst + ((len / 10) * 10);
+ dst_end_ptr_pre = dst + ((len / 16) * 16);
while (dst_ptr < dst_end_ptr_pre)
{
- prefetch(&src_ptr[128]);
- prefetch(&dst_ptr[128]);
- MOVE_10DWORDS_MMX(src_ptr, dst_ptr);
- src_ptr+=10;
- dst_ptr+=10;
+ prefetch(&src_ptr[16]);
+ MOVE_16DWORDS_MMX(src_ptr, dst_ptr);
+ src_ptr+=16;
+ dst_ptr+=16;
}
while (dst_ptr < dst_end_ptr)
{
@@ -373,21 +372,21 @@
{
DATA32 *src_ptr, *dst_ptr, *dst_end_ptr, *dst_end_ptr_pre;
- src_ptr = src + len - 10;
- dst_ptr = dst + len - 10;
+ src_ptr = src + len - 16;
+ dst_ptr = dst + len - 16;
dst_end_ptr = dst;
- dst_end_ptr_pre = dst + len - ((len / 10) * 10);
+ dst_end_ptr_pre = dst + len - ((len / 16) * 16);
- if (len >= 10)
+ if (len >= 16)
{
while (dst_ptr >= dst_end_ptr_pre)
{
- MOVE_10DWORDS_MMX(src_ptr, dst_ptr);
- src_ptr-=10;
- dst_ptr-=10;
+ MOVE_16DWORDS_MMX(src_ptr, dst_ptr);
+ src_ptr-=16;
+ dst_ptr-=16;
}
- src_ptr+=9;
- dst_ptr+=9;
+ src_ptr+=15;
+ dst_ptr+=15;
while (dst_ptr >= dst_end_ptr)
{
*dst_ptr = *src_ptr;
@@ -415,23 +414,22 @@
{
DATA32 *src_ptr, *dst_ptr, *dst_end_ptr, *dst_end_ptr_pre;
- src_ptr = src + len - 10;
- dst_ptr = dst + len - 10;
+ src_ptr = src + len - 16;
+ dst_ptr = dst + len - 16;
dst_end_ptr = dst;
- dst_end_ptr_pre = dst + len - ((len / 10) * 10);
+ dst_end_ptr_pre = dst + len - ((len / 16) * 16);
- if (len >= 10)
+ if (len >= 16)
{
while (dst_ptr >= dst_end_ptr_pre)
{
- prefetch(&src_ptr[-128]);
- prefetch(&dst_ptr[-128]);
+ prefetch(&src_ptr[-16]);
MOVE_10DWORDS_MMX(src_ptr, dst_ptr);
- src_ptr-=10;
- dst_ptr-=10;
+ src_ptr-=16;
+ dst_ptr-=16;
}
- src_ptr+=9;
- dst_ptr+=9;
+ src_ptr+=15;
+ dst_ptr+=15;
while (dst_ptr >= dst_end_ptr)
{
*dst_ptr = *src_ptr;
===================================================================
RCS file:
/cvsroot/enlightenment/e17/libs/evas/src/lib/engines/common/evas_image_main.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- evas_image_main.c 26 Jan 2005 16:42:28 -0000 1.15
+++ evas_image_main.c 27 Jan 2005 10:05:41 -0000 1.16
@@ -76,22 +76,13 @@
#endif
}
-/* alpha tiles! - asctually span lists - need to do it as span lists */
+#if 0
void
evas_common_image_surface_alpha_tiles_calc(RGBA_Surface *is, int tsize)
{
int x, y;
DATA32 *ptr;
-#if 1
- return;
-#endif
- /* hmm i only get about a 15% speedup on my "best cases". the complexity
- * imho isn't worth the small gain, so i have disabled it here :( (this
- * is best case scenario - average case will be much less gain)
- *
- * thought for now the only case is
- */
if (is->spans) return;
if (!(is->im->flags & RGBA_IMAGE_HAS_ALPHA)) return;
/* FIXME: dont handle alpha only images yet */
@@ -149,26 +140,7 @@
}
}
}
-
-void
-evas_common_image_surface_alpha_tiles_free(RGBA_Surface *is)
-{
- int i;
-
- if (!is->spans) return;
- for (i = 0; i < is->h; i++)
- {
- while (is->spans[i])
- {
- RGBA_Image_Span *sp;
-
- sp = is->spans[i];
- is->spans[i] = evas_object_list_remove(sp, sp);
- free(sp);
- }
- }
- free(is->spans);
-}
+#endif
RGBA_Surface *
evas_common_image_surface_new(RGBA_Image *im)
@@ -219,7 +191,6 @@
free(is->data);
is->data = NULL;
}
- evas_common_image_surface_alpha_tiles_free(is);
}
RGBA_Image *
@@ -524,7 +495,6 @@
{
int i;
- if (im->image) evas_common_image_surface_alpha_tiles_free(im->image);
evas_common_image_unstore(im);
im->flags |= RGBA_IMAGE_IS_DIRTY;
}
===================================================================
RCS file:
/cvsroot/enlightenment/e17/libs/evas/src/lib/engines/common/evas_scale_smooth_scaler.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- evas_scale_smooth_scaler.c 26 Jan 2005 16:42:30 -0000 1.8
+++ evas_scale_smooth_scaler.c 27 Jan 2005 10:05:41 -0000 1.9
@@ -209,8 +209,6 @@
* -:-
*
*/
- /* 8x8 tiles - this will incurr about a < 2% memory overhead */
- evas_common_image_surface_alpha_tiles_calc(src->image, 8);
/* if 1:1 scale */
if ((dst_region_w == src_region_w) &&
===================================================================
RCS file:
/cvsroot/enlightenment/e17/libs/evas/src/lib/engines/common/evas_scale_smooth_scaler_noscale.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- evas_scale_smooth_scaler_noscale.c 26 Jan 2005 16:42:30 -0000 1.2
+++ evas_scale_smooth_scaler_noscale.c 27 Jan 2005 10:05:41 -0000 1.3
@@ -32,63 +32,11 @@
Gfx_Func_Blend_Src_Dst func;
func = evas_common_draw_func_blend_get(src, dst, dst_clip_w);
-#if 0
- /* part of the spans experiemnt. doesnt seem to help much on top of
- * what we already have
- */
- if (src->image->spans)
+ for (y = 0; y < dst_clip_h; y++)
{
- int x2, y2;
- int xoff, woff;
- RGBA_Image_Flags pflags;
- Gfx_Func_Blend_Src_Dst func_solid;
-
- pflags = src->flags;
- src->flags &= ~RGBA_IMAGE_HAS_ALPHA;
- func_solid = evas_common_draw_func_blend_get(src, dst, dst_clip_w);
- src->flags = pflags;
-
- x2 = (dst_clip_x - dst_region_x) + src_region_x;
- y2 = (dst_clip_y - dst_region_y) + src_region_y;
- for (y = 0; y < dst_clip_h; y++, y2++)
- {
- Evas_Object_List *l;
-
- for (l = src->image->spans[y2]; l; l = l->next)
- {
- RGBA_Image_Span *sp;
-
- sp = l;
- if ((sp->x + sp->w) > x2)
- {
- xoff = sp->x - x2;
- woff = sp->w;
- if (xoff < 0)
- {
- woff += xoff;
- xoff = 0;
- }
- if ((xoff + woff) > (dst_clip_w))
- woff += (dst_clip_w) - (xoff + woff);
- if (sp->v == 2)
- func_solid(ptr + xoff, dst_ptr + xoff, woff);
- else
- func(ptr + xoff, dst_ptr + xoff, woff);
- }
- }
- ptr += src_w;
- dst_ptr += dst_w;
- }
- }
- else
-#endif
- {
- for (y = 0; y < dst_clip_h; y++)
- {
- func(ptr, dst_ptr, dst_clip_w);
- ptr += src_w;
- dst_ptr += dst_w;
- }
+ func(ptr, dst_ptr, dst_clip_w);
+ ptr += src_w;
+ dst_ptr += dst_w;
}
}
}
-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs