summaryrefslogtreecommitdiffstatsci
path: root/src
diff options
context:
space:
mode:
authorBryce Harrington <b.harrington@samsung.com>2013-11-12 19:52:58 -0800
committerBryce Harrington <b.harrington@samsung.com>2013-11-13 13:19:18 -0800
commit04cdffeed4d3c58c81f79e1c3869e3cb58f81cb7 (patch)
treed1454541c5a14cd13fdd9f4cbdf530dd2737345e /src
parent8d30cc5e32d4c098c1382594e0799de44a44f1bf (diff)
Add a rectangles test case
Derived from Cairo's rectangles micro benchmark
Diffstat (limited to 'src')
-rw-r--r--src/cairo-tests/rectangles.cpp34
-rw-r--r--src/caskbench.cpp3
-rw-r--r--src/caskbench.h8
-rw-r--r--src/skia-tests/rectangles.cpp39
4 files changed, 84 insertions, 0 deletions
diff --git a/src/cairo-tests/rectangles.cpp b/src/cairo-tests/rectangles.cpp
new file mode 100644
index 0000000..0115f1c
--- /dev/null
+++ b/src/cairo-tests/rectangles.cpp
@@ -0,0 +1,34 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <cairo.h>
+
+#include "caskbench.h"
+
+int
+ca_setup_rectangles(caskbench_context_t *ctx)
+{
+ return 1;
+}
+
+void
+ca_teardown_rectangles(void)
+{
+}
+
+int
+ca_test_rectangles(caskbench_context_t *ctx)
+{
+ int i, w, h, x, y;
+ for (i=0; i<ctx->size; i++) {
+ randomize_color (ctx->cr);
+ w = (0.5*(double)ctx->canvas_width*rand())/RAND_MAX + 1;
+ h = (0.5*(double)ctx->canvas_height*rand())/RAND_MAX + 1;
+ x = (0.5*(double)ctx->canvas_width*rand())/RAND_MAX;
+ y = (0.5*(double)ctx->canvas_height*rand())/RAND_MAX;
+
+ cairo_rectangle(ctx->cr, x, y, w, h);
+ cairo_set_line_width (ctx->cr, 1);
+ cairo_stroke (ctx->cr);
+ }
+ return 1;
+}
diff --git a/src/caskbench.cpp b/src/caskbench.cpp
index eeba47b..376388f 100644
--- a/src/caskbench.cpp
+++ b/src/caskbench.cpp
@@ -55,6 +55,9 @@ caskbench_perf_test_t perf_tests[] = {
{"cairo-stroke", ca_setup_stroke, ca_teardown_stroke, ca_test_stroke},
{"skia-stroke", sk_setup_stroke, sk_teardown_stroke, sk_test_stroke},
+ {"cairo-rectangles", ca_setup_rectangles, ca_teardown_rectangles, ca_test_rectangles},
+ {"skia-rectangles", sk_setup_rectangles, sk_teardown_rectangles, sk_test_rectangles},
+
{"cairo-roundrect", ca_setup_roundrect, ca_teardown_roundrect, ca_test_roundrect},
{"skia-roundrect", sk_setup_roundrect, sk_teardown_roundrect, sk_test_roundrect},
};
diff --git a/src/caskbench.h b/src/caskbench.h
index ec42f26..f60804a 100644
--- a/src/caskbench.h
+++ b/src/caskbench.h
@@ -97,6 +97,10 @@ int ca_setup_paint(caskbench_context_t *ctx);
void ca_teardown_paint();
int ca_test_paint(caskbench_context_t *ctx);
+int ca_setup_rectangles(caskbench_context_t *ctx);
+void ca_teardown_rectangles();
+int ca_test_rectangles(caskbench_context_t *ctx);
+
int ca_setup_roundrect(caskbench_context_t *ctx);
void ca_teardown_roundrect();
int ca_test_roundrect(caskbench_context_t *ctx);
@@ -123,6 +127,10 @@ int sk_setup_stroke(caskbench_context_t *ctx);
void sk_teardown_stroke();
int sk_test_stroke(caskbench_context_t *ctx);
+int sk_setup_rectangles(caskbench_context_t *ctx);
+void sk_teardown_rectangles();
+int sk_test_rectangles(caskbench_context_t *ctx);
+
int sk_setup_roundrect(caskbench_context_t *ctx);
void sk_teardown_roundrect();
int sk_test_roundrect(caskbench_context_t *ctx);
diff --git a/src/skia-tests/rectangles.cpp b/src/skia-tests/rectangles.cpp
new file mode 100644
index 0000000..f6fc2bc
--- /dev/null
+++ b/src/skia-tests/rectangles.cpp
@@ -0,0 +1,39 @@
+#include "SkBitmap.h"
+#include "SkBitmapDevice.h"
+#include "SkPaint.h"
+#include "SkRect.h"
+#include <cairo.h>
+
+#include "caskbench.h"
+
+int
+sk_setup_rectangles(caskbench_context_t *ctx)
+{
+ ctx->paint->setARGB(255, 255, 255, 255);
+ return 1;
+}
+
+int
+sk_test_rectangles(caskbench_context_t *ctx)
+{
+ int i, x, y, w, h;
+ SkRect rect;
+
+ for (i=0; i<ctx->size; i++) {
+ ctx->paint->setColor(rand());
+ w = (0.5*(double)ctx->canvas_width*rand())/RAND_MAX + 1;
+ h = (0.5*(double)ctx->canvas_height*rand())/RAND_MAX + 1;
+ x = (0.5*(double)ctx->canvas_width*rand())/RAND_MAX;
+ y = (0.5*(double)ctx->canvas_height*rand())/RAND_MAX;
+ rect.set(x, y, x+w, y+h);
+ ctx->paint->setStrokeWidth(1);
+ ctx->canvas->drawRect(rect, *(ctx->paint));
+ }
+
+ return 1;
+}
+
+void
+sk_teardown_rectangles(void)
+{
+}