summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSiarhei Siamashka <siarhei.siamashka@gmail.com>2012-12-03 02:50:20 +0200
committerSiarhei Siamashka <siarhei.siamashka@gmail.com>2012-12-18 20:45:47 +0200
commit3922e90c400fca3ac43dc77b8dd0c0591e7e4fbc (patch)
treeab4c8b59ef465ed8b4b036fb41f030a0a01dee08
parente4519360c15772ac51038b9f86e3f730f06cfb65 (diff)
Change CONVERT_XXXX_TO_YYYY macros into inline functions
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.
-rw-r--r--pixman/pixman-bits-image.c2
-rw-r--r--pixman/pixman-fast-path.c38
-rw-r--r--pixman/pixman-inlines.h30
-rw-r--r--pixman/pixman-mmx.c20
-rw-r--r--pixman/pixman-private.h49
-rw-r--r--pixman/pixman-sse2.c8
-rw-r--r--pixman/pixman.c2
7 files changed, 87 insertions, 62 deletions
diff --git a/pixman/pixman-bits-image.c b/pixman/pixman-bits-image.c
index 86d80c3..75a39a1 100644
--- a/pixman/pixman-bits-image.c
+++ b/pixman/pixman-bits-image.c
@@ -1114,7 +1114,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_SEPARABLE_CONVOLUTION_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 99125a1..ce71bbd 100644
--- a/pixman/pixman-private.h
+++ b/pixman/pixman-private.h
@@ -884,22 +884,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);