From 1236c41072a7966eda7db48a381fd0508e5289be Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Fri, 22 Jan 2010 21:26:26 +0000 Subject: xcb: Refresh. Still an experimental backend, it's now a little too late to stabilise for 1.10, but this should represent a major step forward in its feature set and an attempt to catch up with all the bug fixes that have been performed on xlib. Notably not tested yet (and expected to be broken) are mixed-endian connections and low bitdepth servers (the dithering support has not been copied over for instance). However, it seems robust enough for daily use... Of particular note in this update is that the xcb surface is now capable of subverting the xlib surface through the ./configure --enable-xlib-xcb option. This replaces the xlib surface with a proxy that forwards all operations to an equivalent xcb surface whilst preserving the cairo-xlib API that is required for compatibility with the existing applications, for instance GTK+ and Mozilla. Also you can experiment with enabling a DRM bypass, though you need to be extremely foolhardy to do so. --- configure.ac | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) (limited to 'configure.ac') diff --git a/configure.ac b/configure.ac index d704353f6..f94d9c17e 100644 --- a/configure.ac +++ b/configure.ac @@ -109,10 +109,22 @@ CAIRO_ENABLE_SURFACE_BACKEND(xlib_xrender, Xlib Xrender, auto, [ dnl =========================================================================== CAIRO_ENABLE_SURFACE_BACKEND(xcb, XCB, no, [ - xcb_REQUIRES="xcb >= 0.9.92 xcb-render >= 0.9.92 xcb-renderutil" - PKG_CHECK_MODULES(xcb, $xcb_REQUIRES, , [AC_MSG_RESULT(no) - use_xcb="no (requires $xcb_REQUIRES http://xcb.freedesktop.org)"]) + xcb_REQUIRES="xcb >= 0.9.92 xcb-render >= 0.9.92 xcb-shm xcb-dri2" + PKG_CHECK_MODULES(xcb, $xcb_REQUIRES, , + [AC_MSG_RESULT(no) + use_xcb="no (requires $xcb_REQUIRES http://xcb.freedesktop.org)"]) +]) + +CAIRO_ENABLE_FUNCTIONS(xlib_xcb, Xlib/XCB, no, [ + if test "x$use_xcb" == "xyes" -a "x$use_xlib" == "xyes"; then + xlib_xcb_REQUIRES="x11-xcb" + PKG_CHECK_MODULES(xlib_xcb, $xlib_xcb_REQUIRES, , + [use_xlib_xcb="no (requires $xlib_xcb_REQUIRES http://xcb.freedesktop.org)"]) + else + use_xlib_xcb="no (requires both --enable-xlib and --enable-xcb)" + fi ]) +AM_CONDITIONAL(BUILD_XLIB_XCB, test "x$use_xlib_xcb" = "xyes") dnl =========================================================================== @@ -241,6 +253,14 @@ CAIRO_ENABLE_SURFACE_BACKEND(gallium, Gallium3D, no, [ fi ]) +CAIRO_ENABLE_FUNCTIONS(xcb_drm, XCB/DRM, no, [ + if test "x$use_xcb" == "xyes" -a "x$use_drm" == "xyes"; then + use_xcb_drm="yes" + else + use_xcb_drm="no (requires both --enable-xcb and --enable-drm)" + fi +]) + dnl =========================================================================== CAIRO_ENABLE_FUNCTIONS(png, PNG, yes, [ -- cgit v1.2.3