Commit graph

156 commits

Author SHA1 Message Date
Chris Wilson
7709f51e13 [boilerplate] Include cairo-compiler-private.h
Actually use the compiler specific diverts and defines.
2008-09-10 18:30:45 +01:00
Behdad Esfahbod
87dfceb9ec [Makefile.am] Rename INCLUDES to AM_CPPFLAGS
Fixes automake warnings
2008-09-08 15:13:07 -04:00
Behdad Esfahbod
0e01534bf0 [boilerplate] Rename xmalloc.[ch] to boilerplate namespace 2008-09-04 15:53:33 -04:00
Behdad Esfahbod
097c4ac022 [Makefile.am] Use check_PROGRAMS 2008-09-03 20:52:17 -04:00
Behdad Esfahbod
cf212ddaca Also test linking when cross-compiling
We build the test.  Just don't run it.
2008-09-02 22:05:06 -04:00
Behdad Esfahbod
78127c7fb4 [boilerplate/check-link.c] Oops. Add it. 2008-09-02 22:03:05 -04:00
Behdad Esfahbod
0234fb9197 [boilerplate/check-link.c] Check that we can link to the built boilerplate 2008-09-02 22:00:05 -04:00
Behdad Esfahbod
7e45937e21 [boilerplate] Add cairo_boilerplate_version[_string]() functions 2008-09-02 21:56:37 -04:00
Behdad Esfahbod
b4cee2bd88 [boilerplate] Remove obsolete reference to pixman 2008-09-02 21:36:20 -04:00
Behdad Esfahbod
e3d190c92f [boilerplate] Cleanup 2008-09-02 21:35:18 -04:00
Behdad Esfahbod
5926257770 Revamp the build system.
Quick summary of changes:

  - Move list of cairo source files out of src/Makefile.am and into
    src/Sources.mk,

  - Generate files src/Config.mk and src/Config.mk.win32 that choose
    the right set of source files and headers based on configured
    backends and features.  This drastically simplifies building
    using other build systems.  The src/Makefile.win32 file needs
    to be updated to reflect these changes.

  - Add README files to various directories,

  - Add toplevel HACKING file.
2008-09-02 20:24:08 -04:00
Chris Wilson
92fcb9d2f7 [configure.in] Autoconf strikes back
Need to disable references to *.cpp to convince autoconf
not to use the g++ linker (and fail miserably).
2008-08-26 23:02:10 +01:00
Chris Wilson
b9287e6669 [test] Cache last output and compare next time.
Compare the current output against a previous run to determine if there
has been any change since last time, and only run through imagediff if
there has been. For the vector surfaces, we can check the vector output
first and potentially skip the rasterisation. On my machine this reduces
the time for a second run from 6 minutes to 2m30s. As most of the time,
most test output will remain unchanged, so this seems to be a big win. On
unix systems, hard linking is used to reduce the amount of storage space
required - others will see about a three-fold increase in the amount of
disk used.  The directory continues to be a stress test for file selectors.

In order to reduce the changes between runs, the current time is no longer
written to the PNG files (justified by that it only exists as a debugging
aid) and the boilerplate tweaks the PS surface so that the creation date
is fixed. To fully realise the benefits here, we need to strip the
creation time from all the reference images...

The biggest problem with using the caches is that different runs of the
test suite can go through different code paths, introducing potential
Heisenbergs. If you suspect that caching is interfering with the test
results, use 'make -C test clean-caches check'.
2008-08-20 23:56:56 +01:00
Chris Wilson
776844eb9e [boilerplate] Daemonic conversion utility.
In order to achieve substantial speed improvements the external conversion
utilities are rewritten as a daemon that communicates with the test suite
over a local socket. This is faster as it avoids the libtool and dynamic
linker overhead for each invocation, the caches persist between tests and
we no longer require a round trip through libpng.

The daemon is started automatically by the test suite and if communication
cannot be established then it falls back to using a pipe to a normal
conversion utility. The daemon will then persist for 60 seconds waiting
for further connections.

