summaryrefslogtreecommitdiffstatsci
path: root/src
diff options
context:
space:
mode:
authorBryce Harrington <b.harrington@samsung.com>2014-03-20 20:01:49 -0700
committerBryce Harrington <b.harrington@samsung.com>2014-03-20 20:01:49 -0700
commitb56dc8ecba6265c2efd4eff28bfc4d269fd1d906 (patch)
tree7ac46d9215e6a76c7fe18b7dd612f985bf77b617 /src
parent92cc8bf83b3c4706cf028e9df5e57ce40d7259e6 (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.cpp5
-rw-r--r--src/cairo-glx.cpp5
-rw-r--r--src/cairo-image.cpp4
-rw-r--r--src/caskbench.cpp30
-rw-r--r--src/caskbench.h2
-rwxr-xr-xsrc/generate_tests4
-rw-r--r--src/skia-egl.cpp6
-rw-r--r--src/skia-glx.cpp6
-rw-r--r--src/skia-image.cpp5
-rw-r--r--src/tests.h4
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__