pixman: Branch 'master' - 3 commits

Søren Sandmann Pedersen sandmann at kemper.freedesktop.org
Sat Jun 16 18:46:40 PDT 2007


 TODO                    |    2 
 pixman/Makefile.am      |   22 +++--
 pixman/pixman-compose.c |   63 +++++++++++++---
 pixman/pixman-edge.c    |  183 +++++-------------------------------------------
 pixman/pixman-mmx.c     |    6 -
 pixman/pixman-pict.c    |    2 
 pixman/pixman-private.h |   28 ++++---
 pixman/pixman-utils.c   |  172 +++++++++++++++++++++++++++++++++++++++++++++
 8 files changed, 281 insertions(+), 197 deletions(-)

New commits:
diff-tree 9b3cfcc13d0613cfb9d15b21a6b90e4a91a1666f (from 3cd36dae288ac0923f214b8ae81dbfc0f4d5b1b0)
Author: Søren Sandmann <sandmann at redhat.com>
Date:   Sat Jun 16 21:40:43 2007 -0400

    Move some utility functions from pixman-edge.c to pixman-utils.c
    Set up so pixman-edge.c is compiled twice.

diff --git a/pixman/Makefile.am b/pixman/Makefile.am
index 6e9c75f..a444fe7 100644
--- a/pixman/Makefile.am
+++ b/pixman/Makefile.am
@@ -19,7 +19,8 @@ libpixmaninclude_HEADERS = pixman.h
 # wrapper library
 noinst_LTLIBRARIES = libpixmanwrapper.la
 libpixmanwrapper_la_SOURCES =	\
-	pixman-compose.c
+	pixman-compose.c	\
+	pixman-edge.c
 libpixmanwrapper_la_CFLAGS = $(DEP_CFLAGS) -DPIXMAN_FB_ACCESSORS
 
 
diff --git a/pixman/pixman-edge.c b/pixman/pixman-edge.c
index cec1902..bfa34e3 100644
--- a/pixman/pixman-edge.c
+++ b/pixman/pixman-edge.c
@@ -26,6 +26,12 @@
 #include "pixman.h"
 #include "pixman-private.h"
 
+#ifdef PIXMAN_FB_ACCESSORS
+#define PIXMAN_RASTERIZE_EDGES pixman_rasterize_edges_accessors
+#else
+#define PIXMAN_RASTERIZE_EDGES pixman_rasterize_edges_no_accessors
+#endif
+
 /*
  * 4 bit alpha
  */
@@ -284,8 +290,11 @@ fbRasterizeEdges8 (pixman_image_t       
     }
 }
 
+#ifndef PIXMAN_FB_ACCESSORS
+static
+#endif
 void
