summaryrefslogtreecommitdiffstatsci
path: root/src
diff options
context:
space:
mode:
authorBryce Harrington <b.harrington@samsung.com>2013-11-08 09:25:20 -0800
committerBryce Harrington <b.harrington@samsung.com>2013-11-08 11:04:49 -0800
commit166c69a12f83de52aec6098fa619203ffb9ca10f (patch)
tree12e269ae5c085264bfb5820f884021d4c71ca506 /src
parentf25f5b8d15bae9674f4d81b97f337864ad62846c (diff)
Build the skia tests into cairobench
Diffstat (limited to 'src')
-rw-r--r--src/caskbench.cpp45
-rw-r--r--src/caskbench.h24
-rw-r--r--src/skia-tests/fill.cpp35
-rw-r--r--src/skia-tests/image.cpp70
-rw-r--r--src/skia-tests/mask.cpp48
-rw-r--r--src/skia-tests/paint.cpp36
-rw-r--r--src/skia-tests/stroke.cpp39
7 files changed, 90 insertions, 207 deletions
diff --git a/src/caskbench.cpp b/src/caskbench.cpp
index 564de74..2d24144 100644
--- a/src/caskbench.cpp
+++ b/src/caskbench.cpp
@@ -35,13 +35,19 @@ typedef struct _caskbench_result {
} caskbench_result_t;
caskbench_perf_test_t perf_tests[] = {
- {"fill", ca_setup_fill, ca_teardown_fill, ca_test_fill},
- {"image", ca_setup_image, ca_teardown_image, ca_test_image},
- {"mask", ca_setup_mask, ca_teardown_mask, ca_test_mask},
- {"paint", ca_setup_paint, ca_teardown_paint, ca_test_paint},
- {"stroke", ca_setup_stroke, ca_teardown_stroke, ca_test_stroke},
+ {"cairo-fill", ca_setup_fill, ca_teardown_fill, ca_test_fill},
+ {"cairo-image", ca_setup_image, ca_teardown_image, ca_test_image},
+ {"cairo-mask", ca_setup_mask, ca_teardown_mask, ca_test_mask},
+ {"cairo-paint", ca_setup_paint, ca_teardown_paint, ca_test_paint},
+ {"cairo-stroke", ca_setup_stroke, ca_teardown_stroke, ca_test_stroke},
+
+ {"skia-fill", sk_setup_fill, sk_teardown_fill, sk_test_fill},
+ {"skia-image", sk_setup_image, sk_teardown_image, sk_test_image},
+ {"skia-mask", sk_setup_mask, sk_teardown_mask, sk_test_mask},
+ {"skia-paint", sk_setup_paint, sk_teardown_paint, sk_test_paint},
+ {"skia-stroke", sk_setup_stroke, sk_teardown_stroke, sk_test_stroke},
};
-#define NUM_CASES (5)
+#define NUM_CASES (10)
typedef enum {
CASKBENCH_STATUS_PASS,
@@ -164,9 +170,14 @@ main (int argc, char *argv[])
// Setup
caskbench_context_t context;
caskbench_result_t result;
- cairo_surface_t *surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 800, 80);
+ cairo_surface_t *cairo_surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 800, 80);
+
+ SkBitmap bitmap;
+ bitmap.setConfig(SkBitmap::kARGB_8888_Config, 800, 100);
+ bitmap.allocPixels();
+ SkBitmapDevice device(bitmap);
+ SkCanvas canvas(&device);
SkPaint paint;
- SkCanvas canvas;
// If dry run, just list the test cases
if (opt.dry_run) {
@@ -175,7 +186,7 @@ main (int argc, char *argv[])
}
srand(0xdeadbeef);
- context.cr = cairo_create(surface);
+ context.cr = cairo_create(cairo_surface);
context.paint = &paint;
context.canvas = &canvas;
@@ -217,7 +228,18 @@ main (int argc, char *argv[])
result.iterations = opt.iterations - i;
result.avg_run_time = run_total / (double)result.iterations;
- cairo_surface_write_to_png (surface, "fill.png");
+ {
+ SkAutoLockPixels image_lock(bitmap);
+ cairo_surface_t* skia_surface = cairo_image_surface_create_for_data((unsigned char*)bitmap.getPixels(),
+ CAIRO_FORMAT_ARGB32,
+ bitmap.width(), bitmap.height(),
+ bitmap.rowBytes());
+
+ cairo_surface_write_to_png (skia_surface, "fill-skia.png");
+ cairo_surface_destroy(skia_surface);
+ }
+
+ cairo_surface_write_to_png (cairo_surface, "fill-cairo.png");
FINAL:
// TODO: Print results to stdout plain text
@@ -228,8 +250,9 @@ main (int argc, char *argv[])
if (perf_tests[c].teardown != NULL)
perf_tests[c].teardown();
+
cairo_destroy(context.cr);
- cairo_surface_destroy(surface);
+ cairo_surface_destroy(cairo_surface);
}
// End json
diff --git a/src/caskbench.h b/src/caskbench.h
index a3a1ec2..1265454 100644
--- a/src/caskbench.h
+++ b/src/caskbench.h
@@ -29,7 +29,7 @@ void display_results_json(int iterations, int status);
// Cairo helpers
void randomize_color(cairo_t *cr);
-// Tests
+// Cairo Tests
int ca_setup_fill(caskbench_context_t *ctx);
void ca_teardown_fill();
int ca_test_fill(caskbench_context_t *ctx);
@@ -50,4 +50,26 @@ int ca_setup_stroke(caskbench_context_t *ctx);
void ca_teardown_stroke();
int ca_test_stroke(caskbench_context_t *ctx);
+
+// Skia Tests
+int sk_setup_fill(caskbench_context_t *ctx);
+void sk_teardown_fill();
+int sk_test_fill(caskbench_context_t *ctx);
+
+int sk_setup_image(caskbench_context_t *ctx);
+void sk_teardown_image();
+int sk_test_image(caskbench_context_t *ctx);
+
+int sk_setup_mask(caskbench_context_t *ctx);
+void sk_teardown_mask();
+int sk_test_mask(caskbench_context_t *ctx);
+
+int sk_setup_paint(caskbench_context_t *ctx);
+void sk_teardown_paint();
+int sk_test_paint(caskbench_context_t *ctx);
+
+int sk_setup_stroke(caskbench_context_t *ctx);
+void sk_teardown_stroke();
+int sk_test_stroke(caskbench_context_t *ctx);
+
#endif // __CASKBENCH_H__
diff --git a/src/skia-tests/fill.cpp b/src/skia-tests/fill.cpp
index a102505..e8e2081 100644
--- a/src/skia-tests/fill.cpp
+++ b/src/skia-tests/fill.cpp
@@ -8,18 +8,18 @@
#include "caskbench.h"
int
-sk_setup_fill(SkPaint *paint)
+sk_setup_fill(caskbench_context_t *ctx)
{
return 1;
}
int
-sk_test_fill(SkCanvas *canvas, SkPaint *paint)
+sk_test_fill(caskbench_context_t *ctx)
{
int i;
for (i=0; i<32; i++) {
- paint->setColor(rand());
- canvas->drawCircle(40*i, 40, 30, *paint);
+ ctx->paint->setColor(rand());
+ ctx->canvas->drawCircle(40*i, 40, 30, *ctx->paint);
}
return 1;
@@ -30,30 +30,3 @@ sk_teardown_fill(void)
{
}
-int main()
-{
- SkBitmap bitmap;
- bitmap.setConfig(SkBitmap::kARGB_8888_Config, 800, 100);
- bitmap.allocPixels();
- SkBitmapDevice device(bitmap);
- SkCanvas canvas(&device);
- SkPaint paint;
-
- for (int i=0; i<1; i++) {
- sk_setup_fill(&paint);
- /* time... */
- sk_test_fill(&canvas, &paint);
- /* done timing */
- }
-
- sk_teardown_fill();
- {
- SkAutoLockPixels image_lock(bitmap);
- cairo_surface_t* surface = cairo_image_surface_create_for_data((unsigned char*)bitmap.getPixels(), CAIRO_FORMAT_ARGB32,
- bitmap.width(), bitmap.height(), bitmap.rowBytes());
- cairo_surface_write_to_png(surface, "fill.png");
- cairo_surface_destroy(surface);
- }
-
- return 0;
-}
diff --git a/src/skia-tests/image.cpp b/src/skia-tests/image.cpp
index 05ca149..924ddb3 100644
--- a/src/skia-tests/image.cpp
+++ b/src/skia-tests/image.cpp
@@ -1,53 +1,28 @@
// From http://www.atoker.com/blog/2008/09/06/skia-graphics-library-in-chrome-first-impressions/
-#include "err.h"
-#include "SkBitmap.h"
-#include "SkBitmapDevice.h"
-#include "SkPaint.h"
-#include "SkImageDecoder.h"
+#include <err.h>
+
+#include <SkBitmap.h>
+#include <SkBitmapDevice.h>
+#include <SkPaint.h>
#include <cairo.h>
-#include "SkStream.h"
-#include "SkPixelRef.h"
-
#include "caskbench.h"
static SkBitmap bitmap;
-int32_t SkToS32(intmax_t x) { return (int32_t)x; }
-
int
-sk_setup_image(SkPaint *paint)
+sk_setup_image(caskbench_context_t *ctx)
{
- const char* path = "/home/bryce/src/Caskbench/caskbench/data/romedalen.png";
-
- SkAutoTUnref<SkStreamRewindable> stream(SkStream::NewFromFile(path));
- if (!stream.get()) {
- warnx("Failed to create stream from %s\n", path);
- return 0;
- }
- if (!SkImageDecoder::DecodeStream(stream, &bitmap,
- SkBitmap::kNo_Config,
- SkImageDecoder::kDecodePixels_Mode,
- NULL)) {
- warnx("Failed to decode stream\n");
- return 0;
- }
- bitmap.pixelRef()->setURI(path);
-
- //bool ret = SkImageDecoder::DecodeFile(path, &bitmap);
- bitmap.setImmutable();
- printf("bitmap: %d, %d\n", bitmap.width(), bitmap.height());
- bitmap.lockPixels();
return 1;
}
int
-sk_test_image(SkCanvas *canvas, SkPaint *paint)
+sk_test_image(caskbench_context_t *ctx)
{
int i;
for (i=0; i<32; i++) {
- canvas->drawBitmap(bitmap, 0, 0);
+ ctx->canvas->drawBitmap(bitmap, 0, 0);
}
return 1;
@@ -58,32 +33,3 @@ sk_teardown_image(void)
{
}
-int main()
-{
- SkBitmap bitmap;
- bitmap.setConfig(SkBitmap::kARGB_8888_Config, 800, 100);
- bitmap.allocPixels();
- SkBitmapDevice device(bitmap);
- SkCanvas canvas(&device);
- SkPaint paint;
-
- for (int i=0; i<1; i++) {
- if (sk_setup_image(&paint) != 1) {
- errx(1, "Failed to setup image\n");
- }
- /* time... */
- sk_test_image(&canvas, &paint);
- /* done timing */
- }
-
- sk_teardown_image();
- {
- SkAutoLockPixels image_lock(bitmap);
- cairo_surface_t* surface = cairo_image_surface_create_for_data((unsigned char*)bitmap.getPixels(), CAIRO_FORMAT_ARGB32,
- bitmap.width(), bitmap.height(), bitmap.rowBytes());
- cairo_surface_write_to_png(surface, "image.png");
- cairo_surface_destroy(surface);
- }
-
- return 0;
-}
diff --git a/src/skia-tests/mask.cpp b/src/skia-tests/mask.cpp
index 01ee9ed..8ed5257 100644
--- a/src/skia-tests/mask.cpp
+++ b/src/skia-tests/mask.cpp
@@ -1,27 +1,28 @@
// From http://www.atoker.com/blog/2008/09/06/skia-graphics-library-in-chrome-first-impressions/
-#include "err.h"
-#include "SkBitmap.h"
-#include "SkBitmapDevice.h"
-#include "SkPaint.h"
-#include "SkImageDecoder.h"
-#include "effects/SkBlurMaskFilter.h"
+#include <err.h>
+
+#include <SkBitmap.h>
+#include <SkBitmapDevice.h>
+#include <SkPaint.h>
+#include <effects/SkBlurMaskFilter.h>
+
#include <cairo.h>
#include "caskbench.h"
int
-sk_setup_mask(SkPaint *paint)
+sk_setup_mask(caskbench_context_t *ctx)
{
SkMaskFilter *mask = SkBlurMaskFilter::Create(1.0,
SkBlurMaskFilter::kNormal_BlurStyle,
SkBlurMaskFilter::kHighQuality_BlurFlag);
- paint->setMaskFilter(mask);
+ ctx->paint->setMaskFilter(mask);
return 1;
}
int
-sk_test_mask(SkCanvas *canvas, SkPaint *paint)
+sk_test_mask(caskbench_context_t *ctx)
{
// TODO: Apply mask
return 1;
@@ -32,32 +33,3 @@ sk_teardown_mask(void)
{
}
-int main()
-{
- SkBitmap bitmap;
- bitmap.setConfig(SkBitmap::kARGB_8888_Config, 800, 100);
- bitmap.allocPixels();
- SkBitmapDevice device(bitmap);
- SkCanvas canvas(&device);
- SkPaint paint;
-
- for (int i=0; i<1; i++) {
- if (sk_setup_mask(&paint) != 1) {
- errx(1, "Failed to setup image\n");
- }
- /* time... */
- sk_test_mask(&canvas, &paint);
- /* done timing */
- }
-
- sk_teardown_mask();
- {
- SkAutoLockPixels image_lock(bitmap);
- cairo_surface_t* surface = cairo_image_surface_create_for_data((unsigned char*)bitmap.getPixels(), CAIRO_FORMAT_ARGB32,
- bitmap.width(), bitmap.height(), bitmap.rowBytes());
- cairo_surface_write_to_png(surface, "mask.png");
- cairo_surface_destroy(surface);
- }
-
- return 0;
-}
diff --git a/src/skia-tests/paint.cpp b/src/skia-tests/paint.cpp
index a0b445f..2fef230 100644
--- a/src/skia-tests/paint.cpp
+++ b/src/skia-tests/paint.cpp
@@ -11,51 +11,23 @@
static SkRect r;
int
-sk_setup_fill(SkPaint *paint)
+sk_setup_paint(caskbench_context_t *ctx)
{
return 1;
}
int
-sk_test_fill(SkCanvas *canvas, SkPaint *paint)
+sk_test_paint(caskbench_context_t *ctx)
{
int i;
for (i=0; i<32; i++) {
- canvas->drawColor(rand());
+ ctx->canvas->drawColor(rand());
}
return 1;
}
void
-sk_teardown_fill(void)
+sk_teardown_paint(void)
{
}
-
-int main()
-{
- SkBitmap bitmap;
- bitmap.setConfig(SkBitmap::kARGB_8888_Config, 800, 100);
- bitmap.allocPixels();
- SkBitmapDevice device(bitmap);
- SkCanvas canvas(&device);
- SkPaint paint;
-
- for (int i=0; i<1; i++) {
- sk_setup_fill(&paint);
- /* time... */
- sk_test_fill(&canvas, &paint);
- /* done timing */
- }
-
- sk_teardown_fill();
- {
- SkAutoLockPixels image_lock(bitmap);
- cairo_surface_t* surface = cairo_image_surface_create_for_data((unsigned char*)bitmap.getPixels(), CAIRO_FORMAT_ARGB32,
- bitmap.width(), bitmap.height(), bitmap.rowBytes());
- cairo_surface_write_to_png(surface, "fill.png");
- cairo_surface_destroy(surface);
- }
-
- return 0;
-}
diff --git a/src/skia-tests/stroke.cpp b/src/skia-tests/stroke.cpp
index 52b7aef..15bf563 100644
--- a/src/skia-tests/stroke.cpp
+++ b/src/skia-tests/stroke.cpp
@@ -11,25 +11,25 @@
static SkRect r;
int
-setup_stroke(SkPaint *paint)
+sk_setup_stroke(caskbench_context_t *ctx)
{
- paint->setARGB(255, 255, 255, 255);
+ ctx->paint->setARGB(255, 255, 255, 255);
r.set(10, 10, 20, 20);
return 1;
}
int
-test_stroke(SkCanvas *canvas, SkPaint *paint)
+sk_test_stroke(caskbench_context_t *ctx)
{
int i, x, w, prev_w;
x = 0;
prev_w = 0;
for (i=0; i<32; i++) {
- paint->setColor(rand());
+ ctx->paint->setColor(rand());
w = (32.0*rand())/RAND_MAX + 1;
x += 4 + (prev_w + w)/2.0;
- paint->setStrokeWidth(w);
- canvas->drawLine(x,10, x,70, *paint);
+ ctx->paint->setStrokeWidth(w);
+ ctx->canvas->drawLine(x,10, x,70, *(ctx->paint));
prev_w = w;
}
@@ -37,31 +37,6 @@ test_stroke(SkCanvas *canvas, SkPaint *paint)
}
void
-teardown_stroke(void)
+sk_teardown_stroke(void)
{
}
-
-int main()
-{
- SkBitmap bitmap;
- bitmap.setConfig(SkBitmap::kARGB_8888_Config, 800, 100);
- bitmap.allocPixels();
- SkBitmapDevice device(bitmap);
- SkCanvas canvas(&device);
- SkPaint paint;
-
- for (int i=0; i<1; i++) {
- setup_stroke(&paint);
- test_stroke(&canvas, &paint);
- }
-
- {
- SkAutoLockPixels image_lock(bitmap);
- cairo_surface_t* surface = cairo_image_surface_create_for_data((unsigned char*)bitmap.getPixels(), CAIRO_FORMAT_ARGB32,
- bitmap.width(), bitmap.height(), bitmap.rowBytes());
- cairo_surface_write_to_png(surface, "snapshot.png");
- cairo_surface_destroy(surface);
- }
-
- return 0;
-}