Of course any memory leak (stares at poppler) is exacerbated.
2008-08-19 11:15:12 +01:00
Chris Wilson
cdd021b5fb [boilerplate] Check exit code from system for trapped signals.
If the external conversion utility was killed by a signal (e.g. the user
sent SIGINT), raise that signal within our process as well. This means
that a crash inside poppler or rsvg will be flagged as a crash inside the
test suite, and makes interrupting the test suite far more responsive.
2008-08-18 17:56:21 +01:00
Chris Wilson
17fbb652b1 [test] Avoid redundant writes/reads of test surfaces via png.
As Behdad suggested, we can dramatically speed up the test suite by
short-circuiting the write to a png file, only to then immediately read it
back in. So for the raster based surfaces, we avoid the round-trip through
libpng by implementing a new boilerplate method to directly extract the image
buffer from the test result. A secondary speedup is achieved by caching the
most recent reference image.
2008-08-18 16:18:52 +01:00
Chris Wilson
3dc8e2dd0d [boilerplate] Dead store elimination.
Value stored to 'found' is never read.
2008-08-17 15:29:20 +01:00
Chris Wilson
db7e3cb854 [Makefile.am] Delete intermediates
Clean up after calling 'gcc -save-temps'.
2008-08-17 11:39:56 +01:00
Chris Wilson
7a0f29d2f3 [test] Update prototype of win32-printing create_surface()
Missed the recent addition of the win32-printing surface to boilerplate.
2008-08-14 11:59:22 +01:00
Chris Wilson
93af67d7fd [test] Pass a 'complete' name to create_surface().
Construct the test name to pass to the boilerplate creation routines such
that it uniquely identifies the test in terms of test, target, content and
pass (similar, offset, thread). This allows the vector targets to create
output different output files for each test, whereas before, later tests
would overwrite existing files making debugging more difficult.
2008-08-13 22:01:51 +01:00
Chris Wilson
436c0c8be2 [test] Preparatory work for running under memfault.
In order to run under memfault, the framework is first extended to handle
running concurrent tests - i.e. multi-threading. (Not that this is a
requirement for memfault, instead it shares a common goal of storing
per-test data).  To that end all the global data is moved into a per-test
context and the targets are adjusted to avoid overlap on shared, global
resources (such as output files and frame buffers). In order to preserve
the simplicity of the standard draw routines, the context is not passed
explicitly as a parameter to the routines, but is instead attached to the
cairo_t via the user_data.

For the masochist, to enable the tests to be run across multiple threads
simply set the environment variable CAIRO_TEST_NUM_THREADS to the desired
number.

In the long run, we can hope the need for memfault (runtime testing of
error paths) will be mitigated by static analysis. A promising candidate
for this task would appear to be http://hal.cs.berkeley.edu/cil/.
2008-08-13 21:54:59 +01:00
Vladimir Vukicevic
7fbda72137 [dfb] optimize DirectFB blits 2008-08-09 22:10:06 -07:00
Behdad Esfahbod
ba62d2d30a Update .gitignore files 2008-06-26 16:20:58 -04:00
Chris Wilson
c2963fa6c1 [cairo-boilerplate] Silence compiler warning.
Mark the optstr argument as const to silence a compiler warning in
cairo-perf.
2008-06-13 21:34:43 +01:00
Chris Wilson
f57100acd4 [test] Handle TEST_CONTENT_COLOR_ALPHA_FLATTENED similar surfaces.
Convert the boilerplate specific flattened content value to the ordinary
CAIRO_CONTENT_COLOR_ALPHA for use with cairo_push_group_with_content() -
otherwise cairo rightfully flags an error and the test harness decides
that the similar surface is not available.
2008-04-11 15:39:11 +01:00
Carl Worth
43302f0408 Re-enable pdf tests with gradients and add poppler-based reference images
This freezes the current (buggy) poppler result in the test suite
so that we will notice any future regressions.
2008-02-20 04:04:04 -08:00
Carl Worth
635fed7767 Re-enable some pdf tests now that poppler has knockout support
We had several pdf tests disabled waiting for this bug fix:

	Poppler does not correctly handle knockout groups
	https://bugs.freedesktop.org/show_bug.cgi?id=12185

That's in place for poppler now, so we're turning the tests
back on. Some of the affected tests now pass perfectly:

	over-above-source
	over-around-source
	over-below-source
	over-between-source

Some just needed new reference images:

	operator-clear
	clip-operator-pdf-argb32

The remaining tests still fail, but none of the failures can
obviously be ascribed to just poppler problems:

	clip-operator-pdf-rgb24
	operator-source
	unbounded-operator