-pixman_rasterize_edges (pixman_image_t *image,
+PIXMAN_RASTERIZE_EDGES (pixman_image_t *image,
 			pixman_edge_t	*l,
 			pixman_edge_t	*r,
 			pixman_fixed_t	t,
@@ -305,175 +314,23 @@ pixman_rasterize_edges (pixman_image_t *
     }
 }
 
-/*
- * Compute the smallest value no less than y which is on a
- * grid row
- */
-
-pixman_fixed_t
-pixman_sample_ceil_y (pixman_fixed_t y, int n)
-{
-    pixman_fixed_t   f = pixman_fixed_frac(y);
-    pixman_fixed_t   i = pixman_fixed_floor(y);
-    
-    f = ((f + Y_FRAC_FIRST(n)) / STEP_Y_SMALL(n)) * STEP_Y_SMALL(n) + Y_FRAC_FIRST(n);
-    if (f > Y_FRAC_LAST(n))
-    {
-	f = Y_FRAC_FIRST(n);
-	i += pixman_fixed_1;
-    }
-    return (i | f);
-}
-
-#define _div(a,b)    ((a) >= 0 ? (a) / (b) : -((-(a) + (b) - 1) / (b)))
-
-/*
- * Compute the largest value no greater than y which is on a
- * grid row
- */
-pixman_fixed_t
-pixman_sample_floor_y (pixman_fixed_t y, int n)
-{
-    pixman_fixed_t   f = pixman_fixed_frac(y);
-    pixman_fixed_t   i = pixman_fixed_floor (y);
-    
-    f = _div(f - Y_FRAC_FIRST(n), STEP_Y_SMALL(n)) * STEP_Y_SMALL(n) + Y_FRAC_FIRST(n);
-    if (f < Y_FRAC_FIRST(n))
-    {
-	f = Y_FRAC_LAST(n);
-	i -= pixman_fixed_1;
-    }
-    return (i | f);
-}
+#ifndef PIXMAN_FB_ACCESSORS
 
-/*
- * Step an edge by any amount (including negative values)
- */
 void
-pixman_edge_step (pixman_edge_t *e, int n)
-{
-    pixman_fixed_48_16_t	ne;
-
-    e->x += n * e->stepx;
-    
-    ne = e->e + n * (pixman_fixed_48_16_t) e->dx;
-    
-    if (n >= 0)
-    {
-	if (ne > 0)
-	{
-	    int nx = (ne + e->dy - 1) / e->dy;
-	    e->e = ne - nx * (pixman_fixed_48_16_t) e->dy;
-	    e->x += nx * e->signdx;
-	}
-    }
-    else
-    {
-	if (ne <= -e->dy)
-	{
-	    int nx = (-ne) / e->dy;
-	    e->e = ne + nx * (pixman_fixed_48_16_t) e->dy;
-	    e->x -= nx * e->signdx;
-	}
-    }
-}
-
-/*
- * A private routine to initialize the multi-step
- * elements of an edge structure
- */
-static void
-_pixman_edge_tMultiInit (pixman_edge_t *e, int n, pixman_fixed_t *stepx_p, pixman_fixed_t *dx_p)
-{
-    pixman_fixed_t	stepx;
-    pixman_fixed_48_16_t	ne;
-    
-    ne = n * (pixman_fixed_48_16_t) e->dx;
-    stepx = n * e->stepx;
-    if (ne > 0)
-    {
-	int nx = ne / e->dy;
-	ne -= nx * e->dy;
-	stepx += nx * e->signdx;
-    }
-    *dx_p = ne;
-    *stepx_p = stepx;
-}
-
-/*
- * Initialize one edge structure given the line endpoints and a
- * starting y value
- */
-void
-pixman_edge_init (pixman_edge_t	*e,
-		  int		n,
-		  pixman_fixed_t		y_start,
-		  pixman_fixed_t		x_top,
-		  pixman_fixed_t		y_top,
-		  pixman_fixed_t		x_bot,
-		  pixman_fixed_t		y_bot)
-{
-    pixman_fixed_t	dx, dy;
-
-    e->x = x_top;
-    e->e = 0;
-    dx = x_bot - x_top;
-    dy = y_bot - y_top;
-    e->dy = dy;
-    e->dx = 0;
-    if (dy)
-    {
-	if (dx >= 0)
-	{
-	    e->signdx = 1;
-	    e->stepx = dx / dy;
-	    e->dx = dx % dy;
-	    e->e = -dy;
-	}
-	else
-	{
-	    e->signdx = -1;
-	    e->stepx = -(-dx / dy);
-	    e->dx = -dx % dy;
-	    e->e = 0;
-	}
-    
-	_pixman_edge_tMultiInit (e, STEP_Y_SMALL(n), &e->stepx_small, &e->dx_small);
-	_pixman_edge_tMultiInit (e, STEP_Y_BIG(n), &e->stepx_big, &e->dx_big);
-    }
-    pixman_edge_step (e, y_start - y_top);
-}
-
-/*
- * Initialize one edge structure given a line, starting y value
- * and a pixel offset for the line
- */
-void
-pixman_line_fixed_edge_init (pixman_edge_t *e,
-			     int	    n,
-			     pixman_fixed_t	    y,
-			     const pixman_line_fixed_t *line,
-			     int	    x_off,
-			     int	    y_off)
+pixman_rasterize_edges (pixman_image_t *image,
+			pixman_edge_t	*l,
+			pixman_edge_t	*r,
+			pixman_fixed_t	t,
+			pixman_fixed_t	b)
 {
-    pixman_fixed_t	x_off_fixed = pixman_int_to_fixed(x_off);
-    pixman_fixed_t	y_off_fixed = pixman_int_to_fixed(y_off);
-    const pixman_point_fixed_t *top, *bot;
-
-    if (line->p1.y <= line->p2.y)
+    if (image->common.read_func	|| image->common.write_func)
     {
-	top = &line->p1;
-	bot = &line->p2;
+	return pixman_rasterize_edges_accessors (image, l, r, t, b);
     }
     else
     {
-	top = &line->p2;
-	bot = &line->p1;
+	return pixman_rasterize_edges_no_accessors (image, l, r, t, b);
     }
-    pixman_edge_init (e, n, y,
-		    top->x + x_off_fixed,
-		    top->y + y_off_fixed,
-		    bot->x + x_off_fixed,
-		    bot->y + y_off_fixed);
 }
 
+#endif
diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
index 9ac871d..222e4cc 100644
--- a/pixman/pixman-private.h
+++ b/pixman/pixman-private.h
@@ -134,8 +134,6 @@ extern FbComposeFunctions pixman_compose
 
 void pixman_composite_rect_general_accessors (const FbComposeData *data,
 					      uint32_t *scanline_buffer);
-void pixman_composite_rect_general_no_acessors (const FbComposeData *data,
-						uint32_t *scanline_buffer);
 void pixman_composite_rect_general (const FbComposeData *data,
 				    uint32_t *scanline_buffer);
 
@@ -762,4 +760,11 @@ union pixman_image
     }				    \
 }
 
