diff options
Diffstat (limited to 'qemu/pixman/test/check-formats.c')
-rw-r--r-- | qemu/pixman/test/check-formats.c | 352 |
1 files changed, 0 insertions, 352 deletions
diff --git a/qemu/pixman/test/check-formats.c b/qemu/pixman/test/check-formats.c deleted file mode 100644 index 7edc198c1..000000000 --- a/qemu/pixman/test/check-formats.c +++ /dev/null @@ -1,352 +0,0 @@ -#include <ctype.h> -#include "utils.h" - -static int -check_op (pixman_op_t op, - pixman_format_code_t src_format, - pixman_format_code_t dest_format) -{ - uint32_t src_alpha_mask, src_green_mask; - uint32_t dest_alpha_mask, dest_green_mask; - pixel_checker_t src_checker, dest_checker; - pixman_image_t *si, *di; - uint32_t sa, sg, da, dg; - uint32_t s, d; - int retval = 0; - - pixel_checker_init (&src_checker, src_format); - pixel_checker_init (&dest_checker, dest_format); - - pixel_checker_get_masks ( - &src_checker, &src_alpha_mask, NULL, &src_green_mask, NULL); - pixel_checker_get_masks ( - &dest_checker, &dest_alpha_mask, NULL, &dest_green_mask, NULL); - - /* printf ("masks: %x %x %x %x\n", */ - /* src_alpha_mask, src_green_mask, */ - /* dest_alpha_mask, dest_green_mask); */ - - si = pixman_image_create_bits (src_format, 1, 1, &s, 4); - di = pixman_image_create_bits (dest_format, 1, 1, &d, 4); - - sa = 0; - do - { - sg = 0; - do - { - da = 0; - do - { - dg = 0; - do - { - color_t src_color, dest_color, result_color; - uint32_t orig_d; - - s = sa | sg; - d = da | dg; - - orig_d = d; - - pixel_checker_convert_pixel_to_color (&src_checker, s, &src_color); - pixel_checker_convert_pixel_to_color (&dest_checker, d, &dest_color); - - do_composite (op, &src_color, NULL, &dest_color, &result_color, FALSE); - - - if (!is_little_endian()) - { - s <<= 32 - PIXMAN_FORMAT_BPP (src_format); - d <<= 32 - PIXMAN_FORMAT_BPP (dest_format); - } - - pixman_image_composite32 (op, si, NULL, di, - 0, 0, 0, 0, 0, 0, 1, 1); - - if (!is_little_endian()) - d >>= (32 - PIXMAN_FORMAT_BPP (dest_format)); - - if (!pixel_checker_check (&dest_checker, d, &result_color)) - { - printf ("---- test failed ----\n"); - printf ("operator: %-32s\n", operator_name (op)); - printf ("source: %-12s pixel: %08x\n", format_name (src_format), s); - printf ("dest: %-12s pixel: %08x\n", format_name (dest_format), orig_d); - printf ("got: %-12s pixel: %08x\n", format_name (dest_format), d); - - retval = 1; - } - - dg -= dest_green_mask; - dg &= dest_green_mask; - } - while (dg != 0); - - da -= dest_alpha_mask; - da &= dest_alpha_mask; - } - while (da != 0); - - sg -= src_green_mask; - sg &= src_green_mask; - } - while (sg != 0); - - sa -= src_alpha_mask; - sa &= src_alpha_mask; - } - while (sa != 0); - - pixman_image_unref (si); - pixman_image_unref (di); - - return retval; -} - -static const pixman_op_t op_list[] = -{ - PIXMAN_OP_CLEAR, - PIXMAN_OP_SRC, - PIXMAN_OP_DST, - PIXMAN_OP_OVER, - PIXMAN_OP_OVER_REVERSE, - PIXMAN_OP_IN, - PIXMAN_OP_IN_REVERSE, - PIXMAN_OP_OUT, - PIXMAN_OP_OUT_REVERSE, - PIXMAN_OP_ATOP, - PIXMAN_OP_ATOP_REVERSE, - PIXMAN_OP_XOR, - PIXMAN_OP_ADD, - PIXMAN_OP_SATURATE, - - PIXMAN_OP_DISJOINT_CLEAR, - PIXMAN_OP_DISJOINT_SRC, - PIXMAN_OP_DISJOINT_DST, - PIXMAN_OP_DISJOINT_OVER, - PIXMAN_OP_DISJOINT_OVER_REVERSE, - PIXMAN_OP_DISJOINT_IN, - PIXMAN_OP_DISJOINT_IN_REVERSE, - PIXMAN_OP_DISJOINT_OUT, - PIXMAN_OP_DISJOINT_OUT_REVERSE, - PIXMAN_OP_DISJOINT_ATOP, - PIXMAN_OP_DISJOINT_ATOP_REVERSE, - PIXMAN_OP_DISJOINT_XOR, - - PIXMAN_OP_CONJOINT_CLEAR, - PIXMAN_OP_CONJOINT_SRC, - PIXMAN_OP_CONJOINT_DST, - PIXMAN_OP_CONJOINT_OVER, - PIXMAN_OP_CONJOINT_OVER_REVERSE, - PIXMAN_OP_CONJOINT_IN, - PIXMAN_OP_CONJOINT_IN_REVERSE, - PIXMAN_OP_CONJOINT_OUT, - PIXMAN_OP_CONJOINT_OUT_REVERSE, - PIXMAN_OP_CONJOINT_ATOP, - PIXMAN_OP_CONJOINT_ATOP_REVERSE, - PIXMAN_OP_CONJOINT_XOR, -}; - -static const pixman_format_code_t format_list[] = -{ - PIXMAN_a8r8g8b8, - PIXMAN_x8r8g8b8, - PIXMAN_a8b8g8r8, - PIXMAN_x8b8g8r8, - PIXMAN_b8g8r8a8, - PIXMAN_b8g8r8x8, - PIXMAN_r8g8b8a8, - PIXMAN_r8g8b8x8, - PIXMAN_x14r6g6b6, - PIXMAN_x2r10g10b10, - PIXMAN_a2r10g10b10, - PIXMAN_x2b10g10r10, - PIXMAN_a2b10g10r10, - PIXMAN_a8r8g8b8_sRGB, - PIXMAN_r8g8b8, - PIXMAN_b8g8r8, - PIXMAN_r5g6b5, - PIXMAN_b5g6r5, - PIXMAN_a1r5g5b5, - PIXMAN_x1r5g5b5, - PIXMAN_a1b5g5r5, - PIXMAN_x1b5g5r5, - PIXMAN_a4r4g4b4, - PIXMAN_x4r4g4b4, - PIXMAN_a4b4g4r4, - PIXMAN_x4b4g4r4, - PIXMAN_a8, - PIXMAN_r3g3b2, - PIXMAN_b2g3r3, - PIXMAN_a2r2g2b2, - PIXMAN_a2b2g2r2, - PIXMAN_x4a4, - PIXMAN_a4, - PIXMAN_r1g2b1, - PIXMAN_b1g2r1, - PIXMAN_a1r1g1b1, - PIXMAN_a1b1g1r1, - PIXMAN_a1, -}; - -static pixman_format_code_t -format_from_string (const char *s) -{ - int i; - - for (i = 0; i < ARRAY_LENGTH (format_list); ++i) - { - if (strcasecmp (format_name (format_list[i]), s) == 0) - return format_list[i]; - } - - return PIXMAN_null; -} - -static void -emit (const char *s, int *n_chars) -{ - *n_chars += printf ("%s,", s); - if (*n_chars > 60) - { - printf ("\n "); - *n_chars = 0; - } - else - { - printf (" "); - (*n_chars)++; - } -} - -static void -list_formats (void) -{ - int n_chars; - int i; - - printf ("Formats:\n "); - - n_chars = 0; - for (i = 0; i < ARRAY_LENGTH (format_list); ++i) - emit (format_name (format_list[i]), &n_chars); - - printf ("\n\n"); -} - -static void -list_operators (void) -{ - char short_name [128] = { 0 }; - int i, n_chars; - - printf ("Operators:\n "); - - n_chars = 0; - for (i = 0; i < ARRAY_LENGTH (op_list); ++i) - { - pixman_op_t op = op_list[i]; - int j; - - snprintf (short_name, sizeof (short_name) - 1, "%s", - operator_name (op) + strlen ("PIXMAN_OP_")); - - for (j = 0; short_name[j] != '\0'; ++j) - short_name[j] = tolower (short_name[j]); - - emit (short_name, &n_chars); - } - - printf ("\n\n"); -} - -static pixman_op_t -operator_from_string (const char *s) -{ - char full_name[128] = { 0 }; - int i; - - snprintf (full_name, (sizeof full_name) - 1, "PIXMAN_OP_%s", s); - - for (i = 0; i < ARRAY_LENGTH (op_list); ++i) - { - pixman_op_t op = op_list[i]; - - if (strcasecmp (operator_name (op), full_name) == 0) - return op; - } - - return PIXMAN_OP_NONE; -} - -int -main (int argc, char **argv) -{ - enum { OPTION_OP, OPTION_SRC, OPTION_DEST, LAST_OPTION } option; - pixman_format_code_t src_fmt, dest_fmt; - pixman_op_t op; - - op = PIXMAN_OP_NONE; - src_fmt = PIXMAN_null; - dest_fmt = PIXMAN_null; - - argc--; - argv++; - - for (option = OPTION_OP; option < LAST_OPTION; ++option) - { - char *arg = NULL; - - if (argc) - { - argc--; - arg = *argv++; - } - - switch (option) - { - case OPTION_OP: - if (!arg) - printf (" - missing operator\n"); - else if ((op = operator_from_string (arg)) == PIXMAN_OP_NONE) - printf (" - unknown operator %s\n", arg); - break; - - case OPTION_SRC: - if (!arg) - printf (" - missing source format\n"); - else if ((src_fmt = format_from_string (arg)) == PIXMAN_null) - printf (" - unknown source format %s\n", arg); - break; - - case OPTION_DEST: - if (!arg) - printf (" - missing destination format\n"); - else if ((dest_fmt = format_from_string (arg)) == PIXMAN_null) - printf (" - unknown destination format %s\n", arg); - break; - - default: - assert (0); - break; - } - } - - while (argc--) - { - op = PIXMAN_OP_NONE; - printf (" - unexpected argument: %s\n", *argv++); - } - - if (op == PIXMAN_OP_NONE || src_fmt == PIXMAN_null || dest_fmt == PIXMAN_null) - { - printf ("\nUsage:\n check-formats <operator> <src-format> <dest-format>\n\n"); - list_operators(); - list_formats(); - - return -1; - } - - return check_op (op, src_fmt, dest_fmt); -} |