/* * Copyright © 2013 Soeren Sandmann * Copyright © 2013 Red Hat, Inc. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice (including the next * paragraph) shall be included in all copies or substantial portions of the * Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ #include #include /* abort() */ #include #include #include "utils.h" typedef struct pixel_combination_t pixel_combination_t; struct pixel_combination_t { pixman_op_t op; pixman_format_code_t src_format; uint32_t src_pixel; pixman_format_code_t mask_format; uint32_t mask_pixel; pixman_format_code_t dest_format; uint32_t dest_pixel; }; static const pixel_combination_t regressions[] = { { PIXMAN_OP_DISJOINT_ATOP, PIXMAN_a8r8g8b8, 0x1ffc3ff, PIXMAN_a8, 0x7b, PIXMAN_a8r8g8b8, 0xff00c300, }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a2r2g2b2, 0xb5, PIXMAN_a4r4g4b4, 0xe3ff, PIXMAN_a2r2g2b2, 0x2e }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a2r2g2b2, 0xa6, PIXMAN_a8r8g8b8, 0x2b00ff00, PIXMAN_a4r4g4b4, 0x7e }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a8r8g8b8, 0x27000013, PIXMAN_a2r2g2b2, 0x80, PIXMAN_a4r4g4b4, 0x9d }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a4r4g4b4, 0xe6f7, PIXMAN_a2r2g2b2, 0xad, PIXMAN_a4r4g4b4, 0x71 }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a8r8g8b8, 0xff4f70ff, PIXMAN_r5g6b5, 0xb828, PIXMAN_a8r8g8b8, 0xcac400 }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a2r2g2b2, 0xa9, PIXMAN_a4r4g4b4, 0x41c2, PIXMAN_a8r8g8b8, 0xffff2b }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a2r2g2b2, 0x89, PIXMAN_a8r8g8b8, 0x977cff61, PIXMAN_a4r4g4b4, 0x36 }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a2r2g2b2, 0x81, PIXMAN_r5g6b5, 0x6f9e, PIXMAN_a4r4g4b4, 0x1eb }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a2r2g2b2, 0xb5, PIXMAN_a4r4g4b4, 0xe247, PIXMAN_a8r8g8b8, 0xffbaff }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a2r2g2b2, 0x97, PIXMAN_a2r2g2b2, 0x9d, PIXMAN_a2r2g2b2, 0x21 }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a2r2g2b2, 0xb4, PIXMAN_a2r2g2b2, 0x90, PIXMAN_a8r8g8b8, 0xc0fd5c }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a8r8g8b8, 0xdf00ff70, PIXMAN_a8r8g8b8, 0x2597ff27, PIXMAN_a4r4g4b4, 0xf3 }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a2r2g2b2, 0xb7, PIXMAN_r3g3b2, 0xb1, PIXMAN_a8r8g8b8, 0x9f4bcc }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a4r4g4b4, 0xf39e, PIXMAN_r5g6b5, 0x34, PIXMAN_a8r8g8b8, 0xf6ae00 }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a8r8g8b8, 0x3aff1dff, PIXMAN_a2r2g2b2, 0x64, PIXMAN_a8r8g8b8, 0x94ffb4 }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a2r2g2b2, 0xa4, PIXMAN_a2r2g2b2, 0x8a, PIXMAN_a4r4g4b4, 0xff }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a2r2g2b2, 0xa5, PIXMAN_a4r4g4b4, 0x1a, PIXMAN_a4r4g4b4, 0xff }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a2r2g2b2, 0xb4, PIXMAN_a2r2g2b2, 0xca, PIXMAN_a4r4g4b4, 0x7b }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a2r2g2b2, 0xbd, PIXMAN_a4r4g4b4, 0xff37, PIXMAN_a4r4g4b4, 0xff }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a2r2g2b2, 0x96, PIXMAN_a2r2g2b2, 0xbb, PIXMAN_a8r8g8b8, 0x96ffff }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a2r2g2b2, 0x89, PIXMAN_r3g3b2, 0x92, PIXMAN_a4r4g4b4, 0xa8c }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a4r4g4b4, 0xa95b, PIXMAN_a2r2g2b2, 0x68, PIXMAN_a8r8g8b8, 0x38ff }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a2r2g2b2, 0x90, PIXMAN_a8r8g8b8, 0x53bd00ef, PIXMAN_a8r8g8b8, 0xff0003 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1f5ffff, PIXMAN_r3g3b2, 0x22, PIXMAN_r5g6b5, 0x2000 }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x10000b6, PIXMAN_a8r8g8b8, 0x9645, PIXMAN_r5g6b5, 0x6 }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x172ff00, PIXMAN_a4r4g4b4, 0xff61, PIXMAN_r3g3b2, 0xc }, { PIXMAN_OP_DISJOINT_ATOP, PIXMAN_a8r8g8b8, 0x281ffc8, PIXMAN_r5g6b5, 0x39b8, PIXMAN_r5g6b5, 0x13 }, { PIXMAN_OP_CONJOINT_IN, PIXMAN_a8r8g8b8, 0x100a2ff, PIXMAN_a4r4g4b4, 0x6500, PIXMAN_a2r2g2b2, 0x5 }, { PIXMAN_OP_CONJOINT_IN, PIXMAN_a8r8g8b8, 0x1ffff51, PIXMAN_r5g6b5, 0x52ff, PIXMAN_a2r2g2b2, 0x14 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x150d500, PIXMAN_a8r8g8b8, 0x6200b7ff, PIXMAN_a8r8g8b8, 0x1f5200 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x2a9a700, PIXMAN_a8r8g8b8, 0xf7003400, PIXMAN_a8r8g8b8, 0x2200 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x200ffff, PIXMAN_r5g6b5, 0x81ff, PIXMAN_r5g6b5, 0x1f }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x2ff00ff, PIXMAN_r5g6b5, 0x3f00, PIXMAN_r3g3b2, 0x20 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x3ff1aa4, PIXMAN_a4r4g4b4, 0x2200, PIXMAN_r5g6b5, 0x2000 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x280ff2c, PIXMAN_r3g3b2, 0xc6, PIXMAN_a8r8g8b8, 0xfdfd44fe }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x13aff1d, PIXMAN_a2r2g2b2, 0x4b, PIXMAN_r5g6b5, 0x12a1 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x2ffff88, PIXMAN_a8r8g8b8, 0xff3a49, PIXMAN_r5g6b5, 0xf7df }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x1009700, PIXMAN_a2r2g2b2, 0x56, PIXMAN_a8r8g8b8, 0x0 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x1aacbff, PIXMAN_a4r4g4b4, 0x84, PIXMAN_r3g3b2, 0x1 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x100b1ff, PIXMAN_a2r2g2b2, 0xf5, PIXMAN_a8r8g8b8, 0xfea89cff }, { PIXMAN_OP_CONJOINT_XOR, PIXMAN_a8r8g8b8, 0x1ff0000, PIXMAN_r5g6b5, 0x6800, PIXMAN_a4r4g4b4, 0x0 }, { PIXMAN_OP_CONJOINT_XOR, PIXMAN_a8r8g8b8, 0x10064ff, PIXMAN_r3g3b2, 0x61, PIXMAN_a4r4g4b4, 0x0 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1bb00ff, PIXMAN_r5g6b5, 0x76b5, PIXMAN_a4r4g4b4, 0x500 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x2ffff41, PIXMAN_r5g6b5, 0x7100, PIXMAN_a4r4g4b4, 0x20 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x1ff1231, PIXMAN_a8r8g8b8, 0x381089, PIXMAN_r5g6b5, 0x38a5 }, { PIXMAN_OP_CONJOINT_IN, PIXMAN_a8r8g8b8, 0x16e5c49, PIXMAN_a8r8g8b8, 0x4dfa3694, PIXMAN_a8r8g8b8, 0x211c16 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x134ff62, PIXMAN_a2r2g2b2, 0x14, PIXMAN_r3g3b2, 0x8 }, { PIXMAN_OP_CONJOINT_IN, PIXMAN_a8r8g8b8, 0x300ffeb, PIXMAN_r3g3b2, 0xc7, PIXMAN_a4r4g4b4, 0x20 }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x3ff8bff, PIXMAN_r3g3b2, 0x3e, PIXMAN_a8r8g8b8, 0x3008baa }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x1ff00ff, PIXMAN_a4r4g4b4, 0x3466, PIXMAN_a4r4g4b4, 0x406 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x1ddc027, PIXMAN_a4r4g4b4, 0x7d00, PIXMAN_r5g6b5, 0x0 }, { PIXMAN_OP_CONJOINT_IN, PIXMAN_a8r8g8b8, 0x2ffff00, PIXMAN_a8r8g8b8, 0xc92cfb52, PIXMAN_a4r4g4b4, 0x200 }, { PIXMAN_OP_CONJOINT_XOR, PIXMAN_a8r8g8b8, 0x1ff116a, PIXMAN_a4r4g4b4, 0x6000, PIXMAN_a4r4g4b4, 0x0 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x1ffffff, PIXMAN_r5g6b5, 0x2f95, PIXMAN_r5g6b5, 0x795 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x2ffff00, PIXMAN_a4r4g4b4, 0x354a, PIXMAN_r5g6b5, 0x3180 }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x1d7ff00, PIXMAN_a4r4g4b4, 0xd6ff, PIXMAN_a8r8g8b8, 0xffff0700 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x1bc5db7, PIXMAN_r5g6b5, 0x944f, PIXMAN_a4r4g4b4, 0xff05 }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x185ffd9, PIXMAN_a2r2g2b2, 0x9c, PIXMAN_r5g6b5, 0x3c07 }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x1fa7f61, PIXMAN_a8r8g8b8, 0xff31ff00, PIXMAN_r3g3b2, 0xd2 }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x1c4ff00, PIXMAN_r3g3b2, 0xb, PIXMAN_a4r4g4b4, 0x0 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x2ff00ff, PIXMAN_a8r8g8b8, 0x3f3caeda, PIXMAN_r3g3b2, 0x20 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x100ff00, PIXMAN_r5g6b5, 0xff, PIXMAN_r5g6b5, 0xe0 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1ff68ff, PIXMAN_a4r4g4b4, 0x8046, PIXMAN_r5g6b5, 0xec }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x100ff28, PIXMAN_a8r8g8b8, 0x4c00, PIXMAN_r5g6b5, 0x260 }, { PIXMAN_OP_CONJOINT_IN, PIXMAN_a8r8g8b8, 0x1ffff00, PIXMAN_a4r4g4b4, 0xd92a, PIXMAN_a8r8g8b8, 0x2200 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x100289a, PIXMAN_a8r8g8b8, 0x74ffb8ff, PIXMAN_r5g6b5, 0x0 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x1baff00, PIXMAN_r5g6b5, 0x4e9d, PIXMAN_r5g6b5, 0x3000 }, { PIXMAN_OP_CONJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1fcffad, PIXMAN_r5g6b5, 0x42d7, PIXMAN_a8r8g8b8, 0x1c6ffe5 }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x183ff00, PIXMAN_r3g3b2, 0x7e, PIXMAN_a4r4g4b4, 0xff }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x2ff0076, PIXMAN_a8r8g8b8, 0x2a0000, PIXMAN_r3g3b2, 0x20 }, { PIXMAN_OP_CONJOINT_OUT, PIXMAN_a8r8g8b8, 0x3d8bbff, PIXMAN_r5g6b5, 0x6900, PIXMAN_a8r8g8b8, 0x35b0000 }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x14f00ff, PIXMAN_r5g6b5, 0xd48, PIXMAN_a4r4g4b4, 0x0 }, { PIXMAN_OP_CONJOINT_IN, PIXMAN_a8r8g8b8, 0x28c72df, PIXMAN_a8r8g8b8, 0xff5cff31, PIXMAN_a4r4g4b4, 0x2 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x2ffffff, PIXMAN_a8r8g8b8, 0xffad8020, PIXMAN_r5g6b5, 0x4 }, { PIXMAN_OP_DISJOINT_ATOP, PIXMAN_a8r8g8b8, 0x100ff00, PIXMAN_a2r2g2b2, 0x76, PIXMAN_r3g3b2, 0x0 }, { PIXMAN_OP_CONJOINT_XOR, PIXMAN_a8r8g8b8, 0x1005d00, PIXMAN_r5g6b5, 0x7b04, PIXMAN_a8r8g8b8, 0x1000000 }, { PIXMAN_OP_CONJOINT_ATOP, PIXMAN_a8r8g8b8, 0x3cdfc3e, PIXMAN_a8r8g8b8, 0x69ec21d3, PIXMAN_a4r4g4b4, 0x20 }, { PIXMAN_OP_DISJOINT_ATOP, PIXMAN_a8r8g8b8, 0x200ffff, PIXMAN_r5g6b5, 0x30ff, PIXMAN_r5g6b5, 0x60ff }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x532fff4, PIXMAN_r5g6b5, 0xcb, PIXMAN_r5g6b5, 0xd9a1 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1ffffff, PIXMAN_r3g3b2, 0x5f, PIXMAN_a2r2g2b2, 0x10 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1ffffff, PIXMAN_a8r8g8b8, 0xffd60052, PIXMAN_r3g3b2, 0x1 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x1ff6491, PIXMAN_a8r8g8b8, 0x1e53ff00, PIXMAN_r5g6b5, 0x1862 }, { PIXMAN_OP_CONJOINT_IN, PIXMAN_a8r8g8b8, 0x1ffff00, PIXMAN_r3g3b2, 0xc7, PIXMAN_a4r4g4b4, 0x20 }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x29d0fff, PIXMAN_a4r4g4b4, 0x25ff, PIXMAN_a8r8g8b8, 0x0 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x141760a, PIXMAN_a4r4g4b4, 0x7ec2, PIXMAN_a4r4g4b4, 0x130 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x1abedff, PIXMAN_a8r8g8b8, 0x75520068, PIXMAN_r3g3b2, 0x87 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x10000ff, PIXMAN_a8r8g8b8, 0xff00e652, PIXMAN_r3g3b2, 0x1 }, { PIXMAN_OP_CONJOINT_ATOP, PIXMAN_a8r8g8b8, 0x16006075, PIXMAN_r5g6b5, 0xc00, PIXMAN_a8r8g8b8, 0x27f0900 }, { PIXMAN_OP_DISJOINT_ATOP, PIXMAN_a8r8g8b8, 0x200ff00, PIXMAN_a8r8g8b8, 0xd1b83f57, PIXMAN_a4r4g4b4, 0xff75 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x14000c4, PIXMAN_a4r4g4b4, 0x96, PIXMAN_a2r2g2b2, 0x1 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x1ff00d1, PIXMAN_r3g3b2, 0x79, PIXMAN_a2r2g2b2, 0x0 }, { PIXMAN_OP_CONJOINT_ATOP, PIXMAN_a8r8g8b8, 0x1ff00dc, PIXMAN_a4r4g4b4, 0xc5ff, PIXMAN_a2r2g2b2, 0x10 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1ffffb2, PIXMAN_a8r8g8b8, 0x4cff5700, PIXMAN_r3g3b2, 0x48 }, { PIXMAN_OP_CONJOINT_XOR, PIXMAN_a8r8g8b8, 0x1327482, PIXMAN_a8r8g8b8, 0x247ff, PIXMAN_a8r8g8b8, 0x82 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x1d0ff00, PIXMAN_r3g3b2, 0xc9, PIXMAN_r5g6b5, 0x240 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x13d35ff, PIXMAN_a2r2g2b2, 0x6d, PIXMAN_r3g3b2, 0x1 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x1ffc6b2, PIXMAN_a8r8g8b8, 0x5abe8e3c, PIXMAN_r5g6b5, 0x5a27 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x15700ff, PIXMAN_r3g3b2, 0xdd, PIXMAN_a8r8g8b8, 0x55 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x1ff11ff, PIXMAN_r3g3b2, 0x30, PIXMAN_r5g6b5, 0x2000 }, { PIXMAN_OP_DISJOINT_ATOP, PIXMAN_a8r8g8b8, 0x1ff00ff, PIXMAN_a2r2g2b2, 0x6d, PIXMAN_r3g3b2, 0x0 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x1421d5f, PIXMAN_a4r4g4b4, 0xff85, PIXMAN_a8r8g8b8, 0x1420f00 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x1d2ffff, PIXMAN_r5g6b5, 0xfc, PIXMAN_r5g6b5, 0x1c }, { PIXMAN_OP_CONJOINT_ATOP, PIXMAN_a8r8g8b8, 0x1ffff42, PIXMAN_a4r4g4b4, 0x7100, PIXMAN_a4r4g4b4, 0x771 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x25ae3d4, PIXMAN_a8r8g8b8, 0x39ffc99a, PIXMAN_a8r8g8b8, 0x14332f }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x1ff0643, PIXMAN_a8r8g8b8, 0x4c000000, PIXMAN_r5g6b5, 0x4802 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x1966a00, PIXMAN_r3g3b2, 0x46, PIXMAN_r5g6b5, 0x0 }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x387ff59, PIXMAN_r5g6b5, 0x512c, PIXMAN_r5g6b5, 0x120 }, { PIXMAN_OP_CONJOINT_XOR, PIXMAN_a8r8g8b8, 0x1f7ffb0, PIXMAN_r5g6b5, 0x63b8, PIXMAN_a8r8g8b8, 0x1000089 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x185841c, PIXMAN_a2r2g2b2, 0x5c, PIXMAN_a8r8g8b8, 0x8400 }, { PIXMAN_OP_DISJOINT_ATOP, PIXMAN_a8r8g8b8, 0x1ffc3ff, PIXMAN_a8r8g8b8, 0xff7b, PIXMAN_a8r8g8b8, 0xff00c300 }, { PIXMAN_OP_CONJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1ff7500, PIXMAN_a2r2g2b2, 0x47, PIXMAN_a4r4g4b4, 0xff }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1002361, PIXMAN_a2r2g2b2, 0x7e, PIXMAN_r5g6b5, 0x64 }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x10000b6, PIXMAN_a8r8g8b8, 0x59004463, PIXMAN_a4r4g4b4, 0xffa7 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1ff5a49, PIXMAN_a8r8g8b8, 0xff3fff2b, PIXMAN_a8r8g8b8, 0x13f000c }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x3ffecfc, PIXMAN_r3g3b2, 0x3c, PIXMAN_r5g6b5, 0x2000 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1630044, PIXMAN_a2r2g2b2, 0x63, PIXMAN_r3g3b2, 0x20 }, { PIXMAN_OP_CONJOINT_OUT, PIXMAN_a8r8g8b8, 0x1d2ff58, PIXMAN_a8r8g8b8, 0x8f77ff, PIXMAN_a4r4g4b4, 0x705 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x14dffff, PIXMAN_a2r2g2b2, 0x9a, PIXMAN_a8r8g8b8, 0x1a0000 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x100ff92, PIXMAN_a4r4g4b4, 0x540c, PIXMAN_r5g6b5, 0x2a6 }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x1ffffff, PIXMAN_a4r4g4b4, 0xddd5, PIXMAN_a4r4g4b4, 0xdd0 }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x1ffffff, PIXMAN_r5g6b5, 0xff8c, PIXMAN_a4r4g4b4, 0xff0 }, { PIXMAN_OP_DISJOINT_ATOP, PIXMAN_a8r8g8b8, 0x1ffffff, PIXMAN_r3g3b2, 0x66, PIXMAN_r5g6b5, 0x7d1f }, { PIXMAN_OP_CONJOINT_ATOP, PIXMAN_a8r8g8b8, 0x1ffff00, PIXMAN_a4r4g4b4, 0xff5b, PIXMAN_a8r8g8b8, 0x5500 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x2ed2dff, PIXMAN_r5g6b5, 0x7ae7, PIXMAN_r3g3b2, 0xce }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x1b13205, PIXMAN_a8r8g8b8, 0x35ffff00, PIXMAN_r5g6b5, 0x2040 }, { PIXMAN_OP_CONJOINT_IN, PIXMAN_a8r8g8b8, 0x1e60dff, PIXMAN_a4r4g4b4, 0x760f, PIXMAN_a2r2g2b2, 0x11 }, { PIXMAN_OP_CONJOINT_OUT, PIXMAN_a8r8g8b8, 0x10000ff, PIXMAN_a4r4g4b4, 0x3, PIXMAN_a8r8g8b8, 0x0 }, { PIXMAN_OP_CONJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x100ffff, PIXMAN_a8r8g8b8, 0x6600, PIXMAN_a4r4g4b4, 0x0 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x30000fa, PIXMAN_a4r4g4b4, 0x23b7, PIXMAN_a8r8g8b8, 0x21 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x1ffffff, PIXMAN_r3g3b2, 0x60, PIXMAN_r3g3b2, 0x60 }, { PIXMAN_OP_CONJOINT_OUT, PIXMAN_a8r8g8b8, 0x3b31b30, PIXMAN_r3g3b2, 0x2e, PIXMAN_a8r8g8b8, 0x3000c20 }, { PIXMAN_OP_DISJOINT_ATOP, PIXMAN_a8r8g8b8, 0x160ffff, PIXMAN_a4r4g4b4, 0xff42, PIXMAN_r3g3b2, 0xed }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x172ffff, PIXMAN_a4r4g4b4, 0x5100, PIXMAN_r3g3b2, 0x29 }, { PIXMAN_OP_CONJOINT_ATOP, PIXMAN_a8r8g8b8, 0x16300ff, PIXMAN_a4r4g4b4, 0x5007, PIXMAN_a8r8g8b8, 0x77 }, { PIXMAN_OP_CONJOINT_IN, PIXMAN_a8r8g8b8, 0x2ffff3a, PIXMAN_a8r8g8b8, 0x26640083, PIXMAN_a4r4g4b4, 0x220 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x106ff60, PIXMAN_r5g6b5, 0xdce, PIXMAN_a8r8g8b8, 0x100ba00 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x100e7ff, PIXMAN_r5g6b5, 0xa00, PIXMAN_r5g6b5, 0x0 }, { PIXMAN_OP_CONJOINT_XOR, PIXMAN_a8r8g8b8, 0x2b500f1, PIXMAN_a4r4g4b4, 0x7339, PIXMAN_a8r8g8b8, 0x1000091 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1ff00ff, PIXMAN_a4r4g4b4, 0xc863, PIXMAN_r5g6b5, 0x6 }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x1ffffca, PIXMAN_a8r8g8b8, 0x8b4cf000, PIXMAN_r3g3b2, 0xd2 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1fffe00, PIXMAN_r3g3b2, 0x88, PIXMAN_r3g3b2, 0x8 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x16f0000, PIXMAN_a2r2g2b2, 0x59, PIXMAN_r5g6b5, 0x2000 }, { PIXMAN_OP_CONJOINT_OUT, PIXMAN_a8r8g8b8, 0x377ff43, PIXMAN_a4r4g4b4, 0x2a, PIXMAN_a8r8g8b8, 0x2d }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x11dffff, PIXMAN_r3g3b2, 0xcb, PIXMAN_r3g3b2, 0x8 }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x1ffffff, PIXMAN_r5g6b5, 0xbdab, PIXMAN_a4r4g4b4, 0xbb0 }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x1ff3343, PIXMAN_a8r8g8b8, 0x7a00ffff, PIXMAN_a2r2g2b2, 0xd }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x1ebff4b, PIXMAN_r3g3b2, 0x26, PIXMAN_r3g3b2, 0x24 }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x2c1b3ff, PIXMAN_a8r8g8b8, 0x3000152a, PIXMAN_r3g3b2, 0x24 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1a7ffff, PIXMAN_r3g3b2, 0x9, PIXMAN_r5g6b5, 0x24a }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x4ff00ec, PIXMAN_a8r8g8b8, 0x1da4961e, PIXMAN_a8r8g8b8, 0x0 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1ff25ff, PIXMAN_a8r8g8b8, 0x64b0ff00, PIXMAN_r5g6b5, 0x606c }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x1fd62ff, PIXMAN_a4r4g4b4, 0x76b1, PIXMAN_r5g6b5, 0x716e }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x194ffde, PIXMAN_r5g6b5, 0x47ff, PIXMAN_r5g6b5, 0x2000 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x108ffff, PIXMAN_a8r8g8b8, 0xffffff66, PIXMAN_r5g6b5, 0xff0c }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x5ffffff, PIXMAN_r5g6b5, 0xdf, PIXMAN_r5g6b5, 0xc0 }, { PIXMAN_OP_CONJOINT_IN, PIXMAN_a8r8g8b8, 0x100ad31, PIXMAN_a2r2g2b2, 0xc5, PIXMAN_a4r4g4b4, 0x31 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x1ffff34, PIXMAN_a8r8g8b8, 0x6a57c491, PIXMAN_r3g3b2, 0x0 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x1fffff1, PIXMAN_r3g3b2, 0xaf, PIXMAN_r5g6b5, 0xb01e }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1ff67ff, PIXMAN_a4r4g4b4, 0x50ff, PIXMAN_a8r8g8b8, 0x552255 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x11bffff, PIXMAN_r5g6b5, 0xef0c, PIXMAN_r5g6b5, 0xc }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x16cf37d, PIXMAN_a4r4g4b4, 0xc561, PIXMAN_r5g6b5, 0x2301 }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x2ffff9c, PIXMAN_a4r4g4b4, 0x2700, PIXMAN_a8r8g8b8, 0xffff }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x200f322, PIXMAN_a8r8g8b8, 0xff3c7e, PIXMAN_r5g6b5, 0x2 }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x1f14a33, PIXMAN_a8r8g8b8, 0x26cff79, PIXMAN_r3g3b2, 0xf9 }, { PIXMAN_OP_CONJOINT_ATOP, PIXMAN_a8r8g8b8, 0x11d922c, PIXMAN_r3g3b2, 0xab, PIXMAN_a4r4g4b4, 0x20 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x100ffff, PIXMAN_a2r2g2b2, 0xf5, PIXMAN_r3g3b2, 0x9 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x18697ff, PIXMAN_a4r4g4b4, 0x5700, PIXMAN_r5g6b5, 0xfa6d }, { PIXMAN_OP_CONJOINT_IN, PIXMAN_a8r8g8b8, 0x12000fc, PIXMAN_a2r2g2b2, 0x41, PIXMAN_a8r8g8b8, 0xb0054 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x100ccff, PIXMAN_a4r4g4b4, 0x657e, PIXMAN_r5g6b5, 0x3b1 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x1ffff1f, PIXMAN_a2r2g2b2, 0xa6, PIXMAN_r5g6b5, 0x2a0 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x11fff82, PIXMAN_a4r4g4b4, 0xff94, PIXMAN_a8r8g8b8, 0x1010123 }, { PIXMAN_OP_CONJOINT_XOR, PIXMAN_a8r8g8b8, 0x154bd19, PIXMAN_a4r4g4b4, 0xb600, PIXMAN_a8r8g8b8, 0x1000000 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x10000ff, PIXMAN_r5g6b5, 0x8e, PIXMAN_r5g6b5, 0x0 }, { PIXMAN_OP_DISJOINT_ATOP, PIXMAN_a8r8g8b8, 0x21aff00, PIXMAN_r5g6b5, 0x71ff, PIXMAN_r3g3b2, 0xf2 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x2ad00a7, PIXMAN_a4r4g4b4, 0x23, PIXMAN_a8r8g8b8, 0x21 }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x100ff00, PIXMAN_r5g6b5, 0xb343, PIXMAN_r3g3b2, 0xc }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x3ffa500, PIXMAN_a8r8g8b8, 0x1af5b4, PIXMAN_a8r8g8b8, 0xff1abc00 }, { PIXMAN_OP_CONJOINT_OUT, PIXMAN_a8r8g8b8, 0x2ffff11, PIXMAN_a8r8g8b8, 0x9f334f, PIXMAN_a8r8g8b8, 0x9f0005 }, { PIXMAN_OP_CONJOINT_IN, PIXMAN_a8r8g8b8, 0x2c75971, PIXMAN_a4r4g4b4, 0x3900, PIXMAN_a4r4g4b4, 0x211 }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x100ff49, PIXMAN_a8r8g8b8, 0x813dc25e, PIXMAN_r5g6b5, 0x667d }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x10000ff, PIXMAN_a4r4g4b4, 0x4bff, PIXMAN_a8r8g8b8, 0x0 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x20ebcff, PIXMAN_r5g6b5, 0xc9ff, PIXMAN_r3g3b2, 0x4 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x1ffff00, PIXMAN_r5g6b5, 0x51ff, PIXMAN_r3g3b2, 0x44 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1ffd158, PIXMAN_a8r8g8b8, 0x7d88ffce, PIXMAN_r3g3b2, 0x6c }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x1425e21, PIXMAN_a2r2g2b2, 0xa5, PIXMAN_r5g6b5, 0xe1 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x14b00ff, PIXMAN_a8r8g8b8, 0xbe95004b, PIXMAN_r5g6b5, 0x9 }, { PIXMAN_OP_CONJOINT_OUT, PIXMAN_a8r8g8b8, 0x14fc0cd, PIXMAN_a8r8g8b8, 0x2d12b78b, PIXMAN_a8r8g8b8, 0x0 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1ff8230, PIXMAN_a2r2g2b2, 0x4c, PIXMAN_r3g3b2, 0x44 }, { PIXMAN_OP_CONJOINT_ATOP, PIXMAN_a8r8g8b8, 0x1ff31ff, PIXMAN_a2r2g2b2, 0x14, PIXMAN_a8r8g8b8, 0x551000 }, { PIXMAN_OP_CONJOINT_IN, PIXMAN_a8r8g8b8, 0x17800ff, PIXMAN_a4r4g4b4, 0x22, PIXMAN_a8r8g8b8, 0x22 }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x14500ff, PIXMAN_a4r4g4b4, 0x6400, PIXMAN_r5g6b5, 0xff78 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x100ff9d, PIXMAN_r3g3b2, 0xcd, PIXMAN_r3g3b2, 0x0 }, { PIXMAN_OP_CONJOINT_ATOP, PIXMAN_a8r8g8b8, 0x3ff00ff, PIXMAN_a4r4g4b4, 0xf269, PIXMAN_a4r4g4b4, 0x200 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x2ff28b8, PIXMAN_a4r4g4b4, 0x33ff, PIXMAN_r5g6b5, 0x3000 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x1006278, PIXMAN_a8r8g8b8, 0x8a7f18, PIXMAN_r3g3b2, 0x4 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1ffcb00, PIXMAN_a4r4g4b4, 0x7900, PIXMAN_a2r2g2b2, 0x14 }, { PIXMAN_OP_CONJOINT_OUT, PIXMAN_a8r8g8b8, 0x115ff00, PIXMAN_a8r8g8b8, 0x508d, PIXMAN_a4r4g4b4, 0x0 }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x3ff30b5, PIXMAN_r5g6b5, 0x2e60, PIXMAN_r3g3b2, 0x20 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x182fffb, PIXMAN_r3g3b2, 0x1, PIXMAN_a8r8g8b8, 0x1000054 }, { PIXMAN_OP_CONJOINT_ATOP, PIXMAN_a8r8g8b8, 0x16fff00, PIXMAN_r5g6b5, 0x7bc0, PIXMAN_a8r8g8b8, 0x367900 }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x1d95dd8, PIXMAN_a4r4g4b4, 0xfff5, PIXMAN_r5g6b5, 0xff09 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x1ff3cdc, PIXMAN_a8r8g8b8, 0x3bda45ff, PIXMAN_r3g3b2, 0x0 }, { PIXMAN_OP_DISJOINT_ATOP, PIXMAN_a8r8g8b8, 0x13900f8, PIXMAN_a8r8g8b8, 0x7e00ffff, PIXMAN_a4r4g4b4, 0xff00 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x10ea9ff, PIXMAN_a8r8g8b8, 0xff34ff22, PIXMAN_r5g6b5, 0xff52 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x2002e99, PIXMAN_a4r4g4b4, 0x3000, PIXMAN_r5g6b5, 0x43 }, { PIXMAN_OP_DISJOINT_ATOP, PIXMAN_a8r8g8b8, 0x100ffff, PIXMAN_r5g6b5, 0x19ff, PIXMAN_r3g3b2, 0x3 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1ffff00, PIXMAN_a8r8g8b8, 0xffff4251, PIXMAN_a2r2g2b2, 0x4 }, { PIXMAN_OP_CONJOINT_ATOP, PIXMAN_a8r8g8b8, 0x121c9ff, PIXMAN_a4r4g4b4, 0xd2, PIXMAN_a4r4g4b4, 0x2 }, { PIXMAN_OP_CONJOINT_IN, PIXMAN_a8r8g8b8, 0x100ff4d, PIXMAN_a2r2g2b2, 0x5e, PIXMAN_a2r2g2b2, 0x4 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x29ab4ff, PIXMAN_r3g3b2, 0x47, PIXMAN_a8r8g8b8, 0x1900 }, { PIXMAN_OP_CONJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1ffc1ac, PIXMAN_a8r8g8b8, 0xee4ed0ac, PIXMAN_a8r8g8b8, 0x1009d74 }, { PIXMAN_OP_CONJOINT_IN_REVERSE, PIXMAN_a8r8g8b8, 0x269dffdc, PIXMAN_a8r8g8b8, 0xff0b00e0, PIXMAN_a8r8g8b8, 0x2a200ff }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x2ffffff, PIXMAN_a4r4g4b4, 0x3200, PIXMAN_r3g3b2, 0x24 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x100ffed, PIXMAN_a8r8g8b8, 0x67004eff, PIXMAN_a2r2g2b2, 0x5 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x2fffd6a, PIXMAN_a8r8g8b8, 0xc9003bff, PIXMAN_r3g3b2, 0x4 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x253ff00, PIXMAN_r5g6b5, 0xff, PIXMAN_r5g6b5, 0xe0 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x13600ad, PIXMAN_r5g6b5, 0x35ae, PIXMAN_r3g3b2, 0x1 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x1ffa8ff, PIXMAN_a8r8g8b8, 0xff5f00, PIXMAN_r3g3b2, 0xe0 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x10067ff, PIXMAN_a4r4g4b4, 0x450d, PIXMAN_a2r2g2b2, 0x1 }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x1ff01ff, PIXMAN_r3g3b2, 0x77, PIXMAN_r5g6b5, 0x6800 }, { PIXMAN_OP_CONJOINT_ATOP, PIXMAN_a8r8g8b8, 0x11da4ff, PIXMAN_r5g6b5, 0x83c9, PIXMAN_a4r4g4b4, 0x44 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x1ffd4ff, PIXMAN_r3g3b2, 0xaa, PIXMAN_r3g3b2, 0x4 }, { PIXMAN_OP_CONJOINT_IN, PIXMAN_a8r8g8b8, 0x1ff0000, PIXMAN_a8r8g8b8, 0x71002a, PIXMAN_a4r4g4b4, 0x700 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x1d7ffff, PIXMAN_r5g6b5, 0x3696, PIXMAN_a4r4g4b4, 0x200 }, { PIXMAN_OP_CONJOINT_IN, PIXMAN_a8r8g8b8, 0x1ffffc8, PIXMAN_r5g6b5, 0xe900, PIXMAN_a8r8g8b8, 0x2000 }, { PIXMAN_OP_CONJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1ff004a, PIXMAN_r3g3b2, 0x48, PIXMAN_a8r8g8b8, 0x1000000 }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x3ffe969, PIXMAN_r5g6b5, 0xff, PIXMAN_r5g6b5, 0xc0 }, { PIXMAN_OP_CONJOINT_XOR, PIXMAN_a8r8g8b8, 0x300ff73, PIXMAN_r5g6b5, 0xff, PIXMAN_a8r8g8b8, 0x3000073 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x2ff93ff, PIXMAN_a8r8g8b8, 0x61fc7d2b, PIXMAN_a4r4g4b4, 0x2 }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x11bffff, PIXMAN_a4r4g4b4, 0xffb4, PIXMAN_r5g6b5, 0x8 }, { PIXMAN_OP_CONJOINT_IN, PIXMAN_a8r8g8b8, 0x1e9e100, PIXMAN_a2r2g2b2, 0x56, PIXMAN_a2r2g2b2, 0x14 }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x3ffb656, PIXMAN_r3g3b2, 0x4, PIXMAN_a4r4g4b4, 0xff99 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x100ff00, PIXMAN_r3g3b2, 0x68, PIXMAN_r3g3b2, 0x0 }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x1006dff, PIXMAN_a2r2g2b2, 0x5d, PIXMAN_a8r8g8b8, 0xff00ff55 }, { PIXMAN_OP_CONJOINT_IN, PIXMAN_a8r8g8b8, 0x11c00cb, PIXMAN_a2r2g2b2, 0x44, PIXMAN_a4r4g4b4, 0x4 }, { PIXMAN_OP_CONJOINT_ATOP, PIXMAN_a8r8g8b8, 0x1d0ff86, PIXMAN_r3g3b2, 0x5c, PIXMAN_a8r8g8b8, 0x3c0000 }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x2f25fff, PIXMAN_r3g3b2, 0x36, PIXMAN_a8r8g8b8, 0x2a444aa }, { PIXMAN_OP_DISJOINT_ATOP, PIXMAN_a8r8g8b8, 0x134af85, PIXMAN_r3g3b2, 0x29, PIXMAN_r5g6b5, 0xf300 }, { PIXMAN_OP_CONJOINT_ATOP, PIXMAN_a8r8g8b8, 0x13398af, PIXMAN_r3g3b2, 0xa5, PIXMAN_a4r4g4b4, 0x13 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x1ff57ff, PIXMAN_a4r4g4b4, 0x252c, PIXMAN_r3g3b2, 0x40 }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x115ffff, PIXMAN_r5g6b5, 0xffe3, PIXMAN_r5g6b5, 0x3303 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x1ffff00, PIXMAN_r5g6b5, 0x6300, PIXMAN_r3g3b2, 0x6c }, { PIXMAN_OP_CONJOINT_XOR, PIXMAN_a8r8g8b8, 0x4ccff9c, PIXMAN_r5g6b5, 0xcc, PIXMAN_a8r8g8b8, 0x400003d }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x1ffc6dd, PIXMAN_r5g6b5, 0x9bff, PIXMAN_r5g6b5, 0x5bff }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x14fff95, PIXMAN_r3g3b2, 0x46, PIXMAN_a8r8g8b8, 0x1000063 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x1e6b700, PIXMAN_r5g6b5, 0xc1ff, PIXMAN_r3g3b2, 0x4 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x1ffff54, PIXMAN_a8r8g8b8, 0x2e00ff, PIXMAN_r5g6b5, 0x2800 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x3ffffff, PIXMAN_r5g6b5, 0xff, PIXMAN_r5g6b5, 0xe0 }, { PIXMAN_OP_DISJOINT_ATOP, PIXMAN_a8r8g8b8, 0x1003550, PIXMAN_r5g6b5, 0xffcc, PIXMAN_r5g6b5, 0x1e0 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x1ffff74, PIXMAN_r3g3b2, 0x28, PIXMAN_a8r8g8b8, 0xfe2f49d7 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x1e35100, PIXMAN_r3g3b2, 0x57, PIXMAN_r5g6b5, 0x4000 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x268ffa3, PIXMAN_a4r4g4b4, 0x30, PIXMAN_a4r4g4b4, 0x0 }, { PIXMAN_OP_DISJOINT_ATOP, PIXMAN_a8r8g8b8, 0x35700f8, PIXMAN_r5g6b5, 0xa4, PIXMAN_r5g6b5, 0x0 }, { PIXMAN_OP_CONJOINT_ATOP, PIXMAN_a8r8g8b8, 0x3ce1dff, PIXMAN_r5g6b5, 0x2a5e, PIXMAN_a8r8g8b8, 0x210000 }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x494a7ff, PIXMAN_a8r8g8b8, 0x1bffe400, PIXMAN_a8r8g8b8, 0x0 }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x10026d9, PIXMAN_a8r8g8b8, 0xec00621f, PIXMAN_r5g6b5, 0x63 }, { PIXMAN_OP_CONJOINT_IN, PIXMAN_a8r8g8b8, 0x100ff99, PIXMAN_a8r8g8b8, 0xf334ff, PIXMAN_a4r4g4b4, 0x30 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x2ffc200, PIXMAN_a8r8g8b8, 0x1e0000ff, PIXMAN_a8r8g8b8, 0x1e1700 }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x1ff00ff, PIXMAN_r3g3b2, 0x4b, PIXMAN_r5g6b5, 0x4818 }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x2e800ff, PIXMAN_a4r4g4b4, 0xd3, PIXMAN_a4r4g4b4, 0xec }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x19a001f, PIXMAN_r3g3b2, 0x76, PIXMAN_r3g3b2, 0x0 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x1cb00c3, PIXMAN_a4r4g4b4, 0x5cff, PIXMAN_r5g6b5, 0x4008 }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x1ff0000, PIXMAN_r3g3b2, 0x2a, PIXMAN_r5g6b5, 0xc5fb }, { PIXMAN_OP_DISJOINT_ATOP, PIXMAN_a8r8g8b8, 0x1ffffff, PIXMAN_a8r8g8b8, 0xea005a88, PIXMAN_r3g3b2, 0xb3 }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x100ffea, PIXMAN_a4r4g4b4, 0x54eb, PIXMAN_a8r8g8b8, 0x0 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x179ffff, PIXMAN_r3g3b2, 0xa4, PIXMAN_a8r8g8b8, 0x2400 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x17ad226, PIXMAN_r3g3b2, 0xa4, PIXMAN_r5g6b5, 0xe0 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x100ff01, PIXMAN_a2r2g2b2, 0x25, PIXMAN_a4r4g4b4, 0x50 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x20000ff, PIXMAN_a8r8g8b8, 0x2b00c127, PIXMAN_r5g6b5, 0x0 }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x200ff96, PIXMAN_a4r4g4b4, 0x2300, PIXMAN_r3g3b2, 0x6 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x200ffff, PIXMAN_r3g3b2, 0x87, PIXMAN_r5g6b5, 0x5bc8 }, { PIXMAN_OP_CONJOINT_XOR, PIXMAN_a8r8g8b8, 0x1fffff2, PIXMAN_r3g3b2, 0x7e, PIXMAN_a2r2g2b2, 0xe }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x1ff8b00, PIXMAN_a4r4g4b4, 0xd500, PIXMAN_r3g3b2, 0x40 }, { PIXMAN_OP_CONJOINT_XOR, PIXMAN_a8r8g8b8, 0x1ffffff, PIXMAN_a8r8g8b8, 0x1bff38, PIXMAN_a4r4g4b4, 0xf0 }, { PIXMAN_OP_CONJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x158ff39, PIXMAN_a4r4g4b4, 0x75dd, PIXMAN_a8r8g8b8, 0xdd31 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x1009b70, PIXMAN_a4r4g4b4, 0xff40, PIXMAN_r3g3b2, 0x4 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x12fb43f, PIXMAN_a4r4g4b4, 0x69ff, PIXMAN_a2r2g2b2, 0x4 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x1ffff95, PIXMAN_a2r2g2b2, 0x84, PIXMAN_r5g6b5, 0x0 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x200d188, PIXMAN_r5g6b5, 0xde6, PIXMAN_r5g6b5, 0x3 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x2c70000, PIXMAN_r5g6b5, 0x24fa, PIXMAN_a8r8g8b8, 0x21a0000 }, { PIXMAN_OP_CONJOINT_OUT, PIXMAN_a8r8g8b8, 0x100ff24, PIXMAN_a4r4g4b4, 0x835, PIXMAN_a4r4g4b4, 0x0 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x10000cd, PIXMAN_a2r2g2b2, 0x7f, PIXMAN_a2r2g2b2, 0x1 }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x379ffff, PIXMAN_a8r8g8b8, 0x23ffff00, PIXMAN_r5g6b5, 0x4eda }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x172e3ff, PIXMAN_r3g3b2, 0xa6, PIXMAN_r5g6b5, 0x100 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x100f5ad, PIXMAN_a4r4g4b4, 0x7908, PIXMAN_a2r2g2b2, 0x0 }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x100fff9, PIXMAN_a2r2g2b2, 0xf1, PIXMAN_r3g3b2, 0x1 }, { PIXMAN_OP_CONJOINT_XOR, PIXMAN_a8r8g8b8, 0x1abff00, PIXMAN_r5g6b5, 0x31ff, PIXMAN_a8r8g8b8, 0x1000000 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x112ffd1, PIXMAN_r3g3b2, 0x9, PIXMAN_a2r2g2b2, 0xdd }, { PIXMAN_OP_CONJOINT_IN, PIXMAN_a8r8g8b8, 0x100ffbf, PIXMAN_r3g3b2, 0x2c, PIXMAN_a4r4g4b4, 0x60 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x1ffb7ff, PIXMAN_r3g3b2, 0x6b, PIXMAN_a4r4g4b4, 0x630 }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x20005ff, PIXMAN_a4r4g4b4, 0x8462, PIXMAN_r5g6b5, 0xb1e8 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1ff5b00, PIXMAN_r5g6b5, 0x70ff, PIXMAN_r3g3b2, 0x60 }, { PIXMAN_OP_CONJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x2ffffc3, PIXMAN_r3g3b2, 0x39, PIXMAN_a8r8g8b8, 0x200db41 }, { PIXMAN_OP_CONJOINT_OUT, PIXMAN_a8r8g8b8, 0x306ffff, PIXMAN_a8r8g8b8, 0xdcffff1f, PIXMAN_a8r8g8b8, 0x306ff00 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x193daff, PIXMAN_a8r8g8b8, 0x69000000, PIXMAN_r3g3b2, 0x0 }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x2a200ff, PIXMAN_a8r8g8b8, 0x183aff00, PIXMAN_r5g6b5, 0x2000 }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x100f1a5, PIXMAN_a8r8g8b8, 0xb5fc21ff, PIXMAN_r5g6b5, 0xfe00 }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x1630019, PIXMAN_a8r8g8b8, 0x6affc400, PIXMAN_r5g6b5, 0x56ff }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x1ff8bc2, PIXMAN_r3g3b2, 0xee, PIXMAN_r5g6b5, 0x1c0 }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x260ffff, PIXMAN_a4r4g4b4, 0x3f00, PIXMAN_r3g3b2, 0x4 }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x169ffed, PIXMAN_a8r8g8b8, 0xffffff3f, PIXMAN_a8r8g8b8, 0x169ff00 }, { PIXMAN_OP_CONJOINT_XOR, PIXMAN_a8r8g8b8, 0x154c181, PIXMAN_a4r4g4b4, 0x5100, PIXMAN_a4r4g4b4, 0x0 }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x1e09c00, PIXMAN_r5g6b5, 0xca00, PIXMAN_a4r4g4b4, 0xb00 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x2ff8dff, PIXMAN_a8r8g8b8, 0x610038ff, PIXMAN_a8r8g8b8, 0x1001f02 }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x1e400ff, PIXMAN_a4r4g4b4, 0x66bd, PIXMAN_r3g3b2, 0x68 }, { PIXMAN_OP_CONJOINT_IN, PIXMAN_a8r8g8b8, 0x25362ff, PIXMAN_a4r4g4b4, 0x31ff, PIXMAN_a8r8g8b8, 0x111433 }, { PIXMAN_OP_CONJOINT_OUT, PIXMAN_a8r8g8b8, 0x3ad0039, PIXMAN_r3g3b2, 0x26, PIXMAN_a8r8g8b8, 0x3000026 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x2e442ef, PIXMAN_r3g3b2, 0x32, PIXMAN_r3g3b2, 0x20 }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x1720000, PIXMAN_a8r8g8b8, 0x55fdea00, PIXMAN_r3g3b2, 0x20 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x14bb0d7, PIXMAN_a8r8g8b8, 0x7fffff47, PIXMAN_a2r2g2b2, 0x0 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x13dffff, PIXMAN_a8r8g8b8, 0xa3860672, PIXMAN_r3g3b2, 0x20 }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x120495a, PIXMAN_a4r4g4b4, 0x407e, PIXMAN_a8r8g8b8, 0x54 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x1ff8fff, PIXMAN_a2r2g2b2, 0x29, PIXMAN_r5g6b5, 0xa }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x100a31a, PIXMAN_a4r4g4b4, 0xde4c, PIXMAN_a4r4g4b4, 0x1 }, { PIXMAN_OP_CONJOINT_OUT, PIXMAN_a8r8g8b8, 0x1d4008c, PIXMAN_r3g3b2, 0x79, PIXMAN_a8r8g8b8, 0x1000000 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x1ff0000, PIXMAN_a4r4g4b4, 0x7de4, PIXMAN_r5g6b5, 0x0 }, { PIXMAN_OP_DISJOINT_ATOP, PIXMAN_a8r8g8b8, 0x1b27e62, PIXMAN_a4r4g4b4, 0x7941, PIXMAN_r3g3b2, 0x0 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x300ff00, PIXMAN_a8r8g8b8, 0xfcff255e, PIXMAN_r3g3b2, 0x4 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x2ff00b8, PIXMAN_a8r8g8b8, 0x19ff718d, PIXMAN_r5g6b5, 0x1802 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x235ff13, PIXMAN_a8r8g8b8, 0x34bcd9ff, PIXMAN_r3g3b2, 0x4 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x1006400, PIXMAN_a4r4g4b4, 0x7000, PIXMAN_a4r4g4b4, 0x20 }, { PIXMAN_OP_CONJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1ff8bff, PIXMAN_a4r4g4b4, 0xfff4, PIXMAN_a4r4g4b4, 0xf80 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x24630ff, PIXMAN_a8r8g8b8, 0x1f00000b, PIXMAN_a8r8g8b8, 0x9061f }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x1ff8a00, PIXMAN_a8r8g8b8, 0x79ffab00, PIXMAN_r5g6b5, 0x7a00 }, { PIXMAN_OP_DISJOINT_ATOP, PIXMAN_a8r8g8b8, 0x19807ff, PIXMAN_a4r4g4b4, 0x6794, PIXMAN_a8r8g8b8, 0xff002e00 }, { PIXMAN_OP_CONJOINT_OUT, PIXMAN_a8r8g8b8, 0x10000da, PIXMAN_a4r4g4b4, 0xf864, PIXMAN_a8r8g8b8, 0x1000000 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x1ffffde, PIXMAN_a2r2g2b2, 0x94, PIXMAN_a8r8g8b8, 0x1000000 }, { PIXMAN_OP_CONJOINT_ATOP, PIXMAN_a8r8g8b8, 0x200c800, PIXMAN_r5g6b5, 0xe9d4, PIXMAN_a8r8g8b8, 0x2c00 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x1ff00c9, PIXMAN_r3g3b2, 0x4c, PIXMAN_r5g6b5, 0x4800 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x122d5ff, PIXMAN_r5g6b5, 0x418b, PIXMAN_a4r4g4b4, 0x25 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x1ffff55, PIXMAN_a2r2g2b2, 0x1c, PIXMAN_a8r8g8b8, 0xff00 }, { PIXMAN_OP_DISJOINT_ATOP, PIXMAN_a8r8g8b8, 0x135ffff, PIXMAN_r5g6b5, 0x39c4, PIXMAN_r5g6b5, 0xb7 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x100d2c3, PIXMAN_r3g3b2, 0x2a, PIXMAN_a8r8g8b8, 0x3c00 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x17268ff, PIXMAN_a8r8g8b8, 0x7c00ffff, PIXMAN_r5g6b5, 0x318f }, { PIXMAN_OP_DISJOINT_ATOP, PIXMAN_a8r8g8b8, 0x1ff00ff, PIXMAN_r3g3b2, 0x68, PIXMAN_r3g3b2, 0xb4 }, { PIXMAN_OP_CONJOINT_OUT, PIXMAN_a8r8g8b8, 0x200ffff, PIXMAN_r5g6b5, 0xff86, PIXMAN_a8r8g8b8, 0x200f300 }, { PIXMAN_OP_CONJOINT_ATOP, PIXMAN_a8r8g8b8, 0x18a23ff, PIXMAN_a2r2g2b2, 0x44, PIXMAN_a4r4g4b4, 0x205 }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x16bff23, PIXMAN_a8r8g8b8, 0x31fd00ff, PIXMAN_r3g3b2, 0x7 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x137d1ff, PIXMAN_a4r4g4b4, 0x56c1, PIXMAN_r5g6b5, 0x0 }, { PIXMAN_OP_CONJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1ff5bff, PIXMAN_a4r4g4b4, 0xfff4, PIXMAN_a4r4g4b4, 0xf50 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x15c6b00, PIXMAN_a8r8g8b8, 0x7d008a, PIXMAN_a4r4g4b4, 0x200 }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x12091ff, PIXMAN_a8r8g8b8, 0xb74cff6b, PIXMAN_a2r2g2b2, 0x8 }, { PIXMAN_OP_CONJOINT_ATOP, PIXMAN_a8r8g8b8, 0x1ff5bff, PIXMAN_a8r8g8b8, 0xff6ddce8, PIXMAN_a2r2g2b2, 0x10 }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x100ffff, PIXMAN_a4r4g4b4, 0xffb7, PIXMAN_a4r4g4b4, 0xb0 }, { PIXMAN_OP_CONJOINT_IN, PIXMAN_a8r8g8b8, 0x173ffff, PIXMAN_r5g6b5, 0xff2c, PIXMAN_a4r4g4b4, 0x6 }, { PIXMAN_OP_CONJOINT_IN, PIXMAN_a8r8g8b8, 0x17102ff, PIXMAN_a8r8g8b8, 0x955bff66, PIXMAN_a8r8g8b8, 0x280066 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x3c7ff24, PIXMAN_r5g6b5, 0xc4, PIXMAN_r5g6b5, 0x163 }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x100c2a6, PIXMAN_r5g6b5, 0xa9b9, PIXMAN_a4r4g4b4, 0x8 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x26049ff, PIXMAN_a4r4g4b4, 0xb2, PIXMAN_r5g6b5, 0x8904 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x2f100ff, PIXMAN_r3g3b2, 0x30, PIXMAN_a8r8g8b8, 0x2220100 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x1ffff88, PIXMAN_r3g3b2, 0x7e, PIXMAN_r3g3b2, 0x60 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x153ffab, PIXMAN_a8r8g8b8, 0xfd10725a, PIXMAN_r3g3b2, 0x0 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1ff00d2, PIXMAN_r5g6b5, 0xff6b, PIXMAN_a8r8g8b8, 0x101014a }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x100d965, PIXMAN_a8r8g8b8, 0xff007b00, PIXMAN_r3g3b2, 0xc }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x1ec0000, PIXMAN_r5g6b5, 0x6fff, PIXMAN_r5g6b5, 0x6000 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x19d59a2, PIXMAN_a8r8g8b8, 0x4a00ff7a, PIXMAN_a8r8g8b8, 0x2e1a2f }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x1eb0000, PIXMAN_a4r4g4b4, 0x72bc, PIXMAN_r5g6b5, 0x1800 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x100ffff, PIXMAN_a4r4g4b4, 0xc034, PIXMAN_a4r4g4b4, 0x0 }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x195ff15, PIXMAN_a4r4g4b4, 0xb7b1, PIXMAN_r5g6b5, 0x4000 }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x1ffdf94, PIXMAN_a4r4g4b4, 0x78, PIXMAN_r3g3b2, 0xc }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x26f00ff, PIXMAN_a4r4g4b4, 0xff93, PIXMAN_r5g6b5, 0x1dd2 }, { PIXMAN_OP_CONJOINT_IN, PIXMAN_a8r8g8b8, 0x2ff3fc5, PIXMAN_r3g3b2, 0x2f, PIXMAN_a8r8g8b8, 0x240000 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x1ff696e, PIXMAN_a4r4g4b4, 0x22ff, PIXMAN_r5g6b5, 0x34d }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x10033d9, PIXMAN_a8r8g8b8, 0x38650000, PIXMAN_a8r8g8b8, 0x0 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x2ffff00, PIXMAN_a4r4g4b4, 0x2070, PIXMAN_r5g6b5, 0x2100 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x1008746, PIXMAN_a8r8g8b8, 0xb56971, PIXMAN_r5g6b5, 0xc25c }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x144d200, PIXMAN_a4r4g4b4, 0xff42, PIXMAN_r3g3b2, 0x4 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x1ffffd0, PIXMAN_r5g6b5, 0x5b00, PIXMAN_r3g3b2, 0x4c }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x10000ff, PIXMAN_a8r8g8b8, 0xff006f, PIXMAN_r5g6b5, 0xd }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x10666ff, PIXMAN_a4r4g4b4, 0x39b2, PIXMAN_r5g6b5, 0xa6 }, { PIXMAN_OP_CONJOINT_OUT, PIXMAN_a8r8g8b8, 0x11a007d, PIXMAN_r3g3b2, 0xf9, PIXMAN_a8r8g8b8, 0x11a0000 }, { PIXMAN_OP_CONJOINT_ATOP, PIXMAN_a8r8g8b8, 0x1eb90ee, PIXMAN_r5g6b5, 0xd, PIXMAN_a2r2g2b2, 0x1 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x1ff42d5, PIXMAN_a4r4g4b4, 0x3400, PIXMAN_r3g3b2, 0x40 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x1dfff00, PIXMAN_a8r8g8b8, 0x3ffff9d2, PIXMAN_r5g6b5, 0x0 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1ff6500, PIXMAN_a2r2g2b2, 0x56, PIXMAN_r3g3b2, 0x44 }, { PIXMAN_OP_DISJOINT_ATOP, PIXMAN_a8r8g8b8, 0x119ffe6, PIXMAN_r3g3b2, 0x8d, PIXMAN_a4r4g4b4, 0xff00 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x100cd00, PIXMAN_r5g6b5, 0x33ff, PIXMAN_a4r4g4b4, 0x0 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x569ffd7, PIXMAN_r5g6b5, 0x8cc, PIXMAN_r5g6b5, 0xc0 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x100876a, PIXMAN_a8r8g8b8, 0x575447a5, PIXMAN_r5g6b5, 0x164 }, { PIXMAN_OP_CONJOINT_OUT, PIXMAN_a8r8g8b8, 0x12d00ff, PIXMAN_a4r4g4b4, 0x3fff, PIXMAN_a4r4g4b4, 0x0 }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x2ff953b, PIXMAN_a4r4g4b4, 0x2914, PIXMAN_r5g6b5, 0x20a1 }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x1ffead4, PIXMAN_a8r8g8b8, 0xff00ea4e, PIXMAN_r3g3b2, 0x5a }, { PIXMAN_OP_DISJOINT_ATOP, PIXMAN_a8r8g8b8, 0x1ff6400, PIXMAN_a2r2g2b2, 0x99, PIXMAN_r5g6b5, 0xa620 }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x17b0084, PIXMAN_r3g3b2, 0xbd, PIXMAN_a4r4g4b4, 0x500 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x4f90bbb, PIXMAN_a8r8g8b8, 0xff00d21f, PIXMAN_a8r8g8b8, 0xfb00fc4a }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1ffbb1d, PIXMAN_a8r8g8b8, 0x2dff79ff, PIXMAN_r5g6b5, 0x2c0 }, { PIXMAN_OP_CONJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x100ffff, PIXMAN_a2r2g2b2, 0x43, PIXMAN_a4r4g4b4, 0x6f }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1f000ff, PIXMAN_a4r4g4b4, 0xb393, PIXMAN_r3g3b2, 0x20 }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x1c60020, PIXMAN_a8r8g8b8, 0x6bffffff, PIXMAN_a8r8g8b8, 0x0 }, { PIXMAN_OP_CONJOINT_OUT, PIXMAN_a8r8g8b8, 0x1727d00, PIXMAN_a2r2g2b2, 0x67, PIXMAN_a4r4g4b4, 0x400 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x14a5194, PIXMAN_a4r4g4b4, 0xd7ff, PIXMAN_r5g6b5, 0x2000 }, { PIXMAN_OP_DISJOINT_ATOP, PIXMAN_a8r8g8b8, 0x20003fa, PIXMAN_a4r4g4b4, 0x24ff, PIXMAN_a8r8g8b8, 0xffff1550 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1a6ff83, PIXMAN_a4r4g4b4, 0xf400, PIXMAN_r5g6b5, 0x2800 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x2ffcf00, PIXMAN_r5g6b5, 0x71ff, PIXMAN_a4r4g4b4, 0x30 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x333ffff, PIXMAN_a4r4g4b4, 0x2c00, PIXMAN_r3g3b2, 0x4 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x1c2ffe8, PIXMAN_r5g6b5, 0xc200, PIXMAN_a8r8g8b8, 0xfeca41ff }, { PIXMAN_OP_CONJOINT_ATOP, PIXMAN_a2r2g2b2, 0x47, PIXMAN_a8r8g8b8, 0x2ffff00, PIXMAN_a8r8g8b8, 0x3aa0102 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x1ffeb00, PIXMAN_a4r4g4b4, 0xb493, PIXMAN_a4r4g4b4, 0x400 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x2afffff, PIXMAN_r5g6b5, 0xcb, PIXMAN_r5g6b5, 0xc0 }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x183ff00, PIXMAN_r3g3b2, 0x87, PIXMAN_r5g6b5, 0xae91 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x3ffff00, PIXMAN_a4r4g4b4, 0x2ba4, PIXMAN_r5g6b5, 0x2100 }, { PIXMAN_OP_CONJOINT_OUT, PIXMAN_a8r8g8b8, 0x215cbc2, PIXMAN_a4r4g4b4, 0xafd3, PIXMAN_a8r8g8b8, 0x115b000 }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x1853f65, PIXMAN_a8r8g8b8, 0xc68cdc41, PIXMAN_r5g6b5, 0x3 }, { PIXMAN_OP_CONJOINT_IN, PIXMAN_a8r8g8b8, 0x3ffff8f, PIXMAN_a4r4g4b4, 0x8824, PIXMAN_a4r4g4b4, 0x20 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x28e08e6, PIXMAN_a8r8g8b8, 0x2cffff31, PIXMAN_r5g6b5, 0x1805 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x1b500be, PIXMAN_r5g6b5, 0xd946, PIXMAN_r5g6b5, 0x9800 }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x133ffb3, PIXMAN_a2r2g2b2, 0x42, PIXMAN_a8r8g8b8, 0x11553c }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x21aff81, PIXMAN_r3g3b2, 0xc7, PIXMAN_r5g6b5, 0x120 }, { PIXMAN_OP_CONJOINT_ATOP, PIXMAN_a8r8g8b8, 0x12e004f, PIXMAN_a4r4g4b4, 0xf617, PIXMAN_a4r4g4b4, 0x102 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x164861f, PIXMAN_r3g3b2, 0x4e, PIXMAN_r5g6b5, 0x19c0 }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x1ff0eff, PIXMAN_a8r8g8b8, 0xff5c00aa, PIXMAN_r5g6b5, 0x5800 }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x1e4c60f, PIXMAN_a8r8g8b8, 0x38ff0e0c, PIXMAN_a4r4g4b4, 0xff2a }, { PIXMAN_OP_DISJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x1ff0000, PIXMAN_a8r8g8b8, 0x9f3d6700, PIXMAN_r5g6b5, 0xf3ff }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x205ffd0, PIXMAN_a8r8g8b8, 0xffc22b3b, PIXMAN_a8r8g8b8, 0x2040000 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x1ff0059, PIXMAN_r5g6b5, 0x74ff, PIXMAN_a8r8g8b8, 0x1730101 }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x29affb8, PIXMAN_r5g6b5, 0xff, PIXMAN_a8r8g8b8, 0x2d25cff }, { PIXMAN_OP_DISJOINT_OUT, PIXMAN_a8r8g8b8, 0x1ffff8b, PIXMAN_a4r4g4b4, 0xff7b, PIXMAN_r5g6b5, 0x3a0 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x2a86ad7, PIXMAN_a4r4g4b4, 0xdc22, PIXMAN_a8r8g8b8, 0x2860000 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x3ff00ff, PIXMAN_r3g3b2, 0x33, PIXMAN_r5g6b5, 0x2000 }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x1e50063, PIXMAN_a8r8g8b8, 0x35ff95d7, PIXMAN_r3g3b2, 0x20 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x2ffe6ff, PIXMAN_a8r8g8b8, 0x153ef297, PIXMAN_r5g6b5, 0x6d2 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x34ffeff, PIXMAN_a4r4g4b4, 0x2e, PIXMAN_r5g6b5, 0x1d }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x2ffeada, PIXMAN_r5g6b5, 0xabc6, PIXMAN_a8r8g8b8, 0xfd15b256 }, { PIXMAN_OP_CONJOINT_ATOP, PIXMAN_a8r8g8b8, 0x100ff00, PIXMAN_a8r8g8b8, 0xcff3f32, PIXMAN_a8r8g8b8, 0x3f00 }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x1e1b0f1, PIXMAN_a8r8g8b8, 0xff63ff54, PIXMAN_r3g3b2, 0x5d }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0x2ffff23, PIXMAN_a8r8g8b8, 0x380094ff, PIXMAN_r5g6b5, 0x3a4b }, { PIXMAN_OP_CONJOINT_ATOP, PIXMAN_a4r4g4b4, 0x1000, PIXMAN_r5g6b5, 0xca, PIXMAN_a8r8g8b8, 0x3434500 }, { PIXMAN_OP_DISJOINT_IN, PIXMAN_a8r8g8b8, 0x195ffe5, PIXMAN_a4r4g4b4, 0x3a29, PIXMAN_a8r8g8b8, 0x0 }, { PIXMAN_OP_DISJOINT_ATOP, PIXMAN_a8r8g8b8, 0x139007a, PIXMAN_a4r4g4b4, 0x4979, PIXMAN_r5g6b5, 0x84 }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a2r2g2b2, 0xa9, PIXMAN_a4r4g4b4, 0xfa18, PIXMAN_a8r8g8b8, 0xabff67ff }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a2r2g2b2, 0x94, PIXMAN_a4r4g4b4, 0x5109, PIXMAN_a8r8g8b8, 0x3affffff }, { PIXMAN_OP_COLOR_BURN, PIXMAN_r5g6b5, 0xd038, PIXMAN_r5g6b5, 0xff00, PIXMAN_r5g6b5, 0xf9a5 }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a8r8g8b8, 0x543128ff, PIXMAN_a8r8g8b8, 0x7029ff, PIXMAN_a8r8g8b8, 0x316b1d7 }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_r5g6b5, 0x53ff, PIXMAN_r5g6b5, 0x72ff, PIXMAN_a8r8g8b8, 0xffffdeff }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a8r8g8b8, 0x5b00002b, PIXMAN_a4r4g4b4, 0xc3, PIXMAN_a8r8g8b8, 0x23530be }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a8r8g8b8, 0xcefc0041, PIXMAN_a8r8g8b8, 0xf60d02, PIXMAN_a8r8g8b8, 0x1f2ffe5 }, { PIXMAN_OP_COLOR_DODGE, PIXMAN_r5g6b5, 0xffdb, PIXMAN_r5g6b5, 0xc700, PIXMAN_r5g6b5, 0x654 }, { PIXMAN_OP_COLOR_DODGE, PIXMAN_r5g6b5, 0xffc6, PIXMAN_r5g6b5, 0xff09, PIXMAN_r5g6b5, 0xfe58 }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a2r2g2b2, 0x95, PIXMAN_r5g6b5, 0x1b4a, PIXMAN_a8r8g8b8, 0xab234cff }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a2r2g2b2, 0x95, PIXMAN_a4r4g4b4, 0x5e99, PIXMAN_a8r8g8b8, 0x3b1c1cdd }, { PIXMAN_OP_COLOR_BURN, PIXMAN_r5g6b5, 0x22, PIXMAN_r5g6b5, 0xd00, PIXMAN_r5g6b5, 0xfbb1 }, { PIXMAN_OP_COLOR_DODGE, PIXMAN_r5g6b5, 0xffc8, PIXMAN_a8r8g8b8, 0xa1a3ffff, PIXMAN_r5g6b5, 0x44a }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a8r8g8b8, 0xffff7cff, PIXMAN_r5g6b5, 0x900, PIXMAN_a8r8g8b8, 0xffff94ec }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a2r2g2b2, 0xa7, PIXMAN_r5g6b5, 0xff, PIXMAN_a8r8g8b8, 0xaa00cffe }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a2r2g2b2, 0x85, PIXMAN_r5g6b5, 0xffb3, PIXMAN_a8r8g8b8, 0xaaffff4a }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a8r8g8b8, 0x3500a118, PIXMAN_a4r4g4b4, 0x9942, PIXMAN_a8r8g8b8, 0x01ff405e }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a2r2g2b2, 0xb5, PIXMAN_x4a4, 0xe, PIXMAN_a8r8g8b8, 0xffbaff }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a4r4g4b4, 0xe872, PIXMAN_x2r10g10b10, 0xa648ff00, PIXMAN_a2r10g10b10, 0x14ff00e8, }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x4d2db34, PIXMAN_a8, 0x19, PIXMAN_r5g6b5, 0x9700, }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x2ff0076, PIXMAN_a8r8g8b8, 0x2a0000, PIXMAN_r3g3b2, 0x0, }, { PIXMAN_OP_CONJOINT_OVER_REVERSE, PIXMAN_a8r8g8b8, 0x14f00ff, PIXMAN_r5g6b5, 0xd48, PIXMAN_a4r4g4b4, 0x0, }, { PIXMAN_OP_CONJOINT_OUT, PIXMAN_a8r8g8b8, 0x3d8bbff, PIXMAN_r5g6b5, 0x6900, PIXMAN_a8r8g8b8, 0x0, }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x2ff00ff, PIXMAN_a4r4g4b4, 0x2300, PIXMAN_r3g3b2, 0x0, }, { PIXMAN_OP_SATURATE, PIXMAN_a8r8g8b8, 0x4d2db34, PIXMAN_a8r8g8b8, 0xff0019ff, PIXMAN_r5g6b5, 0x9700, }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0x100ac05, PIXMAN_r3g3b2, 0xef, PIXMAN_a2r2g2b2, 0xff, }, { PIXMAN_OP_EXCLUSION, PIXMAN_a2r2g2b2, 0xbf, PIXMAN_null, 0x00, PIXMAN_r5g6b5, 0x7e }, { PIXMAN_OP_DIFFERENCE, PIXMAN_r5g6b5, 0xffff, PIXMAN_null, 0x00, PIXMAN_a2r2g2b2, 0x33 }, { PIXMAN_OP_HARD_LIGHT, PIXMAN_a8r8g8b8, 0x84c4ffd7, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0xffddff }, { PIXMAN_OP_EXCLUSION, PIXMAN_a8r8g8b8, 0xff6e56, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0x20ff1ade }, { PIXMAN_OP_OVERLAY, PIXMAN_a4r4g4b4, 0xfe0, PIXMAN_null, 0x00, PIXMAN_a4r4g4b4, 0xbdff }, { PIXMAN_OP_SCREEN, PIXMAN_a8r8g8b8, 0x9671ff, PIXMAN_null, 0x00, PIXMAN_a2r2g2b2, 0x43 }, { PIXMAN_OP_EXCLUSION, PIXMAN_a2r2g2b2, 0xff, PIXMAN_null, 0x00, PIXMAN_a4r4g4b4, 0x39ff }, { PIXMAN_OP_EXCLUSION, PIXMAN_r5g6b5, 0xffff, PIXMAN_null, 0x00, PIXMAN_a4r4g4b4, 0x1968 }, { PIXMAN_OP_EXCLUSION, PIXMAN_a4r4g4b4, 0x4247, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0xd8ffff }, { PIXMAN_OP_EXCLUSION, PIXMAN_r5g6b5, 0xff00, PIXMAN_null, 0x00, PIXMAN_a2r2g2b2, 0x79 }, { PIXMAN_OP_DIFFERENCE, PIXMAN_r3g3b2, 0xe0, PIXMAN_null, 0x00, PIXMAN_a2r2g2b2, 0x39 }, { PIXMAN_OP_EXCLUSION, PIXMAN_a8r8g8b8, 0xfff8, PIXMAN_null, 0x00, PIXMAN_r3g3b2, 0xff }, { PIXMAN_OP_COLOR_DODGE, PIXMAN_r5g6b5, 0x75fc, PIXMAN_null, 0x00, PIXMAN_r5g6b5, 0x11ff, }, { PIXMAN_OP_COLOR_BURN, PIXMAN_r3g3b2, 0x52, PIXMAN_null, 0x00, PIXMAN_r5g6b5, 0xc627 }, { PIXMAN_OP_HARD_LIGHT, PIXMAN_r5g6b5, 0x9f2b, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0x4b00e7f5 }, { PIXMAN_OP_OVERLAY, PIXMAN_a8r8g8b8, 0x00dfff5c, PIXMAN_null, 0x00, PIXMAN_r5g6b5, 0x5e0f, }, { PIXMAN_OP_COLOR_BURN, PIXMAN_a8r8g8b8, 0xff00121b, PIXMAN_null, 0x00, PIXMAN_r5g6b5, 0x3776 }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_r5g6b5, 0x03e0, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0x01003c00, }, { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, 0x0f00c300, PIXMAN_null, 0x00, PIXMAN_x14r6g6b6, 0x003c0, }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a4r4g4b4, 0xd0c0, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0x5300ea00, }, { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, 0x20c6bf00, PIXMAN_null, 0x00, PIXMAN_r5g6b5, 0xb9ff }, { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, 0x204ac7ff, PIXMAN_null, 0x00, PIXMAN_r5g6b5, 0xc1ff }, { PIXMAN_OP_OVER_REVERSE, PIXMAN_r5g6b5, 0xffc3, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0x102d00dd }, { PIXMAN_OP_OVER_REVERSE, PIXMAN_r5g6b5, 0x1f00, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0x1bdf0c89 }, { PIXMAN_OP_OVER_REVERSE, PIXMAN_r5g6b5, 0xf9d2, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0x1076bcf7 }, { PIXMAN_OP_OVER_REVERSE, PIXMAN_r5g6b5, 0x00c3, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0x1bfe9ae5 }, { PIXMAN_OP_OVER_REVERSE, PIXMAN_r5g6b5, 0x09ff, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0x0b00c16c }, { PIXMAN_OP_DISJOINT_ATOP, PIXMAN_a2r2g2b2, 0xbc, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0x9efff1ff }, { PIXMAN_OP_DISJOINT_ATOP, PIXMAN_a4r4g4b4, 0xae5f, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0xf215b675 }, { PIXMAN_OP_DISJOINT_ATOP_REVERSE, PIXMAN_a8r8g8b8, 0xce007980, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0x80ffe4ad }, { PIXMAN_OP_DISJOINT_XOR, PIXMAN_a8r8g8b8, 0xb8b07bea, PIXMAN_null, 0x00, PIXMAN_a4r4g4b4, 0x939c }, { PIXMAN_OP_CONJOINT_ATOP_REVERSE, PIXMAN_r5g6b5, 0x0063, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0x10bb1ed7, }, { PIXMAN_OP_EXCLUSION, PIXMAN_a2r2g2b2, 0xbf, PIXMAN_null, 0x00, PIXMAN_r5g6b5, 0x7e }, { PIXMAN_OP_LIGHTEN, PIXMAN_a8r8g8b8, 0xffffff, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0xff3fffff }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_r3g3b2, 0x38, PIXMAN_null, 0x00, PIXMAN_a2r2g2b2, 0x5b }, { PIXMAN_OP_COLOR_DODGE, PIXMAN_a8r8g8b8, 0x2e9effff, PIXMAN_null, 0x00, PIXMAN_a2r2g2b2, 0x77 }, { PIXMAN_OP_DIFFERENCE, PIXMAN_r5g6b5, 0xffff, PIXMAN_null, 0x00, PIXMAN_a2r2g2b2, 0x33 }, { PIXMAN_OP_OVERLAY, PIXMAN_a8r8g8b8, 0xd0089ff, PIXMAN_null, 0x00, PIXMAN_r3g3b2, 0xb1 }, { PIXMAN_OP_OVERLAY, PIXMAN_r3g3b2, 0x8a, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0xcd0004 }, { PIXMAN_OP_COLOR_BURN, PIXMAN_a8r8g8b8, 0xffff1e3a, PIXMAN_null, 0x00, PIXMAN_a4r4g4b4, 0xcf00 }, { PIXMAN_OP_HARD_LIGHT, PIXMAN_a8r8g8b8, 0x84c4ffd7, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0xffddff }, { PIXMAN_OP_DIFFERENCE, PIXMAN_a4r4g4b4, 0xfd75, PIXMAN_null, 0x00, PIXMAN_a2r2g2b2, 0x7f }, { PIXMAN_OP_LIGHTEN, PIXMAN_r3g3b2, 0xff, PIXMAN_null, 0x00, PIXMAN_a4r4g4b4, 0x63ff }, { PIXMAN_OP_EXCLUSION, PIXMAN_a8r8g8b8, 0xff6e56, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0x20ff1ade }, { PIXMAN_OP_OVERLAY, PIXMAN_a4r4g4b4, 0xfe0, PIXMAN_null, 0x00, PIXMAN_a4r4g4b4, 0xbdff }, { PIXMAN_OP_OVERLAY, PIXMAN_r5g6b5, 0x9799, PIXMAN_null, 0x00, PIXMAN_a4r4g4b4, 0x8d }, { PIXMAN_OP_HARD_LIGHT, PIXMAN_a8r8g8b8, 0xe8ff1c33, PIXMAN_null, 0x00, PIXMAN_r5g6b5, 0x6200 }, { PIXMAN_OP_DIFFERENCE, PIXMAN_a8r8g8b8, 0x22ffffff, PIXMAN_null, 0x00, PIXMAN_a2r2g2b2, 0x63 }, { PIXMAN_OP_SCREEN, PIXMAN_a8r8g8b8, 0x9671ff, PIXMAN_null, 0x00, PIXMAN_a2r2g2b2, 0x43 }, { PIXMAN_OP_LIGHTEN, PIXMAN_a2r2g2b2, 0x83, PIXMAN_null, 0x00, PIXMAN_r5g6b5, 0xff }, { PIXMAN_OP_OVERLAY, PIXMAN_r3g3b2, 0x0, PIXMAN_null, 0x00, PIXMAN_a2r2g2b2, 0x97 }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_r5g6b5, 0xb900, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0x6800ff00 }, { PIXMAN_OP_OVERLAY, PIXMAN_a4r4g4b4, 0xff, PIXMAN_null, 0x00, PIXMAN_r3g3b2, 0x8e }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a4r4g4b4, 0xff00, PIXMAN_null, 0x00, PIXMAN_a2r2g2b2, 0xbc }, { PIXMAN_OP_DIFFERENCE, PIXMAN_r5g6b5, 0xfffe, PIXMAN_null, 0x00, PIXMAN_a4r4g4b4, 0x90 }, { PIXMAN_OP_LIGHTEN, PIXMAN_r3g3b2, 0xff, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0xc35f }, { PIXMAN_OP_EXCLUSION, PIXMAN_a2r2g2b2, 0xff, PIXMAN_null, 0x00, PIXMAN_a4r4g4b4, 0x39ff }, { PIXMAN_OP_LIGHTEN, PIXMAN_a2r2g2b2, 0x1e, PIXMAN_null, 0x00, PIXMAN_a4r4g4b4, 0xbaff }, { PIXMAN_OP_LIGHTEN, PIXMAN_a8r8g8b8, 0xb4ffff26, PIXMAN_null, 0x00, PIXMAN_r5g6b5, 0xff }, { PIXMAN_OP_COLOR_DODGE, PIXMAN_a4r4g4b4, 0xe3ff, PIXMAN_null, 0x00, PIXMAN_a4r4g4b4, 0x878b }, { PIXMAN_OP_OVERLAY, PIXMAN_a8r8g8b8, 0xff700044, PIXMAN_null, 0x00, PIXMAN_a2r2g2b2, 0x6 }, { PIXMAN_OP_DARKEN, PIXMAN_a2r2g2b2, 0xb6, PIXMAN_null, 0x00, PIXMAN_a4r4g4b4, 0xcd00 }, { PIXMAN_OP_HARD_LIGHT, PIXMAN_a2r2g2b2, 0xfe, PIXMAN_null, 0x00, PIXMAN_a2r2g2b2, 0x12 }, { PIXMAN_OP_LIGHTEN, PIXMAN_a8r8g8b8, 0xb1ff006c, PIXMAN_null, 0x00, PIXMAN_a4r4g4b4, 0xff7c }, { PIXMAN_OP_HARD_LIGHT, PIXMAN_r3g3b2, 0x4e, PIXMAN_null, 0x00, PIXMAN_a2r2g2b2, 0x3c }, { PIXMAN_OP_EXCLUSION, PIXMAN_r5g6b5, 0xffff, PIXMAN_null, 0x00, PIXMAN_a4r4g4b4, 0x1968 }, { PIXMAN_OP_COLOR_BURN, PIXMAN_r3g3b2, 0xe7, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0x8cced6ac }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a4r4g4b4, 0xa500, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0x1bff009d }, { PIXMAN_OP_DIFFERENCE, PIXMAN_r5g6b5, 0x45ff, PIXMAN_null, 0x00, PIXMAN_a2r2g2b2, 0x32 }, { PIXMAN_OP_OVERLAY, PIXMAN_a2r2g2b2, 0x18, PIXMAN_null, 0x00, PIXMAN_r5g6b5, 0xdc00 }, { PIXMAN_OP_EXCLUSION, PIXMAN_a4r4g4b4, 0x4247, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0xd8ffff }, { PIXMAN_OP_EXCLUSION, PIXMAN_r5g6b5, 0xff00, PIXMAN_null, 0x00, PIXMAN_a2r2g2b2, 0x79 }, { PIXMAN_OP_COLOR_BURN, PIXMAN_r3g3b2, 0xf, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0x9fff00ff }, { PIXMAN_OP_EXCLUSION, PIXMAN_a2r2g2b2, 0x93, PIXMAN_null, 0x00, PIXMAN_a4r4g4b4, 0xff }, { PIXMAN_OP_LIGHTEN, PIXMAN_a2r2g2b2, 0xa3, PIXMAN_null, 0x00, PIXMAN_r3g3b2, 0xca }, { PIXMAN_OP_DIFFERENCE, PIXMAN_r3g3b2, 0xe0, PIXMAN_null, 0x00, PIXMAN_a2r2g2b2, 0x39 }, { PIXMAN_OP_HARD_LIGHT, PIXMAN_r3g3b2, 0x16, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0x98ffff }, { PIXMAN_OP_LIGHTEN, PIXMAN_r3g3b2, 0x96, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0x225f6c }, { PIXMAN_OP_HARD_LIGHT, PIXMAN_a4r4g4b4, 0x12c7, PIXMAN_null, 0x00, PIXMAN_a4r4g4b4, 0xb100 }, { PIXMAN_OP_LIGHTEN, PIXMAN_a8r8g8b8, 0xffda91, PIXMAN_null, 0x00, PIXMAN_r3g3b2, 0x6a }, { PIXMAN_OP_EXCLUSION, PIXMAN_a8r8g8b8, 0xfff8, PIXMAN_null, 0x00, PIXMAN_r3g3b2, 0xff }, { PIXMAN_OP_SOFT_LIGHT, PIXMAN_a2r2g2b2, 0xff, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0xf0ff48ca }, { PIXMAN_OP_HARD_LIGHT, PIXMAN_r5g6b5, 0xf1ff, PIXMAN_r5g6b5, 0x6eff, PIXMAN_a8r8g8b8, 0xffffff, }, { PIXMAN_OP_HARD_LIGHT, PIXMAN_r5g6b5, 0xf1ff, PIXMAN_a8, 0xdf, PIXMAN_a8r8g8b8, 0xffffff, }, { PIXMAN_OP_HARD_LIGHT, PIXMAN_r5g6b5, 0xf1ff, PIXMAN_null, 0x00, PIXMAN_a8r8g8b8, 0xffffff, }, { PIXMAN_OP_HARD_LIGHT, PIXMAN_r5g6b5, 0xb867, PIXMAN_a4r4g4b4, 0x82d9, PIXMAN_a8r8g8b8, 0xffc5, }, { PIXMAN_OP_HARD_LIGHT, PIXMAN_r5g6b5, 0xa9f5, PIXMAN_r5g6b5, 0xadff, PIXMAN_a8r8g8b8, 0xffff00, }, { PIXMAN_OP_HARD_LIGHT, PIXMAN_r5g6b5, 0x4900, PIXMAN_r5g6b5, 0x865c, PIXMAN_a8r8g8b8, 0xebff, }, { PIXMAN_OP_HARD_LIGHT, PIXMAN_r5g6b5, 0xd9ff, PIXMAN_a8r8g8b8, 0xffffffff, PIXMAN_a8r8g8b8, 0x8ff0d, }, { PIXMAN_OP_HARD_LIGHT, PIXMAN_r5g6b5, 0x41ff, PIXMAN_a4r4g4b4, 0xcff, PIXMAN_a8r8g8b8, 0xe1ff00, }, { PIXMAN_OP_HARD_LIGHT, PIXMAN_r5g6b5, 0x91ff, PIXMAN_a2r2g2b2, 0xf3, PIXMAN_a8r8g8b8, 0xe4ffb4, }, { PIXMAN_OP_HARD_LIGHT, PIXMAN_r5g6b5, 0xb9ff, PIXMAN_a2r2g2b2, 0xff, PIXMAN_a8r8g8b8, 0xffff, }, { PIXMAN_OP_OVERLAY, PIXMAN_a8r8g8b8, 0x473affff, PIXMAN_r5g6b5, 0x2b00, PIXMAN_r5g6b5, 0x1ff, }, { PIXMAN_OP_OVERLAY, PIXMAN_a8r8g8b8, 0xe4ff, PIXMAN_r3g3b2, 0xff, PIXMAN_r5g6b5, 0x89ff, }, }; static void fill (pixman_image_t *image, uint32_t pixel) { uint8_t *data = (uint8_t *)pixman_image_get_data (image); int bytes_per_pixel = PIXMAN_FORMAT_BPP (pixman_image_get_format (image)) / 8; int n_bytes = pixman_image_get_stride (image) * pixman_image_get_height (image); int i; switch (bytes_per_pixel) { case 4: for (i = 0; i < n_bytes / 4; ++i) ((uint32_t *)data)[i] = pixel; break; case 2: pixel &= 0xffff; for (i = 0; i < n_bytes / 2; ++i) ((uint16_t *)data)[i] = pixel; break; case 1: pixel &= 0xff; for (i = 0; i < n_bytes; ++i) ((uint8_t *)data)[i] = pixel; break; default: assert (0); break; } } static uint32_t access (pixman_image_t *image, int x, int y) { int bytes_per_pixel; int stride; uint32_t result; uint8_t *location; if (x < 0 || x >= image->bits.width || y < 0 || y >= image->bits.height) return 0; bytes_per_pixel = PIXMAN_FORMAT_BPP (image->bits.format) / 8; stride = image->bits.rowstride * 4; location = (uint8_t *)image->bits.bits + y * stride + x * bytes_per_pixel; if (bytes_per_pixel == 4) result = *(uint32_t *)location; else if (bytes_per_pixel == 2) result = *(uint16_t *)location; else if (bytes_per_pixel == 1) result = *(uint8_t *)location; else assert (0); return result; } static pixman_bool_t verify (int test_no, const pixel_combination_t *combination, int size, pixman_bool_t component_alpha) { pixman_image_t *src, *mask, *dest; pixel_checker_t src_checker, mask_checker, dest_checker; color_t source_color, mask_color, dest_color, reference_color; pixman_bool_t have_mask = (combination->mask_format != PIXMAN_null); pixman_bool_t result = TRUE; int i, j; /* Compute reference color */ pixel_checker_init (&src_checker, combination->src_format); if (have_mask) pixel_checker_init (&mask_checker, combination->mask_format); pixel_checker_init (&dest_checker, combination->dest_format); pixel_checker_convert_pixel_to_color ( &src_checker, combination->src_pixel, &source_color); if (combination->mask_format != PIXMAN_null) { pixel_checker_convert_pixel_to_color ( &mask_checker, combination->mask_pixel, &mask_color); } pixel_checker_convert_pixel_to_color ( &dest_checker, combination->dest_pixel, &dest_color); do_composite (combination->op, &source_color, have_mask? &mask_color : NULL, &dest_color, &reference_color, component_alpha); src = pixman_image_create_bits ( combination->src_format, size, size, NULL, -1); if (have_mask) { mask = pixman_image_create_bits ( combination->mask_format, size, size, NULL, -1); pixman_image_set_component_alpha (mask, component_alpha); } dest = pixman_image_create_bits ( combination->dest_format, size, size, NULL, -1); fill (src, combination->src_pixel); if (have_mask) fill (mask, combination->mask_pixel); fill (dest, combination->dest_pixel); pixman_image_composite32 ( combination->op, src, have_mask ? mask : NULL, dest, 0, 0, 0, 0, 0, 0, size, size); for (j = 0; j < size; ++j) { for (i = 0; i < size; ++i) { uint32_t computed = access (dest, i, j); int32_t a, r, g, b; if (!pixel_checker_check (&dest_checker, computed, &reference_color)) { printf ("----------- Test %d failed ----------\n", test_no); printf (" operator: %s (%s)\n", operator_name (combination->op), have_mask? component_alpha ? "component alpha" : "unified alpha" : "no mask"); printf (" src format: %s\n", format_name (combination->src_format)); if (have_mask != PIXMAN_null) printf (" mask format: %s\n", format_name (combination->mask_format)); printf (" dest format: %s\n", format_name (combination->dest_format)); printf (" - source ARGB: %f %f %f %f (pixel: %8x)\n", source_color.a, source_color.r, source_color.g, source_color.b, combination->src_pixel); pixel_checker_split_pixel (&src_checker, combination->src_pixel, &a, &r, &g, &b); printf (" %8d %8d %8d %8d\n", a, r, g, b); if (have_mask) { printf (" - mask ARGB: %f %f %f %f (pixel: %8x)\n", mask_color.a, mask_color.r, mask_color.g, mask_color.b, combination->mask_pixel); pixel_checker_split_pixel (&mask_checker, combination->mask_pixel, &a, &r, &g, &b); printf (" %8d %8d %8d %8d\n", a, r, g, b); } printf (" - dest ARGB: %f %f %f %f (pixel: %8x)\n", dest_color.a, dest_color.r, dest_color.g, dest_color.b, combination->dest_pixel); pixel_checker_split_pixel (&dest_checker, combination->dest_pixel, &a, &r, &g, &b); printf (" %8d %8d %8d %8d\n", a, r, g, b); pixel_checker_split_pixel (&dest_checker, computed, &a, &r, &g, &b); printf (" - expected ARGB: %f %f %f %f\n", reference_color.a, reference_color.r, reference_color.g, reference_color.b); pixel_checker_get_min (&dest_checker, &reference_color, &a, &r, &g, &b); printf (" min acceptable: %8d %8d %8d %8d\n", a, r, g, b); pixel_checker_split_pixel (&dest_checker, computed, &a, &r, &g, &b); printf (" got: %8d %8d %8d %8d (pixel: %8x)\n", a, r, g, b, computed); pixel_checker_get_max (&dest_checker, &reference_color, &a, &r, &g, &b); printf (" max acceptable: %8d %8d %8d %8d\n", a, r, g, b); result = FALSE; goto done; } } } done: pixman_image_unref (src); pixman_image_unref (dest); return result; } int main (int argc, char **argv) { int result = 0; int i, j; int lo, hi; if (argc > 1) { lo = atoi (argv[1]); hi = lo + 1; } else { lo = 0; hi = ARRAY_LENGTH (regressions); } for (i = lo; i < hi; ++i) { const pixel_combination_t *combination = &(regressions[i]); for (j = 1; j < 34; ++j) { int k, ca; ca = combination->mask_format == PIXMAN_null ? 1 : 2; for (k = 0; k < ca; ++k) { if (!verify (i, combination, j, k)) { result = 1; goto next_regression; } } } next_regression: ; } return result; }