diff options
author | Siarhei Siamashka <siarhei.siamashka@gmail.com> | 2012-12-03 02:50:20 +0200 |
---|---|---|
committer | Siarhei Siamashka <siarhei.siamashka@gmail.com> | 2012-12-18 20:45:47 +0200 |
commit | 3922e90c400fca3ac43dc77b8dd0c0591e7e4fbc (patch) | |
tree | ab4c8b59ef465ed8b4b036fb41f030a0a01dee08 | |
parent | e4519360c15772ac51038b9f86e3f730f06cfb65 (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.c | 2 | ||||
-rw-r--r-- | pixman/pixman-fast-path.c | 38 | ||||
-rw-r--r-- | pixman/pixman-inlines.h | 30 | ||||
-rw-r--r-- | pixman/pixman-mmx.c | 20 | ||||
-rw-r--r-- | pixman/pixman-private.h | 49 | ||||
-rw-r--r-- | pixman/pixman-sse2.c | 8 | ||||
-rw-r--r-- | 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 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); |