+void
+pixman_rasterize_edges_accessors (pixman_image_t *image,
+				  pixman_edge_t	*l,
+				  pixman_edge_t	*r,
+				  pixman_fixed_t	t,
+				  pixman_fixed_t	b);
+
 #endif /* PIXMAN_PRIVATE_H */
diff --git a/pixman/pixman-utils.c b/pixman/pixman-utils.c
index 9d611e9..f831ebe 100644
--- a/pixman/pixman-utils.c
+++ b/pixman/pixman-utils.c
@@ -100,3 +100,175 @@ pixman_fill (uint32_t *bits,
 	return FALSE;
 }
 	    
+
+/*
+ * Compute the smallest value no less than y which is on a
+ * grid row
+ */
+
+pixman_fixed_t
+pixman_sample_ceil_y (pixman_fixed_t y, int n)
+{
+    pixman_fixed_t   f = pixman_fixed_frac(y);
+    pixman_fixed_t   i = pixman_fixed_floor(y);
+    
+    f = ((f + Y_FRAC_FIRST(n)) / STEP_Y_SMALL(n)) * STEP_Y_SMALL(n) + Y_FRAC_FIRST(n);
+    if (f > Y_FRAC_LAST(n))
+    {
+	f = Y_FRAC_FIRST(n);
+	i += pixman_fixed_1;
+    }
+    return (i | f);
+}
+
+#define _div(a,b)    ((a) >= 0 ? (a) / (b) : -((-(a) + (b) - 1) / (b)))
+
+/*
+ * Compute the largest value no greater than y which is on a
+ * grid row
+ */
+pixman_fixed_t
+pixman_sample_floor_y (pixman_fixed_t y, int n)
+{
+    pixman_fixed_t   f = pixman_fixed_frac(y);
+    pixman_fixed_t   i = pixman_fixed_floor (y);
+    
+    f = _div(f - Y_FRAC_FIRST(n), STEP_Y_SMALL(n)) * STEP_Y_SMALL(n) + Y_FRAC_FIRST(n);
+    if (f < Y_FRAC_FIRST(n))
+    {
+	f = Y_FRAC_LAST(n);
+	i -= pixman_fixed_1;
+    }
+    return (i | f);
+}
+
+/*
+ * Step an edge by any amount (including negative values)
+ */
+void
+pixman_edge_step (pixman_edge_t *e, int n)
+{
+    pixman_fixed_48_16_t	ne;
+
+    e->x += n * e->stepx;
+    
+    ne = e->e + n * (pixman_fixed_48_16_t) e->dx;
+    
+    if (n >= 0)
+    {
+	if (ne > 0)
+	{
+	    int nx = (ne + e->dy - 1) / e->dy;
+	    e->e = ne - nx * (pixman_fixed_48_16_t) e->dy;
+	    e->x += nx * e->signdx;
+	}
+    }
+    else
+    {
+	if (ne <= -e->dy)
+	{
+	    int nx = (-ne) / e->dy;
+	    e->e = ne + nx * (pixman_fixed_48_16_t) e->dy;
+	    e->x -= nx * e->signdx;
+	}
+    }
+}
+
+/*
+ * A private routine to initialize the multi-step
+ * elements of an edge structure
+ */
+static void
+_pixman_edge_tMultiInit (pixman_edge_t *e, int n, pixman_fixed_t *stepx_p, pixman_fixed_t *dx_p)
+{
+    pixman_fixed_t	stepx;
+    pixman_fixed_48_16_t	ne;
+    
+    ne = n * (pixman_fixed_48_16_t) e->dx;
+    stepx = n * e->stepx;
+    if (ne > 0)
+    {
+	int nx = ne / e->dy;
+	ne -= nx * e->dy;
+	stepx += nx * e->signdx;
+    }
+    *dx_p = ne;
+    *stepx_p = stepx;
+}
+
+/*
+ * Initialize one edge structure given the line endpoints and a
+ * starting y value
+ */
+void
+pixman_edge_init (pixman_edge_t	*e,
+		  int		n,
+		  pixman_fixed_t		y_start,
+		  pixman_fixed_t		x_top,
+		  pixman_fixed_t		y_top,
+		  pixman_fixed_t		x_bot,
+		  pixman_fixed_t		y_bot)
+{
+    pixman_fixed_t	dx, dy;
+
+    e->x = x_top;
+    e->e = 0;
+    dx = x_bot - x_top;
+    dy = y_bot - y_top;
+    e->dy = dy;
+    e->dx = 0;
+    if (dy)
+    {
+	if (dx >= 0)
+	{
+	    e->signdx = 1;
+	    e->stepx = dx / dy;
+	    e->dx = dx % dy;
+	    e->e = -dy;
+	}
+	else
+	{
+	    e->signdx = -1;
+	    e->stepx = -(-dx / dy);
+	    e->dx = -dx % dy;
+	    e->e = 0;
+	}
+    
+	_pixman_edge_tMultiInit (e, STEP_Y_SMALL(n), &e->stepx_small, &e->dx_small);
+	_pixman_edge_tMultiInit (e, STEP_Y_BIG(n), &e->stepx_big, &e->dx_big);
+    }
+    pixman_edge_step (e, y_start - y_top);
+}
+
+/*
+ * Initialize one edge structure given a line, starting y value
+ * and a pixel offset for the line
+ */
+void
+pixman_line_fixed_edge_init (pixman_edge_t *e,
+			     int	    n,
+			     pixman_fixed_t	    y,
+			     const pixman_line_fixed_t *line,
+			     int	    x_off,
+			     int	    y_off)
+{
+    pixman_fixed_t	x_off_fixed = pixman_int_to_fixed(x_off);
+    pixman_fixed_t	y_off_fixed = pixman_int_to_fixed(y_off);
+    const pixman_point_fixed_t *top, *bot;
+
+    if (line->p1.y <= line->p2.y)
+    {
+	top = &line->p1;
+	bot = &line->p2;
+    }
+    else
+    {
+	top = &line->p2;
+	bot = &line->p1;
+    }
+    pixman_edge_init (e, n, y,
+		    top->x + x_off_fixed,
+		    top->y + y_off_fixed,
+		    bot->x + x_off_fixed,
+		    bot->y + y_off_fixed);
+}
diff-tree 3cd36dae288ac0923f214b8ae81dbfc0f4d5b1b0 (from 68d6c68adaba3a1d538bceca7d7955129d6075de)
Author: Søren Sandmann <sandmann at redhat.com>
Date:   Sat Jun 16 21:23:20 2007 -0400

    Slight tweak to the definition of pixman_composeFunctions

