Add qemu 2.4.0
[kvmfornfv.git] / qemu / pixman / test / radial-perf-test.c
1 #include "utils.h"
2 #include <stdio.h>
3
4 int
5 main ()
6 {
7     static const pixman_point_fixed_t inner = { 0x0000, 0x0000 };
8     static const pixman_point_fixed_t outer = { 0x0000, 0x0000 };
9     static const pixman_fixed_t r_inner = 0;
10     static const pixman_fixed_t r_outer = 64 << 16;
11     static const pixman_gradient_stop_t stops[] = {
12         { 0x00000, { 0x6666, 0x6666, 0x6666, 0xffff } },
13         { 0x10000, { 0x0000, 0x0000, 0x0000, 0xffff } }
14     };
15     static const pixman_transform_t transform = {
16         { { 0x0,        0x26ee, 0x0}, 
17           { 0xffffeeef, 0x0,    0x0}, 
18           { 0x0,        0x0,    0x10000}
19         }
20     };
21     static const pixman_color_t z = { 0x0000, 0x0000, 0x0000, 0x0000 };
22     pixman_image_t *dest, *radial, *zero;
23     int i;
24     double before, after;
25
26     dest = pixman_image_create_bits (
27         PIXMAN_x8r8g8b8, 640, 429, NULL, -1);
28     zero = pixman_image_create_solid_fill (&z);
29     radial = pixman_image_create_radial_gradient (
30         &inner, &outer, r_inner, r_outer, stops, ARRAY_LENGTH (stops));
31     pixman_image_set_transform (radial, &transform);
32     pixman_image_set_repeat (radial, PIXMAN_REPEAT_PAD);
33
34 #define N_COMPOSITE     500
35
36     before = gettime();
37     for (i = 0; i < N_COMPOSITE; ++i)
38     {
39         before -= gettime();
40
41         pixman_image_composite (
42             PIXMAN_OP_SRC, zero, NULL, dest,
43             0, 0, 0, 0, 0, 0, 640, 429);
44
45         before += gettime();
46
47         pixman_image_composite32 (
48             PIXMAN_OP_OVER, radial, NULL, dest,
49             - 150, -158, 0, 0, 0, 0, 640, 361);
50     }
51
52     after = gettime();
53
54     write_png (dest, "radial.png");
55
56     printf ("Average time to composite: %f\n", (after - before) / N_COMPOSITE);
57     return 0;
58 }