Commit 9ba185b7 authored by Alexander Larsson's avatar Alexander Larsson

Add performance test for gtkcairoblur

This just creates a large cairo surface and times bluring it
at various values of radius.

https://bugzilla.gnome.org/show_bug.cgi?id=746468
parent dd1af9bb
......@@ -34,6 +34,7 @@ noinst_PROGRAMS = $(TEST_PROGS) \
animated-revealing \
motion-compression \
scrolling-performance \
blur-performance \
simple \
flicker \
print-editor \
......@@ -187,6 +188,7 @@ animated_revealing_DEPENDENCIES = $(TEST_DEPS)
flicker_DEPENDENCIES = $(TEST_DEPS)
motion_compression_DEPENDENCIES = $(TEST_DEPS)
scrolling_performance_DEPENDENCIES = $(TEST_DEPS)
blur_performance_DEPENDENCIES = $(TEST_DEPS)
simple_DEPENDENCIES = $(TEST_DEPS)
print_editor_DEPENDENCIES = $(TEST_DEPS)
video_timer_DEPENDENCIES = $(TEST_DEPS)
......@@ -318,6 +320,10 @@ scrolling_performance_SOURCES = \
variable.c \
variable.h
blur_performance_SOURCES = \
blur-performance.c \
../gtk/gtkcairoblur.c
video_timer_SOURCES = \
video-timer.c \
variable.c \
......
/* -*- mode: C; c-basic-offset: 2; indent-tabs-mode: nil; -*- */
#include <gtk/gtkcairoblurprivate.h>
static void
init_surface (cairo_t *cr)
{
int w = cairo_image_surface_get_width (cairo_get_target (cr));
int h = cairo_image_surface_get_height (cairo_get_target (cr));
cairo_set_source_rgb (cr, 0, 0, 0);
cairo_fill (cr);
cairo_set_source_rgb (cr, 1, 1, 1);
cairo_arc (cr, w/2, h/2, w/2, 0, 2*G_PI);
cairo_fill (cr);
}
int
main (int argc, char **argv)
{
cairo_surface_t *surface;
cairo_t *cr;
GTimer *timer;
double msec;
int i, j;
int size;
timer = g_timer_new ();
size = 2000;
surface = cairo_image_surface_create (CAIRO_FORMAT_A8, size, size);
cr = cairo_create (surface);
/* We do everything three times, first two as warmup */
for (j = 0; j < 2; j++)
{
for (i = 1; i < 16; i++)
{
init_surface (cr);
g_timer_start (timer);
_gtk_cairo_blur_surface (surface, i);
msec = g_timer_elapsed (timer, NULL) * 1000;
if (j == 1)
g_print ("Radius %2d: %.2f msec, %.2f kpixels/msec:\n", i, msec, size*size/(msec*1000));
}
}
g_timer_destroy (timer);
return 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment