[PATCH 28/51] drm: made various drm-backends optional (buildtime)
"Enrico Weigelt, metux IT consult" <[email protected]>
| Newsgroups | gmane.comp.lib.cairo |
|---|---|
| Message-ID | <[email protected]> |
Signed-off-by: Enrico Weigelt, metux IT consult <[email protected]> --- configure.ac | 26 +++++++++++++++++++++++++ src/Makefile.sources | 54 ++++++++++++++++++++++++++++++++++------------------ src/drm/cairo-drm.c | 9 +++++++++ 3 files changed, 71 insertions(+), 18 deletions(-) diff --git a/configure.ac b/configure.ac index 2ce1959..e4716e1 100644 --- a/configure.ac +++ b/configure.ac @@ -299,6 +299,32 @@ CAIRO_ENABLE_SURFACE_BACKEND(drm, DRM, no, [ drm_REQUIRES="libudev >= 136" PKG_CHECK_MODULES(drm, $drm_REQUIRES, , [use_drm="no (requires $drm_REQUIRES, udev is available from git://git.kernel.org/pub/scm/linux/hotplug/udev.git)"]) + enable_cairo_surface_drm=1 +]) + +CAIRO_ENABLE_SURFACE_BACKEND(drm_intel, DRM_INTEL, no, [ + if test "$enable_cairo_surface_drm" != "1"; then + AC_MSG_ERROR([drm-intel backend needs drm backend]) + fi + enable_cairo_surface_drm_intel=1 +]) + +CAIRO_ENABLE_SURFACE_BACKEND(drm_i915, DRM_I915, no, [ + if test "$enable_cairo_surface_drm_intel" != "1"; then + AC_MSG_ERROR([drm-i915 backend needs drm backend]) + fi +]) + +CAIRO_ENABLE_SURFACE_BACKEND(drm_i965, DRM_I965, no, [ + if test "$enable_cairo_surface_drm_intel" != "1"; then + AC_MSG_ERROR([drm-i965 backend needs drm backend]) + fi +]) + +CAIRO_ENABLE_SURFACE_BACKEND(drm_radeon, DRM_RADEON, no, [ + if test "$enable_cairo_surface_drm" != "1"; then + AC_MSG_ERROR([drm-radeon backend needs drm backend]) + fi ]) CAIRO_ENABLE_SURFACE_BACKEND(gallium, Gallium3D, no, [ diff --git a/src/Makefile.sources b/src/Makefile.sources index fac24d7..9b1344c 100644 --- a/src/Makefile.sources +++ b/src/Makefile.sources @@ -414,37 +414,55 @@ cairo_wgl_sources += cairo-wgl-context.c cairo_directfb_headers = cairo-directfb.h cairo_directfb_sources = cairo-directfb-surface.c -cairo_drm_headers = cairo-drm.h -cairo_drm_private = drm/cairo-drm-private.h \ +cairo_drm_i915_private = \ + drm/cairo-drm-i915-private.h + +cairo_drm_i915_sources = \ + drm/cairo-drm-i915-surface.c \ + drm/cairo-drm-i915-glyphs.c \ + drm/cairo-drm-i915-shader.c \ + drm/cairo-drm-i915-spans.c + +cairo_drm_i965_private = \ + drm/cairo-drm-i965-private.h + +cairo_drm_i965_sources = \ + drm/cairo-drm-i965-surface.c \ + drm/cairo-drm-i965-glyphs.c \ + drm/cairo-drm-i965-shader.c \ + drm/cairo-drm-i965-spans.c + +cairo_drm_intel_private = \ drm/cairo-drm-ioctl-private.h \ drm/cairo-drm-intel-private.h \ drm/cairo-drm-intel-brw-defines.h \ drm/cairo-drm-intel-brw-structs.h \ drm/cairo-drm-intel-brw-eu.h \ drm/cairo-drm-intel-command-private.h \ - drm/cairo-drm-intel-ioctl-private.h \ - drm/cairo-drm-i915-private.h \ - drm/cairo-drm-i965-private.h \ - drm/cairo-drm-radeon-private.h -cairo_drm_sources = drm/cairo-drm.c \ - drm/cairo-drm-bo.c \ - drm/cairo-drm-surface.c \ + drm/cairo-drm-intel-ioctl-private.h + +cairo_drm_intel_sources = \ drm/cairo-drm-intel.c \ drm/cairo-drm-intel-debug.c \ drm/cairo-drm-intel-surface.c \ - drm/cairo-drm-i915-surface.c \ - drm/cairo-drm-i915-glyphs.c \ - drm/cairo-drm-i915-shader.c \ - drm/cairo-drm-i915-spans.c \ - drm/cairo-drm-i965-surface.c \ - drm/cairo-drm-i965-glyphs.c \ - drm/cairo-drm-i965-shader.c \ - drm/cairo-drm-i965-spans.c \ drm/cairo-drm-intel-brw-eu.c \ drm/cairo-drm-intel-brw-eu-emit.c \ - drm/cairo-drm-intel-brw-eu-util.c \ + drm/cairo-drm-intel-brw-eu-util.c + +cairo_drm_radeon_private = \ + drm/cairo-drm-radeon-private.h + +cairo_drm_radeon_sources = \ drm/cairo-drm-radeon.c \ drm/cairo-drm-radeon-surface.c + +cairo_drm_headers = cairo-drm.h +cairo_drm_private = drm/cairo-drm-private.h + +cairo_drm_sources = drm/cairo-drm.c \ + drm/cairo-drm-bo.c \ + drm/cairo-drm-surface.c + cairo_gallium_sources = drm/cairo-drm-gallium-surface.c cairo_script_headers = cairo-script.h diff --git a/src/drm/cairo-drm.c b/src/drm/cairo-drm.c index 6a2a317..35ae118 100644 --- a/src/drm/cairo-drm.c +++ b/src/drm/cairo-drm.c @@ -147,6 +147,7 @@ cairo_drm_device_get (struct udev_device *device) uint32_t chip_id; cairo_drm_device_create_func_t create_func; } driver_map[] = { +#if CAIRO_HAS_DRM_I965_SURFACE { 0x8086, 0x29a2, _cairo_drm_i965_device_create }, /* I965_G */ { 0x8086, 0x2982, _cairo_drm_i965_device_create }, /* G35_G */ { 0x8086, 0x2992, _cairo_drm_i965_device_create }, /* I965_Q */ @@ -158,7 +159,9 @@ cairo_drm_device_get (struct udev_device *device) { 0x8086, 0x2e12, _cairo_drm_i965_device_create }, /* Q45_G */ { 0x8086, 0x2e32, _cairo_drm_i965_device_create }, /* G41_G */ { 0x8086, 0x2a42, _cairo_drm_i965_device_create }, /* GM45_GM */ +#endif +#if CAIRO_HAS_DRM_I915_SURFACE { 0x8086, 0x2582, _cairo_drm_i915_device_create }, /* I915_G */ { 0x8086, 0x2592, _cairo_drm_i915_device_create }, /* I915_GM */ { 0x8086, 0x258a, _cairo_drm_i915_device_create }, /* E7221_G */ @@ -170,12 +173,18 @@ cairo_drm_device_get (struct udev_device *device) { 0x8086, 0x29d2, _cairo_drm_i915_device_create }, /* Q33_G */ { 0x8086, 0xa011, _cairo_drm_i915_device_create }, /* IGD_GM */ { 0x8086, 0xa001, _cairo_drm_i915_device_create }, /* IGD_G */ +#endif /* XXX i830 */ +#if CAIRO_HAS_DRM_INTEL_SURFACE { 0x8086, ~0, _cairo_drm_intel_device_create }, +#endif +#if CAIRO_HAS_DRM_RADEON_SURFACE { 0x1002, ~0, _cairo_drm_radeon_device_create }, +#endif + #if CAIRO_HAS_GALLIUM_SURFACE { ~0, ~0, _cairo_drm_gallium_device_create }, #endif -- 2.6.4.442.g545299f -- cairo mailing list [email protected] http://lists.cairographics.org/mailman/listinfo/cairo