summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2009-10-20cairo-gl: Add first baby step toward using GLSL in cairo-gl backend.glslCarl Worth6-2/+358
This implements only the fill_rectangles call so far, and introduces tons of new fallbacks with warnings printed on stderr. Thanks to Eric Anholt and his work on Glamor in the X server for the code here.
2009-10-12boilerplate-gl: Remove incorrectly used GLX_DOUBLEBUFFER attribute.Carl Worth1-2/+0
This attribute requires an argument which we weren't actually passing. Meanwhile, there's nothing in the gl boilerplate that requires anything double-buffered so we fix this by just dropping it.
2009-10-12gl: Explicitly initialize current_target to NULL.Carl Worth1-0/+2
Be responsible here at the top level rather than relying on other levels of the code to call calloc not malloc to get correct behavior.
2009-10-12gl: Reorder initialization of cairo_gl_context_t to match declaration.Carl Worth2-3/+5
This makes it easier to find any missing initializers.
2009-09-15Use __uint128_t and __int128_t if availableSebastian Dröge4-50/+50
GCC uses a peculiar name for a real 128-bit integer on x86-64. Speedups, xlib on a gm45 ======================== poppler 41246.56 -> 35102.82: 1.18x speedup swfdec-youtube 12623.01 -> 11936.79: 1.06x speedup Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2009-09-15[perf] Reorganise cairo-perfChris Wilson33-43/+46
In preparation to creating a new hub to control performance measuring and reporting, move the current cairo-perf out of the way.
2009-09-14[autoconf] Comment on the SIZEOF_VOID__ -> SIZEOF_VOID_P workaround.M Joonas Pihlaja2-0/+4
Explain where the weird SIZEOF_VOID__ comes from.
2009-09-14[trace] Look harder for the cairo-trace.so library.M Joonas Pihlaja1-1/+16
On OpenBSD the convention is to not use symlinks from unversioned library names to versioned library names. This breaks cairo-trace because it looks for cairo-trace.so explicitly, but on OpenBSD only cairo-trace.so.0.0 is installed. The right thing to do is probably to source the cairo-trace.la file and look for a file name there somehow. Instead this commit just looks for a likely looking file or symlink in the install directory.
2009-09-14[trace] Don't use pthread_key_delete.M Joonas Pihlaja1-1/+0
On OpenBSD libc doesn't provide pthread stubs like glibc on Linux or newer libcs from FreeBSD. However libX11 does provide a stubs for a subset of the pthread functions (formerly in libXThrStub, now moved into libX11 proper), but pthread_key_delete() is not one of the stubbed ones. So, on OpenBSD cairo's non-linking of libpthread accidentally works as long as the xlib-surface is enabled, which is nearly always the case. This patch makes trace.c stand at the same precipice as cairo itself by reverting to only a subset of the pthreads functions stubbed by libX11.
2009-09-14[build] Check for dlsym in both libdl and libc.M Joonas Pihlaja3-8/+14
The BSDs have dlsym() in libc rather than libdl.
2009-09-14[build] Work around autoconf void* -> VOID__ name conversion bug.M Joonas Pihlaja2-0/+8
The autoconf shipping with OpenBSD 4.5 converts sizeof(void*) to SIZEOF_VOID__ rather than SIZEOF_VOID_P. Work around that by defining SIZEOF_VOID_P if required.
2009-09-14[configure] Setup GL CFLAGS before checking for GLXChris Wilson1-0/+3
2009-09-14[build] Add a default message for when GLEW isn't builtChris Wilson5-19/+4
And it appears I touched the build system again and autoregenerated the feature headers.
2009-09-14Add a private copy of GLEWChris Wilson12-9/+25955
This appears to be the simplest mechanism to build libglew at the moment - should a system copy be unavailable. Fortunately libglew is now distributed under a permissive licence. If you want to pass 'make -C src check' you have to use the system copy, or spend quite a bit of time cairo-fying libglew.
2009-09-13[configure] Fallback to detect OpenGL headersChris Wilson1-3/+8
When not using mesa, we can not rely on a pkgconfig file, so just rely on the presence of the OpenGL headers instead.
2009-09-13[win32] Sync Makefile.win32.features.M Joonas Pihlaja1-2/+2
Ooops.. wasn't sure if I should commit this or not.
2009-09-13[trace] Don't trace internal cairo calls on Solaris.M Joonas Pihlaja1-138/+327
On various configurations of Solaris cairo-trace likes to trace internal calls to the API from within cairo and cairo-trace itself. On Linux the slim_hidden_proto stuff avoids this by name mangling and symbol alias magic, but on Solaris that doesn't work so we're left with either no hidden symbols at all or using normal ELF hidden symbol attributes, but neither of those prevent internal calls to cairo from being traced of course. This commit provides a per-thread entry/exit trace counter for use when we can't use name mangling to hide internal API calls. As a side-effect it may hide actual client API calls from callback functions called by cairo, but such use cases ought to be rare.
2009-09-13[build] Enable building cairo-trace on Solaris.M Joonas Pihlaja1-1/+1
Solaris supports LD_PRELOAD too!
2009-09-13[trace] Make cairo-trace and its symbol-lookup automatically configured.M Joonas Pihlaja1-2/+2
The build shouldn't fail if we can't make our optional performance tools.
2009-09-13[trace] Don't rely on the constructor attribute to initialise the tracer.M Joonas Pihlaja1-2/+174
Use pthread_once() at cairo API entry points to initialise the library if required. This side steps the issues with the __constructor__ attribute vs _init()/_fini() on Solaris and different tracer/tracee runtimes which result in the constructors not being run in cairo-trace.so.
2009-09-13[trace] Don't try and propagate a void result.M Joonas Pihlaja1-66/+70
The pattern return <function returning void>( ... ); is a gccism not supported by Sun Studio.
2009-09-13[trace] Avoid warnings from assigning a void pointer to a function pointer.M Joonas Pihlaja1-2/+2
The Sun Studio compiler complains a *lot* when assigning the result of dlsym to a function pointer. Cast the result to the proper type first.:w
2009-09-13[image] Add pixel masks for BGRA formatsChris Wilson1-1/+9
pixman introduced the BGRA pixel type not too long ago, and so we need to update our pixman_format_code_t to cairo_format_masks_t translator.
2009-09-13[trace] Stray trailing ';' in bswap macrosChris Wilson1-2/+2
2009-09-13[trace] Compile without lookup-symbolChris Wilson1-1/+5
And check compilation with --disable-symbol-lookup
2009-09-13[configure] --enable-symbol-lookupChris Wilson7-5/+34
There you go Joonas, I don't always ignore your suggestions! This is simple patch to allow the user to disable symbol loops in case the auto-detection fails on some obscure (perhaps OpenBSD) platform. Or in case the user really wants to trim a few bytes from a library only used during tracing!
2009-09-11[test] Typos in README from previous commitChris Wilson1-1/+1
2009-09-11[test] Add Debian packages for fontsChris Wilson1-1/+3
Mention which .deb provides the required fonts.
2009-09-11[xlib] Fix big-line.Chris Wilson3-246/+164
Project lines that exceed the 16.16 limits onto the XFixedLine, as we know that top/bottom must fit within the confines of the surface and so will be less than 16 bits. Sadly this is a run-on patch that also does: 1. Make FillTiled the default for new GCs. 2. Stores extend mode as opposed to repeat, and thereby cleaning up some inconsistent code. 3. Remove the special casing for unbounded trapezoids, as it is redundant with the polygon clipping. 4. Tidy the logic for deciding when to use the core protocol (_categorize_composite_operation)
2009-09-11[xlib] Discard clip if larger than glyph extentsChris Wilson3-0/+65
Implement cheap calculation of glyph extents to see whether we can discard the clip region. This is effective around 50% of the time for firefox (and makes the xtrace so much neater).
2009-09-11[test] Update big-line and remove XFAILChris Wilson9-12/+12
Now that we use polygon clipping, output geometry should no longer exceed the 2^16 limits imposed by pixman. For the image backend, we now use spans for stroking and for the xlib backend we have to double check the range on the output trapezoids. In short, cairo should pass this test.
2009-09-10[surface] Early return for (region IN white)Chris Wilson1-0/+7
Fill a region using IN and a white source is a frequent reduction of a complex clip (viz a path that covers the whole operation extents will be reduced to a single rectangle), and we can simply discard the fill (as it always has bounded semantics).
2009-09-10[clip] Simplify applying a box clipChris Wilson2-39/+48
If the clip path is a simple box, then for many operations it is entirely representation by the alteration of extents and so we can skip a few steps during reconstruction.
2009-09-10[xlib] Fix extraction of GC during XCloseDisplay()Chris Wilson1-1/+1
Jeff Muizelaar reported a bug from his firefox builds that was causing a double free during XCloseDisplay, and suggested it was related to c0e01d9cd. Reviewing the cleanup, suggested that the cause may just be a pair of missing parenthesis.
2009-09-09[util] And reuse the same name repository name.Chris Wilson1-2/+2
Completely confused by local caching of a broken cairo.modules by the jhbuild client. ARGH!
2009-09-09[util] And back to a unique repo name for cairo.modulesChris Wilson1-2/+2
Gah, further experiments into the unknown and the unclear.
2009-09-09[util] And restore the repository tag.Chris Wilson1-0/+2
jbhuild requires a local definition.
2009-09-09[util] Inherit the repository from xorg.modulesChris Wilson1-3/+1
Experiment with inheriting the repository from xorg.module, in order to avoid having two entries for the same server.
2009-09-09[test] Disable the antialias testing for the vector surfaces.Chris Wilson5-5/+5
Only the raster bckends obey the font anti-alias options.
2009-09-09[test] Compare a failure against the image outputChris Wilson1-0/+46
If a backend fails in exactly the same way as the image, then we can safely assume that the failure is systematic and not an error in the backend, so change the result to XFAIL.
2009-09-09[test] Typo in ft-show-glyphs-positioningChris Wilson1-1/+1
Note to self: remember to sleep more often.
2009-09-09[test] An oversized twin test case.Chris Wilson5-0/+100
A larger variant of the twin mixed antialiasing test.
2009-09-09[test] Variation of twin that intermixes antialiasingChris Wilson5-0/+100
Check that we are substituting the right glyph depth and changing masks appropriately.
2009-09-09[test] SUBPIXEL_ANTIALIAS varation of twinChris Wilson5-0/+74
Force argb32 glyphs.
2009-09-09[test] Variation of twin with ANTIALIAS_GRAYChris Wilson5-0/+74
Force generation of a8 glyphs.
2009-09-09[test] Add ANTIALIAS_NONE variation of twinChris Wilson5-0/+74
I'm off hunting bugs. By using twin with ANTIALIAS_NONE we can construct a1 glyph images independently of the native font system.
2009-09-09[test] Check for errors during ft-show-glyphs-positioningChris Wilson1-7/+39
Do not blindly assume that we managed to construct a valid scaled-font before attempting to dereference the FT_Face. Consider a machine with no fonts which is substituting twin...
2009-09-09[twin] Initialise all propertiesChris Wilson1-0/+2
Left a couple of uninitialised properties along the non-toy font construction path.
2009-09-09[configure] Typo in testChris Wilson1-1/+1
The have_dl clause was meant to have been removed from the requirements test for cairo-script-interpreter. Instead we left the test broken.
2009-09-08[spans] Correct offsets for trapezoidsChris Wilson1-2/+2
Pass on the destination offset from composite_trapezoids() to composite_polygon().