diff options
| author | Bryce Harrington <b.harrington@samsung.com> | 2013-11-08 09:25:20 -0800 |
|---|---|---|
| committer | Bryce Harrington <b.harrington@samsung.com> | 2013-11-08 11:04:49 -0800 |
| commit | 166c69a12f83de52aec6098fa619203ffb9ca10f (patch) | |
| tree | 12e269ae5c085264bfb5820f884021d4c71ca506 /src | |
| parent | f25f5b8d15bae9674f4d81b97f337864ad62846c (diff) | |
Build the skia tests into cairobench
Diffstat (limited to 'src')
| -rw-r--r-- | src/caskbench.cpp | 45 | ||||
| -rw-r--r-- | src/caskbench.h | 24 | ||||
| -rw-r--r-- | src/skia-tests/fill.cpp | 35 | ||||
| -rw-r--r-- | src/skia-tests/image.cpp | 70 | ||||
| -rw-r--r-- | src/skia-tests/mask.cpp | 48 | ||||
| -rw-r--r-- | src/skia-tests/paint.cpp | 36 | ||||
| -rw-r--r-- | src/skia-tests/stroke.cpp | 39 |
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; -} |