summaryrefslogtreecommitdiff
path: root/perf/dragon.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2009-01-13 12:52:52 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2009-01-14 16:51:09 +0000
commit4c79cd480db1cf10b6018bce3ea966587efc6081 (patch)
treeae1455912a3f2a8d8e1db7846881b60a2b0a5406 /perf/dragon.c
parentde9e6b5a3f4e4752e0f99e3ae20ac263a5aae4bb (diff)
[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.
Diffstat (limited to 'perf/dragon.c')
-rw-r--r--perf/dragon.c42
1 files changed, 41 insertions, 1 deletions
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);
}