Age | Commit message (Collapse) | Author | Files | Lines |
|
Improve detection, reporting and disabling of test backends when we lack
the required libraries and utilities.
|
|
I have no idea how we survived for so long without supplying the source
extents...
|
|
Found using webkit, who attempt to paint an width X page height window.
Please, please clip large windows to the visible area. Thanks.
|
|
Some environments may be broken beyond our capabilities to detect, or
maybe the user is just insane and doesn't want to build my nice shiny
cairo-trace. Whatever, give them the option to choose:
$ ./configure --disable-trace
|
|
Improve code clarity and whatnot.
|
|
A new -f option to cairo-perf reverts to a fast run
mode for quick performance overviews. The number of
milliseconds each iteration of a test is run for can
be overriden using the new CAIRO_PERF_ITERATION_MS
environment variable. The default remains 2000 ms/iter.
|
|
Useful for running tests only for a given content type.
|
|
Sometimes it's convenient to run the regression or performance tests
against a given target with a given content. Now we accept an optional
content specifier as a suffix .<content> on a target name, where
<content> is rgb or rgba.
|
|
This test is annoying enough as it is what with it wedging the
test suite and all. There's no reason why it should DOS the
running box as well by sitting in a loop allocating like mad.
|
|
Oops.. forgot to add it to the build files too
|
|
Compiled fine during testing -- only I forgot I hadn't enable the gl surface.
|
|
If the XServer claims to support the required Render extension then send
it the operations. However for the cases where we know it does not work,
i.e. the current and previous generations (<=1.6) of Xorg servers, enable
the buggy_pad_reflect fallbacks.
|
|
Add a couple of tests to exercise a bug that Joonas spotted that I had
introduced with the clip-reduction scheme - namely that I had
incorrectly removed the clip on unbounded operations.
|
|
For unbounded operations we still need to pass along the clip in order to
correctly limit the extents of the operation.
|
|
Necessary when comparing performance reports from different machines (or
even at different CPU states).
|
|
The win32 backend handles surface sources directly and never calls
_cairo_pattern_acquire_surface() which is the only other possible user of
clone_similar().
|
|
Check for native mutex types before hooking into pthread, as this
workarounds broken builds on mingw that confuse us by including the
pthread header file.
|
|
FillRectangle is most frequently used to fill an entire imagee with the
background colour, i.e. with just a single, or few, rectangle. Avoid
heap allocation for this common case by allocating enough space for 4
rectangles (vertices+colors) on the stack.
|
|
As we created the image, it should not need coercing into a suitable
format and so we should be able to upload it without failure.
|
|
We no longer use a depth-stencil, so remove the vestigial reference.
|
|
The calls to uniform_random() to get the curve points were in
the function arguments, but argument order evaluation is compiler
implementation dependent.
|
|
The image surface code doesn't reliably work on images larger than
32767 in width or height. This patch makes the image surface
constructors fail by returning a surface in the CAIRO_STATUS_INVALID_SIZE
state when given negative or too large dimensions so that client code
gets a prompt and correct error rather than flaky rendering on large
images.
|
|
The test runner was extra strict about never letting a test put
the cairo_t into an error state, and never would it check for
the expectedness status of the failure. This patch moves the
check for a test being an XFAIL above the check on the cairo_t's
final status.
|
|
Creating an widthxheight solid picture for using with
RenderCompositeTrapezoids defeats the optimization with the xserver that
checks for a solid alpha pattern. The checks it performs are for
CONTENT_ALPHA, Repeat, 1x1 and value == 0xff.
|
|
Initialize the bbox to the first limit, as frequently there will only be a
single (or at least a small number) limit.
|
|
|
|
The early discard checked if the line was below the last clip-box, or if
above the first. However, the clip-boxes are only sorted on by the bottom
(not the strict XY-banded sort of the regions) and so this was erroneously
discarding lines.
|
|
Soeren found another bug (thanks Soeren!) in the clipping code - as
reproduced by this test case.
|
|
In order to get a baseline for win32 performance testing, always create a
font so that the trace can be replayed. Not ideal, but I feel this the
pragmatic solution for judging the performance differentials before I can
work out a better solution for loading typ42 fonts.
|
|
In order to enable replay of traces on machines that do not use FreeType
as the native font system, we need to convert a type42 font into something
similar. Currently the fallback is just to select a font with the same
name - this ignores weight and slant, and many other details.
|
|
test == != -eq
|
|
The -Wstrict-prototypes and -Wmissing-prototypes warnings
weren't actually in use due to typos.
|
|
Sun Studio 12 doesn't like it when we mix our
enum values and types. We do that a lot on purpose
so the warnings from compiles were very verbose.
|
|
We don't actually check that -Wno-attribute does what
we think it does. On clang it doesn't since it happily
seems to recognize but ignore the attribute.
This patch factors out a silent version of CAIRO_CC_TRY_FLAG
which accepts an optional program argument and actually tests
that the compiler doesn't produce any warning messages. It
is then used to check that -Wno-attribute doesn't complain
when the __warn_unused_result__ attribute is applied to
void functions or variables.
|
|
The make-cairo-(test|boilerplate)-constructors scripts ought
never to be called without arguments lest we are left constructorless.
|
|
Some other compilers such as clang and icc support the
__builtin_return_address() intrinsic as well, so we don't
need to check for __GNUC__ >= 3 only.
|
|
The code has a _matrix_is_identity() function we can use
instead of open coding the same test.
|
|
If the tracer encounters an unknown enum value it
ought not to crash. Theis patch replaces the idiom
of looking up a name for an enumerated value directly
from a table by a switch statement. As a bonus we get
warnings from the compiler when the enums are updated
in cairo.
|
|
If the tracer's object stack underflows we want to
know about is as soon as possible. This patch adds
checks against the stack overflowing and aborts the
program with an object stack dump if it does.
|
|
|
|
Support non-Linux systems which don't have a /proc/self/cmdline
by transferring the application name given to cairo-trace via
an environment variable CAIRO_TRACE_PROG_NAME.
|
|
Grr. Should have spotted this before pushing - remove the addition of the
superfluous code.
|
|
Eradicate the use of clipping with GC. By never using clipping, we never
have to worry about retrieving a dirty clip from the GC cache.
|
|
Exercise the XCopyArea() paths under clipping - whilst modifying that code
I noticed that it was not being exercised by the test suite.
|
|
The issue Joonas was trying to solve was the unwanted inclusion of
the inlines via cairo-freelist-private.h. Unwittingly he included
cairoint.h from cairo-xlib-private.h instead, a far more heinous crime as
that causes the boilerplate to try to use the hidden, private symbols.
Instead we resolve this issue by making the cairo_xlib_display_t structure
private to cairo-xlib-display.c and provide functions to manipulate the
abstract data type. Whilst in the vicinity, we rename
cairo_xlib_screen_info_t to cairo_xlib_screen_t for consistency and
cleanliness.
|
|
This reverts commit 5a3fa29b370816acb3a08d60e4031ed82c1e4c73 as it breaks
the boilerplate when linking with gcc.
|
|
The xlib boilerplate includes a cairo private header to be able
to disable usage of the render extension. This indirectly includes
cairo-freelist-private.h which contains a bunch of static inline
functions which use the private _cairo_freepool_alloc_from_new_pool
function, but since that is not inline also, it causes an undefined
extern which cannot be resolved. The binutils linker doesn't care
since the freelist function aren't actually used in the boilerplate
but the Solaris linker does. By making the .._alloc_from_new_pool
function inline no dangling references are created and linking
succeeds.
|
|
Returning void using the pattern "return func_returning_void(...)"
is a gccism not supported by Sun Studio 12.
|
|
Ensure that the meta surface does not extend beyond the operation by
forcing a clip to the extents of the operation.
Fixes test/device-offset and test/device-offset-positive
|
|
If we have to rasterise a pattern for use by PS/PDF (for example, to
satisfy CAIRO_EXTENT_PAD) then only generate an image large enough to
cover the operation extents. We ensure tight coverage by computing the
extents afresh - we could do this lazily in the future, but we can not
rely on the bounds as computed by the analysis surface as for native
operations they may not be tight.
|