• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright © 2013 Soeren Sandmann
3  * Copyright © 2013 Red Hat, Inc.
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation
8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9  * and/or sell copies of the Software, and to permit persons to whom the
10  * Software is furnished to do so, subject to the following conditions:
11  *
12  * The above copyright notice and this permission notice (including the next
13  * paragraph) shall be included in all copies or substantial portions of the
14  * Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
19  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22  * DEALINGS IN THE SOFTWARE.
23  */
24 #include <stdio.h>
25 #include <stdlib.h> /* abort() */
26 #include <math.h>
27 #include <time.h>
28 #include "utils.h"
29 
30 typedef struct pixel_combination_t pixel_combination_t;
31 struct pixel_combination_t
32 {
33     pixman_op_t			op;
34     pixman_format_code_t	src_format;
35     uint32_t			src_pixel;
36     pixman_format_code_t	mask_format;
37     uint32_t			mask_pixel;
38     pixman_format_code_t	dest_format;
39     uint32_t			dest_pixel;
40 };
41 
42 static const pixel_combination_t regressions[] =
43 {
44     { PIXMAN_OP_DISJOINT_ATOP,
45       PIXMAN_a8r8g8b8,	0x1ffc3ff,
46       PIXMAN_a8,	0x7b,
47       PIXMAN_a8r8g8b8,	0xff00c300,
48     },
49     { PIXMAN_OP_SOFT_LIGHT,
50       PIXMAN_a2r2g2b2,	0xb5,
51       PIXMAN_a4r4g4b4,	0xe3ff,
52       PIXMAN_a2r2g2b2,	0x2e
53     },
54     { PIXMAN_OP_SOFT_LIGHT,
55       PIXMAN_a2r2g2b2,	0xa6,
56       PIXMAN_a8r8g8b8,	0x2b00ff00,
57       PIXMAN_a4r4g4b4,	0x7e
58     },
59     { PIXMAN_OP_SOFT_LIGHT,
60       PIXMAN_a8r8g8b8,	0x27000013,
61       PIXMAN_a2r2g2b2,	0x80,
62       PIXMAN_a4r4g4b4,	0x9d
63     },
64     { PIXMAN_OP_SOFT_LIGHT,
65       PIXMAN_a4r4g4b4,	0xe6f7,
66       PIXMAN_a2r2g2b2,	0xad,
67       PIXMAN_a4r4g4b4,	0x71
68     },
69     { PIXMAN_OP_SOFT_LIGHT,
70       PIXMAN_a8r8g8b8,	0xff4f70ff,
71       PIXMAN_r5g6b5,	0xb828,
72       PIXMAN_a8r8g8b8,	0xcac400
73     },
74     { PIXMAN_OP_SOFT_LIGHT,
75       PIXMAN_a2r2g2b2,	0xa9,
76       PIXMAN_a4r4g4b4,	0x41c2,
77       PIXMAN_a8r8g8b8,	0xffff2b
78     },
79     { PIXMAN_OP_SOFT_LIGHT,
80       PIXMAN_a2r2g2b2,	0x89,
81       PIXMAN_a8r8g8b8,	0x977cff61,
82       PIXMAN_a4r4g4b4,	0x36
83     },
84     { PIXMAN_OP_SOFT_LIGHT,
85       PIXMAN_a2r2g2b2,	0x81,
86       PIXMAN_r5g6b5,	0x6f9e,
87       PIXMAN_a4r4g4b4,	0x1eb
88     },
89     { PIXMAN_OP_SOFT_LIGHT,
90       PIXMAN_a2r2g2b2,	0xb5,
91       PIXMAN_a4r4g4b4,	0xe247,
92       PIXMAN_a8r8g8b8,	0xffbaff
93     },
94     { PIXMAN_OP_SOFT_LIGHT,
95       PIXMAN_a2r2g2b2,	0x97,
96       PIXMAN_a2r2g2b2,	0x9d,
97       PIXMAN_a2r2g2b2,	0x21
98     },
99     { PIXMAN_OP_SOFT_LIGHT,
100       PIXMAN_a2r2g2b2,	0xb4,
101       PIXMAN_a2r2g2b2,	0x90,
102       PIXMAN_a8r8g8b8,	0xc0fd5c
103     },
104     { PIXMAN_OP_SOFT_LIGHT,
105       PIXMAN_a8r8g8b8,	0xdf00ff70,
106       PIXMAN_a8r8g8b8,	0x2597ff27,
107       PIXMAN_a4r4g4b4,	0xf3
108     },
109     { PIXMAN_OP_SOFT_LIGHT,
110       PIXMAN_a2r2g2b2,	0xb7,
111       PIXMAN_r3g3b2,	0xb1,
112       PIXMAN_a8r8g8b8,	0x9f4bcc
113     },
114     { PIXMAN_OP_SOFT_LIGHT,
115       PIXMAN_a4r4g4b4,	0xf39e,
116       PIXMAN_r5g6b5,	0x34,
117       PIXMAN_a8r8g8b8,	0xf6ae00
118     },
119     { PIXMAN_OP_SOFT_LIGHT,
120       PIXMAN_a8r8g8b8,	0x3aff1dff,
121       PIXMAN_a2r2g2b2,	0x64,
122       PIXMAN_a8r8g8b8,	0x94ffb4
123     },
124     { PIXMAN_OP_SOFT_LIGHT,
125       PIXMAN_a2r2g2b2,	0xa4,
126       PIXMAN_a2r2g2b2,	0x8a,
127       PIXMAN_a4r4g4b4,	0xff
128     },
129     { PIXMAN_OP_SOFT_LIGHT,
130       PIXMAN_a2r2g2b2,	0xa5,
131       PIXMAN_a4r4g4b4,	0x1a,
132       PIXMAN_a4r4g4b4,	0xff
133     },
134     { PIXMAN_OP_SOFT_LIGHT,
135       PIXMAN_a2r2g2b2,	0xb4,
136       PIXMAN_a2r2g2b2,	0xca,
137       PIXMAN_a4r4g4b4,	0x7b
138     },
139     { PIXMAN_OP_SOFT_LIGHT,
140       PIXMAN_a2r2g2b2,	0xbd,
141       PIXMAN_a4r4g4b4,	0xff37,
142       PIXMAN_a4r4g4b4,	0xff
143     },
144     { PIXMAN_OP_SOFT_LIGHT,
145       PIXMAN_a2r2g2b2,	0x96,
146       PIXMAN_a2r2g2b2,	0xbb,
147       PIXMAN_a8r8g8b8,	0x96ffff
148     },
149     { PIXMAN_OP_SOFT_LIGHT,
150       PIXMAN_a2r2g2b2,	0x89,
151       PIXMAN_r3g3b2,	0x92,
152       PIXMAN_a4r4g4b4,	0xa8c
153     },
154     { PIXMAN_OP_SOFT_LIGHT,
155       PIXMAN_a4r4g4b4,	0xa95b,
156       PIXMAN_a2r2g2b2,	0x68,
157       PIXMAN_a8r8g8b8,	0x38ff
158     },
159     { PIXMAN_OP_SOFT_LIGHT,
160       PIXMAN_a2r2g2b2,	0x90,
161       PIXMAN_a8r8g8b8,	0x53bd00ef,
162       PIXMAN_a8r8g8b8,	0xff0003
163     },
164     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
165       PIXMAN_a8r8g8b8,	0x1f5ffff,
166       PIXMAN_r3g3b2,	0x22,
167       PIXMAN_r5g6b5,	0x2000
168     },
169     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
170       PIXMAN_a8r8g8b8,	0x10000b6,
171       PIXMAN_a8r8g8b8,	0x9645,
172       PIXMAN_r5g6b5,	0x6
173     },
174     { PIXMAN_OP_SATURATE,
175       PIXMAN_a8r8g8b8,	0x172ff00,
176       PIXMAN_a4r4g4b4,	0xff61,
177       PIXMAN_r3g3b2,	0xc
178     },
179     { PIXMAN_OP_DISJOINT_ATOP,
180       PIXMAN_a8r8g8b8,	0x281ffc8,
181       PIXMAN_r5g6b5,	0x39b8,
182       PIXMAN_r5g6b5,	0x13
183     },
184     { PIXMAN_OP_CONJOINT_IN,
185       PIXMAN_a8r8g8b8,	0x100a2ff,
186       PIXMAN_a4r4g4b4,	0x6500,
187       PIXMAN_a2r2g2b2,	0x5
188     },
189     { PIXMAN_OP_CONJOINT_IN,
190       PIXMAN_a8r8g8b8,	0x1ffff51,
191       PIXMAN_r5g6b5,	0x52ff,
192       PIXMAN_a2r2g2b2,	0x14
193     },
194     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
195       PIXMAN_a8r8g8b8,	0x150d500,
196       PIXMAN_a8r8g8b8,	0x6200b7ff,
197       PIXMAN_a8r8g8b8,	0x1f5200
198     },
199     { PIXMAN_OP_DISJOINT_OUT,
200       PIXMAN_a8r8g8b8,	0x2a9a700,
201       PIXMAN_a8r8g8b8,	0xf7003400,
202       PIXMAN_a8r8g8b8,	0x2200
203     },
204     { PIXMAN_OP_DISJOINT_IN,
205       PIXMAN_a8r8g8b8,	0x200ffff,
206       PIXMAN_r5g6b5,	0x81ff,
207       PIXMAN_r5g6b5,	0x1f
208     },
209     { PIXMAN_OP_DISJOINT_OUT,
210       PIXMAN_a8r8g8b8,	0x2ff00ff,
211       PIXMAN_r5g6b5,	0x3f00,
212       PIXMAN_r3g3b2,	0x20
213     },
214     { PIXMAN_OP_DISJOINT_OUT,
215       PIXMAN_a8r8g8b8,	0x3ff1aa4,
216       PIXMAN_a4r4g4b4,	0x2200,
217       PIXMAN_r5g6b5,	0x2000
218     },
219     { PIXMAN_OP_DISJOINT_XOR,
220       PIXMAN_a8r8g8b8,	0x280ff2c,
221       PIXMAN_r3g3b2,	0xc6,
222       PIXMAN_a8r8g8b8,	0xfdfd44fe
223     },
224     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
225       PIXMAN_a8r8g8b8,	0x13aff1d,
226       PIXMAN_a2r2g2b2,	0x4b,
227       PIXMAN_r5g6b5,	0x12a1
228     },
229     { PIXMAN_OP_DISJOINT_XOR,
230       PIXMAN_a8r8g8b8,	0x2ffff88,
231       PIXMAN_a8r8g8b8,	0xff3a49,
232       PIXMAN_r5g6b5,	0xf7df
233     },
234     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
235       PIXMAN_a8r8g8b8,	0x1009700,
236       PIXMAN_a2r2g2b2,	0x56,
237       PIXMAN_a8r8g8b8,	0x0
238     },
239     { PIXMAN_OP_DISJOINT_OUT,
240       PIXMAN_a8r8g8b8,	0x1aacbff,
241       PIXMAN_a4r4g4b4,	0x84,
242       PIXMAN_r3g3b2,	0x1
243     },
244     { PIXMAN_OP_DISJOINT_XOR,
245       PIXMAN_a8r8g8b8,	0x100b1ff,
246       PIXMAN_a2r2g2b2,	0xf5,
247       PIXMAN_a8r8g8b8,	0xfea89cff
248     },
249     { PIXMAN_OP_CONJOINT_XOR,
250       PIXMAN_a8r8g8b8,	0x1ff0000,
251       PIXMAN_r5g6b5,	0x6800,
252       PIXMAN_a4r4g4b4,	0x0
253     },
254     { PIXMAN_OP_CONJOINT_XOR,
255       PIXMAN_a8r8g8b8,	0x10064ff,
256       PIXMAN_r3g3b2,	0x61,
257       PIXMAN_a4r4g4b4,	0x0
258     },
259     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
260       PIXMAN_a8r8g8b8,	0x1bb00ff,
261       PIXMAN_r5g6b5,	0x76b5,
262       PIXMAN_a4r4g4b4,	0x500
263     },
264     { PIXMAN_OP_DISJOINT_OUT,
265       PIXMAN_a8r8g8b8,	0x2ffff41,
266       PIXMAN_r5g6b5,	0x7100,
267       PIXMAN_a4r4g4b4,	0x20
268     },
269     { PIXMAN_OP_DISJOINT_XOR,
270       PIXMAN_a8r8g8b8,	0x1ff1231,
271       PIXMAN_a8r8g8b8,	0x381089,
272       PIXMAN_r5g6b5,	0x38a5
273     },
274     { PIXMAN_OP_CONJOINT_IN,
275       PIXMAN_a8r8g8b8,	0x16e5c49,
276       PIXMAN_a8r8g8b8,	0x4dfa3694,
277       PIXMAN_a8r8g8b8,	0x211c16
278     },
279     { PIXMAN_OP_DISJOINT_OUT,
280       PIXMAN_a8r8g8b8,	0x134ff62,
281       PIXMAN_a2r2g2b2,	0x14,
282       PIXMAN_r3g3b2,	0x8
283     },
284     { PIXMAN_OP_CONJOINT_IN,
285       PIXMAN_a8r8g8b8,	0x300ffeb,
286       PIXMAN_r3g3b2,	0xc7,
287       PIXMAN_a4r4g4b4,	0x20
288     },
289     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
290       PIXMAN_a8r8g8b8,	0x3ff8bff,
291       PIXMAN_r3g3b2,	0x3e,
292       PIXMAN_a8r8g8b8,	0x3008baa
293     },
294     { PIXMAN_OP_DISJOINT_OUT,
295       PIXMAN_a8r8g8b8,	0x1ff00ff,
296       PIXMAN_a4r4g4b4,	0x3466,
297       PIXMAN_a4r4g4b4,	0x406
298     },
299     { PIXMAN_OP_DISJOINT_IN,
300       PIXMAN_a8r8g8b8,	0x1ddc027,
301       PIXMAN_a4r4g4b4,	0x7d00,
302       PIXMAN_r5g6b5,	0x0
303     },
304     { PIXMAN_OP_CONJOINT_IN,
305       PIXMAN_a8r8g8b8,	0x2ffff00,
306       PIXMAN_a8r8g8b8,	0xc92cfb52,
307       PIXMAN_a4r4g4b4,	0x200
308     },
309     { PIXMAN_OP_CONJOINT_XOR,
310       PIXMAN_a8r8g8b8,	0x1ff116a,
311       PIXMAN_a4r4g4b4,	0x6000,
312       PIXMAN_a4r4g4b4,	0x0
313     },
314     { PIXMAN_OP_DISJOINT_IN,
315       PIXMAN_a8r8g8b8,	0x1ffffff,
316       PIXMAN_r5g6b5,	0x2f95,
317       PIXMAN_r5g6b5,	0x795
318     },
319     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
320       PIXMAN_a8r8g8b8,	0x2ffff00,
321       PIXMAN_a4r4g4b4,	0x354a,
322       PIXMAN_r5g6b5,	0x3180
323     },
324     { PIXMAN_OP_SATURATE,
325       PIXMAN_a8r8g8b8,	0x1d7ff00,
326       PIXMAN_a4r4g4b4,	0xd6ff,
327       PIXMAN_a8r8g8b8,	0xffff0700
328     },
329     { PIXMAN_OP_DISJOINT_XOR,
330       PIXMAN_a8r8g8b8,	0x1bc5db7,
331       PIXMAN_r5g6b5,	0x944f,
332       PIXMAN_a4r4g4b4,	0xff05
333     },
334     { PIXMAN_OP_SATURATE,
335       PIXMAN_a8r8g8b8,	0x185ffd9,
336       PIXMAN_a2r2g2b2,	0x9c,
337       PIXMAN_r5g6b5,	0x3c07
338     },
339     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
340       PIXMAN_a8r8g8b8,	0x1fa7f61,
341       PIXMAN_a8r8g8b8,	0xff31ff00,
342       PIXMAN_r3g3b2,	0xd2
343     },
344     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
345       PIXMAN_a8r8g8b8,	0x1c4ff00,
346       PIXMAN_r3g3b2,	0xb,
347       PIXMAN_a4r4g4b4,	0x0
348     },
349     { PIXMAN_OP_DISJOINT_OUT,
350       PIXMAN_a8r8g8b8,	0x2ff00ff,
351       PIXMAN_a8r8g8b8,	0x3f3caeda,
352       PIXMAN_r3g3b2,	0x20
353     },
354     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
355       PIXMAN_a8r8g8b8,	0x100ff00,
356       PIXMAN_r5g6b5,	0xff,
357       PIXMAN_r5g6b5,	0xe0
358     },
359     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
360       PIXMAN_a8r8g8b8,	0x1ff68ff,
361       PIXMAN_a4r4g4b4,	0x8046,
362       PIXMAN_r5g6b5,	0xec
363     },
364     { PIXMAN_OP_DISJOINT_OUT,
365       PIXMAN_a8r8g8b8,	0x100ff28,
366       PIXMAN_a8r8g8b8,	0x4c00,
367       PIXMAN_r5g6b5,	0x260
368     },
369     { PIXMAN_OP_CONJOINT_IN,
370       PIXMAN_a8r8g8b8,	0x1ffff00,
371       PIXMAN_a4r4g4b4,	0xd92a,
372       PIXMAN_a8r8g8b8,	0x2200
373     },
374     { PIXMAN_OP_DISJOINT_IN,
375       PIXMAN_a8r8g8b8,	0x100289a,
376       PIXMAN_a8r8g8b8,	0x74ffb8ff,
377       PIXMAN_r5g6b5,	0x0
378     },
379     { PIXMAN_OP_DISJOINT_XOR,
380       PIXMAN_a8r8g8b8,	0x1baff00,
381       PIXMAN_r5g6b5,	0x4e9d,
382       PIXMAN_r5g6b5,	0x3000
383     },
384     { PIXMAN_OP_CONJOINT_ATOP_REVERSE,
385       PIXMAN_a8r8g8b8,	0x1fcffad,
386       PIXMAN_r5g6b5,	0x42d7,
387       PIXMAN_a8r8g8b8,	0x1c6ffe5
388     },
389     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
390       PIXMAN_a8r8g8b8,	0x183ff00,
391       PIXMAN_r3g3b2,	0x7e,
392       PIXMAN_a4r4g4b4,	0xff
393     },
394     { PIXMAN_OP_SATURATE,
395       PIXMAN_a8r8g8b8,	0x2ff0076,
396       PIXMAN_a8r8g8b8,	0x2a0000,
397       PIXMAN_r3g3b2,	0x20
398     },
399     { PIXMAN_OP_CONJOINT_OUT,
400       PIXMAN_a8r8g8b8,	0x3d8bbff,
401       PIXMAN_r5g6b5,	0x6900,
402       PIXMAN_a8r8g8b8,	0x35b0000
403     },
404     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
405       PIXMAN_a8r8g8b8,	0x14f00ff,
406       PIXMAN_r5g6b5,	0xd48,
407       PIXMAN_a4r4g4b4,	0x0
408     },
409     { PIXMAN_OP_CONJOINT_IN,
410       PIXMAN_a8r8g8b8,	0x28c72df,
411       PIXMAN_a8r8g8b8,	0xff5cff31,
412       PIXMAN_a4r4g4b4,	0x2
413     },
414     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
415       PIXMAN_a8r8g8b8,	0x2ffffff,
416       PIXMAN_a8r8g8b8,	0xffad8020,
417       PIXMAN_r5g6b5,	0x4
418     },
419     { PIXMAN_OP_DISJOINT_ATOP,
420       PIXMAN_a8r8g8b8,	0x100ff00,
421       PIXMAN_a2r2g2b2,	0x76,
422       PIXMAN_r3g3b2,	0x0
423     },
424     { PIXMAN_OP_CONJOINT_XOR,
425       PIXMAN_a8r8g8b8,	0x1005d00,
426       PIXMAN_r5g6b5,	0x7b04,
427       PIXMAN_a8r8g8b8,	0x1000000
428     },
429     { PIXMAN_OP_CONJOINT_ATOP,
430       PIXMAN_a8r8g8b8,	0x3cdfc3e,
431       PIXMAN_a8r8g8b8,	0x69ec21d3,
432       PIXMAN_a4r4g4b4,	0x20
433     },
434     { PIXMAN_OP_DISJOINT_ATOP,
435       PIXMAN_a8r8g8b8,	0x200ffff,
436       PIXMAN_r5g6b5,	0x30ff,
437       PIXMAN_r5g6b5,	0x60ff
438     },
439     { PIXMAN_OP_DISJOINT_XOR,
440       PIXMAN_a8r8g8b8,	0x532fff4,
441       PIXMAN_r5g6b5,	0xcb,
442       PIXMAN_r5g6b5,	0xd9a1
443     },
444     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
445       PIXMAN_a8r8g8b8,	0x1ffffff,
446       PIXMAN_r3g3b2,	0x5f,
447       PIXMAN_a2r2g2b2,	0x10
448     },
449     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
450       PIXMAN_a8r8g8b8,	0x1ffffff,
451       PIXMAN_a8r8g8b8,	0xffd60052,
452       PIXMAN_r3g3b2,	0x1
453     },
454     { PIXMAN_OP_DISJOINT_XOR,
455       PIXMAN_a8r8g8b8,	0x1ff6491,
456       PIXMAN_a8r8g8b8,	0x1e53ff00,
457       PIXMAN_r5g6b5,	0x1862
458     },
459     { PIXMAN_OP_CONJOINT_IN,
460       PIXMAN_a8r8g8b8,	0x1ffff00,
461       PIXMAN_r3g3b2,	0xc7,
462       PIXMAN_a4r4g4b4,	0x20
463     },
464     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
465       PIXMAN_a8r8g8b8,	0x29d0fff,
466       PIXMAN_a4r4g4b4,	0x25ff,
467       PIXMAN_a8r8g8b8,	0x0
468     },
469     { PIXMAN_OP_DISJOINT_OUT,
470       PIXMAN_a8r8g8b8,	0x141760a,
471       PIXMAN_a4r4g4b4,	0x7ec2,
472       PIXMAN_a4r4g4b4,	0x130
473     },
474     { PIXMAN_OP_DISJOINT_XOR,
475       PIXMAN_a8r8g8b8,	0x1abedff,
476       PIXMAN_a8r8g8b8,	0x75520068,
477       PIXMAN_r3g3b2,	0x87
478     },
479     { PIXMAN_OP_DISJOINT_XOR,
480       PIXMAN_a8r8g8b8,	0x10000ff,
481       PIXMAN_a8r8g8b8,	0xff00e652,
482       PIXMAN_r3g3b2,	0x1
483     },
484     { PIXMAN_OP_CONJOINT_ATOP,
485       PIXMAN_a8r8g8b8,	0x16006075,
486       PIXMAN_r5g6b5,	0xc00,
487       PIXMAN_a8r8g8b8,	0x27f0900
488     },
489     { PIXMAN_OP_DISJOINT_ATOP,
490       PIXMAN_a8r8g8b8,	0x200ff00,
491       PIXMAN_a8r8g8b8,	0xd1b83f57,
492       PIXMAN_a4r4g4b4,	0xff75
493     },
494     { PIXMAN_OP_DISJOINT_OUT,
495       PIXMAN_a8r8g8b8,	0x14000c4,
496       PIXMAN_a4r4g4b4,	0x96,
497       PIXMAN_a2r2g2b2,	0x1
498     },
499     { PIXMAN_OP_DISJOINT_IN,
500       PIXMAN_a8r8g8b8,	0x1ff00d1,
501       PIXMAN_r3g3b2,	0x79,
502       PIXMAN_a2r2g2b2,	0x0
503     },
504     { PIXMAN_OP_CONJOINT_ATOP,
505       PIXMAN_a8r8g8b8,	0x1ff00dc,
506       PIXMAN_a4r4g4b4,	0xc5ff,
507       PIXMAN_a2r2g2b2,	0x10
508     },
509     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
510       PIXMAN_a8r8g8b8,	0x1ffffb2,
511       PIXMAN_a8r8g8b8,	0x4cff5700,
512       PIXMAN_r3g3b2,	0x48
513     },
514     { PIXMAN_OP_CONJOINT_XOR,
515       PIXMAN_a8r8g8b8,	0x1327482,
516       PIXMAN_a8r8g8b8,	0x247ff,
517       PIXMAN_a8r8g8b8,	0x82
518     },
519     { PIXMAN_OP_DISJOINT_XOR,
520       PIXMAN_a8r8g8b8,	0x1d0ff00,
521       PIXMAN_r3g3b2,	0xc9,
522       PIXMAN_r5g6b5,	0x240
523     },
524     { PIXMAN_OP_DISJOINT_XOR,
525       PIXMAN_a8r8g8b8,	0x13d35ff,
526       PIXMAN_a2r2g2b2,	0x6d,
527       PIXMAN_r3g3b2,	0x1
528     },
529     { PIXMAN_OP_DISJOINT_OUT,
530       PIXMAN_a8r8g8b8,	0x1ffc6b2,
531       PIXMAN_a8r8g8b8,	0x5abe8e3c,
532       PIXMAN_r5g6b5,	0x5a27
533     },
534     { PIXMAN_OP_DISJOINT_OUT,
535       PIXMAN_a8r8g8b8,	0x15700ff,
536       PIXMAN_r3g3b2,	0xdd,
537       PIXMAN_a8r8g8b8,	0x55
538     },
539     { PIXMAN_OP_DISJOINT_OUT,
540       PIXMAN_a8r8g8b8,	0x1ff11ff,
541       PIXMAN_r3g3b2,	0x30,
542       PIXMAN_r5g6b5,	0x2000
543     },
544     { PIXMAN_OP_DISJOINT_ATOP,
545       PIXMAN_a8r8g8b8,	0x1ff00ff,
546       PIXMAN_a2r2g2b2,	0x6d,
547       PIXMAN_r3g3b2,	0x0
548     },
549     { PIXMAN_OP_DISJOINT_IN,
550       PIXMAN_a8r8g8b8,	0x1421d5f,
551       PIXMAN_a4r4g4b4,	0xff85,
552       PIXMAN_a8r8g8b8,	0x1420f00
553     },
554     { PIXMAN_OP_DISJOINT_IN,
555       PIXMAN_a8r8g8b8,	0x1d2ffff,
556       PIXMAN_r5g6b5,	0xfc,
557       PIXMAN_r5g6b5,	0x1c
558     },
559     { PIXMAN_OP_CONJOINT_ATOP,
560       PIXMAN_a8r8g8b8,	0x1ffff42,
561       PIXMAN_a4r4g4b4,	0x7100,
562       PIXMAN_a4r4g4b4,	0x771
563     },
564     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
565       PIXMAN_a8r8g8b8,	0x25ae3d4,
566       PIXMAN_a8r8g8b8,	0x39ffc99a,
567       PIXMAN_a8r8g8b8,	0x14332f
568     },
569     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
570       PIXMAN_a8r8g8b8,	0x1ff0643,
571       PIXMAN_a8r8g8b8,	0x4c000000,
572       PIXMAN_r5g6b5,	0x4802
573     },
574     { PIXMAN_OP_DISJOINT_IN,
575       PIXMAN_a8r8g8b8,	0x1966a00,
576       PIXMAN_r3g3b2,	0x46,
577       PIXMAN_r5g6b5,	0x0
578     },
579     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
580       PIXMAN_a8r8g8b8,	0x387ff59,
581       PIXMAN_r5g6b5,	0x512c,
582       PIXMAN_r5g6b5,	0x120
583     },
584     { PIXMAN_OP_CONJOINT_XOR,
585       PIXMAN_a8r8g8b8,	0x1f7ffb0,
586       PIXMAN_r5g6b5,	0x63b8,
587       PIXMAN_a8r8g8b8,	0x1000089
588     },
589     { PIXMAN_OP_DISJOINT_IN,
590       PIXMAN_a8r8g8b8,	0x185841c,
591       PIXMAN_a2r2g2b2,	0x5c,
592       PIXMAN_a8r8g8b8,	0x8400
593     },
594     { PIXMAN_OP_DISJOINT_ATOP,
595       PIXMAN_a8r8g8b8,	0x1ffc3ff,
596       PIXMAN_a8r8g8b8,	0xff7b,
597       PIXMAN_a8r8g8b8,	0xff00c300
598     },
599     { PIXMAN_OP_CONJOINT_ATOP_REVERSE,
600       PIXMAN_a8r8g8b8,	0x1ff7500,
601       PIXMAN_a2r2g2b2,	0x47,
602       PIXMAN_a4r4g4b4,	0xff
603     },
604     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
605       PIXMAN_a8r8g8b8,	0x1002361,
606       PIXMAN_a2r2g2b2,	0x7e,
607       PIXMAN_r5g6b5,	0x64
608     },
609     { PIXMAN_OP_SATURATE,
610       PIXMAN_a8r8g8b8,	0x10000b6,
611       PIXMAN_a8r8g8b8,	0x59004463,
612       PIXMAN_a4r4g4b4,	0xffa7
613     },
614     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
615       PIXMAN_a8r8g8b8,	0x1ff5a49,
616       PIXMAN_a8r8g8b8,	0xff3fff2b,
617       PIXMAN_a8r8g8b8,	0x13f000c
618     },
619     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
620       PIXMAN_a8r8g8b8,	0x3ffecfc,
621       PIXMAN_r3g3b2,	0x3c,
622       PIXMAN_r5g6b5,	0x2000
623     },
624     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
625       PIXMAN_a8r8g8b8,	0x1630044,
626       PIXMAN_a2r2g2b2,	0x63,
627       PIXMAN_r3g3b2,	0x20
628     },
629     { PIXMAN_OP_CONJOINT_OUT,
630       PIXMAN_a8r8g8b8,	0x1d2ff58,
631       PIXMAN_a8r8g8b8,	0x8f77ff,
632       PIXMAN_a4r4g4b4,	0x705
633     },
634     { PIXMAN_OP_DISJOINT_OUT,
635       PIXMAN_a8r8g8b8,	0x14dffff,
636       PIXMAN_a2r2g2b2,	0x9a,
637       PIXMAN_a8r8g8b8,	0x1a0000
638     },
639     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
640       PIXMAN_a8r8g8b8,	0x100ff92,
641       PIXMAN_a4r4g4b4,	0x540c,
642       PIXMAN_r5g6b5,	0x2a6
643     },
644     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
645       PIXMAN_a8r8g8b8,	0x1ffffff,
646       PIXMAN_a4r4g4b4,	0xddd5,
647       PIXMAN_a4r4g4b4,	0xdd0
648     },
649     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
650       PIXMAN_a8r8g8b8,	0x1ffffff,
651       PIXMAN_r5g6b5,	0xff8c,
652       PIXMAN_a4r4g4b4,	0xff0
653     },
654     { PIXMAN_OP_DISJOINT_ATOP,
655       PIXMAN_a8r8g8b8,	0x1ffffff,
656       PIXMAN_r3g3b2,	0x66,
657       PIXMAN_r5g6b5,	0x7d1f
658     },
659     { PIXMAN_OP_CONJOINT_ATOP,
660       PIXMAN_a8r8g8b8,	0x1ffff00,
661       PIXMAN_a4r4g4b4,	0xff5b,
662       PIXMAN_a8r8g8b8,	0x5500
663     },
664     { PIXMAN_OP_DISJOINT_XOR,
665       PIXMAN_a8r8g8b8,	0x2ed2dff,
666       PIXMAN_r5g6b5,	0x7ae7,
667       PIXMAN_r3g3b2,	0xce
668     },
669     { PIXMAN_OP_DISJOINT_OUT,
670       PIXMAN_a8r8g8b8,	0x1b13205,
671       PIXMAN_a8r8g8b8,	0x35ffff00,
672       PIXMAN_r5g6b5,	0x2040
673     },
674     { PIXMAN_OP_CONJOINT_IN,
675       PIXMAN_a8r8g8b8,	0x1e60dff,
676       PIXMAN_a4r4g4b4,	0x760f,
677       PIXMAN_a2r2g2b2,	0x11
678     },
679     { PIXMAN_OP_CONJOINT_OUT,
680       PIXMAN_a8r8g8b8,	0x10000ff,
681       PIXMAN_a4r4g4b4,	0x3,
682       PIXMAN_a8r8g8b8,	0x0
683     },
684     { PIXMAN_OP_CONJOINT_ATOP_REVERSE,
685       PIXMAN_a8r8g8b8,	0x100ffff,
686       PIXMAN_a8r8g8b8,	0x6600,
687       PIXMAN_a4r4g4b4,	0x0
688     },
689     { PIXMAN_OP_DISJOINT_OUT,
690       PIXMAN_a8r8g8b8,	0x30000fa,
691       PIXMAN_a4r4g4b4,	0x23b7,
692       PIXMAN_a8r8g8b8,	0x21
693     },
694     { PIXMAN_OP_DISJOINT_OUT,
695       PIXMAN_a8r8g8b8,	0x1ffffff,
696       PIXMAN_r3g3b2,	0x60,
697       PIXMAN_r3g3b2,	0x60
698     },
699     { PIXMAN_OP_CONJOINT_OUT,
700       PIXMAN_a8r8g8b8,	0x3b31b30,
701       PIXMAN_r3g3b2,	0x2e,
702       PIXMAN_a8r8g8b8,	0x3000c20
703     },
704     { PIXMAN_OP_DISJOINT_ATOP,
705       PIXMAN_a8r8g8b8,	0x160ffff,
706       PIXMAN_a4r4g4b4,	0xff42,
707       PIXMAN_r3g3b2,	0xed
708     },
709     { PIXMAN_OP_DISJOINT_OUT,
710       PIXMAN_a8r8g8b8,	0x172ffff,
711       PIXMAN_a4r4g4b4,	0x5100,
712       PIXMAN_r3g3b2,	0x29
713     },
714     { PIXMAN_OP_CONJOINT_ATOP,
715       PIXMAN_a8r8g8b8,	0x16300ff,
716       PIXMAN_a4r4g4b4,	0x5007,
717       PIXMAN_a8r8g8b8,	0x77
718     },
719     { PIXMAN_OP_CONJOINT_IN,
720       PIXMAN_a8r8g8b8,	0x2ffff3a,
721       PIXMAN_a8r8g8b8,	0x26640083,
722       PIXMAN_a4r4g4b4,	0x220
723     },
724     { PIXMAN_OP_DISJOINT_IN,
725       PIXMAN_a8r8g8b8,	0x106ff60,
726       PIXMAN_r5g6b5,	0xdce,
727       PIXMAN_a8r8g8b8,	0x100ba00
728     },
729     { PIXMAN_OP_DISJOINT_IN,
730       PIXMAN_a8r8g8b8,	0x100e7ff,
731       PIXMAN_r5g6b5,	0xa00,
732       PIXMAN_r5g6b5,	0x0
733     },
734     { PIXMAN_OP_CONJOINT_XOR,
735       PIXMAN_a8r8g8b8,	0x2b500f1,
736       PIXMAN_a4r4g4b4,	0x7339,
737       PIXMAN_a8r8g8b8,	0x1000091
738     },
739     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
740       PIXMAN_a8r8g8b8,	0x1ff00ff,
741       PIXMAN_a4r4g4b4,	0xc863,
742       PIXMAN_r5g6b5,	0x6
743     },
744     { PIXMAN_OP_SATURATE,
745       PIXMAN_a8r8g8b8,	0x1ffffca,
746       PIXMAN_a8r8g8b8,	0x8b4cf000,
747       PIXMAN_r3g3b2,	0xd2
748     },
749     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
750       PIXMAN_a8r8g8b8,	0x1fffe00,
751       PIXMAN_r3g3b2,	0x88,
752       PIXMAN_r3g3b2,	0x8
753     },
754     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
755       PIXMAN_a8r8g8b8,	0x16f0000,
756       PIXMAN_a2r2g2b2,	0x59,
757       PIXMAN_r5g6b5,	0x2000
758     },
759     { PIXMAN_OP_CONJOINT_OUT,
760       PIXMAN_a8r8g8b8,	0x377ff43,
761       PIXMAN_a4r4g4b4,	0x2a,
762       PIXMAN_a8r8g8b8,	0x2d
763     },
764     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
765       PIXMAN_a8r8g8b8,	0x11dffff,
766       PIXMAN_r3g3b2,	0xcb,
767       PIXMAN_r3g3b2,	0x8
768     },
769     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
770       PIXMAN_a8r8g8b8,	0x1ffffff,
771       PIXMAN_r5g6b5,	0xbdab,
772       PIXMAN_a4r4g4b4,	0xbb0
773     },
774     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
775       PIXMAN_a8r8g8b8,	0x1ff3343,
776       PIXMAN_a8r8g8b8,	0x7a00ffff,
777       PIXMAN_a2r2g2b2,	0xd
778     },
779     { PIXMAN_OP_DISJOINT_XOR,
780       PIXMAN_a8r8g8b8,	0x1ebff4b,
781       PIXMAN_r3g3b2,	0x26,
782       PIXMAN_r3g3b2,	0x24
783     },
784     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
785       PIXMAN_a8r8g8b8,	0x2c1b3ff,
786       PIXMAN_a8r8g8b8,	0x3000152a,
787       PIXMAN_r3g3b2,	0x24
788     },
789     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
790       PIXMAN_a8r8g8b8,	0x1a7ffff,
791       PIXMAN_r3g3b2,	0x9,
792       PIXMAN_r5g6b5,	0x24a
793     },
794     { PIXMAN_OP_DISJOINT_IN,
795       PIXMAN_a8r8g8b8,	0x4ff00ec,
796       PIXMAN_a8r8g8b8,	0x1da4961e,
797       PIXMAN_a8r8g8b8,	0x0
798     },
799     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
800       PIXMAN_a8r8g8b8,	0x1ff25ff,
801       PIXMAN_a8r8g8b8,	0x64b0ff00,
802       PIXMAN_r5g6b5,	0x606c
803     },
804     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
805       PIXMAN_a8r8g8b8,	0x1fd62ff,
806       PIXMAN_a4r4g4b4,	0x76b1,
807       PIXMAN_r5g6b5,	0x716e
808     },
809     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
810       PIXMAN_a8r8g8b8,	0x194ffde,
811       PIXMAN_r5g6b5,	0x47ff,
812       PIXMAN_r5g6b5,	0x2000
813     },
814     { PIXMAN_OP_DISJOINT_XOR,
815       PIXMAN_a8r8g8b8,	0x108ffff,
816       PIXMAN_a8r8g8b8,	0xffffff66,
817       PIXMAN_r5g6b5,	0xff0c
818     },
819     { PIXMAN_OP_DISJOINT_XOR,
820       PIXMAN_a8r8g8b8,	0x5ffffff,
821       PIXMAN_r5g6b5,	0xdf,
822       PIXMAN_r5g6b5,	0xc0
823     },
824     { PIXMAN_OP_CONJOINT_IN,
825       PIXMAN_a8r8g8b8,	0x100ad31,
826       PIXMAN_a2r2g2b2,	0xc5,
827       PIXMAN_a4r4g4b4,	0x31
828     },
829     { PIXMAN_OP_DISJOINT_IN,
830       PIXMAN_a8r8g8b8,	0x1ffff34,
831       PIXMAN_a8r8g8b8,	0x6a57c491,
832       PIXMAN_r3g3b2,	0x0
833     },
834     { PIXMAN_OP_DISJOINT_IN,
835       PIXMAN_a8r8g8b8,	0x1fffff1,
836       PIXMAN_r3g3b2,	0xaf,
837       PIXMAN_r5g6b5,	0xb01e
838     },
839     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
840       PIXMAN_a8r8g8b8,	0x1ff67ff,
841       PIXMAN_a4r4g4b4,	0x50ff,
842       PIXMAN_a8r8g8b8,	0x552255
843     },
844     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
845       PIXMAN_a8r8g8b8,	0x11bffff,
846       PIXMAN_r5g6b5,	0xef0c,
847       PIXMAN_r5g6b5,	0xc
848     },
849     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
850       PIXMAN_a8r8g8b8,	0x16cf37d,
851       PIXMAN_a4r4g4b4,	0xc561,
852       PIXMAN_r5g6b5,	0x2301
853     },
854     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
855       PIXMAN_a8r8g8b8,	0x2ffff9c,
856       PIXMAN_a4r4g4b4,	0x2700,
857       PIXMAN_a8r8g8b8,	0xffff
858     },
859     { PIXMAN_OP_DISJOINT_IN,
860       PIXMAN_a8r8g8b8,	0x200f322,
861       PIXMAN_a8r8g8b8,	0xff3c7e,
862       PIXMAN_r5g6b5,	0x2
863     },
864     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
865       PIXMAN_a8r8g8b8,	0x1f14a33,
866       PIXMAN_a8r8g8b8,	0x26cff79,
867       PIXMAN_r3g3b2,	0xf9
868     },
869     { PIXMAN_OP_CONJOINT_ATOP,
870       PIXMAN_a8r8g8b8,	0x11d922c,
871       PIXMAN_r3g3b2,	0xab,
872       PIXMAN_a4r4g4b4,	0x20
873     },
874     { PIXMAN_OP_DISJOINT_OUT,
875       PIXMAN_a8r8g8b8,	0x100ffff,
876       PIXMAN_a2r2g2b2,	0xf5,
877       PIXMAN_r3g3b2,	0x9
878     },
879     { PIXMAN_OP_DISJOINT_XOR,
880       PIXMAN_a8r8g8b8,	0x18697ff,
881       PIXMAN_a4r4g4b4,	0x5700,
882       PIXMAN_r5g6b5,	0xfa6d
883     },
884     { PIXMAN_OP_CONJOINT_IN,
885       PIXMAN_a8r8g8b8,	0x12000fc,
886       PIXMAN_a2r2g2b2,	0x41,
887       PIXMAN_a8r8g8b8,	0xb0054
888     },
889     { PIXMAN_OP_DISJOINT_XOR,
890       PIXMAN_a8r8g8b8,	0x100ccff,
891       PIXMAN_a4r4g4b4,	0x657e,
892       PIXMAN_r5g6b5,	0x3b1
893     },
894     { PIXMAN_OP_DISJOINT_OUT,
895       PIXMAN_a8r8g8b8,	0x1ffff1f,
896       PIXMAN_a2r2g2b2,	0xa6,
897       PIXMAN_r5g6b5,	0x2a0
898     },
899     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
900       PIXMAN_a8r8g8b8,	0x11fff82,
901       PIXMAN_a4r4g4b4,	0xff94,
902       PIXMAN_a8r8g8b8,	0x1010123
903     },
904     { PIXMAN_OP_CONJOINT_XOR,
905       PIXMAN_a8r8g8b8,	0x154bd19,
906       PIXMAN_a4r4g4b4,	0xb600,
907       PIXMAN_a8r8g8b8,	0x1000000
908     },
909     { PIXMAN_OP_DISJOINT_IN,
910       PIXMAN_a8r8g8b8,	0x10000ff,
911       PIXMAN_r5g6b5,	0x8e,
912       PIXMAN_r5g6b5,	0x0
913     },
914     { PIXMAN_OP_DISJOINT_ATOP,
915       PIXMAN_a8r8g8b8,	0x21aff00,
916       PIXMAN_r5g6b5,	0x71ff,
917       PIXMAN_r3g3b2,	0xf2
918     },
919     { PIXMAN_OP_DISJOINT_OUT,
920       PIXMAN_a8r8g8b8,	0x2ad00a7,
921       PIXMAN_a4r4g4b4,	0x23,
922       PIXMAN_a8r8g8b8,	0x21
923     },
924     { PIXMAN_OP_SATURATE,
925       PIXMAN_a8r8g8b8,	0x100ff00,
926       PIXMAN_r5g6b5,	0xb343,
927       PIXMAN_r3g3b2,	0xc
928     },
929     { PIXMAN_OP_SATURATE,
930       PIXMAN_a8r8g8b8,	0x3ffa500,
931       PIXMAN_a8r8g8b8,	0x1af5b4,
932       PIXMAN_a8r8g8b8,	0xff1abc00
933     },
934     { PIXMAN_OP_CONJOINT_OUT,
935       PIXMAN_a8r8g8b8,	0x2ffff11,
936       PIXMAN_a8r8g8b8,	0x9f334f,
937       PIXMAN_a8r8g8b8,	0x9f0005
938     },
939     { PIXMAN_OP_CONJOINT_IN,
940       PIXMAN_a8r8g8b8,	0x2c75971,
941       PIXMAN_a4r4g4b4,	0x3900,
942       PIXMAN_a4r4g4b4,	0x211
943     },
944     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
945       PIXMAN_a8r8g8b8,	0x100ff49,
946       PIXMAN_a8r8g8b8,	0x813dc25e,
947       PIXMAN_r5g6b5,	0x667d
948     },
949     { PIXMAN_OP_DISJOINT_IN,
950       PIXMAN_a8r8g8b8,	0x10000ff,
951       PIXMAN_a4r4g4b4,	0x4bff,
952       PIXMAN_a8r8g8b8,	0x0
953     },
954     { PIXMAN_OP_DISJOINT_XOR,
955       PIXMAN_a8r8g8b8,	0x20ebcff,
956       PIXMAN_r5g6b5,	0xc9ff,
957       PIXMAN_r3g3b2,	0x4
958     },
959     { PIXMAN_OP_DISJOINT_XOR,
960       PIXMAN_a8r8g8b8,	0x1ffff00,
961       PIXMAN_r5g6b5,	0x51ff,
962       PIXMAN_r3g3b2,	0x44
963     },
964     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
965       PIXMAN_a8r8g8b8,	0x1ffd158,
966       PIXMAN_a8r8g8b8,	0x7d88ffce,
967       PIXMAN_r3g3b2,	0x6c
968     },
969     { PIXMAN_OP_SATURATE,
970       PIXMAN_a8r8g8b8,	0x1425e21,
971       PIXMAN_a2r2g2b2,	0xa5,
972       PIXMAN_r5g6b5,	0xe1
973     },
974     { PIXMAN_OP_DISJOINT_OUT,
975       PIXMAN_a8r8g8b8,	0x14b00ff,
976       PIXMAN_a8r8g8b8,	0xbe95004b,
977       PIXMAN_r5g6b5,	0x9
978     },
979     { PIXMAN_OP_CONJOINT_OUT,
980       PIXMAN_a8r8g8b8,	0x14fc0cd,
981       PIXMAN_a8r8g8b8,	0x2d12b78b,
982       PIXMAN_a8r8g8b8,	0x0
983     },
984     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
985       PIXMAN_a8r8g8b8,	0x1ff8230,
986       PIXMAN_a2r2g2b2,	0x4c,
987       PIXMAN_r3g3b2,	0x44
988     },
989     { PIXMAN_OP_CONJOINT_ATOP,
990       PIXMAN_a8r8g8b8,	0x1ff31ff,
991       PIXMAN_a2r2g2b2,	0x14,
992       PIXMAN_a8r8g8b8,	0x551000
993     },
994     { PIXMAN_OP_CONJOINT_IN,
995       PIXMAN_a8r8g8b8,	0x17800ff,
996       PIXMAN_a4r4g4b4,	0x22,
997       PIXMAN_a8r8g8b8,	0x22
998     },
999     { PIXMAN_OP_SATURATE,
1000       PIXMAN_a8r8g8b8,	0x14500ff,
1001       PIXMAN_a4r4g4b4,	0x6400,
1002       PIXMAN_r5g6b5,	0xff78
1003     },
1004     { PIXMAN_OP_DISJOINT_IN,
1005       PIXMAN_a8r8g8b8,	0x100ff9d,
1006       PIXMAN_r3g3b2,	0xcd,
1007       PIXMAN_r3g3b2,	0x0
1008     },
1009     { PIXMAN_OP_CONJOINT_ATOP,
1010       PIXMAN_a8r8g8b8,	0x3ff00ff,
1011       PIXMAN_a4r4g4b4,	0xf269,
1012       PIXMAN_a4r4g4b4,	0x200
1013     },
1014     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
1015       PIXMAN_a8r8g8b8,	0x2ff28b8,
1016       PIXMAN_a4r4g4b4,	0x33ff,
1017       PIXMAN_r5g6b5,	0x3000
1018     },
1019     { PIXMAN_OP_DISJOINT_OUT,
1020       PIXMAN_a8r8g8b8,	0x1006278,
1021       PIXMAN_a8r8g8b8,	0x8a7f18,
1022       PIXMAN_r3g3b2,	0x4
1023     },
1024     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
1025       PIXMAN_a8r8g8b8,	0x1ffcb00,
1026       PIXMAN_a4r4g4b4,	0x7900,
1027       PIXMAN_a2r2g2b2,	0x14
1028     },
1029     { PIXMAN_OP_CONJOINT_OUT,
1030       PIXMAN_a8r8g8b8,	0x115ff00,
1031       PIXMAN_a8r8g8b8,	0x508d,
1032       PIXMAN_a4r4g4b4,	0x0
1033     },
1034     { PIXMAN_OP_SATURATE,
1035       PIXMAN_a8r8g8b8,	0x3ff30b5,
1036       PIXMAN_r5g6b5,	0x2e60,
1037       PIXMAN_r3g3b2,	0x20
1038     },
1039     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
1040       PIXMAN_a8r8g8b8,	0x182fffb,
1041       PIXMAN_r3g3b2,	0x1,
1042       PIXMAN_a8r8g8b8,	0x1000054
1043     },
1044     { PIXMAN_OP_CONJOINT_ATOP,
1045       PIXMAN_a8r8g8b8,	0x16fff00,
1046       PIXMAN_r5g6b5,	0x7bc0,
1047       PIXMAN_a8r8g8b8,	0x367900
1048     },
1049     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
1050       PIXMAN_a8r8g8b8,	0x1d95dd8,
1051       PIXMAN_a4r4g4b4,	0xfff5,
1052       PIXMAN_r5g6b5,	0xff09
1053     },
1054     { PIXMAN_OP_DISJOINT_IN,
1055       PIXMAN_a8r8g8b8,	0x1ff3cdc,
1056       PIXMAN_a8r8g8b8,	0x3bda45ff,
1057       PIXMAN_r3g3b2,	0x0
1058     },
1059     { PIXMAN_OP_DISJOINT_ATOP,
1060       PIXMAN_a8r8g8b8,	0x13900f8,
1061       PIXMAN_a8r8g8b8,	0x7e00ffff,
1062       PIXMAN_a4r4g4b4,	0xff00
1063     },
1064     { PIXMAN_OP_DISJOINT_XOR,
1065       PIXMAN_a8r8g8b8,	0x10ea9ff,
1066       PIXMAN_a8r8g8b8,	0xff34ff22,
1067       PIXMAN_r5g6b5,	0xff52
1068     },
1069     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
1070       PIXMAN_a8r8g8b8,	0x2002e99,
1071       PIXMAN_a4r4g4b4,	0x3000,
1072       PIXMAN_r5g6b5,	0x43
1073     },
1074     { PIXMAN_OP_DISJOINT_ATOP,
1075       PIXMAN_a8r8g8b8,	0x100ffff,
1076       PIXMAN_r5g6b5,	0x19ff,
1077       PIXMAN_r3g3b2,	0x3
1078     },
1079     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
1080       PIXMAN_a8r8g8b8,	0x1ffff00,
1081       PIXMAN_a8r8g8b8,	0xffff4251,
1082       PIXMAN_a2r2g2b2,	0x4
1083     },
1084     { PIXMAN_OP_CONJOINT_ATOP,
1085       PIXMAN_a8r8g8b8,	0x121c9ff,
1086       PIXMAN_a4r4g4b4,	0xd2,
1087       PIXMAN_a4r4g4b4,	0x2
1088     },
1089     { PIXMAN_OP_CONJOINT_IN,
1090       PIXMAN_a8r8g8b8,	0x100ff4d,
1091       PIXMAN_a2r2g2b2,	0x5e,
1092       PIXMAN_a2r2g2b2,	0x4
1093     },
1094     { PIXMAN_OP_DISJOINT_OUT,
1095       PIXMAN_a8r8g8b8,	0x29ab4ff,
1096       PIXMAN_r3g3b2,	0x47,
1097       PIXMAN_a8r8g8b8,	0x1900
1098     },
1099     { PIXMAN_OP_CONJOINT_ATOP_REVERSE,
1100       PIXMAN_a8r8g8b8,	0x1ffc1ac,
1101       PIXMAN_a8r8g8b8,	0xee4ed0ac,
1102       PIXMAN_a8r8g8b8,	0x1009d74
1103     },
1104     { PIXMAN_OP_CONJOINT_IN_REVERSE,
1105       PIXMAN_a8r8g8b8,	0x269dffdc,
1106       PIXMAN_a8r8g8b8,	0xff0b00e0,
1107       PIXMAN_a8r8g8b8,	0x2a200ff
1108     },
1109     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
1110       PIXMAN_a8r8g8b8,	0x2ffffff,
1111       PIXMAN_a4r4g4b4,	0x3200,
1112       PIXMAN_r3g3b2,	0x24
1113     },
1114     { PIXMAN_OP_DISJOINT_OUT,
1115       PIXMAN_a8r8g8b8,	0x100ffed,
1116       PIXMAN_a8r8g8b8,	0x67004eff,
1117       PIXMAN_a2r2g2b2,	0x5
1118     },
1119     { PIXMAN_OP_DISJOINT_XOR,
1120       PIXMAN_a8r8g8b8,	0x2fffd6a,
1121       PIXMAN_a8r8g8b8,	0xc9003bff,
1122       PIXMAN_r3g3b2,	0x4
1123     },
1124     { PIXMAN_OP_DISJOINT_XOR,
1125       PIXMAN_a8r8g8b8,	0x253ff00,
1126       PIXMAN_r5g6b5,	0xff,
1127       PIXMAN_r5g6b5,	0xe0
1128     },
1129     { PIXMAN_OP_DISJOINT_OUT,
1130       PIXMAN_a8r8g8b8,	0x13600ad,
1131       PIXMAN_r5g6b5,	0x35ae,
1132       PIXMAN_r3g3b2,	0x1
1133     },
1134     { PIXMAN_OP_DISJOINT_IN,
1135       PIXMAN_a8r8g8b8,	0x1ffa8ff,
1136       PIXMAN_a8r8g8b8,	0xff5f00,
1137       PIXMAN_r3g3b2,	0xe0
1138     },
1139     { PIXMAN_OP_DISJOINT_OUT,
1140       PIXMAN_a8r8g8b8,	0x10067ff,
1141       PIXMAN_a4r4g4b4,	0x450d,
1142       PIXMAN_a2r2g2b2,	0x1
1143     },
1144     { PIXMAN_OP_SATURATE,
1145       PIXMAN_a8r8g8b8,	0x1ff01ff,
1146       PIXMAN_r3g3b2,	0x77,
1147       PIXMAN_r5g6b5,	0x6800
1148     },
1149     { PIXMAN_OP_CONJOINT_ATOP,
1150       PIXMAN_a8r8g8b8,	0x11da4ff,
1151       PIXMAN_r5g6b5,	0x83c9,
1152       PIXMAN_a4r4g4b4,	0x44
1153     },
1154     { PIXMAN_OP_DISJOINT_OUT,
1155       PIXMAN_a8r8g8b8,	0x1ffd4ff,
1156       PIXMAN_r3g3b2,	0xaa,
1157       PIXMAN_r3g3b2,	0x4
1158     },
1159     { PIXMAN_OP_CONJOINT_IN,
1160       PIXMAN_a8r8g8b8,	0x1ff0000,
1161       PIXMAN_a8r8g8b8,	0x71002a,
1162       PIXMAN_a4r4g4b4,	0x700
1163     },
1164     { PIXMAN_OP_DISJOINT_OUT,
1165       PIXMAN_a8r8g8b8,	0x1d7ffff,
1166       PIXMAN_r5g6b5,	0x3696,
1167       PIXMAN_a4r4g4b4,	0x200
1168     },
1169     { PIXMAN_OP_CONJOINT_IN,
1170       PIXMAN_a8r8g8b8,	0x1ffffc8,
1171       PIXMAN_r5g6b5,	0xe900,
1172       PIXMAN_a8r8g8b8,	0x2000
1173     },
1174     { PIXMAN_OP_CONJOINT_ATOP_REVERSE,
1175       PIXMAN_a8r8g8b8,	0x1ff004a,
1176       PIXMAN_r3g3b2,	0x48,
1177       PIXMAN_a8r8g8b8,	0x1000000
1178     },
1179     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
1180       PIXMAN_a8r8g8b8,	0x3ffe969,
1181       PIXMAN_r5g6b5,	0xff,
1182       PIXMAN_r5g6b5,	0xc0
1183     },
1184     { PIXMAN_OP_CONJOINT_XOR,
1185       PIXMAN_a8r8g8b8,	0x300ff73,
1186       PIXMAN_r5g6b5,	0xff,
1187       PIXMAN_a8r8g8b8,	0x3000073
1188     },
1189     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
1190       PIXMAN_a8r8g8b8,	0x2ff93ff,
1191       PIXMAN_a8r8g8b8,	0x61fc7d2b,
1192       PIXMAN_a4r4g4b4,	0x2
1193     },
1194     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
1195       PIXMAN_a8r8g8b8,	0x11bffff,
1196       PIXMAN_a4r4g4b4,	0xffb4,
1197       PIXMAN_r5g6b5,	0x8
1198     },
1199     { PIXMAN_OP_CONJOINT_IN,
1200       PIXMAN_a8r8g8b8,	0x1e9e100,
1201       PIXMAN_a2r2g2b2,	0x56,
1202       PIXMAN_a2r2g2b2,	0x14
1203     },
1204     { PIXMAN_OP_SATURATE,
1205       PIXMAN_a8r8g8b8,	0x3ffb656,
1206       PIXMAN_r3g3b2,	0x4,
1207       PIXMAN_a4r4g4b4,	0xff99
1208     },
1209     { PIXMAN_OP_DISJOINT_IN,
1210       PIXMAN_a8r8g8b8,	0x100ff00,
1211       PIXMAN_r3g3b2,	0x68,
1212       PIXMAN_r3g3b2,	0x0
1213     },
1214     { PIXMAN_OP_SATURATE,
1215       PIXMAN_a8r8g8b8,	0x1006dff,
1216       PIXMAN_a2r2g2b2,	0x5d,
1217       PIXMAN_a8r8g8b8,	0xff00ff55
1218     },
1219     { PIXMAN_OP_CONJOINT_IN,
1220       PIXMAN_a8r8g8b8,	0x11c00cb,
1221       PIXMAN_a2r2g2b2,	0x44,
1222       PIXMAN_a4r4g4b4,	0x4
1223     },
1224     { PIXMAN_OP_CONJOINT_ATOP,
1225       PIXMAN_a8r8g8b8,	0x1d0ff86,
1226       PIXMAN_r3g3b2,	0x5c,
1227       PIXMAN_a8r8g8b8,	0x3c0000
1228     },
1229     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
1230       PIXMAN_a8r8g8b8,	0x2f25fff,
1231       PIXMAN_r3g3b2,	0x36,
1232       PIXMAN_a8r8g8b8,	0x2a444aa
1233     },
1234     { PIXMAN_OP_DISJOINT_ATOP,
1235       PIXMAN_a8r8g8b8,	0x134af85,
1236       PIXMAN_r3g3b2,	0x29,
1237       PIXMAN_r5g6b5,	0xf300
1238     },
1239     { PIXMAN_OP_CONJOINT_ATOP,
1240       PIXMAN_a8r8g8b8,	0x13398af,
1241       PIXMAN_r3g3b2,	0xa5,
1242       PIXMAN_a4r4g4b4,	0x13
1243     },
1244     { PIXMAN_OP_DISJOINT_OUT,
1245       PIXMAN_a8r8g8b8,	0x1ff57ff,
1246       PIXMAN_a4r4g4b4,	0x252c,
1247       PIXMAN_r3g3b2,	0x40
1248     },
1249     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
1250       PIXMAN_a8r8g8b8,	0x115ffff,
1251       PIXMAN_r5g6b5,	0xffe3,
1252       PIXMAN_r5g6b5,	0x3303
1253     },
1254     { PIXMAN_OP_DISJOINT_OUT,
1255       PIXMAN_a8r8g8b8,	0x1ffff00,
1256       PIXMAN_r5g6b5,	0x6300,
1257       PIXMAN_r3g3b2,	0x6c
1258     },
1259     { PIXMAN_OP_CONJOINT_XOR,
1260       PIXMAN_a8r8g8b8,	0x4ccff9c,
1261       PIXMAN_r5g6b5,	0xcc,
1262       PIXMAN_a8r8g8b8,	0x400003d
1263     },
1264     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
1265       PIXMAN_a8r8g8b8,	0x1ffc6dd,
1266       PIXMAN_r5g6b5,	0x9bff,
1267       PIXMAN_r5g6b5,	0x5bff
1268     },
1269     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
1270       PIXMAN_a8r8g8b8,	0x14fff95,
1271       PIXMAN_r3g3b2,	0x46,
1272       PIXMAN_a8r8g8b8,	0x1000063
1273     },
1274     { PIXMAN_OP_DISJOINT_OUT,
1275       PIXMAN_a8r8g8b8,	0x1e6b700,
1276       PIXMAN_r5g6b5,	0xc1ff,
1277       PIXMAN_r3g3b2,	0x4
1278     },
1279     { PIXMAN_OP_DISJOINT_OUT,
1280       PIXMAN_a8r8g8b8,	0x1ffff54,
1281       PIXMAN_a8r8g8b8,	0x2e00ff,
1282       PIXMAN_r5g6b5,	0x2800
1283     },
1284     { PIXMAN_OP_DISJOINT_OUT,
1285       PIXMAN_a8r8g8b8,	0x3ffffff,
1286       PIXMAN_r5g6b5,	0xff,
1287       PIXMAN_r5g6b5,	0xe0
1288     },
1289     { PIXMAN_OP_DISJOINT_ATOP,
1290       PIXMAN_a8r8g8b8,	0x1003550,
1291       PIXMAN_r5g6b5,	0xffcc,
1292       PIXMAN_r5g6b5,	0x1e0
1293     },
1294     { PIXMAN_OP_DISJOINT_XOR,
1295       PIXMAN_a8r8g8b8,	0x1ffff74,
1296       PIXMAN_r3g3b2,	0x28,
1297       PIXMAN_a8r8g8b8,	0xfe2f49d7
1298     },
1299     { PIXMAN_OP_DISJOINT_XOR,
1300       PIXMAN_a8r8g8b8,	0x1e35100,
1301       PIXMAN_r3g3b2,	0x57,
1302       PIXMAN_r5g6b5,	0x4000
1303     },
1304     { PIXMAN_OP_DISJOINT_IN,
1305       PIXMAN_a8r8g8b8,	0x268ffa3,
1306       PIXMAN_a4r4g4b4,	0x30,
1307       PIXMAN_a4r4g4b4,	0x0
1308     },
1309     { PIXMAN_OP_DISJOINT_ATOP,
1310       PIXMAN_a8r8g8b8,	0x35700f8,
1311       PIXMAN_r5g6b5,	0xa4,
1312       PIXMAN_r5g6b5,	0x0
1313     },
1314     { PIXMAN_OP_CONJOINT_ATOP,
1315       PIXMAN_a8r8g8b8,	0x3ce1dff,
1316       PIXMAN_r5g6b5,	0x2a5e,
1317       PIXMAN_a8r8g8b8,	0x210000
1318     },
1319     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
1320       PIXMAN_a8r8g8b8,	0x494a7ff,
1321       PIXMAN_a8r8g8b8,	0x1bffe400,
1322       PIXMAN_a8r8g8b8,	0x0
1323     },
1324     { PIXMAN_OP_SATURATE,
1325       PIXMAN_a8r8g8b8,	0x10026d9,
1326       PIXMAN_a8r8g8b8,	0xec00621f,
1327       PIXMAN_r5g6b5,	0x63
1328     },
1329     { PIXMAN_OP_CONJOINT_IN,
1330       PIXMAN_a8r8g8b8,	0x100ff99,
1331       PIXMAN_a8r8g8b8,	0xf334ff,
1332       PIXMAN_a4r4g4b4,	0x30
1333     },
1334     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
1335       PIXMAN_a8r8g8b8,	0x2ffc200,
1336       PIXMAN_a8r8g8b8,	0x1e0000ff,
1337       PIXMAN_a8r8g8b8,	0x1e1700
1338     },
1339     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
1340       PIXMAN_a8r8g8b8,	0x1ff00ff,
1341       PIXMAN_r3g3b2,	0x4b,
1342       PIXMAN_r5g6b5,	0x4818
1343     },
1344     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
1345       PIXMAN_a8r8g8b8,	0x2e800ff,
1346       PIXMAN_a4r4g4b4,	0xd3,
1347       PIXMAN_a4r4g4b4,	0xec
1348     },
1349     { PIXMAN_OP_DISJOINT_IN,
1350       PIXMAN_a8r8g8b8,	0x19a001f,
1351       PIXMAN_r3g3b2,	0x76,
1352       PIXMAN_r3g3b2,	0x0
1353     },
1354     { PIXMAN_OP_DISJOINT_OUT,
1355       PIXMAN_a8r8g8b8,	0x1cb00c3,
1356       PIXMAN_a4r4g4b4,	0x5cff,
1357       PIXMAN_r5g6b5,	0x4008
1358     },
1359     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
1360       PIXMAN_a8r8g8b8,	0x1ff0000,
1361       PIXMAN_r3g3b2,	0x2a,
1362       PIXMAN_r5g6b5,	0xc5fb
1363     },
1364     { PIXMAN_OP_DISJOINT_ATOP,
1365       PIXMAN_a8r8g8b8,	0x1ffffff,
1366       PIXMAN_a8r8g8b8,	0xea005a88,
1367       PIXMAN_r3g3b2,	0xb3
1368     },
1369     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
1370       PIXMAN_a8r8g8b8,	0x100ffea,
1371       PIXMAN_a4r4g4b4,	0x54eb,
1372       PIXMAN_a8r8g8b8,	0x0
1373     },
1374     { PIXMAN_OP_DISJOINT_OUT,
1375       PIXMAN_a8r8g8b8,	0x179ffff,
1376       PIXMAN_r3g3b2,	0xa4,
1377       PIXMAN_a8r8g8b8,	0x2400
1378     },
1379     { PIXMAN_OP_DISJOINT_XOR,
1380       PIXMAN_a8r8g8b8,	0x17ad226,
1381       PIXMAN_r3g3b2,	0xa4,
1382       PIXMAN_r5g6b5,	0xe0
1383     },
1384     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
1385       PIXMAN_a8r8g8b8,	0x100ff01,
1386       PIXMAN_a2r2g2b2,	0x25,
1387       PIXMAN_a4r4g4b4,	0x50
1388     },
1389     { PIXMAN_OP_DISJOINT_IN,
1390       PIXMAN_a8r8g8b8,	0x20000ff,
1391       PIXMAN_a8r8g8b8,	0x2b00c127,
1392       PIXMAN_r5g6b5,	0x0
1393     },
1394     { PIXMAN_OP_SATURATE,
1395       PIXMAN_a8r8g8b8,	0x200ff96,
1396       PIXMAN_a4r4g4b4,	0x2300,
1397       PIXMAN_r3g3b2,	0x6
1398     },
1399     { PIXMAN_OP_DISJOINT_XOR,
1400       PIXMAN_a8r8g8b8,	0x200ffff,
1401       PIXMAN_r3g3b2,	0x87,
1402       PIXMAN_r5g6b5,	0x5bc8
1403     },
1404     { PIXMAN_OP_CONJOINT_XOR,
1405       PIXMAN_a8r8g8b8,	0x1fffff2,
1406       PIXMAN_r3g3b2,	0x7e,
1407       PIXMAN_a2r2g2b2,	0xe
1408     },
1409     { PIXMAN_OP_SATURATE,
1410       PIXMAN_a8r8g8b8,	0x1ff8b00,
1411       PIXMAN_a4r4g4b4,	0xd500,
1412       PIXMAN_r3g3b2,	0x40
1413     },
1414     { PIXMAN_OP_CONJOINT_XOR,
1415       PIXMAN_a8r8g8b8,	0x1ffffff,
1416       PIXMAN_a8r8g8b8,	0x1bff38,
1417       PIXMAN_a4r4g4b4,	0xf0
1418     },
1419     { PIXMAN_OP_CONJOINT_ATOP_REVERSE,
1420       PIXMAN_a8r8g8b8,	0x158ff39,
1421       PIXMAN_a4r4g4b4,	0x75dd,
1422       PIXMAN_a8r8g8b8,	0xdd31
1423     },
1424     { PIXMAN_OP_DISJOINT_XOR,
1425       PIXMAN_a8r8g8b8,	0x1009b70,
1426       PIXMAN_a4r4g4b4,	0xff40,
1427       PIXMAN_r3g3b2,	0x4
1428     },
1429     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
1430       PIXMAN_a8r8g8b8,	0x12fb43f,
1431       PIXMAN_a4r4g4b4,	0x69ff,
1432       PIXMAN_a2r2g2b2,	0x4
1433     },
1434     { PIXMAN_OP_DISJOINT_IN,
1435       PIXMAN_a8r8g8b8,	0x1ffff95,
1436       PIXMAN_a2r2g2b2,	0x84,
1437       PIXMAN_r5g6b5,	0x0
1438     },
1439     { PIXMAN_OP_DISJOINT_OUT,
1440       PIXMAN_a8r8g8b8,	0x200d188,
1441       PIXMAN_r5g6b5,	0xde6,
1442       PIXMAN_r5g6b5,	0x3
1443     },
1444     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
1445       PIXMAN_a8r8g8b8,	0x2c70000,
1446       PIXMAN_r5g6b5,	0x24fa,
1447       PIXMAN_a8r8g8b8,	0x21a0000
1448     },
1449     { PIXMAN_OP_CONJOINT_OUT,
1450       PIXMAN_a8r8g8b8,	0x100ff24,
1451       PIXMAN_a4r4g4b4,	0x835,
1452       PIXMAN_a4r4g4b4,	0x0
1453     },
1454     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
1455       PIXMAN_a8r8g8b8,	0x10000cd,
1456       PIXMAN_a2r2g2b2,	0x7f,
1457       PIXMAN_a2r2g2b2,	0x1
1458     },
1459     { PIXMAN_OP_SATURATE,
1460       PIXMAN_a8r8g8b8,	0x379ffff,
1461       PIXMAN_a8r8g8b8,	0x23ffff00,
1462       PIXMAN_r5g6b5,	0x4eda
1463     },
1464     { PIXMAN_OP_SATURATE,
1465       PIXMAN_a8r8g8b8,	0x172e3ff,
1466       PIXMAN_r3g3b2,	0xa6,
1467       PIXMAN_r5g6b5,	0x100
1468     },
1469     { PIXMAN_OP_DISJOINT_IN,
1470       PIXMAN_a8r8g8b8,	0x100f5ad,
1471       PIXMAN_a4r4g4b4,	0x7908,
1472       PIXMAN_a2r2g2b2,	0x0
1473     },
1474     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
1475       PIXMAN_a8r8g8b8,	0x100fff9,
1476       PIXMAN_a2r2g2b2,	0xf1,
1477       PIXMAN_r3g3b2,	0x1
1478     },
1479     { PIXMAN_OP_CONJOINT_XOR,
1480       PIXMAN_a8r8g8b8,	0x1abff00,
1481       PIXMAN_r5g6b5,	0x31ff,
1482       PIXMAN_a8r8g8b8,	0x1000000
1483     },
1484     { PIXMAN_OP_DISJOINT_XOR,
1485       PIXMAN_a8r8g8b8,	0x112ffd1,
1486       PIXMAN_r3g3b2,	0x9,
1487       PIXMAN_a2r2g2b2,	0xdd
1488     },
1489     { PIXMAN_OP_CONJOINT_IN,
1490       PIXMAN_a8r8g8b8,	0x100ffbf,
1491       PIXMAN_r3g3b2,	0x2c,
1492       PIXMAN_a4r4g4b4,	0x60
1493     },
1494     { PIXMAN_OP_DISJOINT_OUT,
1495       PIXMAN_a8r8g8b8,	0x1ffb7ff,
1496       PIXMAN_r3g3b2,	0x6b,
1497       PIXMAN_a4r4g4b4,	0x630
1498     },
1499     { PIXMAN_OP_SATURATE,
1500       PIXMAN_a8r8g8b8,	0x20005ff,
1501       PIXMAN_a4r4g4b4,	0x8462,
1502       PIXMAN_r5g6b5,	0xb1e8
1503     },
1504     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
1505       PIXMAN_a8r8g8b8,	0x1ff5b00,
1506       PIXMAN_r5g6b5,	0x70ff,
1507       PIXMAN_r3g3b2,	0x60
1508     },
1509     { PIXMAN_OP_CONJOINT_ATOP_REVERSE,
1510       PIXMAN_a8r8g8b8,	0x2ffffc3,
1511       PIXMAN_r3g3b2,	0x39,
1512       PIXMAN_a8r8g8b8,	0x200db41
1513     },
1514     { PIXMAN_OP_CONJOINT_OUT,
1515       PIXMAN_a8r8g8b8,	0x306ffff,
1516       PIXMAN_a8r8g8b8,	0xdcffff1f,
1517       PIXMAN_a8r8g8b8,	0x306ff00
1518     },
1519     { PIXMAN_OP_DISJOINT_IN,
1520       PIXMAN_a8r8g8b8,	0x193daff,
1521       PIXMAN_a8r8g8b8,	0x69000000,
1522       PIXMAN_r3g3b2,	0x0
1523     },
1524     { PIXMAN_OP_SATURATE,
1525       PIXMAN_a8r8g8b8,	0x2a200ff,
1526       PIXMAN_a8r8g8b8,	0x183aff00,
1527       PIXMAN_r5g6b5,	0x2000
1528     },
1529     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
1530       PIXMAN_a8r8g8b8,	0x100f1a5,
1531       PIXMAN_a8r8g8b8,	0xb5fc21ff,
1532       PIXMAN_r5g6b5,	0xfe00
1533     },
1534     { PIXMAN_OP_SATURATE,
1535       PIXMAN_a8r8g8b8,	0x1630019,
1536       PIXMAN_a8r8g8b8,	0x6affc400,
1537       PIXMAN_r5g6b5,	0x56ff
1538     },
1539     { PIXMAN_OP_DISJOINT_OUT,
1540       PIXMAN_a8r8g8b8,	0x1ff8bc2,
1541       PIXMAN_r3g3b2,	0xee,
1542       PIXMAN_r5g6b5,	0x1c0
1543     },
1544     { PIXMAN_OP_SATURATE,
1545       PIXMAN_a8r8g8b8,	0x260ffff,
1546       PIXMAN_a4r4g4b4,	0x3f00,
1547       PIXMAN_r3g3b2,	0x4
1548     },
1549     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
1550       PIXMAN_a8r8g8b8,	0x169ffed,
1551       PIXMAN_a8r8g8b8,	0xffffff3f,
1552       PIXMAN_a8r8g8b8,	0x169ff00
1553     },
1554     { PIXMAN_OP_CONJOINT_XOR,
1555       PIXMAN_a8r8g8b8,	0x154c181,
1556       PIXMAN_a4r4g4b4,	0x5100,
1557       PIXMAN_a4r4g4b4,	0x0
1558     },
1559     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
1560       PIXMAN_a8r8g8b8,	0x1e09c00,
1561       PIXMAN_r5g6b5,	0xca00,
1562       PIXMAN_a4r4g4b4,	0xb00
1563     },
1564     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
1565       PIXMAN_a8r8g8b8,	0x2ff8dff,
1566       PIXMAN_a8r8g8b8,	0x610038ff,
1567       PIXMAN_a8r8g8b8,	0x1001f02
1568     },
1569     { PIXMAN_OP_SATURATE,
1570       PIXMAN_a8r8g8b8,	0x1e400ff,
1571       PIXMAN_a4r4g4b4,	0x66bd,
1572       PIXMAN_r3g3b2,	0x68
1573     },
1574     { PIXMAN_OP_CONJOINT_IN,
1575       PIXMAN_a8r8g8b8,	0x25362ff,
1576       PIXMAN_a4r4g4b4,	0x31ff,
1577       PIXMAN_a8r8g8b8,	0x111433
1578     },
1579     { PIXMAN_OP_CONJOINT_OUT,
1580       PIXMAN_a8r8g8b8,	0x3ad0039,
1581       PIXMAN_r3g3b2,	0x26,
1582       PIXMAN_a8r8g8b8,	0x3000026
1583     },
1584     { PIXMAN_OP_DISJOINT_OUT,
1585       PIXMAN_a8r8g8b8,	0x2e442ef,
1586       PIXMAN_r3g3b2,	0x32,
1587       PIXMAN_r3g3b2,	0x20
1588     },
1589     { PIXMAN_OP_SATURATE,
1590       PIXMAN_a8r8g8b8,	0x1720000,
1591       PIXMAN_a8r8g8b8,	0x55fdea00,
1592       PIXMAN_r3g3b2,	0x20
1593     },
1594     { PIXMAN_OP_DISJOINT_IN,
1595       PIXMAN_a8r8g8b8,	0x14bb0d7,
1596       PIXMAN_a8r8g8b8,	0x7fffff47,
1597       PIXMAN_a2r2g2b2,	0x0
1598     },
1599     { PIXMAN_OP_DISJOINT_IN,
1600       PIXMAN_a8r8g8b8,	0x13dffff,
1601       PIXMAN_a8r8g8b8,	0xa3860672,
1602       PIXMAN_r3g3b2,	0x20
1603     },
1604     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
1605       PIXMAN_a8r8g8b8,	0x120495a,
1606       PIXMAN_a4r4g4b4,	0x407e,
1607       PIXMAN_a8r8g8b8,	0x54
1608     },
1609     { PIXMAN_OP_DISJOINT_OUT,
1610       PIXMAN_a8r8g8b8,	0x1ff8fff,
1611       PIXMAN_a2r2g2b2,	0x29,
1612       PIXMAN_r5g6b5,	0xa
1613     },
1614     { PIXMAN_OP_DISJOINT_IN,
1615       PIXMAN_a8r8g8b8,	0x100a31a,
1616       PIXMAN_a4r4g4b4,	0xde4c,
1617       PIXMAN_a4r4g4b4,	0x1
1618     },
1619     { PIXMAN_OP_CONJOINT_OUT,
1620       PIXMAN_a8r8g8b8,	0x1d4008c,
1621       PIXMAN_r3g3b2,	0x79,
1622       PIXMAN_a8r8g8b8,	0x1000000
1623     },
1624     { PIXMAN_OP_DISJOINT_IN,
1625       PIXMAN_a8r8g8b8,	0x1ff0000,
1626       PIXMAN_a4r4g4b4,	0x7de4,
1627       PIXMAN_r5g6b5,	0x0
1628     },
1629     { PIXMAN_OP_DISJOINT_ATOP,
1630       PIXMAN_a8r8g8b8,	0x1b27e62,
1631       PIXMAN_a4r4g4b4,	0x7941,
1632       PIXMAN_r3g3b2,	0x0
1633     },
1634     { PIXMAN_OP_DISJOINT_OUT,
1635       PIXMAN_a8r8g8b8,	0x300ff00,
1636       PIXMAN_a8r8g8b8,	0xfcff255e,
1637       PIXMAN_r3g3b2,	0x4
1638     },
1639     { PIXMAN_OP_DISJOINT_OUT,
1640       PIXMAN_a8r8g8b8,	0x2ff00b8,
1641       PIXMAN_a8r8g8b8,	0x19ff718d,
1642       PIXMAN_r5g6b5,	0x1802
1643     },
1644     { PIXMAN_OP_DISJOINT_OUT,
1645       PIXMAN_a8r8g8b8,	0x235ff13,
1646       PIXMAN_a8r8g8b8,	0x34bcd9ff,
1647       PIXMAN_r3g3b2,	0x4
1648     },
1649     { PIXMAN_OP_DISJOINT_OUT,
1650       PIXMAN_a8r8g8b8,	0x1006400,
1651       PIXMAN_a4r4g4b4,	0x7000,
1652       PIXMAN_a4r4g4b4,	0x20
1653     },
1654     { PIXMAN_OP_CONJOINT_ATOP_REVERSE,
1655       PIXMAN_a8r8g8b8,	0x1ff8bff,
1656       PIXMAN_a4r4g4b4,	0xfff4,
1657       PIXMAN_a4r4g4b4,	0xf80
1658     },
1659     { PIXMAN_OP_DISJOINT_OUT,
1660       PIXMAN_a8r8g8b8,	0x24630ff,
1661       PIXMAN_a8r8g8b8,	0x1f00000b,
1662       PIXMAN_a8r8g8b8,	0x9061f
1663     },
1664     { PIXMAN_OP_DISJOINT_OUT,
1665       PIXMAN_a8r8g8b8,	0x1ff8a00,
1666       PIXMAN_a8r8g8b8,	0x79ffab00,
1667       PIXMAN_r5g6b5,	0x7a00
1668     },
1669     { PIXMAN_OP_DISJOINT_ATOP,
1670       PIXMAN_a8r8g8b8,	0x19807ff,
1671       PIXMAN_a4r4g4b4,	0x6794,
1672       PIXMAN_a8r8g8b8,	0xff002e00
1673     },
1674     { PIXMAN_OP_CONJOINT_OUT,
1675       PIXMAN_a8r8g8b8,	0x10000da,
1676       PIXMAN_a4r4g4b4,	0xf864,
1677       PIXMAN_a8r8g8b8,	0x1000000
1678     },
1679     { PIXMAN_OP_DISJOINT_IN,
1680       PIXMAN_a8r8g8b8,	0x1ffffde,
1681       PIXMAN_a2r2g2b2,	0x94,
1682       PIXMAN_a8r8g8b8,	0x1000000
1683     },
1684     { PIXMAN_OP_CONJOINT_ATOP,
1685       PIXMAN_a8r8g8b8,	0x200c800,
1686       PIXMAN_r5g6b5,	0xe9d4,
1687       PIXMAN_a8r8g8b8,	0x2c00
1688     },
1689     { PIXMAN_OP_DISJOINT_OUT,
1690       PIXMAN_a8r8g8b8,	0x1ff00c9,
1691       PIXMAN_r3g3b2,	0x4c,
1692       PIXMAN_r5g6b5,	0x4800
1693     },
1694     { PIXMAN_OP_DISJOINT_OUT,
1695       PIXMAN_a8r8g8b8,	0x122d5ff,
1696       PIXMAN_r5g6b5,	0x418b,
1697       PIXMAN_a4r4g4b4,	0x25
1698     },
1699     { PIXMAN_OP_DISJOINT_IN,
1700       PIXMAN_a8r8g8b8,	0x1ffff55,
1701       PIXMAN_a2r2g2b2,	0x1c,
1702       PIXMAN_a8r8g8b8,	0xff00
1703     },
1704     { PIXMAN_OP_DISJOINT_ATOP,
1705       PIXMAN_a8r8g8b8,	0x135ffff,
1706       PIXMAN_r5g6b5,	0x39c4,
1707       PIXMAN_r5g6b5,	0xb7
1708     },
1709     { PIXMAN_OP_DISJOINT_OUT,
1710       PIXMAN_a8r8g8b8,	0x100d2c3,
1711       PIXMAN_r3g3b2,	0x2a,
1712       PIXMAN_a8r8g8b8,	0x3c00
1713     },
1714     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
1715       PIXMAN_a8r8g8b8,	0x17268ff,
1716       PIXMAN_a8r8g8b8,	0x7c00ffff,
1717       PIXMAN_r5g6b5,	0x318f
1718     },
1719     { PIXMAN_OP_DISJOINT_ATOP,
1720       PIXMAN_a8r8g8b8,	0x1ff00ff,
1721       PIXMAN_r3g3b2,	0x68,
1722       PIXMAN_r3g3b2,	0xb4
1723     },
1724     { PIXMAN_OP_CONJOINT_OUT,
1725       PIXMAN_a8r8g8b8,	0x200ffff,
1726       PIXMAN_r5g6b5,	0xff86,
1727       PIXMAN_a8r8g8b8,	0x200f300
1728     },
1729     { PIXMAN_OP_CONJOINT_ATOP,
1730       PIXMAN_a8r8g8b8,	0x18a23ff,
1731       PIXMAN_a2r2g2b2,	0x44,
1732       PIXMAN_a4r4g4b4,	0x205
1733     },
1734     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
1735       PIXMAN_a8r8g8b8,	0x16bff23,
1736       PIXMAN_a8r8g8b8,	0x31fd00ff,
1737       PIXMAN_r3g3b2,	0x7
1738     },
1739     { PIXMAN_OP_DISJOINT_IN,
1740       PIXMAN_a8r8g8b8,	0x137d1ff,
1741       PIXMAN_a4r4g4b4,	0x56c1,
1742       PIXMAN_r5g6b5,	0x0
1743     },
1744     { PIXMAN_OP_CONJOINT_ATOP_REVERSE,
1745       PIXMAN_a8r8g8b8,	0x1ff5bff,
1746       PIXMAN_a4r4g4b4,	0xfff4,
1747       PIXMAN_a4r4g4b4,	0xf50
1748     },
1749     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
1750       PIXMAN_a8r8g8b8,	0x15c6b00,
1751       PIXMAN_a8r8g8b8,	0x7d008a,
1752       PIXMAN_a4r4g4b4,	0x200
1753     },
1754     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
1755       PIXMAN_a8r8g8b8,	0x12091ff,
1756       PIXMAN_a8r8g8b8,	0xb74cff6b,
1757       PIXMAN_a2r2g2b2,	0x8
1758     },
1759     { PIXMAN_OP_CONJOINT_ATOP,
1760       PIXMAN_a8r8g8b8,	0x1ff5bff,
1761       PIXMAN_a8r8g8b8,	0xff6ddce8,
1762       PIXMAN_a2r2g2b2,	0x10
1763     },
1764     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
1765       PIXMAN_a8r8g8b8,	0x100ffff,
1766       PIXMAN_a4r4g4b4,	0xffb7,
1767       PIXMAN_a4r4g4b4,	0xb0
1768     },
1769     { PIXMAN_OP_CONJOINT_IN,
1770       PIXMAN_a8r8g8b8,	0x173ffff,
1771       PIXMAN_r5g6b5,	0xff2c,
1772       PIXMAN_a4r4g4b4,	0x6
1773     },
1774     { PIXMAN_OP_CONJOINT_IN,
1775       PIXMAN_a8r8g8b8,	0x17102ff,
1776       PIXMAN_a8r8g8b8,	0x955bff66,
1777       PIXMAN_a8r8g8b8,	0x280066
1778     },
1779     { PIXMAN_OP_DISJOINT_XOR,
1780       PIXMAN_a8r8g8b8,	0x3c7ff24,
1781       PIXMAN_r5g6b5,	0xc4,
1782       PIXMAN_r5g6b5,	0x163
1783     },
1784     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
1785       PIXMAN_a8r8g8b8,	0x100c2a6,
1786       PIXMAN_r5g6b5,	0xa9b9,
1787       PIXMAN_a4r4g4b4,	0x8
1788     },
1789     { PIXMAN_OP_DISJOINT_XOR,
1790       PIXMAN_a8r8g8b8,	0x26049ff,
1791       PIXMAN_a4r4g4b4,	0xb2,
1792       PIXMAN_r5g6b5,	0x8904
1793     },
1794     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
1795       PIXMAN_a8r8g8b8,	0x2f100ff,
1796       PIXMAN_r3g3b2,	0x30,
1797       PIXMAN_a8r8g8b8,	0x2220100
1798     },
1799     { PIXMAN_OP_DISJOINT_XOR,
1800       PIXMAN_a8r8g8b8,	0x1ffff88,
1801       PIXMAN_r3g3b2,	0x7e,
1802       PIXMAN_r3g3b2,	0x60
1803     },
1804     { PIXMAN_OP_DISJOINT_IN,
1805       PIXMAN_a8r8g8b8,	0x153ffab,
1806       PIXMAN_a8r8g8b8,	0xfd10725a,
1807       PIXMAN_r3g3b2,	0x0
1808     },
1809     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
1810       PIXMAN_a8r8g8b8,	0x1ff00d2,
1811       PIXMAN_r5g6b5,	0xff6b,
1812       PIXMAN_a8r8g8b8,	0x101014a
1813     },
1814     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
1815       PIXMAN_a8r8g8b8,	0x100d965,
1816       PIXMAN_a8r8g8b8,	0xff007b00,
1817       PIXMAN_r3g3b2,	0xc
1818     },
1819     { PIXMAN_OP_DISJOINT_OUT,
1820       PIXMAN_a8r8g8b8,	0x1ec0000,
1821       PIXMAN_r5g6b5,	0x6fff,
1822       PIXMAN_r5g6b5,	0x6000
1823     },
1824     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
1825       PIXMAN_a8r8g8b8,	0x19d59a2,
1826       PIXMAN_a8r8g8b8,	0x4a00ff7a,
1827       PIXMAN_a8r8g8b8,	0x2e1a2f
1828     },
1829     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
1830       PIXMAN_a8r8g8b8,	0x1eb0000,
1831       PIXMAN_a4r4g4b4,	0x72bc,
1832       PIXMAN_r5g6b5,	0x1800
1833     },
1834     { PIXMAN_OP_DISJOINT_IN,
1835       PIXMAN_a8r8g8b8,	0x100ffff,
1836       PIXMAN_a4r4g4b4,	0xc034,
1837       PIXMAN_a4r4g4b4,	0x0
1838     },
1839     { PIXMAN_OP_SATURATE,
1840       PIXMAN_a8r8g8b8,	0x195ff15,
1841       PIXMAN_a4r4g4b4,	0xb7b1,
1842       PIXMAN_r5g6b5,	0x4000
1843     },
1844     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
1845       PIXMAN_a8r8g8b8,	0x1ffdf94,
1846       PIXMAN_a4r4g4b4,	0x78,
1847       PIXMAN_r3g3b2,	0xc
1848     },
1849     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
1850       PIXMAN_a8r8g8b8,	0x26f00ff,
1851       PIXMAN_a4r4g4b4,	0xff93,
1852       PIXMAN_r5g6b5,	0x1dd2
1853     },
1854     { PIXMAN_OP_CONJOINT_IN,
1855       PIXMAN_a8r8g8b8,	0x2ff3fc5,
1856       PIXMAN_r3g3b2,	0x2f,
1857       PIXMAN_a8r8g8b8,	0x240000
1858     },
1859     { PIXMAN_OP_DISJOINT_IN,
1860       PIXMAN_a8r8g8b8,	0x1ff696e,
1861       PIXMAN_a4r4g4b4,	0x22ff,
1862       PIXMAN_r5g6b5,	0x34d
1863     },
1864     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
1865       PIXMAN_a8r8g8b8,	0x10033d9,
1866       PIXMAN_a8r8g8b8,	0x38650000,
1867       PIXMAN_a8r8g8b8,	0x0
1868     },
1869     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
1870       PIXMAN_a8r8g8b8,	0x2ffff00,
1871       PIXMAN_a4r4g4b4,	0x2070,
1872       PIXMAN_r5g6b5,	0x2100
1873     },
1874     { PIXMAN_OP_DISJOINT_XOR,
1875       PIXMAN_a8r8g8b8,	0x1008746,
1876       PIXMAN_a8r8g8b8,	0xb56971,
1877       PIXMAN_r5g6b5,	0xc25c
1878     },
1879     { PIXMAN_OP_DISJOINT_OUT,
1880       PIXMAN_a8r8g8b8,	0x144d200,
1881       PIXMAN_a4r4g4b4,	0xff42,
1882       PIXMAN_r3g3b2,	0x4
1883     },
1884     { PIXMAN_OP_DISJOINT_XOR,
1885       PIXMAN_a8r8g8b8,	0x1ffffd0,
1886       PIXMAN_r5g6b5,	0x5b00,
1887       PIXMAN_r3g3b2,	0x4c
1888     },
1889     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
1890       PIXMAN_a8r8g8b8,	0x10000ff,
1891       PIXMAN_a8r8g8b8,	0xff006f,
1892       PIXMAN_r5g6b5,	0xd
1893     },
1894     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
1895       PIXMAN_a8r8g8b8,	0x10666ff,
1896       PIXMAN_a4r4g4b4,	0x39b2,
1897       PIXMAN_r5g6b5,	0xa6
1898     },
1899     { PIXMAN_OP_CONJOINT_OUT,
1900       PIXMAN_a8r8g8b8,	0x11a007d,
1901       PIXMAN_r3g3b2,	0xf9,
1902       PIXMAN_a8r8g8b8,	0x11a0000
1903     },
1904     { PIXMAN_OP_CONJOINT_ATOP,
1905       PIXMAN_a8r8g8b8,	0x1eb90ee,
1906       PIXMAN_r5g6b5,	0xd,
1907       PIXMAN_a2r2g2b2,	0x1
1908     },
1909     { PIXMAN_OP_DISJOINT_OUT,
1910       PIXMAN_a8r8g8b8,	0x1ff42d5,
1911       PIXMAN_a4r4g4b4,	0x3400,
1912       PIXMAN_r3g3b2,	0x40
1913     },
1914     { PIXMAN_OP_DISJOINT_IN,
1915       PIXMAN_a8r8g8b8,	0x1dfff00,
1916       PIXMAN_a8r8g8b8,	0x3ffff9d2,
1917       PIXMAN_r5g6b5,	0x0
1918     },
1919     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
1920       PIXMAN_a8r8g8b8,	0x1ff6500,
1921       PIXMAN_a2r2g2b2,	0x56,
1922       PIXMAN_r3g3b2,	0x44
1923     },
1924     { PIXMAN_OP_DISJOINT_ATOP,
1925       PIXMAN_a8r8g8b8,	0x119ffe6,
1926       PIXMAN_r3g3b2,	0x8d,
1927       PIXMAN_a4r4g4b4,	0xff00
1928     },
1929     { PIXMAN_OP_DISJOINT_IN,
1930       PIXMAN_a8r8g8b8,	0x100cd00,
1931       PIXMAN_r5g6b5,	0x33ff,
1932       PIXMAN_a4r4g4b4,	0x0
1933     },
1934     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
1935       PIXMAN_a8r8g8b8,	0x569ffd7,
1936       PIXMAN_r5g6b5,	0x8cc,
1937       PIXMAN_r5g6b5,	0xc0
1938     },
1939     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
1940       PIXMAN_a8r8g8b8,	0x100876a,
1941       PIXMAN_a8r8g8b8,	0x575447a5,
1942       PIXMAN_r5g6b5,	0x164
1943     },
1944     { PIXMAN_OP_CONJOINT_OUT,
1945       PIXMAN_a8r8g8b8,	0x12d00ff,
1946       PIXMAN_a4r4g4b4,	0x3fff,
1947       PIXMAN_a4r4g4b4,	0x0
1948     },
1949     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
1950       PIXMAN_a8r8g8b8,	0x2ff953b,
1951       PIXMAN_a4r4g4b4,	0x2914,
1952       PIXMAN_r5g6b5,	0x20a1
1953     },
1954     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
1955       PIXMAN_a8r8g8b8,	0x1ffead4,
1956       PIXMAN_a8r8g8b8,	0xff00ea4e,
1957       PIXMAN_r3g3b2,	0x5a
1958     },
1959     { PIXMAN_OP_DISJOINT_ATOP,
1960       PIXMAN_a8r8g8b8,	0x1ff6400,
1961       PIXMAN_a2r2g2b2,	0x99,
1962       PIXMAN_r5g6b5,	0xa620
1963     },
1964     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
1965       PIXMAN_a8r8g8b8,	0x17b0084,
1966       PIXMAN_r3g3b2,	0xbd,
1967       PIXMAN_a4r4g4b4,	0x500
1968     },
1969     { PIXMAN_OP_DISJOINT_XOR,
1970       PIXMAN_a8r8g8b8,	0x4f90bbb,
1971       PIXMAN_a8r8g8b8,	0xff00d21f,
1972       PIXMAN_a8r8g8b8,	0xfb00fc4a
1973     },
1974     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
1975       PIXMAN_a8r8g8b8,	0x1ffbb1d,
1976       PIXMAN_a8r8g8b8,	0x2dff79ff,
1977       PIXMAN_r5g6b5,	0x2c0
1978     },
1979     { PIXMAN_OP_CONJOINT_ATOP_REVERSE,
1980       PIXMAN_a8r8g8b8,	0x100ffff,
1981       PIXMAN_a2r2g2b2,	0x43,
1982       PIXMAN_a4r4g4b4,	0x6f
1983     },
1984     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
1985       PIXMAN_a8r8g8b8,	0x1f000ff,
1986       PIXMAN_a4r4g4b4,	0xb393,
1987       PIXMAN_r3g3b2,	0x20
1988     },
1989     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
1990       PIXMAN_a8r8g8b8,	0x1c60020,
1991       PIXMAN_a8r8g8b8,	0x6bffffff,
1992       PIXMAN_a8r8g8b8,	0x0
1993     },
1994     { PIXMAN_OP_CONJOINT_OUT,
1995       PIXMAN_a8r8g8b8,	0x1727d00,
1996       PIXMAN_a2r2g2b2,	0x67,
1997       PIXMAN_a4r4g4b4,	0x400
1998     },
1999     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
2000       PIXMAN_a8r8g8b8,	0x14a5194,
2001       PIXMAN_a4r4g4b4,	0xd7ff,
2002       PIXMAN_r5g6b5,	0x2000
2003     },
2004     { PIXMAN_OP_DISJOINT_ATOP,
2005       PIXMAN_a8r8g8b8,	0x20003fa,
2006       PIXMAN_a4r4g4b4,	0x24ff,
2007       PIXMAN_a8r8g8b8,	0xffff1550
2008     },
2009     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
2010       PIXMAN_a8r8g8b8,	0x1a6ff83,
2011       PIXMAN_a4r4g4b4,	0xf400,
2012       PIXMAN_r5g6b5,	0x2800
2013     },
2014     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
2015       PIXMAN_a8r8g8b8,	0x2ffcf00,
2016       PIXMAN_r5g6b5,	0x71ff,
2017       PIXMAN_a4r4g4b4,	0x30
2018     },
2019     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
2020       PIXMAN_a8r8g8b8,	0x333ffff,
2021       PIXMAN_a4r4g4b4,	0x2c00,
2022       PIXMAN_r3g3b2,	0x4
2023     },
2024     { PIXMAN_OP_DISJOINT_XOR,
2025       PIXMAN_a8r8g8b8,	0x1c2ffe8,
2026       PIXMAN_r5g6b5,	0xc200,
2027       PIXMAN_a8r8g8b8,	0xfeca41ff
2028     },
2029     { PIXMAN_OP_CONJOINT_ATOP,
2030       PIXMAN_a2r2g2b2,	0x47,
2031       PIXMAN_a8r8g8b8,	0x2ffff00,
2032       PIXMAN_a8r8g8b8,	0x3aa0102
2033     },
2034     { PIXMAN_OP_DISJOINT_OUT,
2035       PIXMAN_a8r8g8b8,	0x1ffeb00,
2036       PIXMAN_a4r4g4b4,	0xb493,
2037       PIXMAN_a4r4g4b4,	0x400
2038     },
2039     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
2040       PIXMAN_a8r8g8b8,	0x2afffff,
2041       PIXMAN_r5g6b5,	0xcb,
2042       PIXMAN_r5g6b5,	0xc0
2043     },
2044     { PIXMAN_OP_SATURATE,
2045       PIXMAN_a8r8g8b8,	0x183ff00,
2046       PIXMAN_r3g3b2,	0x87,
2047       PIXMAN_r5g6b5,	0xae91
2048     },
2049     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
2050       PIXMAN_a8r8g8b8,	0x3ffff00,
2051       PIXMAN_a4r4g4b4,	0x2ba4,
2052       PIXMAN_r5g6b5,	0x2100
2053     },
2054     { PIXMAN_OP_CONJOINT_OUT,
2055       PIXMAN_a8r8g8b8,	0x215cbc2,
2056       PIXMAN_a4r4g4b4,	0xafd3,
2057       PIXMAN_a8r8g8b8,	0x115b000
2058     },
2059     { PIXMAN_OP_SATURATE,
2060       PIXMAN_a8r8g8b8,	0x1853f65,
2061       PIXMAN_a8r8g8b8,	0xc68cdc41,
2062       PIXMAN_r5g6b5,	0x3
2063     },
2064     { PIXMAN_OP_CONJOINT_IN,
2065       PIXMAN_a8r8g8b8,	0x3ffff8f,
2066       PIXMAN_a4r4g4b4,	0x8824,
2067       PIXMAN_a4r4g4b4,	0x20
2068     },
2069     { PIXMAN_OP_DISJOINT_OUT,
2070       PIXMAN_a8r8g8b8,	0x28e08e6,
2071       PIXMAN_a8r8g8b8,	0x2cffff31,
2072       PIXMAN_r5g6b5,	0x1805
2073     },
2074     { PIXMAN_OP_DISJOINT_IN,
2075       PIXMAN_a8r8g8b8,	0x1b500be,
2076       PIXMAN_r5g6b5,	0xd946,
2077       PIXMAN_r5g6b5,	0x9800
2078     },
2079     { PIXMAN_OP_DISJOINT_OUT,
2080       PIXMAN_a8r8g8b8,	0x133ffb3,
2081       PIXMAN_a2r2g2b2,	0x42,
2082       PIXMAN_a8r8g8b8,	0x11553c
2083     },
2084     { PIXMAN_OP_DISJOINT_XOR,
2085       PIXMAN_a8r8g8b8,	0x21aff81,
2086       PIXMAN_r3g3b2,	0xc7,
2087       PIXMAN_r5g6b5,	0x120
2088     },
2089     { PIXMAN_OP_CONJOINT_ATOP,
2090       PIXMAN_a8r8g8b8,	0x12e004f,
2091       PIXMAN_a4r4g4b4,	0xf617,
2092       PIXMAN_a4r4g4b4,	0x102
2093     },
2094     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
2095       PIXMAN_a8r8g8b8,	0x164861f,
2096       PIXMAN_r3g3b2,	0x4e,
2097       PIXMAN_r5g6b5,	0x19c0
2098     },
2099     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
2100       PIXMAN_a8r8g8b8,	0x1ff0eff,
2101       PIXMAN_a8r8g8b8,	0xff5c00aa,
2102       PIXMAN_r5g6b5,	0x5800
2103     },
2104     { PIXMAN_OP_DISJOINT_XOR,
2105       PIXMAN_a8r8g8b8,	0x1e4c60f,
2106       PIXMAN_a8r8g8b8,	0x38ff0e0c,
2107       PIXMAN_a4r4g4b4,	0xff2a
2108     },
2109     { PIXMAN_OP_DISJOINT_OVER_REVERSE,
2110       PIXMAN_a8r8g8b8,	0x1ff0000,
2111       PIXMAN_a8r8g8b8,	0x9f3d6700,
2112       PIXMAN_r5g6b5,	0xf3ff
2113     },
2114     { PIXMAN_OP_DISJOINT_IN,
2115       PIXMAN_a8r8g8b8,	0x205ffd0,
2116       PIXMAN_a8r8g8b8,	0xffc22b3b,
2117       PIXMAN_a8r8g8b8,	0x2040000
2118     },
2119     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
2120       PIXMAN_a8r8g8b8,	0x1ff0059,
2121       PIXMAN_r5g6b5,	0x74ff,
2122       PIXMAN_a8r8g8b8,	0x1730101
2123     },
2124     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
2125       PIXMAN_a8r8g8b8,	0x29affb8,
2126       PIXMAN_r5g6b5,	0xff,
2127       PIXMAN_a8r8g8b8,	0x2d25cff
2128     },
2129     { PIXMAN_OP_DISJOINT_OUT,
2130       PIXMAN_a8r8g8b8,	0x1ffff8b,
2131       PIXMAN_a4r4g4b4,	0xff7b,
2132       PIXMAN_r5g6b5,	0x3a0
2133     },
2134     { PIXMAN_OP_DISJOINT_IN,
2135       PIXMAN_a8r8g8b8,	0x2a86ad7,
2136       PIXMAN_a4r4g4b4,	0xdc22,
2137       PIXMAN_a8r8g8b8,	0x2860000
2138     },
2139     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
2140       PIXMAN_a8r8g8b8,	0x3ff00ff,
2141       PIXMAN_r3g3b2,	0x33,
2142       PIXMAN_r5g6b5,	0x2000
2143     },
2144     { PIXMAN_OP_SATURATE,
2145       PIXMAN_a8r8g8b8,	0x1e50063,
2146       PIXMAN_a8r8g8b8,	0x35ff95d7,
2147       PIXMAN_r3g3b2,	0x20
2148     },
2149     { PIXMAN_OP_DISJOINT_IN,
2150       PIXMAN_a8r8g8b8,	0x2ffe6ff,
2151       PIXMAN_a8r8g8b8,	0x153ef297,
2152       PIXMAN_r5g6b5,	0x6d2
2153     },
2154     { PIXMAN_OP_DISJOINT_IN,
2155       PIXMAN_a8r8g8b8,	0x34ffeff,
2156       PIXMAN_a4r4g4b4,	0x2e,
2157       PIXMAN_r5g6b5,	0x1d
2158     },
2159     { PIXMAN_OP_DISJOINT_XOR,
2160       PIXMAN_a8r8g8b8,	0x2ffeada,
2161       PIXMAN_r5g6b5,	0xabc6,
2162       PIXMAN_a8r8g8b8,	0xfd15b256
2163     },
2164     { PIXMAN_OP_CONJOINT_ATOP,
2165       PIXMAN_a8r8g8b8,	0x100ff00,
2166       PIXMAN_a8r8g8b8,	0xcff3f32,
2167       PIXMAN_a8r8g8b8,	0x3f00
2168     },
2169     { PIXMAN_OP_SATURATE,
2170       PIXMAN_a8r8g8b8,	0x1e1b0f1,
2171       PIXMAN_a8r8g8b8,	0xff63ff54,
2172       PIXMAN_r3g3b2,	0x5d
2173     },
2174     { PIXMAN_OP_DISJOINT_XOR,
2175       PIXMAN_a8r8g8b8,	0x2ffff23,
2176       PIXMAN_a8r8g8b8,	0x380094ff,
2177       PIXMAN_r5g6b5,	0x3a4b
2178     },
2179     { PIXMAN_OP_CONJOINT_ATOP,
2180       PIXMAN_a4r4g4b4,	0x1000,
2181       PIXMAN_r5g6b5,	0xca,
2182       PIXMAN_a8r8g8b8,	0x3434500
2183     },
2184     { PIXMAN_OP_DISJOINT_IN,
2185       PIXMAN_a8r8g8b8,	0x195ffe5,
2186       PIXMAN_a4r4g4b4,	0x3a29,
2187       PIXMAN_a8r8g8b8,	0x0
2188     },
2189     { PIXMAN_OP_DISJOINT_ATOP,
2190       PIXMAN_a8r8g8b8,	0x139007a,
2191       PIXMAN_a4r4g4b4,	0x4979,
2192       PIXMAN_r5g6b5,	0x84
2193     },
2194     { PIXMAN_OP_SOFT_LIGHT,
2195       PIXMAN_a2r2g2b2,	0xa9,
2196       PIXMAN_a4r4g4b4,	0xfa18,
2197       PIXMAN_a8r8g8b8,	0xabff67ff
2198     },
2199     { PIXMAN_OP_SOFT_LIGHT,
2200       PIXMAN_a2r2g2b2,	0x94,
2201       PIXMAN_a4r4g4b4,	0x5109,
2202       PIXMAN_a8r8g8b8,	0x3affffff
2203     },
2204     { PIXMAN_OP_COLOR_BURN,
2205       PIXMAN_r5g6b5,	0xd038,
2206       PIXMAN_r5g6b5,	0xff00,
2207       PIXMAN_r5g6b5,	0xf9a5
2208     },
2209     { PIXMAN_OP_SOFT_LIGHT,
2210       PIXMAN_a8r8g8b8,	0x543128ff,
2211       PIXMAN_a8r8g8b8,	0x7029ff,
2212       PIXMAN_a8r8g8b8,	0x316b1d7
2213     },
2214     { PIXMAN_OP_SOFT_LIGHT,
2215       PIXMAN_r5g6b5,	0x53ff,
2216       PIXMAN_r5g6b5,	0x72ff,
2217       PIXMAN_a8r8g8b8,	0xffffdeff
2218     },
2219     { PIXMAN_OP_SOFT_LIGHT,
2220       PIXMAN_a8r8g8b8,	0x5b00002b,
2221       PIXMAN_a4r4g4b4,	0xc3,
2222       PIXMAN_a8r8g8b8,	0x23530be
2223     },
2224     { PIXMAN_OP_SOFT_LIGHT,
2225       PIXMAN_a8r8g8b8,	0xcefc0041,
2226       PIXMAN_a8r8g8b8,	0xf60d02,
2227       PIXMAN_a8r8g8b8,	0x1f2ffe5
2228     },
2229     { PIXMAN_OP_COLOR_DODGE,
2230       PIXMAN_r5g6b5,	0xffdb,
2231       PIXMAN_r5g6b5,	0xc700,
2232       PIXMAN_r5g6b5,	0x654
2233     },
2234     { PIXMAN_OP_COLOR_DODGE,
2235       PIXMAN_r5g6b5,	0xffc6,
2236       PIXMAN_r5g6b5,	0xff09,
2237       PIXMAN_r5g6b5,	0xfe58
2238     },
2239     { PIXMAN_OP_SOFT_LIGHT,
2240       PIXMAN_a2r2g2b2,	0x95,
2241       PIXMAN_r5g6b5,	0x1b4a,
2242       PIXMAN_a8r8g8b8,	0xab234cff
2243     },
2244     { PIXMAN_OP_SOFT_LIGHT,
2245       PIXMAN_a2r2g2b2,	0x95,
2246       PIXMAN_a4r4g4b4,	0x5e99,
2247       PIXMAN_a8r8g8b8,	0x3b1c1cdd
2248     },
2249     { PIXMAN_OP_COLOR_BURN,
2250       PIXMAN_r5g6b5,	0x22,
2251       PIXMAN_r5g6b5,	0xd00,
2252       PIXMAN_r5g6b5,	0xfbb1
2253     },
2254     { PIXMAN_OP_COLOR_DODGE,
2255       PIXMAN_r5g6b5,	0xffc8,
2256       PIXMAN_a8r8g8b8,	0xa1a3ffff,
2257       PIXMAN_r5g6b5,	0x44a
2258     },
2259     { PIXMAN_OP_SOFT_LIGHT,
2260       PIXMAN_a8r8g8b8,	0xffff7cff,
2261       PIXMAN_r5g6b5,	0x900,
2262       PIXMAN_a8r8g8b8,	0xffff94ec
2263     },
2264     { PIXMAN_OP_SOFT_LIGHT,
2265       PIXMAN_a2r2g2b2,	0xa7,
2266       PIXMAN_r5g6b5,	0xff,
2267       PIXMAN_a8r8g8b8,	0xaa00cffe
2268     },
2269     { PIXMAN_OP_SOFT_LIGHT,
2270       PIXMAN_a2r2g2b2,	0x85,
2271       PIXMAN_r5g6b5,	0xffb3,
2272       PIXMAN_a8r8g8b8,	0xaaffff4a
2273     },
2274     { PIXMAN_OP_SOFT_LIGHT,
2275       PIXMAN_a8r8g8b8,	0x3500a118,
2276       PIXMAN_a4r4g4b4,	0x9942,
2277       PIXMAN_a8r8g8b8,	0x01ff405e
2278     },
2279     { PIXMAN_OP_SOFT_LIGHT,
2280       PIXMAN_a2r2g2b2,	0xb5,
2281       PIXMAN_x4a4,	0xe,
2282       PIXMAN_a8r8g8b8,	0xffbaff
2283     },
2284     { PIXMAN_OP_SOFT_LIGHT,
2285       PIXMAN_a4r4g4b4,	0xe872,
2286       PIXMAN_x2r10g10b10, 0xa648ff00,
2287       PIXMAN_a2r10g10b10, 0x14ff00e8,
2288     },
2289     { PIXMAN_OP_SATURATE,
2290       PIXMAN_a8r8g8b8,	0x4d2db34,
2291       PIXMAN_a8,	0x19,
2292       PIXMAN_r5g6b5,	0x9700,
2293     },
2294     { PIXMAN_OP_SATURATE,
2295       PIXMAN_a8r8g8b8,	0x2ff0076,
2296       PIXMAN_a8r8g8b8,	0x2a0000,
2297       PIXMAN_r3g3b2,	0x0,
2298     },
2299     { PIXMAN_OP_CONJOINT_OVER_REVERSE,
2300       PIXMAN_a8r8g8b8,	0x14f00ff,
2301       PIXMAN_r5g6b5,	0xd48,
2302       PIXMAN_a4r4g4b4,	0x0,
2303     },
2304     { PIXMAN_OP_CONJOINT_OUT,
2305       PIXMAN_a8r8g8b8,	0x3d8bbff,
2306       PIXMAN_r5g6b5,	0x6900,
2307       PIXMAN_a8r8g8b8,	0x0,
2308     },
2309     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
2310       PIXMAN_a8r8g8b8,	0x2ff00ff,
2311       PIXMAN_a4r4g4b4,	0x2300,
2312       PIXMAN_r3g3b2,	0x0,
2313     },
2314     { PIXMAN_OP_SATURATE,
2315       PIXMAN_a8r8g8b8,	0x4d2db34,
2316       PIXMAN_a8r8g8b8,	0xff0019ff,
2317       PIXMAN_r5g6b5,	0x9700,
2318     },
2319     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
2320       PIXMAN_a8r8g8b8,	0x100ac05,
2321       PIXMAN_r3g3b2,	0xef,
2322       PIXMAN_a2r2g2b2,	0xff,
2323     },
2324     { PIXMAN_OP_EXCLUSION,
2325       PIXMAN_a2r2g2b2,	0xbf,
2326       PIXMAN_null,	0x00,
2327       PIXMAN_r5g6b5,	0x7e
2328     },
2329     { PIXMAN_OP_DIFFERENCE,
2330       PIXMAN_r5g6b5,	0xffff,
2331       PIXMAN_null,	0x00,
2332       PIXMAN_a2r2g2b2,	0x33
2333     },
2334     { PIXMAN_OP_HARD_LIGHT,
2335       PIXMAN_a8r8g8b8,	0x84c4ffd7,
2336       PIXMAN_null,	0x00,
2337       PIXMAN_a8r8g8b8,	0xffddff
2338     },
2339     { PIXMAN_OP_EXCLUSION,
2340       PIXMAN_a8r8g8b8,	0xff6e56,
2341       PIXMAN_null,	0x00,
2342       PIXMAN_a8r8g8b8,	0x20ff1ade
2343     },
2344     { PIXMAN_OP_OVERLAY,
2345       PIXMAN_a4r4g4b4,	0xfe0,
2346       PIXMAN_null,	0x00,
2347       PIXMAN_a4r4g4b4,	0xbdff
2348     },
2349     { PIXMAN_OP_SCREEN,
2350       PIXMAN_a8r8g8b8,	0x9671ff,
2351       PIXMAN_null,	0x00,
2352       PIXMAN_a2r2g2b2,	0x43
2353     },
2354     { PIXMAN_OP_EXCLUSION,
2355       PIXMAN_a2r2g2b2,	0xff,
2356       PIXMAN_null,	0x00,
2357       PIXMAN_a4r4g4b4,	0x39ff
2358     },
2359     { PIXMAN_OP_EXCLUSION,
2360       PIXMAN_r5g6b5,	0xffff,
2361       PIXMAN_null,	0x00,
2362       PIXMAN_a4r4g4b4,	0x1968
2363     },
2364     { PIXMAN_OP_EXCLUSION,
2365       PIXMAN_a4r4g4b4,	0x4247,
2366       PIXMAN_null,	0x00,
2367       PIXMAN_a8r8g8b8,	0xd8ffff
2368     },
2369     { PIXMAN_OP_EXCLUSION,
2370       PIXMAN_r5g6b5,	0xff00,
2371       PIXMAN_null,	0x00,
2372       PIXMAN_a2r2g2b2,	0x79
2373     },
2374     { PIXMAN_OP_DIFFERENCE,
2375       PIXMAN_r3g3b2,	0xe0,
2376       PIXMAN_null,	0x00,
2377       PIXMAN_a2r2g2b2,	0x39
2378     },
2379     { PIXMAN_OP_EXCLUSION,
2380       PIXMAN_a8r8g8b8,	0xfff8,
2381       PIXMAN_null,	0x00,
2382       PIXMAN_r3g3b2,	0xff
2383     },
2384     { PIXMAN_OP_COLOR_DODGE,
2385       PIXMAN_r5g6b5,	0x75fc,
2386       PIXMAN_null,	0x00,
2387       PIXMAN_r5g6b5,	0x11ff,
2388     },
2389     { PIXMAN_OP_COLOR_BURN,
2390       PIXMAN_r3g3b2,	0x52,
2391       PIXMAN_null,	0x00,
2392       PIXMAN_r5g6b5,	0xc627
2393     },
2394     { PIXMAN_OP_HARD_LIGHT,
2395       PIXMAN_r5g6b5,	0x9f2b,
2396       PIXMAN_null,	0x00,
2397       PIXMAN_a8r8g8b8,	0x4b00e7f5
2398     },
2399     { PIXMAN_OP_OVERLAY,
2400       PIXMAN_a8r8g8b8,	0x00dfff5c,
2401       PIXMAN_null,	0x00,
2402       PIXMAN_r5g6b5,	0x5e0f,
2403     },
2404     { PIXMAN_OP_COLOR_BURN,
2405       PIXMAN_a8r8g8b8,	0xff00121b,
2406       PIXMAN_null,	0x00,
2407       PIXMAN_r5g6b5,	0x3776
2408     },
2409     { PIXMAN_OP_SOFT_LIGHT,
2410       PIXMAN_r5g6b5,	0x03e0,
2411       PIXMAN_null,	0x00,
2412       PIXMAN_a8r8g8b8,	0x01003c00,
2413     },
2414     { PIXMAN_OP_OVER,
2415       PIXMAN_a8r8g8b8,	0x0f00c300,
2416       PIXMAN_null,	0x00,
2417       PIXMAN_x14r6g6b6,	0x003c0,
2418     },
2419     { PIXMAN_OP_DISJOINT_XOR,
2420       PIXMAN_a4r4g4b4,	0xd0c0,
2421       PIXMAN_null,	0x00,
2422       PIXMAN_a8r8g8b8,	0x5300ea00,
2423     },
2424     { PIXMAN_OP_OVER,
2425       PIXMAN_a8r8g8b8,	0x20c6bf00,
2426       PIXMAN_null,	0x00,
2427       PIXMAN_r5g6b5,	0xb9ff
2428     },
2429     { PIXMAN_OP_OVER,
2430       PIXMAN_a8r8g8b8,	0x204ac7ff,
2431       PIXMAN_null,	0x00,
2432       PIXMAN_r5g6b5,	0xc1ff
2433     },
2434     { PIXMAN_OP_OVER_REVERSE,
2435       PIXMAN_r5g6b5,	0xffc3,
2436       PIXMAN_null,	0x00,
2437       PIXMAN_a8r8g8b8,	0x102d00dd
2438     },
2439     { PIXMAN_OP_OVER_REVERSE,
2440       PIXMAN_r5g6b5,	0x1f00,
2441       PIXMAN_null,	0x00,
2442       PIXMAN_a8r8g8b8,	0x1bdf0c89
2443     },
2444     { PIXMAN_OP_OVER_REVERSE,
2445       PIXMAN_r5g6b5,	0xf9d2,
2446       PIXMAN_null,	0x00,
2447       PIXMAN_a8r8g8b8,	0x1076bcf7
2448     },
2449     { PIXMAN_OP_OVER_REVERSE,
2450       PIXMAN_r5g6b5,	0x00c3,
2451       PIXMAN_null,	0x00,
2452       PIXMAN_a8r8g8b8,	0x1bfe9ae5
2453     },
2454     { PIXMAN_OP_OVER_REVERSE,
2455       PIXMAN_r5g6b5,	0x09ff,
2456       PIXMAN_null,	0x00,
2457       PIXMAN_a8r8g8b8,	0x0b00c16c
2458     },
2459     { PIXMAN_OP_DISJOINT_ATOP,
2460       PIXMAN_a2r2g2b2,	0xbc,
2461       PIXMAN_null,	0x00,
2462       PIXMAN_a8r8g8b8,	0x9efff1ff
2463     },
2464     { PIXMAN_OP_DISJOINT_ATOP,
2465       PIXMAN_a4r4g4b4,	0xae5f,
2466       PIXMAN_null,	0x00,
2467       PIXMAN_a8r8g8b8,	0xf215b675
2468     },
2469     { PIXMAN_OP_DISJOINT_ATOP_REVERSE,
2470       PIXMAN_a8r8g8b8,	0xce007980,
2471       PIXMAN_null,	0x00,
2472       PIXMAN_a8r8g8b8,	0x80ffe4ad
2473     },
2474     { PIXMAN_OP_DISJOINT_XOR,
2475       PIXMAN_a8r8g8b8,	0xb8b07bea,
2476       PIXMAN_null,	0x00,
2477       PIXMAN_a4r4g4b4,	0x939c
2478     },
2479     { PIXMAN_OP_CONJOINT_ATOP_REVERSE,
2480       PIXMAN_r5g6b5,	0x0063,
2481       PIXMAN_null,	0x00,
2482       PIXMAN_a8r8g8b8,	0x10bb1ed7,
2483     },
2484     { PIXMAN_OP_EXCLUSION,
2485       PIXMAN_a2r2g2b2,	0xbf,
2486       PIXMAN_null,	0x00,
2487       PIXMAN_r5g6b5,	0x7e
2488     },
2489     { PIXMAN_OP_LIGHTEN,
2490       PIXMAN_a8r8g8b8,	0xffffff,
2491       PIXMAN_null,	0x00,
2492       PIXMAN_a8r8g8b8,	0xff3fffff
2493     },
2494     { PIXMAN_OP_SOFT_LIGHT,
2495       PIXMAN_r3g3b2,	0x38,
2496       PIXMAN_null,	0x00,
2497       PIXMAN_a2r2g2b2,	0x5b
2498     },
2499     { PIXMAN_OP_COLOR_DODGE,
2500       PIXMAN_a8r8g8b8,	0x2e9effff,
2501       PIXMAN_null,	0x00,
2502       PIXMAN_a2r2g2b2,	0x77
2503     },
2504     { PIXMAN_OP_DIFFERENCE,
2505       PIXMAN_r5g6b5,	0xffff,
2506       PIXMAN_null,	0x00,
2507       PIXMAN_a2r2g2b2,	0x33
2508     },
2509     { PIXMAN_OP_OVERLAY,
2510       PIXMAN_a8r8g8b8,	0xd0089ff,
2511       PIXMAN_null,	0x00,
2512       PIXMAN_r3g3b2,	0xb1
2513     },
2514     { PIXMAN_OP_OVERLAY,
2515       PIXMAN_r3g3b2,	0x8a,
2516       PIXMAN_null,	0x00,
2517       PIXMAN_a8r8g8b8,	0xcd0004
2518     },
2519     { PIXMAN_OP_COLOR_BURN,
2520       PIXMAN_a8r8g8b8,	0xffff1e3a,
2521       PIXMAN_null,	0x00,
2522       PIXMAN_a4r4g4b4,	0xcf00
2523     },
2524     { PIXMAN_OP_HARD_LIGHT,
2525       PIXMAN_a8r8g8b8,	0x84c4ffd7,
2526       PIXMAN_null,	0x00,
2527       PIXMAN_a8r8g8b8,	0xffddff
2528     },
2529     { PIXMAN_OP_DIFFERENCE,
2530       PIXMAN_a4r4g4b4,	0xfd75,
2531       PIXMAN_null,	0x00,
2532       PIXMAN_a2r2g2b2,	0x7f
2533     },
2534     { PIXMAN_OP_LIGHTEN,
2535       PIXMAN_r3g3b2,	0xff,
2536       PIXMAN_null,	0x00,
2537       PIXMAN_a4r4g4b4,	0x63ff
2538     },
2539     { PIXMAN_OP_EXCLUSION,
2540       PIXMAN_a8r8g8b8,	0xff6e56,
2541       PIXMAN_null,	0x00,
2542       PIXMAN_a8r8g8b8,	0x20ff1ade
2543     },
2544     { PIXMAN_OP_OVERLAY,
2545       PIXMAN_a4r4g4b4,	0xfe0,
2546       PIXMAN_null,	0x00,
2547       PIXMAN_a4r4g4b4,	0xbdff
2548     },
2549     { PIXMAN_OP_OVERLAY,
2550       PIXMAN_r5g6b5,	0x9799,
2551       PIXMAN_null,	0x00,
2552       PIXMAN_a4r4g4b4,	0x8d
2553     },
2554     { PIXMAN_OP_HARD_LIGHT,
2555       PIXMAN_a8r8g8b8,	0xe8ff1c33,
2556       PIXMAN_null,	0x00,
2557       PIXMAN_r5g6b5,	0x6200
2558     },
2559     { PIXMAN_OP_DIFFERENCE,
2560       PIXMAN_a8r8g8b8,	0x22ffffff,
2561       PIXMAN_null,	0x00,
2562       PIXMAN_a2r2g2b2,	0x63
2563     },
2564     { PIXMAN_OP_SCREEN,
2565       PIXMAN_a8r8g8b8,	0x9671ff,
2566       PIXMAN_null,	0x00,
2567       PIXMAN_a2r2g2b2,	0x43
2568     },
2569     { PIXMAN_OP_LIGHTEN,
2570       PIXMAN_a2r2g2b2,	0x83,
2571       PIXMAN_null,	0x00,
2572       PIXMAN_r5g6b5,	0xff
2573     },
2574     { PIXMAN_OP_OVERLAY,
2575       PIXMAN_r3g3b2,	0x0,
2576       PIXMAN_null,	0x00,
2577       PIXMAN_a2r2g2b2,	0x97
2578     },
2579     { PIXMAN_OP_SOFT_LIGHT,
2580       PIXMAN_r5g6b5,	0xb900,
2581       PIXMAN_null,	0x00,
2582       PIXMAN_a8r8g8b8,	0x6800ff00
2583     },
2584     { PIXMAN_OP_OVERLAY,
2585       PIXMAN_a4r4g4b4,	0xff,
2586       PIXMAN_null,	0x00,
2587       PIXMAN_r3g3b2,	0x8e
2588     },
2589     { PIXMAN_OP_SOFT_LIGHT,
2590       PIXMAN_a4r4g4b4,	0xff00,
2591       PIXMAN_null,	0x00,
2592       PIXMAN_a2r2g2b2,	0xbc
2593     },
2594     { PIXMAN_OP_DIFFERENCE,
2595       PIXMAN_r5g6b5,	0xfffe,
2596       PIXMAN_null,	0x00,
2597       PIXMAN_a4r4g4b4,	0x90
2598     },
2599     { PIXMAN_OP_LIGHTEN,
2600       PIXMAN_r3g3b2,	0xff,
2601       PIXMAN_null,	0x00,
2602       PIXMAN_a8r8g8b8,	0xc35f
2603     },
2604     { PIXMAN_OP_EXCLUSION,
2605       PIXMAN_a2r2g2b2,	0xff,
2606       PIXMAN_null,	0x00,
2607       PIXMAN_a4r4g4b4,	0x39ff
2608     },
2609     { PIXMAN_OP_LIGHTEN,
2610       PIXMAN_a2r2g2b2,	0x1e,
2611       PIXMAN_null,	0x00,
2612       PIXMAN_a4r4g4b4,	0xbaff
2613     },
2614     { PIXMAN_OP_LIGHTEN,
2615       PIXMAN_a8r8g8b8,	0xb4ffff26,
2616       PIXMAN_null,	0x00,
2617       PIXMAN_r5g6b5,	0xff
2618     },
2619     { PIXMAN_OP_COLOR_DODGE,
2620       PIXMAN_a4r4g4b4,	0xe3ff,
2621       PIXMAN_null,	0x00,
2622       PIXMAN_a4r4g4b4,	0x878b
2623     },
2624     { PIXMAN_OP_OVERLAY,
2625       PIXMAN_a8r8g8b8,	0xff700044,
2626       PIXMAN_null,	0x00,
2627       PIXMAN_a2r2g2b2,	0x6
2628     },
2629     { PIXMAN_OP_DARKEN,
2630       PIXMAN_a2r2g2b2,	0xb6,
2631       PIXMAN_null,	0x00,
2632       PIXMAN_a4r4g4b4,	0xcd00
2633     },
2634     { PIXMAN_OP_HARD_LIGHT,
2635       PIXMAN_a2r2g2b2,	0xfe,
2636       PIXMAN_null,	0x00,
2637       PIXMAN_a2r2g2b2,	0x12
2638     },
2639     { PIXMAN_OP_LIGHTEN,
2640       PIXMAN_a8r8g8b8,	0xb1ff006c,
2641       PIXMAN_null,	0x00,
2642       PIXMAN_a4r4g4b4,	0xff7c
2643     },
2644     { PIXMAN_OP_HARD_LIGHT,
2645       PIXMAN_r3g3b2,	0x4e,
2646       PIXMAN_null,	0x00,
2647       PIXMAN_a2r2g2b2,	0x3c
2648     },
2649     { PIXMAN_OP_EXCLUSION,
2650       PIXMAN_r5g6b5,	0xffff,
2651       PIXMAN_null,	0x00,
2652       PIXMAN_a4r4g4b4,	0x1968
2653     },
2654     { PIXMAN_OP_COLOR_BURN,
2655       PIXMAN_r3g3b2,	0xe7,
2656       PIXMAN_null,	0x00,
2657       PIXMAN_a8r8g8b8,	0x8cced6ac
2658     },
2659     { PIXMAN_OP_SOFT_LIGHT,
2660       PIXMAN_a4r4g4b4,	0xa500,
2661       PIXMAN_null,	0x00,
2662       PIXMAN_a8r8g8b8,	0x1bff009d
2663     },
2664     { PIXMAN_OP_DIFFERENCE,
2665       PIXMAN_r5g6b5,	0x45ff,
2666       PIXMAN_null,	0x00,
2667       PIXMAN_a2r2g2b2,	0x32
2668     },
2669     { PIXMAN_OP_OVERLAY,
2670       PIXMAN_a2r2g2b2,	0x18,
2671       PIXMAN_null,	0x00,
2672       PIXMAN_r5g6b5,	0xdc00
2673     },
2674     { PIXMAN_OP_EXCLUSION,
2675       PIXMAN_a4r4g4b4,	0x4247,
2676       PIXMAN_null,	0x00,
2677       PIXMAN_a8r8g8b8,	0xd8ffff
2678     },
2679     { PIXMAN_OP_EXCLUSION,
2680       PIXMAN_r5g6b5,	0xff00,
2681       PIXMAN_null,	0x00,
2682       PIXMAN_a2r2g2b2,	0x79
2683     },
2684     { PIXMAN_OP_COLOR_BURN,
2685       PIXMAN_r3g3b2,	0xf,
2686       PIXMAN_null,	0x00,
2687       PIXMAN_a8r8g8b8,	0x9fff00ff
2688     },
2689     { PIXMAN_OP_EXCLUSION,
2690       PIXMAN_a2r2g2b2,	0x93,
2691       PIXMAN_null,	0x00,
2692       PIXMAN_a4r4g4b4,	0xff
2693     },
2694     { PIXMAN_OP_LIGHTEN,
2695       PIXMAN_a2r2g2b2,	0xa3,
2696       PIXMAN_null,	0x00,
2697       PIXMAN_r3g3b2,	0xca
2698     },
2699     { PIXMAN_OP_DIFFERENCE,
2700       PIXMAN_r3g3b2,	0xe0,
2701       PIXMAN_null,	0x00,
2702       PIXMAN_a2r2g2b2,	0x39
2703     },
2704     { PIXMAN_OP_HARD_LIGHT,
2705       PIXMAN_r3g3b2,	0x16,
2706       PIXMAN_null,	0x00,
2707       PIXMAN_a8r8g8b8,	0x98ffff
2708     },
2709     { PIXMAN_OP_LIGHTEN,
2710       PIXMAN_r3g3b2,	0x96,
2711       PIXMAN_null,	0x00,
2712       PIXMAN_a8r8g8b8,	0x225f6c
2713     },
2714     { PIXMAN_OP_HARD_LIGHT,
2715       PIXMAN_a4r4g4b4,	0x12c7,
2716       PIXMAN_null,	0x00,
2717       PIXMAN_a4r4g4b4,	0xb100
2718     },
2719     { PIXMAN_OP_LIGHTEN,
2720       PIXMAN_a8r8g8b8,	0xffda91,
2721       PIXMAN_null,	0x00,
2722       PIXMAN_r3g3b2,	0x6a
2723     },
2724     { PIXMAN_OP_EXCLUSION,
2725       PIXMAN_a8r8g8b8,	0xfff8,
2726       PIXMAN_null,	0x00,
2727       PIXMAN_r3g3b2,	0xff
2728     },
2729     { PIXMAN_OP_SOFT_LIGHT,
2730       PIXMAN_a2r2g2b2,	0xff,
2731       PIXMAN_null,	0x00,
2732       PIXMAN_a8r8g8b8,	0xf0ff48ca
2733     },
2734     { PIXMAN_OP_HARD_LIGHT,
2735       PIXMAN_r5g6b5,	0xf1ff,
2736       PIXMAN_r5g6b5,	0x6eff,
2737       PIXMAN_a8r8g8b8,	0xffffff,
2738     },
2739     { PIXMAN_OP_HARD_LIGHT,
2740       PIXMAN_r5g6b5,	0xf1ff,
2741       PIXMAN_a8,	0xdf,
2742       PIXMAN_a8r8g8b8,	0xffffff,
2743     },
2744     { PIXMAN_OP_HARD_LIGHT,
2745       PIXMAN_r5g6b5,	0xf1ff,
2746       PIXMAN_null,	0x00,
2747       PIXMAN_a8r8g8b8,	0xffffff,
2748     },
2749     { PIXMAN_OP_HARD_LIGHT,
2750       PIXMAN_r5g6b5,	0xb867,
2751       PIXMAN_a4r4g4b4,	0x82d9,
2752       PIXMAN_a8r8g8b8,	0xffc5,
2753     },
2754     { PIXMAN_OP_HARD_LIGHT,
2755       PIXMAN_r5g6b5,	0xa9f5,
2756       PIXMAN_r5g6b5,	0xadff,
2757       PIXMAN_a8r8g8b8,	0xffff00,
2758     },
2759     { PIXMAN_OP_HARD_LIGHT,
2760       PIXMAN_r5g6b5,	0x4900,
2761       PIXMAN_r5g6b5,	0x865c,
2762       PIXMAN_a8r8g8b8,	0xebff,
2763     },
2764     { PIXMAN_OP_HARD_LIGHT,
2765       PIXMAN_r5g6b5,	0xd9ff,
2766       PIXMAN_a8r8g8b8,	0xffffffff,
2767       PIXMAN_a8r8g8b8,	0x8ff0d,
2768     },
2769     { PIXMAN_OP_HARD_LIGHT,
2770       PIXMAN_r5g6b5,	0x41ff,
2771       PIXMAN_a4r4g4b4,	0xcff,
2772       PIXMAN_a8r8g8b8,	0xe1ff00,
2773     },
2774     { PIXMAN_OP_HARD_LIGHT,
2775       PIXMAN_r5g6b5,	0x91ff,
2776       PIXMAN_a2r2g2b2,	0xf3,
2777       PIXMAN_a8r8g8b8,	0xe4ffb4,
2778     },
2779     { PIXMAN_OP_HARD_LIGHT,
2780       PIXMAN_r5g6b5,	0xb9ff,
2781       PIXMAN_a2r2g2b2,	0xff,
2782       PIXMAN_a8r8g8b8,	0xffff,
2783     },
2784     { PIXMAN_OP_OVERLAY,
2785       PIXMAN_a8r8g8b8,	0x473affff,
2786       PIXMAN_r5g6b5,	0x2b00,
2787       PIXMAN_r5g6b5,	0x1ff,
2788     },
2789     { PIXMAN_OP_OVERLAY,
2790       PIXMAN_a8r8g8b8,	0xe4ff,
2791       PIXMAN_r3g3b2,	0xff,
2792       PIXMAN_r5g6b5,	0x89ff,
2793     },
2794 };
2795 
2796 static void
fill(pixman_image_t * image,uint32_t pixel)2797 fill (pixman_image_t *image, uint32_t pixel)
2798 {
2799     uint8_t *data = (uint8_t *)pixman_image_get_data (image);
2800     int bytes_per_pixel = PIXMAN_FORMAT_BPP (pixman_image_get_format (image)) / 8;
2801     int n_bytes = pixman_image_get_stride (image) * pixman_image_get_height (image);
2802     int i;
2803 
2804     switch (bytes_per_pixel)
2805     {
2806     case 4:
2807 	for (i = 0; i < n_bytes / 4; ++i)
2808 	    ((uint32_t *)data)[i] = pixel;
2809 	break;
2810 
2811     case 2:
2812 	pixel &= 0xffff;
2813 	for (i = 0; i < n_bytes / 2; ++i)
2814 	    ((uint16_t *)data)[i] = pixel;
2815 	break;
2816 
2817     case 1:
2818 	pixel &= 0xff;
2819 	for (i = 0; i < n_bytes; ++i)
2820 	    ((uint8_t *)data)[i] = pixel;
2821 	break;
2822 
2823     default:
2824 	assert (0);
2825 	break;
2826     }
2827 }
2828 
2829 static uint32_t
access(pixman_image_t * image,int x,int y)2830 access (pixman_image_t *image, int x, int y)
2831 {
2832     int bytes_per_pixel;
2833     int stride;
2834     uint32_t result;
2835     uint8_t *location;
2836 
2837     if (x < 0 || x >= image->bits.width || y < 0 || y >= image->bits.height)
2838         return 0;
2839 
2840     bytes_per_pixel = PIXMAN_FORMAT_BPP (image->bits.format) / 8;
2841     stride = image->bits.rowstride * 4;
2842 
2843     location = (uint8_t *)image->bits.bits + y * stride + x * bytes_per_pixel;
2844 
2845     if (bytes_per_pixel == 4)
2846         result = *(uint32_t *)location;
2847     else if (bytes_per_pixel == 2)
2848         result = *(uint16_t *)location;
2849     else if (bytes_per_pixel == 1)
2850         result = *(uint8_t *)location;
2851     else
2852 	assert (0);
2853 
2854     return result;
2855 }
2856 
2857 static pixman_bool_t
verify(int test_no,const pixel_combination_t * combination,int size,pixman_bool_t component_alpha)2858 verify (int test_no, const pixel_combination_t *combination, int size,
2859 	pixman_bool_t component_alpha)
2860 {
2861     pixman_image_t *src, *mask, *dest;
2862     pixel_checker_t src_checker, mask_checker, dest_checker;
2863     color_t source_color, mask_color, dest_color, reference_color;
2864     pixman_bool_t have_mask = (combination->mask_format != PIXMAN_null);
2865     pixman_bool_t result = TRUE;
2866     int i, j;
2867 
2868     /* Compute reference color */
2869     pixel_checker_init (&src_checker, combination->src_format);
2870     if (have_mask)
2871 	pixel_checker_init (&mask_checker, combination->mask_format);
2872     pixel_checker_init (&dest_checker, combination->dest_format);
2873 
2874     pixel_checker_convert_pixel_to_color (
2875 	&src_checker, combination->src_pixel, &source_color);
2876     if (combination->mask_format != PIXMAN_null)
2877     {
2878 	pixel_checker_convert_pixel_to_color (
2879 	    &mask_checker, combination->mask_pixel, &mask_color);
2880     }
2881     pixel_checker_convert_pixel_to_color (
2882 	&dest_checker, combination->dest_pixel, &dest_color);
2883 
2884     do_composite (combination->op,
2885 		  &source_color,
2886 		  have_mask? &mask_color : NULL,
2887 		  &dest_color,
2888 		  &reference_color, component_alpha);
2889 
2890     src = pixman_image_create_bits (
2891 	combination->src_format, size, size, NULL, -1);
2892     if (have_mask)
2893     {
2894 	mask = pixman_image_create_bits (
2895 	    combination->mask_format, size, size, NULL, -1);
2896 
2897 	pixman_image_set_component_alpha (mask, component_alpha);
2898     }
2899     dest = pixman_image_create_bits (
2900 	combination->dest_format, size, size, NULL, -1);
2901 
2902     fill (src, combination->src_pixel);
2903     if (have_mask)
2904 	fill (mask, combination->mask_pixel);
2905     fill (dest, combination->dest_pixel);
2906 
2907     pixman_image_composite32 (
2908 	combination->op, src,
2909 	have_mask ? mask : NULL,
2910 	dest, 0, 0, 0, 0, 0, 0, size, size);
2911 
2912     for (j = 0; j < size; ++j)
2913     {
2914 	for (i = 0; i < size; ++i)
2915 	{
2916 	    uint32_t computed = access (dest, i, j);
2917 	    int32_t a, r, g, b;
2918 
2919 	    if (!pixel_checker_check (&dest_checker, computed, &reference_color))
2920 	    {
2921 		printf ("----------- Test %d failed ----------\n", test_no);
2922 
2923 		printf ("   operator:         %s (%s)\n", operator_name (combination->op),
2924 			have_mask? component_alpha ? "component alpha" : "unified alpha" : "no mask");
2925 		printf ("   src format:       %s\n", format_name (combination->src_format));
2926 		if (have_mask != PIXMAN_null)
2927 		    printf ("   mask format:      %s\n", format_name (combination->mask_format));
2928 		printf ("   dest format:      %s\n", format_name (combination->dest_format));
2929 
2930                 printf (" - source ARGB:      %f  %f  %f  %f   (pixel: %8x)\n",
2931                         source_color.a, source_color.r, source_color.g, source_color.b,
2932                         combination->src_pixel);
2933 		pixel_checker_split_pixel (&src_checker, combination->src_pixel,
2934 					   &a, &r, &g, &b);
2935                 printf ("                     %8d  %8d  %8d  %8d\n", a, r, g, b);
2936 
2937 		if (have_mask)
2938 		{
2939 		    printf (" - mask ARGB:        %f  %f  %f  %f   (pixel: %8x)\n",
2940 			    mask_color.a, mask_color.r, mask_color.g, mask_color.b,
2941 			    combination->mask_pixel);
2942 		    pixel_checker_split_pixel (&mask_checker, combination->mask_pixel,
2943 					       &a, &r, &g, &b);
2944 		    printf ("                     %8d  %8d  %8d  %8d\n", a, r, g, b);
2945 		}
2946 
2947                 printf (" - dest ARGB:        %f  %f  %f  %f   (pixel: %8x)\n",
2948                         dest_color.a, dest_color.r, dest_color.g, dest_color.b,
2949                         combination->dest_pixel);
2950 		pixel_checker_split_pixel (&dest_checker, combination->dest_pixel,
2951 					   &a, &r, &g, &b);
2952                 printf ("                     %8d  %8d  %8d  %8d\n", a, r, g, b);
2953 
2954                 pixel_checker_split_pixel (&dest_checker, computed, &a, &r, &g, &b);
2955                 printf (" - expected ARGB:    %f  %f  %f  %f\n",
2956                         reference_color.a, reference_color.r, reference_color.g, reference_color.b);
2957 
2958                 pixel_checker_get_min (&dest_checker, &reference_color, &a, &r, &g, &b);
2959                 printf ("   min acceptable:   %8d  %8d  %8d  %8d\n", a, r, g, b);
2960 
2961                 pixel_checker_split_pixel (&dest_checker, computed, &a, &r, &g, &b);
2962                 printf ("   got:              %8d  %8d  %8d  %8d   (pixel: %8x)\n", a, r, g, b, computed);
2963 
2964                 pixel_checker_get_max (&dest_checker, &reference_color, &a, &r, &g, &b);
2965                 printf ("   max acceptable:   %8d  %8d  %8d  %8d\n", a, r, g, b);
2966 
2967 		result = FALSE;
2968 		goto done;
2969 	    }
2970 	}
2971     }
2972 
2973 done:
2974     pixman_image_unref (src);
2975     pixman_image_unref (dest);
2976 
2977     return result;
2978 }
2979 
2980 int
main(int argc,char ** argv)2981 main (int argc, char **argv)
2982 {
2983     int result = 0;
2984     int i, j;
2985     int lo, hi;
2986 
2987     if (argc > 1)
2988     {
2989 	lo = atoi (argv[1]);
2990 	hi = lo + 1;
2991     }
2992     else
2993     {
2994 	lo = 0;
2995 	hi = ARRAY_LENGTH (regressions);
2996     }
2997 
2998     for (i = lo; i < hi; ++i)
2999     {
3000 	const pixel_combination_t *combination = &(regressions[i]);
3001 
3002 	for (j = 1; j < 34; ++j)
3003 	{
3004 	    int k, ca;
3005 
3006 	    ca = combination->mask_format == PIXMAN_null ? 1 : 2;
3007 
3008 	    for (k = 0; k < ca; ++k)
3009 	    {
3010 		if (!verify (i, combination, j, k))
3011 		{
3012 		    result = 1;
3013 		    goto next_regression;
3014 		}
3015 	    }
3016 	}
3017 
3018     next_regression:
3019 	;
3020     }
3021 
3022     return result;
3023 }
3024