diff options
Diffstat (limited to 'qemu/pixman/test/scaling-bench.c')
-rw-r--r-- | qemu/pixman/test/scaling-bench.c | 80 |
1 files changed, 0 insertions, 80 deletions
diff --git a/qemu/pixman/test/scaling-bench.c b/qemu/pixman/test/scaling-bench.c deleted file mode 100644 index 365e79850..000000000 --- a/qemu/pixman/test/scaling-bench.c +++ /dev/null @@ -1,80 +0,0 @@ -#include <stdlib.h> -#include "utils.h" - -#define SOURCE_WIDTH 320 -#define SOURCE_HEIGHT 240 -#define TEST_REPEATS 3 - -static pixman_image_t * -make_source (void) -{ - size_t n_bytes = (SOURCE_WIDTH + 2) * (SOURCE_HEIGHT + 2) * 4; - uint32_t *data = malloc (n_bytes); - pixman_image_t *source; - - prng_randmemset (data, n_bytes, 0); - - source = pixman_image_create_bits ( - PIXMAN_a8r8g8b8, SOURCE_WIDTH + 2, SOURCE_HEIGHT + 2, - data, - (SOURCE_WIDTH + 2) * 4); - - pixman_image_set_filter (source, PIXMAN_FILTER_BILINEAR, NULL, 0); - - return source; -} - -int -main () -{ - double scale; - pixman_image_t *src; - - prng_srand (23874); - - src = make_source (); - printf ("# %-6s %-22s %-14s %-12s\n", - "ratio", - "resolutions", - "time / ms", - "time per pixel / ns"); - for (scale = 0.1; scale < 10.005; scale += 0.01) - { - int i; - int dest_width = SOURCE_WIDTH * scale + 0.5; - int dest_height = SOURCE_HEIGHT * scale + 0.5; - int dest_byte_stride = (dest_width * 4 + 15) & ~15; - pixman_fixed_t s = (1 / scale) * 65536.0 + 0.5; - pixman_transform_t transform; - pixman_image_t *dest; - double t1, t2, t = -1; - uint32_t *dest_buf = aligned_malloc (16, dest_byte_stride * dest_height); - memset (dest_buf, 0, dest_byte_stride * dest_height); - - pixman_transform_init_scale (&transform, s, s); - pixman_image_set_transform (src, &transform); - - dest = pixman_image_create_bits ( - PIXMAN_a8r8g8b8, dest_width, dest_height, dest_buf, dest_byte_stride); - - for (i = 0; i < TEST_REPEATS; i++) - { - t1 = gettime(); - pixman_image_composite ( - PIXMAN_OP_OVER, src, NULL, dest, - scale, scale, 0, 0, 0, 0, dest_width, dest_height); - t2 = gettime(); - if (t < 0 || t2 - t1 < t) - t = t2 - t1; - } - - printf ("%6.2f : %4dx%-4d => %4dx%-4d : %12.4f : %12.4f\n", - scale, SOURCE_WIDTH, SOURCE_HEIGHT, dest_width, dest_height, - t * 1000, (t / (dest_width * dest_height)) * 1000000000); - - pixman_image_unref (dest); - free (dest_buf); - } - - return 0; -} |