mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-05-21 09:48:10 +02:00
Add the performance test case to compare the speed of filling a rounded rectangle (one with camphered corners) as opposed to an ordinary rectangle. Since the majority of the pixels are identical, ideally the two cases would take similar times (modulo the additional overhead in the more complex path).
116 lines
3 KiB
Makefile
116 lines
3 KiB
Makefile
include $(top_srcdir)/build/Makefile.am.common
|
|
|
|
AM_CPPFLAGS = \
|
|
-I$(srcdir) \
|
|
-I$(top_srcdir)/boilerplate \
|
|
-I$(top_srcdir)/src \
|
|
-I$(top_builddir)/src \
|
|
$(CAIRO_CFLAGS)
|
|
|
|
EXTRA_PROGRAMS += cairo-perf cairo-perf-diff-files
|
|
EXTRA_DIST += cairo-perf-diff
|
|
|
|
cairo_perf_SOURCES = \
|
|
cairo-perf.c \
|
|
cairo-perf.h \
|
|
cairo-perf-cover.c \
|
|
cairo-stats.c \
|
|
cairo-stats.h \
|
|
box-outline.c \
|
|
fill.c \
|
|
long-lines.c \
|
|
mosaic.c \
|
|
mosaic.h \
|
|
paint.c \
|
|
paint-with-alpha.c \
|
|
pattern_create_radial.c \
|
|
rectangles.c \
|
|
rounded-rectangles.c \
|
|
stroke.c \
|
|
subimage_copy.c \
|
|
tessellate.c \
|
|
unaligned-clip.c \
|
|
text.c \
|
|
world-map.c \
|
|
world-map.h \
|
|
zrusin.c \
|
|
zrusin-another.h \
|
|
long-dashed-lines.c
|
|
|
|
if CAIRO_HAS_WIN32_SURFACE
|
|
cairo_perf_SOURCES += cairo-perf-win32.c
|
|
else
|
|
if CAIRO_HAS_OS2_SURFACE
|
|
cairo_perf_SOURCES += cairo-perf-os2.c
|
|
else
|
|
cairo_perf_SOURCES += cairo-perf-posix.c
|
|
endif
|
|
endif
|
|
|
|
cairo_perf_diff_files_SOURCES = \
|
|
cairo-perf-diff-files.c \
|
|
cairo-stats.c \
|
|
cairo-stats.h
|
|
|
|
LDADD = $(top_builddir)/boilerplate/libcairoboilerplate.la \
|
|
$(top_builddir)/src/libcairo.la \
|
|
$(CAIROPERF_LIBS)
|
|
|
|
$(top_builddir)/boilerplate/libcairoboilerplate.la: $(top_builddir)/src/libcairo.la
|
|
cd $(top_builddir)/boilerplate && $(MAKE) $(AM_MAKEFLAGS) libcairoboilerplate.la
|
|
|
|
$(top_builddir)/src/libcairo.la:
|
|
cd $(top_builddir)/src && $(MAKE) $(AM_MAKEFLAGS) libcairo.la
|
|
|
|
|
|
# Do a funny transition of CAIRO_TEST_TARGET through TARGETS such that
|
|
# one can limit tested targets both through CAIRO_TEST_TARGET env var
|
|
# and TARGETS make var on the command line. Same for the rest.
|
|
TARGETS = $(CAIRO_TEST_TARGET)
|
|
TARGETS_EXCLUDE = $(CAIRO_TEST_TARGET_EXCLUDE)
|
|
ITERS = $(CAIRO_PERF_ITERATIONS)
|
|
|
|
CAIRO_PERF_ENVIRONMENT = CAIRO_PERF_ITERATIONS="$(ITERS)" CAIRO_TEST_TARGET="$(TARGETS)" CAIRO_TEST_TARGET_EXCLUDE="$(TARGETS_EXCLUDE)"
|
|
|
|
# Cap the maximum number of iterations during 'make check'
|
|
TESTS_ENVIRONMENT = CAIRO_TEST_TARGET="$(TARGETS)" CAIRO_PERF_ITERATIONS="10"
|
|
|
|
TESTS += cairo-perf$(EXEEXT)
|
|
|
|
perf: cairo-perf$(EXEEXT)
|
|
$(CAIRO_PERF_ENVIRONMENT) ./cairo-perf$(EXEEXT)
|
|
|
|
html-local: index.html
|
|
|
|
index.html: cairo-perf$(EXEEXT)
|
|
$(CAIRO_PERF_ENVIRONMENT) ./cairo-perf-diff -h HEAD > $@
|
|
|
|
|
|
EXTRA_VALGRIND_FLAGS = $(CAIRO_EXTRA_VALGRIND_FLAGS)
|
|
VALGRIND_MEMCHECK_FLAGS = \
|
|
--tool=memcheck \
|
|
--suppressions=$(top_srcdir)/test/.valgrind-suppressions \
|
|
--leak-check=yes --show-reachable=yes
|
|
VALGRIND_CALLGRIND_FLAGS = \
|
|
--tool=callgrind
|
|
CLEANFILES += \
|
|
valgrind-log \
|
|
callgrind.out.* \
|
|
index.html
|
|
|
|
check-valgrind perf-valgrind:
|
|
$(MAKE) $(AM_MAKEFLAGS) check \
|
|
TESTS_ENVIRONMENT='$(TESTS_ENVIRONMENT) \
|
|
$(top_builddir)/libtool --mode=execute \
|
|
valgrind $(VALGRIND_MEMCHECK_FLAGS) $(EXTRA_VALGRIND_FLAGS)' \
|
|
| tee valgrind-log
|
|
|
|
perf-callgrind:
|
|
$(MAKE) $(AM_MAKEFLAGS) check \
|
|
TESTS_ENVIRONMENT='$(TESTS_ENVIRONMENT) \
|
|
$(top_builddir)/libtool --mode=execute \
|
|
valgrind $(VALGRIND_CALLGRIND_FLAGS) $(EXTRA_VALGRIND_FLAGS)'
|
|
|
|
.PHONY: perf check-valgrind perf-valgrind perf-callgrind
|
|
|
|
EXTRA_DIST += Makefile.win32
|