diff options
| author | Bryce Harrington <b.harrington@samsung.com> | 2014-03-20 20:01:49 -0700 |
|---|---|---|
| committer | Bryce Harrington <b.harrington@samsung.com> | 2014-03-20 20:01:49 -0700 |
| commit | b56dc8ecba6265c2efd4eff28bfc4d269fd1d906 (patch) | |
| tree | 7ac46d9215e6a76c7fe18b7dd612f985bf77b617 /src | |
| parent | 92cc8bf83b3c4706cf028e9df5e57ce40d7259e6 (diff) | |
Add a context_update() virtual function
This permits us to flush and swap buffers when needed.
Diffstat (limited to 'src')
| -rw-r--r-- | src/cairo-egl.cpp | 5 | ||||
| -rw-r--r-- | src/cairo-glx.cpp | 5 | ||||
| -rw-r--r-- | src/cairo-image.cpp | 4 | ||||
| -rw-r--r-- | src/caskbench.cpp | 30 | ||||
| -rw-r--r-- | src/caskbench.h | 2 | ||||
| -rwxr-xr-x | src/generate_tests | 4 | ||||
| -rw-r--r-- | src/skia-egl.cpp | 6 | ||||
| -rw-r--r-- | src/skia-glx.cpp | 6 | ||||
| -rw-r--r-- | src/skia-image.cpp | 5 | ||||
| -rw-r--r-- | src/tests.h | 4 |
10 files changed, 69 insertions, 2 deletions
diff --git a/src/cairo-egl.cpp b/src/cairo-egl.cpp index 34340ec..5a81308 100644 --- a/src/cairo-egl.cpp +++ b/src/cairo-egl.cpp @@ -48,3 +48,8 @@ destroy_cairo_egl(void) { cleanup_state_egl(state); } + +void +update_cairo_egl(void) +{ +} diff --git a/src/cairo-glx.cpp b/src/cairo-glx.cpp index 4c6fffc..ac4c7dd 100644 --- a/src/cairo-glx.cpp +++ b/src/cairo-glx.cpp @@ -41,3 +41,8 @@ destroy_cairo_glx(void) { cleanup_state_glx(state); } + +void +update_cairo_glx(void) +{ +} diff --git a/src/cairo-image.cpp b/src/cairo-image.cpp index 7c47ac8..7a9755c 100644 --- a/src/cairo-image.cpp +++ b/src/cairo-image.cpp @@ -39,3 +39,7 @@ destroy_cairo_image(void) cleanup_state_image(state); } +void +update_cairo_image(void) +{ +} diff --git a/src/caskbench.cpp b/src/caskbench.cpp index 6fd2e48..5e17f08 100644 --- a/src/caskbench.cpp +++ b/src/caskbench.cpp @@ -42,24 +42,30 @@ typedef struct _caskbench_result { // Backend-specific graphics initialization cairo_surface_t * create_cairo_surface_image (int width, int height); void destroy_cairo_image(); +void update_cairo_image(); SkBaseDevice * create_skia_device_image (int width, int height); void destroy_skia_image(); +void update_skia_image(); #if defined(HAVE_CAIRO_GL_H) cairo_surface_t *create_cairo_surface_glx (int width, int height); void destroy_cairo_glx(); +void update_cairo_glx(); SkBaseDevice * create_skia_device_glx (int width, int height); void destroy_skia_glx(); +void update_skia_glx(); #endif #if defined(HAVE_GLES2_H) || defined(HAVE_GLES3_H) cairo_surface_t * create_cairo_surface_egl (int width, int height); void destroy_cairo_egl(); +void update_cairo_egl(); SkBaseDevice * create_skia_device_egl (int width, int height); void destroy_skia_egl(); +void update_skia_egl(); #endif void @@ -245,6 +251,8 @@ context_init(caskbench_context_t *context, int size) context->setup_skia = NULL; context->destroy_cairo = NULL; context->destroy_skia = NULL; + context->update_cairo = NULL; + context->update_skia = NULL; } void @@ -253,11 +261,13 @@ context_setup_cairo(caskbench_context_t *context, const char* surface_type) if (surface_type == NULL || !strncmp(surface_type, "image", 5)) { context->setup_cairo = create_cairo_surface_image; context->destroy_cairo = destroy_cairo_image; + context->update_cairo = update_cairo_image; } else if (!strncmp(surface_type, "glx", 3)) { #if defined(HAVE_GLX_H) printf("Setting up glx\n"); context->setup_cairo = create_cairo_surface_glx; context->destroy_cairo = destroy_cairo_glx; + context->update_cairo = update_cairo_glx; #else errx(1, "glx unsupported in this build\n"); #endif @@ -267,12 +277,14 @@ context_setup_cairo(caskbench_context_t *context, const char* surface_type) printf("Setting up egl\n"); context->setup_cairo = create_cairo_surface_egl; context->destroy_cairo = destroy_cairo_egl; + context->update_cairo = update_cairo_egl; #else errx(1, "egl unsupported in this build\n"); #endif } assert (context->setup_cairo); assert (context->destroy_cairo); + assert (context->update_cairo); context->cairo_surface = context->setup_cairo(context->canvas_width, context->canvas_height); @@ -299,11 +311,13 @@ context_setup_skia(caskbench_context_t *context, const char* surface_type) if (surface_type == NULL || !strncmp(surface_type, "image", 5)) { context->setup_skia = create_skia_device_image; context->destroy_skia = destroy_skia_image; + context->update_skia = update_skia_image; } else if (!strncmp(surface_type, "glx", 3)) { #if defined(HAVE_GLX_H) printf("Setting up glx\n"); context->setup_skia = create_skia_device_glx; context->destroy_skia = destroy_skia_glx; + context->update_skia = update_skia_glx; #else errx(1, "glx unsupported in this build\n"); #endif @@ -313,6 +327,7 @@ context_setup_skia(caskbench_context_t *context, const char* surface_type) printf("Setting up egl\n"); context->setup_skia = create_skia_device_egl; context->destroy_skia = destroy_skia_egl; + context->update_skia = update_skia_egl; #else errx(1, "egl unsupported in this build\n"); #endif @@ -320,6 +335,7 @@ context_setup_skia(caskbench_context_t *context, const char* surface_type) assert (context->setup_skia); assert (context->destroy_skia); + assert (context->update_skia); context->skia_device = context->setup_skia(context->canvas_width, context->canvas_height); @@ -340,6 +356,19 @@ context_setup_skia(caskbench_context_t *context, const char* surface_type) } void +context_update_cairo(caskbench_context_t *context) +{ + context->update_cairo(); +} + +void +context_update_skia(caskbench_context_t *context) +{ + context->update_skia(); +} + + +void context_destroy_skia(caskbench_context_t *context) { if (!context) @@ -435,6 +464,7 @@ main (int argc, char *argv[]) result.status = CASKBENCH_STATUS_PASS; else result.status = CASKBENCH_STATUS_FAIL; + perf_tests[c].context_update(&context); stop_time = get_tick(); run_time = stop_time - start_time; diff --git a/src/caskbench.h b/src/caskbench.h index c0c3495..d20ad71 100644 --- a/src/caskbench.h +++ b/src/caskbench.h @@ -37,6 +37,8 @@ typedef struct _caskbench_context { SkBaseDevice *(*setup_skia)(int w, int h); void (*destroy_cairo)(void); void (*destroy_skia)(void); + void (*update_cairo)(void); + void (*update_skia)(void); } caskbench_context_t; diff --git a/src/generate_tests b/src/generate_tests index 4cf473e..91ed90a 100755 --- a/src/generate_tests +++ b/src/generate_tests @@ -53,9 +53,9 @@ for source_file in $(ls ${source_dir}/cairo-tests/*.cpp); do (cat <<EOF {"cairo-${test}", ca_setup_${test}, ca_teardown_${test}, ca_test_${test}, - write_image_file_cairo, context_setup_cairo, context_destroy_cairo }, + write_image_file_cairo, context_setup_cairo, context_destroy_cairo, context_update_cairo }, {"skia-${test}", sk_setup_${test}, sk_teardown_${test}, sk_test_${test}, - write_image_file_skia, context_setup_skia, context_destroy_skia }, + write_image_file_skia, context_setup_skia, context_destroy_skia, context_update_skia }, EOF ) >> $out_file diff --git a/src/skia-egl.cpp b/src/skia-egl.cpp index 9a29484..d3a58a4 100644 --- a/src/skia-egl.cpp +++ b/src/skia-egl.cpp @@ -61,3 +61,9 @@ destroy_skia_egl(void) { cleanup_state_egl(state); } + +void +update_skia_egl(void) +{ +} + diff --git a/src/skia-glx.cpp b/src/skia-glx.cpp index 8bb2f3d..ff24130 100644 --- a/src/skia-glx.cpp +++ b/src/skia-glx.cpp @@ -85,3 +85,9 @@ destroy_skia_glx(void) { cleanup_state_glx(state); } + +void +update_skia_glx(void) +{ +} + diff --git a/src/skia-image.cpp b/src/skia-image.cpp index da0dbc9..22d962c 100644 --- a/src/skia-image.cpp +++ b/src/skia-image.cpp @@ -21,3 +21,8 @@ destroy_skia_image(void) { cleanup_state_image(state); } + +void +update_skia_image(void) +{ +} diff --git a/src/tests.h b/src/tests.h index 8317f23..e5bd54d 100644 --- a/src/tests.h +++ b/src/tests.h @@ -11,6 +11,7 @@ typedef struct _caskbench_perf_test { void (*write_image)(const char *, struct _caskbench_context*); void (*context_setup)(struct _caskbench_context*, const char* surface_type); void (*context_destroy)(struct _caskbench_context*); + void (*context_update)(struct _caskbench_context*); } caskbench_perf_test_t; extern caskbench_perf_test_t perf_tests[]; @@ -25,4 +26,7 @@ void context_setup_skia(struct _caskbench_context *context, const char *surfac void context_destroy_cairo(struct _caskbench_context *context); void context_destroy_skia(struct _caskbench_context *context); +void context_update_cairo(struct _caskbench_context *context); +void context_update_skia(struct _caskbench_context *context); + #endif // __TESTS_H__ |