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