summaryrefslogtreecommitdiff
path: root/perf
AgeCommit message (Collapse)AuthorFilesLines
2012-03-10doc: fix a few typos found by codespellNis Martensen1-2/+2
Signed-off-by: Uli Schlachter <psychon@znc.in>
2012-02-20perf: Don't use a boolean value as integerAndrea Canciani1-3/+7
Although in this case the boolean values are guaranteed to be 1/0, using them as true/false (in an if condition) seems much saner than using them to limit the number of iterations on a for loop. Fixes: cairo-perf-micro.c:221:5: warning: cannot optimize possibly infinite loops [-Wunsafe-loop-optimizations]
2012-01-11perf/chart: Make the columns transculent so that the label behind is visibleChris Wilson1-4/+44
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-11perf/chart: Show values next to the column if too small to fit insideChris Wilson1-6/+14
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-11perf/chart: Tweak labels on right not to fall off the edgeChris Wilson2-8/+9
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-11-18perf: Compile fix, add the index to cairo_perf_report_load()Chris Wilson2-2/+2
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-11-12Use xstrdup instead of xmalloc when possibleAndrea Canciani1-4/+2
Don't open code xstrdup, just use it.
2011-11-12boilerplate: Remove unused thread id parameterAndrea Canciani3-3/+0
The thread id is not used anymore (it is always == 0), so it can be removed.
2011-11-12Improve the documentation of the flagsAndrea Canciani3-17/+17
Some utilities were providing incorrect or incomplete usage information.
2011-11-12Sort option flagsAndrea Canciani3-19/+19
Keep the option flags in alphabetical order. This makes it easier to check for collisions or missing handlers. Avoids an internal error when passing flags -c, -r or -v to cairo-analyse-trace.
2011-11-09Silence some 'unused var' warningsAndrea Canciani1-1/+1
2011-10-11perfChris Wilson1-19/+42
2011-09-15perf: Add an a1-pixel variantChris Wilson3-0/+24
Just to measure the overhead and differences when switching between antialiasing paths. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-14perf/micro: Add the PS tiger as a measure for the antialias hintsChris Wilson4-0/+118
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-13perf/stats: Avoid overflow when summing time-squaredChris Wilson1-7/+6
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-12test: Update ref imagesChris Wilson1-2/+4
First pass after the recent turmoil in clip and antialias handling.
2011-09-12perf/micro: Add measurement of setting the pixel directly using pixmanChris Wilson1-0/+38
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-12Introduce a new compositor architectureChris Wilson50-236/+1321
Having spent the last dev cycle looking at how we could specialize the compositors for various backends, we once again look for the commonalities in order to reduce the duplication. In part this is motivated by the idea that spans is a good interface for both the existent GL backend and pixman, and so they deserve a dedicated compositor. xcb/xlib target an identical rendering system and so they should be using the same compositor, and it should be possible to run that same compositor locally against pixman to generate reference tests. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> P.S. This brings massive upheaval (read breakage) I've tried delaying in order to fix as many things as possible but now this one patch does far, far, far too much. Apologies in advance for breaking your favourite backend, but trust me in that the end result will be much better. :)
2011-09-09perf/Makefile.am: Add missing '\' line continuationChris Wilson1-2/+3
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-04cairo-missing: Fix and cleanup ssize_t type definitionAndrea Canciani3-10/+0
The definition of ssize_t is needed in cairo-missing.h and can be dropped from files which include it.
2011-09-02perf: Fix win32 buildAndrea Canciani1-1/+6
Microsoft C Compiler complains about: hash-table.c(44) : error C2466: cannot allocate an array of constant size 0 Adding an unused element makes it happy.
2011-09-02perf: Fix readmeAndrea Canciani1-2/+2
The README in perf/ was not updated when cairo-perf.c was renamed to cairo-perf-micro.c
2011-09-02perf: Get rid of cairo_perf_ticks_per_second()Andrea Canciani4-40/+31
The cairo_time_from_s() and cairo_time_to_s() functions should be used instead.
2011-09-02perf: Drop cairo_perf_ticks_t in favor of cairo_time_tAndrea Canciani43-164/+161
cairo_time_t offers a superset of the functions provided by cairo_perf_ticks_t.
2011-09-02perf: Reuse cairo-timeAndrea Canciani7-421/+66
Instead of redefining time getters, use the generic one provided by _cairo_time_*.
2011-09-02Introduce the cairo-missing libraryAndrea Canciani4-168/+8
The cairo-missing library provides the functions which are needed in order to correctly compile cairo (or its utilities) and which were not found during configuration. Fixes the build on MacOS X Lion, which failed because of collisons between the cairo internal getline and strndup and those in libc: cairo-analyse-trace.c:282: error: static declaration of ‘getline’ follows non-static declaration /usr/include/stdio.h:449: error: previous declaration of ‘getline’ was here cairo-analyse-trace.c:307: error: static declaration of ‘strndup’ follows non-static declaration ...
2011-09-02time: Add cairo_time_t typeAndrea Canciani1-1/+0
Add the cairo_time_t type (currently based on cairo_uint64_t) and use it in cairo-observer and in the perf suite. Fixes the build on MacOS X (for the src/ subdir) and Win32, whch failed because they don't provide clock_gettime: cairo-surface-observer.c:629: error: implicit declaration of function 'clock_gettime' cairo-surface-observer.c:629: warning: nested extern declaration of 'clock_gettime' cairo-surface-observer.c:629: error: 'CLOCK_MONOTONIC' undeclared (first use in this function) ...
2011-09-02perf: Silence gcc warningAndrea Canciani1-1/+1
Silence: dragon.c: In function 'do_dragon_solid': dragon.c:167: warning: unused variable 'r'
2011-08-30perf: Print a summary of each operation for a trace (using '-s')Chris Wilson2-22/+99
In order for this to be effective on small system we also need to disable the recording of the long traces which exhaust all memory... Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-08-23observe: Provide the sum of the elapsed time of the individual operationsChris Wilson3-8/+32
We can use the elapsed time of the indiividual operations to profile the synchronous throughput of a trace and eliminate all replay overhead. At the cost of running the trace synchronously of course. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-08-20observer: record all operations and their timingsChris Wilson1-2/+0
The immediate use of this is to print out the slowest operation of each type in a replayable manner. A continuing demonstration of how we may analyse traces... Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-08-19perf: Cleanup target after each runChris Wilson1-179/+172
As the trace may leak surfaces over its lifetime, we are forced to teardown the connection between runs. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-08-14Introduce cairo_surface_observer_t for performance analysisChris Wilson4-9/+676
Another logging passthrough surface that records the style of operations performed trying to categorise what is slow/fast/important. In combination with perf/cairo-analyse-trace it is very useful for understanding what a trace does. The next steps for this tool would be to identify the slow operations that the trace does. Baby steps. This should be generally useful in similar situations outside of perf/ and should be extensible to become an online performance probe. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-08-13Fix pollution from skia commitChris Wilson1-3/+2
I forgot to proof-read the patch before pushing and forgot I had left in some damage from trying to get skia to link using libtool. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-08-13skia: Update to use cairo_backend_t interfaceChris Wilson1-2/+3
Still hopelessly broken. Requires compiling cairo to use static linking and then still requires manual linkage to workaround libtool. Lots of functionality is still absent - we need to either find analogues to some Cairo operations or implement fallbacks - but it is sufficient to investigate how Skia functions in direct comparison with Cairo for tessellation/rasterisation. Caveat emptor. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-08-13perf/micro: diagonal linesChris Wilson4-1/+223
The ideal benchmark for spans?... Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-08-13perf/micro: Test wide vs hairline strokesChris Wilson8-16/+404
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-08-09perf: add curveChris Wilson4-0/+111
Time how long it takes to stroke and fill a single Bezier curve. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-08-09perf: add many-curvesChris Wilson4-0/+122
Continuing the theme of stressing the tessellators, draw lots of Bezier curves! Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-08-09perf: Add many-fillsChris Wilson4-0/+187
A variant of many-strokes tries to answer the question of how much overhead is there in stroking, i.e. if we fill an equivalent path to a set of strokes, do we see an equivalence in performance? Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-08-07perf: add the usual special cases to many-strokesChris Wilson1-1/+109
For completeness, also compare [aligned] horizontal and vertical strokes. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-08-07perf: Add many-strokesChris Wilson4-0/+78
An intersection variant to exercise the stroker with many, many lines. A silly benchmark, but a popular one in the wild. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-08-05perf: Add stroke/fill variants to world-mapChris Wilson1-6/+36
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-08-04perf: Also build the code in perf/microUli Schlachter1-0/+2
This fixes weird and occasional build failures when updating the source, e.g.: cairo-perf-micro.o:(.rodata+0xb0): undefined reference to `hash_table' Signed-off-by: Uli Schlachter <psychon@znc.in>
2011-08-03perf: Add hash table benchmarkAndrea Canciani4-0/+110
A benchmark to test the speed of hash tables when inserting and removing a huge number of elements. Although originally hash tables were assumed not to get many deletions, in practice they are now being used as caches in multiple places. This means that they often have a fixed number of live elements and an element is evicted whenever a new element is inserted (this happens explicitly for cairo_cache_t objects, but also, for example, in scaled_font_map + holdovers). This access pattern is very inefficient with the current implementation.
2011-08-01perf: Save/restore gstate across runsChris Wilson1-1/+10
Reset the cairo_t to the initial state so that subsequent tests are not affected by earlier tests. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-08-01perf: Add a few more variations to dragon to exercise unaligned lines/spansChris Wilson1-0/+34
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-07-31Remove useless checks for NULL before freeingAndrea Canciani2-4/+2
This patch has been generated by the following Coccinelle semantic patch: // Remove useless checks for NULL before freeing // // free (NULL) is a no-op, so there is no need to avoid it @@ expression E; @@ + free (E); + E = NULL; - if (unlikely (E != NULL)) { - free(E); ( - E = NULL; | - E = 0; ) ... - } @@ expression E; @@ + free (E); - if (unlikely (E != NULL)) { - free (E); - }
2011-07-29Silence gcc warningsAndrea Canciani1-1/+0
2011-07-19test,perf: Another hatching!Chris Wilson4-0/+98
This one illustrates the quadratic explosion lurking in the clipping code. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>