Blame test/radial-perf-test.c

Packit 030a23
#include "utils.h"
Packit 030a23
#include <stdio.h>
Packit 030a23
Packit 030a23
int
Packit 030a23
main ()
Packit 030a23
{
Packit 030a23
    static const pixman_point_fixed_t inner = { 0x0000, 0x0000 };
Packit 030a23
    static const pixman_point_fixed_t outer = { 0x0000, 0x0000 };
Packit 030a23
    static const pixman_fixed_t r_inner = 0;
Packit 030a23
    static const pixman_fixed_t r_outer = 64 << 16;
Packit 030a23
    static const pixman_gradient_stop_t stops[] = {
Packit 030a23
	{ 0x00000, { 0x6666, 0x6666, 0x6666, 0xffff } },
Packit 030a23
	{ 0x10000, { 0x0000, 0x0000, 0x0000, 0xffff } }
Packit 030a23
    };
Packit 030a23
    static const pixman_transform_t transform = {
Packit 030a23
	{ { 0x0,        0x26ee, 0x0}, 
Packit 030a23
	  { 0xffffeeef, 0x0,    0x0}, 
Packit 030a23
	  { 0x0,        0x0,    0x10000}
Packit 030a23
	}
Packit 030a23
    };
Packit 030a23
    static const pixman_color_t z = { 0x0000, 0x0000, 0x0000, 0x0000 };
Packit 030a23
    pixman_image_t *dest, *radial, *zero;
Packit 030a23
    int i;
Packit 030a23
    double before, after;
Packit 030a23
Packit 030a23
    dest = pixman_image_create_bits (
Packit 030a23
	PIXMAN_x8r8g8b8, 640, 429, NULL, -1);
Packit 030a23
    zero = pixman_image_create_solid_fill (&z);
Packit 030a23
    radial = pixman_image_create_radial_gradient (
Packit 030a23
	&inner, &outer, r_inner, r_outer, stops, ARRAY_LENGTH (stops));
Packit 030a23
    pixman_image_set_transform (radial, &transform);
Packit 030a23
    pixman_image_set_repeat (radial, PIXMAN_REPEAT_PAD);
Packit 030a23
Packit 030a23
#define N_COMPOSITE	500
Packit 030a23
Packit 030a23
    before = gettime();
Packit 030a23
    for (i = 0; i < N_COMPOSITE; ++i)
Packit 030a23
    {
Packit 030a23
	before -= gettime();
Packit 030a23
Packit 030a23
	pixman_image_composite (
Packit 030a23
	    PIXMAN_OP_SRC, zero, NULL, dest,
Packit 030a23
	    0, 0, 0, 0, 0, 0, 640, 429);
Packit 030a23
Packit 030a23
	before += gettime();
Packit 030a23
Packit 030a23
	pixman_image_composite32 (
Packit 030a23
	    PIXMAN_OP_OVER, radial, NULL, dest,
Packit 030a23
	    - 150, -158, 0, 0, 0, 0, 640, 361);
Packit 030a23
    }
Packit 030a23
Packit 030a23
    after = gettime();
Packit 030a23
Packit 030a23
    write_png (dest, "radial.png");
Packit 030a23
Packit 030a23
    printf ("Average time to composite: %f\n", (after - before) / N_COMPOSITE);
Packit 030a23
    return 0;
Packit 030a23
}