[Pixman] [PATCH 2/6] Change CONVERT_XXXX_TO_YYYY macros into inline functions
Siarhei Siamashka
siarhei.siamashka at gmail.com
Mon Dec 3 14:55:46 PST 2012
It is easier and safer to modify their code in the case if the
calculations need some temporary variables. And the temporary
variables will be needed soon.
---
pixman/pixman-bits-image.c | 2 +-
pixman/pixman-fast-path.c | 38 +++++++++++++++++-----------------
pixman/pixman-inlines.h | 30 +++++++++++++-------------
pixman/pixman-mmx.c | 20 +++++++++---------
pixman/pixman-private.h | 49 +++++++++++++++++++++++++++++++++----------
pixman/pixman-sse2.c | 8 +++---
pixman/pixman.c | 2 +-
7 files changed, 87 insertions(+), 62 deletions(-)
diff --git a/pixman/pixman-bits-image.c b/pixman/pixman-bits-image.c
index 97db108..ada5c4d 100644
--- a/pixman/pixman-bits-image.c
+++ b/pixman/pixman-bits-image.c
@@ -970,7 +970,7 @@ convert_a8 (const uint8_t *row, int x)
static force_inline uint32_t
convert_r5g6b5 (const uint8_t *row, int x)
{
- return CONVERT_0565_TO_0888 (*((uint16_t *)row + x));
+ return convert_0565_to_0888 (*((uint16_t *)row + x));
}
#define MAKE_BILINEAR_FETCHER(name, format, repeat_mode) \
diff --git a/pixman/pixman-fast-path.c b/pixman/pixman-fast-path.c
index 3429758..420a3d8 100644
--- a/pixman/pixman-fast-path.c
+++ b/pixman/pixman-fast-path.c
@@ -507,15 +507,15 @@ fast_composite_over_n_8_0565 (pixman_implementation_t *imp,
else
{
d = *dst;
- d = over (src, CONVERT_0565_TO_0888 (d));
+ d = over (src, convert_0565_to_0888 (d));
}
- *dst = CONVERT_8888_TO_0565 (d);
+ *dst = convert_8888_to_0565 (d);
}
else if (m)
{
d = *dst;
- d = over (in (src, m), CONVERT_0565_TO_0888 (d));
- *dst = CONVERT_8888_TO_0565 (d);
+ d = over (in (src, m), convert_0565_to_0888 (d));
+ *dst = convert_8888_to_0565 (d);
}
dst++;
}
@@ -541,7 +541,7 @@ fast_composite_over_n_8888_0565_ca (pixman_implementation_t *imp,
if (src == 0)
return;
- src16 = CONVERT_8888_TO_0565 (src);
+ src16 = convert_8888_to_0565 (src);
PIXMAN_IMAGE_GET_LINE (dest_image, dest_x, dest_y, uint16_t, dst_stride, dst_line, 1);
PIXMAN_IMAGE_GET_LINE (mask_image, mask_x, mask_y, uint32_t, mask_stride, mask_line, 1);
@@ -566,14 +566,14 @@ fast_composite_over_n_8888_0565_ca (pixman_implementation_t *imp,
else
{
d = *dst;
- d = over (src, CONVERT_0565_TO_0888 (d));
- *dst = CONVERT_8888_TO_0565 (d);
+ d = over (src, convert_0565_to_0888 (d));
+ *dst = convert_8888_to_0565 (d);
}
}
else if (ma)
{
d = *dst;
- d = CONVERT_0565_TO_0888 (d);
+ d = convert_0565_to_0888 (d);
s = src;
@@ -582,7 +582,7 @@ fast_composite_over_n_8888_0565_ca (pixman_implementation_t *imp,
ma = ~ma;
UN8x4_MUL_UN8x4_ADD_UN8x4 (d, ma, s);
- *dst = CONVERT_8888_TO_0565 (d);
+ *dst = convert_8888_to_0565 (d);
}
dst++;
}
@@ -729,9 +729,9 @@ fast_composite_over_8888_0565 (pixman_implementation_t *imp,
else
{
d = *dst;
- d = over (s, CONVERT_0565_TO_0888 (d));
+ d = over (s, convert_0565_to_0888 (d));
}
- *dst = CONVERT_8888_TO_0565 (d);
+ *dst = convert_8888_to_0565 (d);
}
dst++;
}
@@ -762,7 +762,7 @@ fast_composite_src_x888_0565 (pixman_implementation_t *imp,
while (w--)
{
s = *src++;
- *dst = CONVERT_8888_TO_0565 (s);
+ *dst = convert_8888_to_0565 (s);
dst++;
}
}
@@ -838,13 +838,13 @@ fast_composite_add_0565_0565 (pixman_implementation_t *imp,
if (s)
{
d = *dst;
- s = CONVERT_0565_TO_8888 (s);
+ s = convert_0565_to_8888 (s);
if (d)
{
- d = CONVERT_0565_TO_8888 (d);
+ d = convert_0565_to_8888 (d);
UN8x4_ADD_UN8x4 (s, d);
}
- *dst = CONVERT_8888_TO_0565 (s);
+ *dst = convert_8888_to_0565 (s);
}
dst++;
}
@@ -1094,7 +1094,7 @@ fast_composite_over_n_1_0565 (pixman_implementation_t *imp,
if (srca == 0xff)
{
- src565 = CONVERT_8888_TO_0565 (src);
+ src565 = convert_8888_to_0565 (src);
while (height--)
{
dst = dst_line;
@@ -1142,8 +1142,8 @@ fast_composite_over_n_1_0565 (pixman_implementation_t *imp,
}
if (bitcache & bitmask)
{
- d = over (src, CONVERT_0565_TO_0888 (*dst));
- *dst = CONVERT_8888_TO_0565 (d);
+ d = over (src, convert_0565_to_0888 (*dst));
+ *dst = convert_8888_to_0565 (d);
}
bitmask = UPDATE_BITMASK (bitmask);
dst++;
@@ -1176,7 +1176,7 @@ fast_composite_solid_fill (pixman_implementation_t *imp,
else if (dest_image->bits.format == PIXMAN_r5g6b5 ||
dest_image->bits.format == PIXMAN_b5g6r5)
{
- src = CONVERT_8888_TO_0565 (src);
+ src = convert_8888_to_0565 (src);
}
pixman_fill (dest_image->bits.bits, dest_image->bits.rowstride,
diff --git a/pixman/pixman-inlines.h b/pixman/pixman-inlines.h
index 7f2e404..ab4def0 100644
--- a/pixman/pixman-inlines.h
+++ b/pixman/pixman-inlines.h
@@ -314,36 +314,36 @@ scanline_func_name (dst_type_t *dst, \
\
if (a1 == 0xff) \
{ \
- *dst = CONVERT_ ## SRC_FORMAT ## _TO_ ## DST_FORMAT (s1); \
+ *dst = convert_ ## SRC_FORMAT ## _to_ ## DST_FORMAT (s1); \
} \
else if (s1) \
{ \
- d = CONVERT_ ## DST_FORMAT ## _TO_8888 (*dst); \
- s1 = CONVERT_ ## SRC_FORMAT ## _TO_8888 (s1); \
+ d = convert_ ## DST_FORMAT ## _to_8888 (*dst); \
+ s1 = convert_ ## SRC_FORMAT ## _to_8888 (s1); \
a1 ^= 0xff; \
UN8x4_MUL_UN8_ADD_UN8x4 (d, a1, s1); \
- *dst = CONVERT_8888_TO_ ## DST_FORMAT (d); \
+ *dst = convert_8888_to_ ## DST_FORMAT (d); \
} \
dst++; \
\
if (a2 == 0xff) \
{ \
- *dst = CONVERT_ ## SRC_FORMAT ## _TO_ ## DST_FORMAT (s2); \
+ *dst = convert_ ## SRC_FORMAT ## _to_ ## DST_FORMAT (s2); \
} \
else if (s2) \
{ \
- d = CONVERT_## DST_FORMAT ## _TO_8888 (*dst); \
- s2 = CONVERT_## SRC_FORMAT ## _TO_8888 (s2); \
+ d = convert_## DST_FORMAT ## _to_8888 (*dst); \
+ s2 = convert_## SRC_FORMAT ## _to_8888 (s2); \
a2 ^= 0xff; \
UN8x4_MUL_UN8_ADD_UN8x4 (d, a2, s2); \
- *dst = CONVERT_8888_TO_ ## DST_FORMAT (d); \
+ *dst = convert_8888_to_ ## DST_FORMAT (d); \
} \
dst++; \
} \
else /* PIXMAN_OP_SRC */ \
{ \
- *dst++ = CONVERT_ ## SRC_FORMAT ## _TO_ ## DST_FORMAT (s1); \
- *dst++ = CONVERT_ ## SRC_FORMAT ## _TO_ ## DST_FORMAT (s2); \
+ *dst++ = convert_ ## SRC_FORMAT ## _to_ ## DST_FORMAT (s1); \
+ *dst++ = convert_ ## SRC_FORMAT ## _to_ ## DST_FORMAT (s2); \
} \
} \
\
@@ -358,21 +358,21 @@ scanline_func_name (dst_type_t *dst, \
\
if (a1 == 0xff) \
{ \
- *dst = CONVERT_ ## SRC_FORMAT ## _TO_ ## DST_FORMAT (s1); \
+ *dst = convert_ ## SRC_FORMAT ## _to_ ## DST_FORMAT (s1); \
} \
else if (s1) \
{ \
- d = CONVERT_## DST_FORMAT ## _TO_8888 (*dst); \
- s1 = CONVERT_ ## SRC_FORMAT ## _TO_8888 (s1); \
+ d = convert_## DST_FORMAT ## _to_8888 (*dst); \
+ s1 = convert_ ## SRC_FORMAT ## _to_8888 (s1); \
a1 ^= 0xff; \
UN8x4_MUL_UN8_ADD_UN8x4 (d, a1, s1); \
- *dst = CONVERT_8888_TO_ ## DST_FORMAT (d); \
+ *dst = convert_8888_to_ ## DST_FORMAT (d); \
} \
dst++; \
} \
else /* PIXMAN_OP_SRC */ \
{ \
- *dst++ = CONVERT_ ## SRC_FORMAT ## _TO_ ## DST_FORMAT (s1); \
+ *dst++ = convert_ ## SRC_FORMAT ## _to_ ## DST_FORMAT (s1); \
} \
} \
}
diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c
index aef468a..5a7ea44 100644
--- a/pixman/pixman-mmx.c
+++ b/pixman/pixman-mmx.c
@@ -2230,7 +2230,7 @@ mmx_composite_src_x888_0565 (pixman_implementation_t *imp,
while (w && (uintptr_t)dst & 7)
{
s = *src++;
- *dst = CONVERT_8888_TO_0565 (s);
+ *dst = convert_8888_to_0565 (s);
dst++;
w--;
}
@@ -2253,7 +2253,7 @@ mmx_composite_src_x888_0565 (pixman_implementation_t *imp,
while (w)
{
s = *src++;
- *dst = CONVERT_8888_TO_0565 (s);
+ *dst = convert_8888_to_0565 (s);
dst++;
w--;
}
@@ -3136,13 +3136,13 @@ mmx_composite_add_0565_0565 (pixman_implementation_t *imp,
if (s)
{
d = *dst;
- s = CONVERT_0565_TO_8888 (s);
+ s = convert_0565_to_8888 (s);
if (d)
{
- d = CONVERT_0565_TO_8888 (d);
+ d = convert_0565_to_8888 (d);
UN8x4_ADD_UN8x4 (s, d);
}
- *dst = CONVERT_8888_TO_0565 (s);
+ *dst = convert_8888_to_0565 (s);
}
dst++;
w--;
@@ -3174,13 +3174,13 @@ mmx_composite_add_0565_0565 (pixman_implementation_t *imp,
if (s)
{
d = *dst;
- s = CONVERT_0565_TO_8888 (s);
+ s = convert_0565_to_8888 (s);
if (d)
{
- d = CONVERT_0565_TO_8888 (d);
+ d = convert_0565_to_8888 (d);
UN8x4_ADD_UN8x4 (s, d);
}
- *dst = CONVERT_8888_TO_0565 (s);
+ *dst = convert_8888_to_0565 (s);
}
dst++;
}
@@ -3824,7 +3824,7 @@ mmx_fetch_r5g6b5 (pixman_iter_t *iter, const uint32_t *mask)
{
uint16_t s = *src++;
- *dst++ = CONVERT_0565_TO_8888 (s);
+ *dst++ = convert_0565_to_8888 (s);
w--;
}
@@ -3847,7 +3847,7 @@ mmx_fetch_r5g6b5 (pixman_iter_t *iter, const uint32_t *mask)
{
uint16_t s = *src++;
- *dst++ = CONVERT_0565_TO_8888 (s);
+ *dst++ = convert_0565_to_8888 (s);
w--;
}
diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
index c0a6bc0..422f72c 100644
--- a/pixman/pixman-private.h
+++ b/pixman/pixman-private.h
@@ -883,22 +883,47 @@ pixman_list_move_to_front (pixman_list_t *list, pixman_link_t *link)
/* Conversion between 8888 and 0565 */
-#define CONVERT_8888_TO_0565(s) \
- ((((s) >> 3) & 0x001f) | \
- (((s) >> 5) & 0x07e0) | \
- (((s) >> 8) & 0xf800))
+static force_inline uint16_t
+convert_8888_to_0565 (uint32_t s)
+{
+ return ((((s) >> 3) & 0x001f) |
+ (((s) >> 5) & 0x07e0) |
+ (((s) >> 8) & 0xf800));
+}
-#define CONVERT_0565_TO_0888(s) \
- (((((s) << 3) & 0xf8) | (((s) >> 2) & 0x7)) | \
- ((((s) << 5) & 0xfc00) | (((s) >> 1) & 0x300)) | \
- ((((s) << 8) & 0xf80000) | (((s) << 3) & 0x70000)))
+static force_inline uint32_t
+convert_0565_to_0888 (uint16_t s)
+{
+ return (((((s) << 3) & 0xf8) | (((s) >> 2) & 0x7)) |
+ ((((s) << 5) & 0xfc00) | (((s) >> 1) & 0x300)) |
+ ((((s) << 8) & 0xf80000) | (((s) << 3) & 0x70000)));
+}
-#define CONVERT_0565_TO_8888(s) (CONVERT_0565_TO_0888(s) | 0xff000000)
+static force_inline uint32_t
+convert_0565_to_8888 (uint16_t s)
+{
+ return convert_0565_to_0888 (s) | 0xff000000;
+}
/* Trivial versions that are useful in macros */
-#define CONVERT_8888_TO_8888(s) (s)
-#define CONVERT_x888_TO_8888(s) ((s) | 0xff000000)
-#define CONVERT_0565_TO_0565(s) (s)
+
+static force_inline uint32_t
+convert_8888_to_8888 (uint32_t s)
+{
+ return s;
+}
+
+static force_inline uint32_t
+convert_x888_to_8888 (uint32_t s)
+{
+ return s | 0xff000000;
+}
+
+static force_inline uint16_t
+convert_0565_to_0565 (uint16_t s)
+{
+ return s;
+}
#define PIXMAN_FORMAT_IS_WIDE(f) \
(PIXMAN_FORMAT_A (f) > 8 || \
diff --git a/pixman/pixman-sse2.c b/pixman/pixman-sse2.c
index 7e980c9..b1cb73e 100644
--- a/pixman/pixman-sse2.c
+++ b/pixman/pixman-sse2.c
@@ -2881,7 +2881,7 @@ sse2_composite_src_x888_0565 (pixman_implementation_t *imp,
while (w && (uintptr_t)dst & 15)
{
s = *src++;
- *dst = CONVERT_8888_TO_0565 (s);
+ *dst = convert_8888_to_0565 (s);
dst++;
w--;
}
@@ -2901,7 +2901,7 @@ sse2_composite_src_x888_0565 (pixman_implementation_t *imp,
while (w)
{
s = *src++;
- *dst = CONVERT_8888_TO_0565 (s);
+ *dst = convert_8888_to_0565 (s);
dst++;
w--;
}
@@ -5970,7 +5970,7 @@ sse2_fetch_r5g6b5 (pixman_iter_t *iter, const uint32_t *mask)
{
uint16_t s = *src++;
- *dst++ = CONVERT_0565_TO_8888 (s);
+ *dst++ = convert_0565_to_8888 (s);
w--;
}
@@ -5995,7 +5995,7 @@ sse2_fetch_r5g6b5 (pixman_iter_t *iter, const uint32_t *mask)
{
uint16_t s = *src++;
- *dst++ = CONVERT_0565_TO_8888 (s);
+ *dst++ = convert_0565_to_8888 (s);
w--;
}
diff --git a/pixman/pixman.c b/pixman/pixman.c
index 0661f41..d3ca3d8 100644
--- a/pixman/pixman.c
+++ b/pixman/pixman.c
@@ -828,7 +828,7 @@ color_to_pixel (const pixman_color_t *color,
c = c >> 24;
else if (format == PIXMAN_r5g6b5 ||
format == PIXMAN_b5g6r5)
- c = CONVERT_8888_TO_0565 (c);
+ c = convert_8888_to_0565 (c);
#if 0
printf ("color: %x %x %x %x\n", color->alpha, color->red, color->green, color->blue);
--
1.7.8.6
More information about the Pixman
mailing list