diff options
| author | Bryce Harrington <b.harrington@samsung.com> | 2013-11-12 19:52:58 -0800 |
|---|---|---|
| committer | Bryce Harrington <b.harrington@samsung.com> | 2013-11-13 13:19:18 -0800 |
| commit | 04cdffeed4d3c58c81f79e1c3869e3cb58f81cb7 (patch) | |
| tree | d1454541c5a14cd13fdd9f4cbdf530dd2737345e /src | |
| parent | 8d30cc5e32d4c098c1382594e0799de44a44f1bf (diff) | |
Add a rectangles test case
Derived from Cairo's rectangles micro benchmark
Diffstat (limited to 'src')
| -rw-r--r-- | src/cairo-tests/rectangles.cpp | 34 | ||||
| -rw-r--r-- | src/caskbench.cpp | 3 | ||||
| -rw-r--r-- | src/caskbench.h | 8 | ||||
| -rw-r--r-- | src/skia-tests/rectangles.cpp | 39 |
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) +{ +} |