diff --git a/pixman/pixman-compose.c b/pixman/pixman-compose.c
index c2f2278..80831cd 100644
--- a/pixman/pixman-compose.c
+++ b/pixman/pixman-compose.c
@@ -3028,20 +3028,19 @@ static void fbFetch(bits_image_t * pict,
 #ifdef PIXMAN_FB_ACCESSORS
 #define PIXMAN_COMPOSITE_RECT_GENERAL pixman_composite_rect_general_accessors
 #define PIXMAN_COMPOSE_FUNCTIONS pixman_composeFunctions_accessors
-static const FbComposeFunctions pixman_composeFunctions_accessors = {
-    pixman_fbCombineFuncU,
-    pixman_fbCombineFuncC,
-    pixman_fbCombineMaskU
-};
 #else
 #define PIXMAN_COMPOSITE_RECT_GENERAL pixman_composite_rect_general_no_accessors
 #define PIXMAN_COMPOSE_FUNCTIONS pixman_composeFunctions
-FbComposeFunctions pixman_composeFunctions = {
+#endif
+
+#ifdef PIXMAN_FB_ACCESSORS	/* The accessor version can't be parameterized from outside */
+static const
+#endif
+FbComposeFunctions PIXMAN_COMPOSE_FUNCTIONS = {
     pixman_fbCombineFuncU,
     pixman_fbCombineFuncC,
     pixman_fbCombineMaskU
 };
-#endif
 
 typedef struct
 {
diff-tree 68d6c68adaba3a1d538bceca7d7955129d6075de (from b5d07147fba7085d52966aa162db5d38164dfebf)
Author: Søren Sandmann <sandmann at redhat.com>
Date:   Sat Jun 16 21:19:51 2007 -0400

    Add #defines etc to compile pixman-compose.c twice

diff --git a/TODO b/TODO
index 7bbb7d0..3151843 100644
--- a/TODO
+++ b/TODO
@@ -32,6 +32,8 @@
 
 - Add non-mmx solid fill
 
+- make the wrapper functions global instead of image specific
+
 done:
 
 - Make sure the endian-ness macros are defined correctly.
diff --git a/pixman/Makefile.am b/pixman/Makefile.am
index f08ec23..6e9c75f 100644
--- a/pixman/Makefile.am
+++ b/pixman/Makefile.am
@@ -1,7 +1,5 @@
 lib_LTLIBRARIES = libpixman.la
-
-libpixman_la_LIBADD = @DEP_LIBS@ -lm
-
+libpixman_la_LIBADD = @DEP_LIBS@ -lm libpixmanwrapper.la
 libpixman_la_SOURCES =		\
 	pixman.h		\
 	pixman-region.c		\
@@ -15,8 +13,20 @@ libpixman_la_SOURCES =		\
 	pixman-trap.c		\
 	pixman-compute-region.c
 
+libpixmanincludedir = $(includedir)/pixman
+libpixmaninclude_HEADERS = pixman.h
+
+# wrapper library
+noinst_LTLIBRARIES = libpixmanwrapper.la
+libpixmanwrapper_la_SOURCES =	\
+	pixman-compose.c
+libpixmanwrapper_la_CFLAGS = $(DEP_CFLAGS) -DPIXMAN_FB_ACCESSORS
+
+
+
+# mmx code
 if USE_MMX
-noinst_LTLIBRARIES = libpixman-mmx.la
+noinst_LTLIBRARIES += libpixman-mmx.la
 libpixman_mmx_la_SOURCES = \
 	pixman-mmx.c \
 	pixman-mmx.h
@@ -24,6 +34,3 @@ libpixman_mmx_la_CFLAGS = $(DEP_CFLAGS) 
 libpixman_mmx_la_LIBADD = $(DEP_LIBS)
 libpixman_la_LIBADD += libpixman-mmx.la
 endif
-
-libpixmanincludedir = $(includedir)/pixman
-libpixmaninclude_HEADERS = pixman.h
diff --git a/pixman/pixman-compose.c b/pixman/pixman-compose.c
index bff67f0..c2f2278 100644
--- a/pixman/pixman-compose.c
+++ b/pixman/pixman-compose.c
@@ -2992,13 +2992,6 @@ static CombineFuncC pixman_fbCombineFunc
 };
 
 
-FbComposeFunctions pixman_composeFunctions = {
-    pixman_fbCombineFuncU,
-    pixman_fbCombineFuncC,
-    pixman_fbCombineMaskU
-};
-
-
 static void fbFetchSolid(bits_image_t * pict, int x, int y, int width, uint32_t *buffer, uint32_t *mask, uint32_t maskBits)
 {
     uint32_t *bits;
@@ -3032,6 +3025,24 @@ static void fbFetch(bits_image_t * pict,
     fetch((pixman_image_t *)pict, bits, x, width, buffer, indexed);
 }
 
+#ifdef PIXMAN_FB_ACCESSORS
+#define PIXMAN_COMPOSITE_RECT_GENERAL pixman_composite_rect_general_accessors
+#define PIXMAN_COMPOSE_FUNCTIONS pixman_composeFunctions_accessors
+static const FbComposeFunctions pixman_composeFunctions_accessors = {
+    pixman_fbCombineFuncU,
+    pixman_fbCombineFuncC,
+    pixman_fbCombineMaskU
+};
+#else
+#define PIXMAN_COMPOSITE_RECT_GENERAL pixman_composite_rect_general_no_accessors
+#define PIXMAN_COMPOSE_FUNCTIONS pixman_composeFunctions
+FbComposeFunctions pixman_composeFunctions = {
+    pixman_fbCombineFuncU,
+    pixman_fbCombineFuncC,
+    pixman_fbCombineMaskU
+};
+#endif
+
 typedef struct
 {
     uint32_t        left_ag;
@@ -4271,8 +4282,12 @@ typedef void (*scanStoreProc)(pixman_ima
 typedef void (*scanFetchProc)(pixman_image_t *, int, int, int, uint32_t *,
 			      uint32_t *, uint32_t);
 
+#ifndef PIXMAN_FB_ACCESSORS
+static
+#endif
 void
-pixmanCompositeRect (const FbComposeData *data, uint32_t *scanline_buffer)
+PIXMAN_COMPOSITE_RECT_GENERAL (const FbComposeData *data,
+			       uint32_t *scanline_buffer)
 {
     uint32_t *src_buffer = scanline_buffer;
     uint32_t *dest_buffer = src_buffer + data->width;
@@ -4407,7 +4422,7 @@ pixmanCompositeRect (const FbComposeData
 	PIXMAN_FORMAT_RGB (data->mask->bits.format))
     {
 	uint32_t *mask_buffer = dest_buffer + data->width;
-	CombineFuncC compose = pixman_composeFunctions.combineC[data->op];
+	CombineFuncC compose = PIXMAN_COMPOSE_FUNCTIONS.combineC[data->op];
 	if (!compose)
 	    return;
 	
@@ -4471,7 +4486,7 @@ pixmanCompositeRect (const FbComposeData
     else
     {
 	uint32_t *src_mask_buffer = 0, *mask_buffer = 0;
-	CombineFuncU compose = pixman_composeFunctions.combineU[data->op];
+	CombineFuncU compose = PIXMAN_COMPOSE_FUNCTIONS.combineU[data->op];
 	if (!compose)
 	    return;
 	
@@ -4515,9 +4530,9 @@ pixmanCompositeRect (const FbComposeData
 			      0xff000000);
 		    
 		    if (mask_buffer)
-			pixman_composeFunctions.combineMaskU (src_buffer,
-							      mask_buffer,
-							      data->width);
+			PIXMAN_COMPOSE_FUNCTIONS.combineMaskU (src_buffer,
+							       mask_buffer,
+							       data->width);
 		    
 		    src_mask_buffer = src_buffer;
 		}
@@ -4559,3 +4574,26 @@ pixmanCompositeRect (const FbComposeData
     if (!store)
 	fbFinishAccess (data->dest->pDrawable);
 }
+
+#ifndef PIXMAN_FB_ACCESSORS
+
+void
+pixman_composite_rect_general (const FbComposeData *data,
+			       uint32_t *scanline_buffer)
+{
+    if (data->src->common.read_func			||
+	data->src->common.write_func			||
+	(data->mask && data->mask->common.read_func)	||
+	(data->mask && data->mask->common.write_func)	||
+	data->dest->common.read_func			||
+	data->dest->common.write_func)
+    {
+	return pixman_composite_rect_general_accessors (data, scanline_buffer);
+    }
+    else
+    {
+	return pixman_composite_rect_general_no_accessors (data, scanline_buffer);
+    }
+}
+
+#endif
diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c
index 41c565b..1001cff 100644
--- a/pixman/pixman-mmx.c
+++ b/pixman/pixman-mmx.c
@@ -884,13 +884,11 @@ mmxCombineAddC (uint32_t *dest, uint32_t
     _mm_empty();
 }
 
-/* FIXME: this should be reinstated after adding fbmmx to pixman */
-extern FbComposeFunctions pixman_composeFunctions;
-
 void fbComposeSetupMMX(void)
 {
     /* check if we have MMX support and initialize accordingly */
-    if (pixman_have_mmx()) {
+    if (pixman_have_mmx())
+    {
         pixman_composeFunctions.combineU[PIXMAN_OP_OVER] = mmxCombineOverU;
         pixman_composeFunctions.combineU[PIXMAN_OP_OVER_REVERSE] = mmxCombineOverReverseU;
         pixman_composeFunctions.combineU[PIXMAN_OP_IN] = mmxCombineInU;
diff --git a/pixman/pixman-pict.c b/pixman/pixman-pict.c
index f444713..3986d7d 100644
--- a/pixman/pixman-pict.c
+++ b/pixman/pixman-pict.c
@@ -1110,7 +1110,7 @@ pixman_image_composite_rect  (pixman_op_
     compose_data.width = width;
     compose_data.height = height;
 
-    pixmanCompositeRect (&compose_data, scanline_buffer);
+    pixman_composite_rect_general (&compose_data, scanline_buffer);
 
     if (scanline_buffer != _scanline_buffer)
 	free (scanline_buffer);
diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
index 0dda1a6..9ac871d 100644
--- a/pixman/pixman-private.h
+++ b/pixman/pixman-private.h
@@ -109,12 +109,6 @@ typedef FASTCALL void (*CombineMaskU) (u
 typedef FASTCALL void (*CombineFuncU) (uint32_t *dest, const uint32_t *src, int width);
 typedef FASTCALL void (*CombineFuncC) (uint32_t *dest, uint32_t *src, uint32_t *mask, int width);
 
-typedef struct _FbComposeFunctions {
-    CombineFuncU *combineU;
-    CombineFuncC *combineC;
-    CombineMaskU combineMaskU;
-} FbComposeFunctions;
-
 typedef struct _FbComposeData {
     uint8_t	 op;
     pixman_image_t	*src;
@@ -130,6 +124,20 @@ typedef struct _FbComposeData {
     uint16_t	 height;
 } FbComposeData;
 
+typedef struct _FbComposeFunctions {
+    CombineFuncU *combineU;
+    CombineFuncC *combineC;
+    CombineMaskU combineMaskU;
+} FbComposeFunctions;
+
+extern FbComposeFunctions pixman_composeFunctions;
+
+void pixman_composite_rect_general_accessors (const FbComposeData *data,
+					      uint32_t *scanline_buffer);
+void pixman_composite_rect_general_no_acessors (const FbComposeData *data,
+						uint32_t *scanline_buffer);
+void pixman_composite_rect_general (const FbComposeData *data,
+				    uint32_t *scanline_buffer);
 
 /* end */
 
@@ -255,9 +263,6 @@ union pixman_image
     solid_fill_t		solid;
 };
 
-void pixmanCompositeRect (const FbComposeData *data,
-			  uint32_t *scanline_buffer);
-
 #define LOG2_BITMAP_PAD 5
 #define FB_STIP_SHIFT	LOG2_BITMAP_PAD
 #define FB_STIP_UNIT	(1 << FB_STIP_SHIFT)


More information about the xorg-commit mailing list