mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-04-04 07:20:44 +02:00
boilerplate: Introduce create_similar hook
A deficiency of cairo-perf-trace is that it currently always uses similar surfaces for new surface which are kindly cleared by Cairo. This does not accurately reflect the captured trace and introduces large bandwidth overheads that distort the profiles. So we introduce a new boilerplate hook so that the targets can create a surface without incurring additional overheads. [Fixes the broken partial commit of bf1b08d066e.] Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
72b6299c12
commit
d673b9547f
14 changed files with 37 additions and 0 deletions
|
|
@ -213,6 +213,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_SURFACE_TYPE_DIRECTFB, CAIRO_CONTENT_COLOR, 0,
|
||||
"cairo_directfb_surface_create",
|
||||
_cairo_boilerplate_directfb_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
NULL, NULL,
|
||||
_cairo_boilerplate_get_image_surface,
|
||||
cairo_surface_write_to_png,
|
||||
|
|
@ -224,6 +225,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_SURFACE_TYPE_DIRECTFB, CAIRO_CONTENT_COLOR_ALPHA, 0,
|
||||
"cairo_directfb_surface_create",
|
||||
_cairo_boilerplate_directfb_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
NULL, NULL,
|
||||
_cairo_boilerplate_get_image_surface,
|
||||
cairo_surface_write_to_png,
|
||||
|
|
|
|||
|
|
@ -80,6 +80,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_SURFACE_TYPE_DRM, CAIRO_CONTENT_COLOR_ALPHA, 1,
|
||||
"cairo_drm_surface_create",
|
||||
_cairo_boilerplate_drm_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
NULL, NULL,
|
||||
_cairo_boilerplate_get_image_surface,
|
||||
cairo_surface_write_to_png,
|
||||
|
|
@ -93,6 +94,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_SURFACE_TYPE_DRM, CAIRO_CONTENT_COLOR, 1,
|
||||
"cairo_drm_surface_create",
|
||||
_cairo_boilerplate_drm_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
NULL, NULL,
|
||||
_cairo_boilerplate_get_image_surface,
|
||||
cairo_surface_write_to_png,
|
||||
|
|
|
|||
|
|
@ -161,6 +161,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_SURFACE_TYPE_GL, CAIRO_CONTENT_COLOR_ALPHA, 1,
|
||||
"cairo_egl_device_create",
|
||||
_cairo_boilerplate_egl_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
NULL, NULL,
|
||||
_cairo_boilerplate_get_image_surface,
|
||||
cairo_surface_write_to_png,
|
||||
|
|
|
|||
|
|
@ -248,6 +248,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_TEST_CONTENT_COLOR_ALPHA_FLATTENED, 0,
|
||||
"cairo_pdf_surface_create",
|
||||
_cairo_boilerplate_pdf_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
_cairo_boilerplate_pdf_force_fallbacks,
|
||||
_cairo_boilerplate_pdf_finish_surface,
|
||||
_cairo_boilerplate_pdf_get_image_surface,
|
||||
|
|
@ -260,6 +261,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_SURFACE_TYPE_RECORDING, CAIRO_CONTENT_COLOR, 0,
|
||||
"cairo_pdf_surface_create",
|
||||
_cairo_boilerplate_pdf_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
_cairo_boilerplate_pdf_force_fallbacks,
|
||||
_cairo_boilerplate_pdf_finish_surface,
|
||||
_cairo_boilerplate_pdf_get_image_surface,
|
||||
|
|
|
|||
|
|
@ -309,6 +309,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_TEST_CONTENT_COLOR_ALPHA_FLATTENED, 0,
|
||||
"cairo_ps_surface_create",
|
||||
_cairo_boilerplate_ps2_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
_cairo_boilerplate_ps_force_fallbacks,
|
||||
_cairo_boilerplate_ps_finish_surface,
|
||||
_cairo_boilerplate_ps_get_image_surface,
|
||||
|
|
@ -321,6 +322,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_SURFACE_TYPE_RECORDING, CAIRO_CONTENT_COLOR, 0,
|
||||
"cairo_ps_surface_create",
|
||||
_cairo_boilerplate_ps2_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
_cairo_boilerplate_ps_force_fallbacks,
|
||||
_cairo_boilerplate_ps_finish_surface,
|
||||
_cairo_boilerplate_ps_get_image_surface,
|
||||
|
|
@ -334,6 +336,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_TEST_CONTENT_COLOR_ALPHA_FLATTENED, 0,
|
||||
"cairo_ps_surface_create",
|
||||
_cairo_boilerplate_ps3_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
_cairo_boilerplate_ps_force_fallbacks,
|
||||
_cairo_boilerplate_ps_finish_surface,
|
||||
_cairo_boilerplate_ps_get_image_surface,
|
||||
|
|
@ -346,6 +349,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_SURFACE_TYPE_RECORDING, CAIRO_CONTENT_COLOR, 0,
|
||||
"cairo_ps_surface_create",
|
||||
_cairo_boilerplate_ps3_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
_cairo_boilerplate_ps_force_fallbacks,
|
||||
_cairo_boilerplate_ps_finish_surface,
|
||||
_cairo_boilerplate_ps_get_image_surface,
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_SURFACE_TYPE_QUARTZ, CAIRO_CONTENT_COLOR_ALPHA, 0,
|
||||
"cairo_quartz_surface_create",
|
||||
_cairo_boilerplate_quartz_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
NULL, NULL,
|
||||
_cairo_boilerplate_get_image_surface,
|
||||
cairo_surface_write_to_png,
|
||||
|
|
@ -65,6 +66,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_SURFACE_TYPE_QUARTZ, CAIRO_CONTENT_COLOR, 0,
|
||||
"cairo_quartz_surface_create",
|
||||
_cairo_boilerplate_quartz_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
NULL, NULL,
|
||||
_cairo_boilerplate_get_image_surface,
|
||||
cairo_surface_write_to_png,
|
||||
|
|
|
|||
|
|
@ -131,6 +131,7 @@ static const cairo_boilerplate_target_t target[] = {{
|
|||
CAIRO_SURFACE_TYPE_SCRIPT, CAIRO_CONTENT_COLOR_ALPHA, 0,
|
||||
"cairo_script_surface_create",
|
||||
_cairo_boilerplate_script_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
NULL,
|
||||
_cairo_boilerplate_script_finish_surface,
|
||||
_cairo_boilerplate_script_get_image_surface,
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_SURFACE_TYPE_SKIA, CAIRO_CONTENT_COLOR_ALPHA, 0,
|
||||
"cairo_skia_surface_create",
|
||||
_cairo_boilerplate_skia_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
NULL, NULL,
|
||||
_cairo_boilerplate_get_image_surface,
|
||||
cairo_surface_write_to_png,
|
||||
|
|
@ -45,6 +46,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_SURFACE_TYPE_SKIA, CAIRO_CONTENT_COLOR, 0,
|
||||
"cairo_skia_surface_create",
|
||||
_cairo_boilerplate_skia_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
NULL, NULL,
|
||||
_cairo_boilerplate_get_image_surface,
|
||||
cairo_surface_write_to_png,
|
||||
|
|
|
|||
|
|
@ -285,6 +285,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_SURFACE_TYPE_SVG, CAIRO_CONTENT_COLOR_ALPHA, 1,
|
||||
"cairo_svg_surface_create",
|
||||
_cairo_boilerplate_svg11_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
_cairo_boilerplate_svg_force_fallbacks,
|
||||
_cairo_boilerplate_svg_finish_surface,
|
||||
_cairo_boilerplate_svg_get_image_surface,
|
||||
|
|
@ -297,6 +298,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_SURFACE_TYPE_RECORDING, CAIRO_CONTENT_COLOR, 1,
|
||||
"cairo_svg_surface_create",
|
||||
_cairo_boilerplate_svg11_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
_cairo_boilerplate_svg_force_fallbacks,
|
||||
_cairo_boilerplate_svg_finish_surface,
|
||||
_cairo_boilerplate_svg_get_image_surface,
|
||||
|
|
@ -309,6 +311,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_SURFACE_TYPE_SVG, CAIRO_CONTENT_COLOR_ALPHA, 1,
|
||||
"cairo_svg_surface_create",
|
||||
_cairo_boilerplate_svg12_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
_cairo_boilerplate_svg_force_fallbacks,
|
||||
_cairo_boilerplate_svg_finish_surface,
|
||||
_cairo_boilerplate_svg_get_image_surface,
|
||||
|
|
@ -321,6 +324,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_SURFACE_TYPE_RECORDING, CAIRO_CONTENT_COLOR, 1,
|
||||
"cairo_svg_surface_create",
|
||||
_cairo_boilerplate_svg12_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
_cairo_boilerplate_svg_force_fallbacks,
|
||||
_cairo_boilerplate_svg_finish_surface,
|
||||
_cairo_boilerplate_svg_get_image_surface,
|
||||
|
|
|
|||
|
|
@ -235,6 +235,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_CONTENT_COLOR_ALPHA, 0,
|
||||
"_cairo_test_fallback_surface_create",
|
||||
_cairo_boilerplate_test_fallback_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
NULL, NULL,
|
||||
_cairo_boilerplate_get_image_surface,
|
||||
cairo_surface_write_to_png,
|
||||
|
|
@ -246,6 +247,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_CONTENT_COLOR, 0,
|
||||
"_cairo_test_fallback_surface_create",
|
||||
_cairo_boilerplate_test_fallback_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
NULL, NULL,
|
||||
_cairo_boilerplate_get_image_surface,
|
||||
cairo_surface_write_to_png,
|
||||
|
|
@ -257,6 +259,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_CONTENT_COLOR_ALPHA, 0,
|
||||
"_cairo_test_fallback16_surface_create",
|
||||
_cairo_boilerplate_test_fallback16_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
NULL, NULL,
|
||||
NULL, /* _cairo_boilerplate_get_image_surface, */
|
||||
cairo_surface_write_to_png,
|
||||
|
|
@ -268,6 +271,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_CONTENT_COLOR, 0,
|
||||
"_cairo_test_fallback16_surface_create",
|
||||
_cairo_boilerplate_test_fallback16_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
NULL, NULL,
|
||||
NULL, /* _cairo_boilerplate_get_image_surface, */
|
||||
cairo_surface_write_to_png,
|
||||
|
|
@ -280,6 +284,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_CONTENT_COLOR_ALPHA, 0,
|
||||
"_cairo_test_paginated_surface_create",
|
||||
_cairo_boilerplate_test_paginated_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
NULL, NULL,
|
||||
_cairo_boilerplate_test_paginated_get_image_surface,
|
||||
_cairo_boilerplate_test_paginated_surface_write_to_png,
|
||||
|
|
@ -292,6 +297,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_CONTENT_COLOR, 0,
|
||||
"_cairo_test_paginated_surface_create",
|
||||
_cairo_boilerplate_test_paginated_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
NULL, NULL,
|
||||
_cairo_boilerplate_test_paginated_get_image_surface,
|
||||
_cairo_boilerplate_test_paginated_surface_write_to_png,
|
||||
|
|
@ -306,6 +312,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_CONTENT_COLOR_ALPHA, 0,
|
||||
"_cairo_test_wrapping_surface_create",
|
||||
_cairo_boilerplate_test_wrapping_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
NULL, NULL,
|
||||
_cairo_boilerplate_get_image_surface,
|
||||
cairo_surface_write_to_png,
|
||||
|
|
@ -319,6 +326,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_CONTENT_COLOR_ALPHA, 0,
|
||||
"_cairo_test_null_surface_create",
|
||||
_cairo_boilerplate_test_null_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
NULL, NULL,
|
||||
NULL, NULL, NULL,
|
||||
NULL, NULL,
|
||||
|
|
|
|||
|
|
@ -307,6 +307,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_SURFACE_TYPE_VG, CAIRO_CONTENT_COLOR_ALPHA, 1,
|
||||
"cairo_vg_context_create_for_glx",
|
||||
_cairo_boilerplate_vg_create_surface_glx,
|
||||
cairo_surface_create_similar,
|
||||
NULL, NULL,
|
||||
_cairo_boilerplate_get_image_surface,
|
||||
cairo_surface_write_to_png,
|
||||
|
|
@ -320,6 +321,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_SURFACE_TYPE_VG, CAIRO_CONTENT_COLOR, 1,
|
||||
"cairo_vg_context_create_for_glx",
|
||||
_cairo_boilerplate_vg_create_surface_glx,
|
||||
cairo_surface_create_similar,
|
||||
NULL, NULL,
|
||||
_cairo_boilerplate_get_image_surface,
|
||||
cairo_surface_write_to_png,
|
||||
|
|
@ -335,6 +337,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_SURFACE_TYPE_VG, CAIRO_CONTENT_COLOR_ALPHA, 1,
|
||||
"cairo_vg_context_create_for_egl",
|
||||
_cairo_boilerplate_vg_create_surface_egl,
|
||||
cairo_surface_create_similar,
|
||||
NULL, NULL,
|
||||
_cairo_boilerplate_get_image_surface,
|
||||
cairo_surface_write_to_png,
|
||||
|
|
@ -348,6 +351,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_SURFACE_TYPE_VG, CAIRO_CONTENT_COLOR, 1,
|
||||
"cairo_vg_context_create_for_egl",
|
||||
_cairo_boilerplate_vg_create_surface_egl,
|
||||
cairo_surface_create_similar,
|
||||
NULL, NULL,
|
||||
_cairo_boilerplate_get_image_surface,
|
||||
cairo_surface_write_to_png,
|
||||
|
|
|
|||
|
|
@ -213,6 +213,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_SURFACE_TYPE_GL, CAIRO_CONTENT_COLOR_ALPHA, 1,
|
||||
"cairo_gl_surface_create",
|
||||
_cairo_boilerplate_wgl_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
NULL, NULL,
|
||||
_cairo_boilerplate_get_image_surface,
|
||||
cairo_surface_write_to_png,
|
||||
|
|
|
|||
|
|
@ -350,6 +350,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_TEST_CONTENT_COLOR_ALPHA_FLATTENED, 0,
|
||||
"cairo_win32_printing_surface_create",
|
||||
_cairo_boilerplate_win32_printing_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
NULL, NULL,
|
||||
_cairo_boilerplate_win32_printing_get_image_surface,
|
||||
_cairo_boilerplate_win32_printing_surface_write_to_png,
|
||||
|
|
@ -361,6 +362,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_SURFACE_TYPE_RECORDING, CAIRO_CONTENT_COLOR, 0,
|
||||
"cairo_win32_printing_surface_create",
|
||||
_cairo_boilerplate_win32_printing_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
NULL, NULL,
|
||||
_cairo_boilerplate_win32_printing_get_image_surface,
|
||||
_cairo_boilerplate_win32_printing_surface_write_to_png,
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_SURFACE_TYPE_WIN32, CAIRO_CONTENT_COLOR, 0,
|
||||
"cairo_win32_surface_create_with_dib",
|
||||
_cairo_boilerplate_win32_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
NULL, NULL,
|
||||
_cairo_boilerplate_get_image_surface,
|
||||
cairo_surface_write_to_png,
|
||||
|
|
@ -67,6 +68,7 @@ static const cairo_boilerplate_target_t targets[] = {
|
|||
CAIRO_SURFACE_TYPE_WIN32, CAIRO_CONTENT_COLOR_ALPHA, 0,
|
||||
"cairo_win32_surface_create_with_dib",
|
||||
_cairo_boilerplate_win32_create_surface,
|
||||
cairo_surface_create_similar,
|
||||
NULL, NULL,
|
||||
_cairo_boilerplate_get_image_surface,
|
||||
cairo_surface_write_to_png,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue