From 4c79cd480db1cf10b6018bce3ea966587efc6081 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Tue, 13 Jan 2009 12:52:52 +0000 Subject: [perf] Tweak dragon to hit fill_rectangles(). Add a second dragon path that is pixel-aligned and uses a solid pattern, so that it can be drawn using fill-rectangles. --- perf/dragon.c | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) (limited to 'perf/dragon.c') diff --git a/perf/dragon.c b/perf/dragon.c index 6d0328eb..a6167cb3 100644 --- a/perf/dragon.c +++ b/perf/dragon.c @@ -65,7 +65,6 @@ direction (int i) return ! direction (2 * pivot - i); } - static void path (cairo_t *cr, int step, int dir, int iterations) { @@ -159,8 +158,49 @@ do_dragon (cairo_t *cr, int width, int height) return cairo_perf_timer_elapsed (); } +static cairo_perf_ticks_t +do_dragon_solid (cairo_t *cr, int width, int height) +{ + double cx, cy, r; + + cx = cy = .5 * MAX (width, height); + r = .5 * MIN (width, height); + + cairo_perf_timer_start (); + + cairo_set_source_rgb (cr, 0, 0, 0); + cairo_paint (cr); + + cairo_set_line_width (cr, 4.); + + cairo_move_to (cr, cx, cy); + path (cr, 12, 0, 2048); + cairo_set_source_rgb (cr, 1, 0, 0); + cairo_stroke(cr); + + cairo_move_to (cr, cx, cy); + path (cr, 12, 1, 2048); + cairo_set_source_rgb (cr, 0, 1, 0); + cairo_stroke(cr); + + cairo_move_to (cr, cx, cy); + path (cr, 12, 2, 2048); + cairo_set_source_rgb (cr, 0, 0, 1); + cairo_stroke(cr); + + cairo_move_to (cr, cx, cy); + path (cr, 12, 3, 2048); + cairo_set_source_rgb (cr, 1, 1, 1); + cairo_stroke(cr); + + cairo_perf_timer_stop (); + + return cairo_perf_timer_elapsed (); +} + void dragon (cairo_perf_t *perf, cairo_t *cr, int width, int height) { + cairo_perf_run (perf, "dragon-solid", do_dragon_solid); cairo_perf_run (perf, "dragon", do_dragon); } -- cgit v1.2.3