The first two have some serious problems, while in the case
of unbounded-operator the problem is extremely minor (a white
grid appears in the background where the reference image is
all black).
2008-02-20 04:04:04 -08:00
Chris Wilson
790eaef71c [boilerplage] Add getopts to the boilerplate library.
Remember to compile the _cairo_getopts() function into the boilerplate
convenience library for cairo-perf.
2008-02-15 13:50:42 +00:00
Chris Wilson
5efc88e910 [xmalloc] Hide valgrind warning.
Allocate the string to the next integer boundary to hide a valgrind
warning.
2008-02-15 13:50:41 +00:00
Azar@.(none)
95db215cc1 Some fixes and improvements to the Win32 build 2008-02-06 21:45:24 -05:00
Carl Worth
7800cfd7de Add several Makefile.win32 files to EXTRA_DIST
Otherwise, these files were being omitted from the tar files.
2008-02-06 17:01:22 -08:00
Chris Wilson
968eaf3c44 [cairo-xlib] Fixup --disable-xlib-xrender
Fixup the headers and boilerplate to compile and run correctly when
configured with --disable-xlib-xrender.
2008-01-15 13:08:53 +00:00
Chris Wilson
755a4bb51b [test] Win32 printing backend testing depends upon ghostscript
Using the Win32 printing backend requires ghostscript, so only enable
those tests if we detect 'gs' during configure.
2008-01-10 17:10:41 +00:00
Adrian Johnson
f073a83251 win32-printing: fix error in comment 2007-10-22 00:02:23 +09:30
Adrian Johnson
5fa6225045 win32-printing: Add test boilerplate
Testing win32-printing requires setting the default printer to
a PostScript level 3 color printer. The PostScript output is
saved to a file and converted to png using ghostscript.
2007-10-21 23:49:33 +09:30
Adrian Johnson
8520ce31be PS: Add meta surface pattern support 2007-10-13 20:17:43 +09:30
Chris Wilson
9c65efeeb1 [boilerplate-test-surfaces] Check show page for errors.
Check that cairo_surface_show_page() did not generate any errors before
reading back the image buffer and saving it as a png.
2007-10-10 14:22:25 +01:00
Chris Wilson
31b52779ba [cairo-boilerplate-xlib] Cleanup fallback after creation failure.
Cleanup the local resource if we fail to create the X window and
surface for the xlib fallback test target.
2007-10-05 18:34:32 +01:00
Chris Wilson
dc23ecb619 [cairo-boilerplate] Do not throw an error if an exclude target is not found.
If we fail to exclude a target because it was not in the list of
targets - job done and no need to throw a tantrum.
2007-09-23 21:35:59 +01:00
Vladimir Vukicevic
9e975757a2 Export cairo_surface_{copy,show}_page
This patch adds cairo_surface_copy_page and cairo_surface_show_page
as public methods, leaving the previous cairo_show_page variants as
shorthands.  copy_page/show_page are specific to the surface, not
to the context, so they need to be surface methods.
2007-09-11 13:30:35 -07:00
Adrian Johnson
d24f019101 Add support for PDF meta-surface patterns 2007-09-05 22:26:16 +09:30
Chris Wilson
b60c0a672f [cairo-boilerplate] Introduce CAIRO_TEST_TARGET_EXCLUDE.
As opposed to the CAIRO_TEST_TARGET env var which lists the exact
targets to test, CAIRO_TEST_TARGET_EXCLUDE instead supplies a list of
targets to filter from the testing set. This is useful under
circumstances where the build environment prevents testing of a target,
for example no DirectFB support or the glitz library is broken, but where
you still want to perform the minimal check that the code compiles.
2007-09-03 14:37:16 +01:00
Carl Worth
e7324454a0 Disable radial-gradient and unbounded-operator tests for pdf
These are failing due to (already reported) poppler bugs.

There were also problems with the gradients in the PDF
files previously, but these have recently been fixed.
2007-08-29 15:26:41 -07:00
Vladimir Vukicevic
19fa097f51 [win32] Update win32 Makefiles
Happy building with msys, one location for CFLAGS/etc changes (toplevel),
new pdiff makefile.
2007-08-28 10:54:18 -07:00
Carl Worth
1a6b62e599 Disable 7 cairo-pdf tests due to poppler knockout-group bug
The following 7 tests currently fail with poppler due to:

	Poppler does not correctly handle knockout groups
	https://bugs.freedesktop.org/show_bug.cgi?id=12185

and we've verified with acroread that the cairo-pdf output
does render as intended there. The disabled tests are
clip-operator, operator-clear, operator-source, over-above-source,
over-around-source, over-below-source, and over-between-source.
2007-08-27 14:45:51 -07:00
Carl Worth
1e8446609b Add explanation of pdf_ignored_tests with links to upstream poppler bug reports 2007-08-27 14:02:55 -07:00
Chris Wilson
8894894d9d [cairo-boilerplate-xlib] Check that the surface will fit in the screen.
Whilst testing the fallback surface, the resultant image was being
clipped to the screen size. Be conservative and refuse to create
windows (for CAIRO_CONTENT_COLOR surfaces) that are larger than the
 screen.
2007-08-24 14:14:10 +01:00
Chris Wilson
a29544a0b6 [cairo-boilerplate-xlib] Clear Render data for the non-Render fallback.
As well as marking the XRender extension unavailable in
_cairo_boiler_player_xlib_disable_render(), we need to clear any
XRender derived information stored during the surface creation.
2007-08-24 12:27:15 +01:00
Behdad Esfahbod
d66f1ee82a [boilerplate] Build libcairoboilerplate.la in make check and make test 2007-08-23 14:00:12 -04:00
Carl Worth
d05593a5fb Add a new xlib-fallback target to test xlib using image fallbacks instead of the Render extension 2007-08-21 16:46:40 -07:00