Don't build XAA when it's not available, or when we don't want it. Signed-off-by: Daniel Stone <daniel at fooishbar.org> --- configure.ac | 24 +++++++++++++++++++++++- src/legacy/i810/Makefile.am | 6 +++++- src/legacy/i810/i810.h | 4 ++++ src/legacy/i810/i810_dga.c | 15 ++++++++++++--- src/legacy/i810/i810_dri.c | 4 ++++ src/legacy/i810/i810_driver.c | 11 +++++++++++ src/legacy/i810/i810_video.c | 2 -- 7 files changed, 59 insertions(+), 7 deletions(-) diff --git a/configure.ac b/configure.ac index 7ab7ab8..b6e8b34 100644 --- a/configure.ac +++ b/configure.ac @@ -158,6 +158,29 @@ if test "x$GLAMOR" != "xno"; then AC_DEFINE(USE_GLAMOR, 1, [Enable glamor acceleration]) fi + +PKG_CHECK_MODULES(XORG, [xorg-server >= $required_xorg_xserver_version xproto fontsproto pixman-1 >= $required_pixman_version $REQUIRED_MODULES]) + + +AC_MSG_CHECKING([whether to include XAA support]) +AC_ARG_ENABLE(uxa, + AS_HELP_STRING([--enable-xaa], + [Enable legacy X Acceleration Architecture (XAA) [default=auto]]), + [XAA="$enableval"], + [XAA=auto]) +AC_MSG_RESULT([$XAA]) +AM_CONDITIONAL(XAA, test "x$XAA" != xno) +if test "x$XAA" != xno; then + save_CFLAGS=$CFLAGS + CFLAGS=$XSERVER_CFLAGS + AC_CHECK_HEADERS([xaa.h], XAA=yes, XAA=no) + CFLAGS=$save_CFLAGS +fi +if test "x$XAA" = xyes; then + AC_DEFINE(USE_XAA, 1, [Enable XAA support]) +fi +AM_CONDITIONAL(XAA, test "x$XAA" = xyes) + AC_ARG_WITH(default-accel, AS_HELP_STRING([--with-default-accel], [Select the default acceleration method [default=uxa if enabled, otherwise sna]]), @@ -247,7 +270,6 @@ XORG_DRIVER_CHECK_EXT(XF86DRI, xextproto x11) XORG_DRIVER_CHECK_EXT(DPMSExtension, xextproto) # Obtain compiler/linker options for the driver dependencies -PKG_CHECK_MODULES(XORG, [xorg-server >= $required_xorg_xserver_version xproto fontsproto pixman-1 >= $required_pixman_version $REQUIRED_MODULES]) PKG_CHECK_MODULES(DRM, [libdrm >= 2.4.24]) # libdrm_intel is checked separately PKG_CHECK_MODULES(DRI, [xf86driproto], , DRI=no) PKG_CHECK_MODULES(DRI2, [dri2proto >= 2.6],, DRI2=no) diff --git a/src/legacy/i810/Makefile.am b/src/legacy/i810/Makefile.am index e7fa04f..01cc218 100644 --- a/src/legacy/i810/Makefile.am +++ b/src/legacy/i810/Makefile.am @@ -8,7 +8,6 @@ AM_CFLAGS = @CWARNFLAGS@ @XORG_CFLAGS@ @DRM_CFLAGS@ @DRI_CFLAGS@ @PCIACCESS_CFLA $(NULL) liblegacy_i810_la_SOURCES = \ - i810_accel.c \ i810_common.h \ i810_cursor.c \ i810_dga.c \ @@ -20,6 +19,11 @@ liblegacy_i810_la_SOURCES = \ i810_video.c \ i810_wmark.c +if XAA +liblegacy_i810_la_SOURCES += \ + i810_accel.c +endif + if DRI liblegacy_i810_la_SOURCES +=\ i810_dri.c \ diff --git a/src/legacy/i810/i810.h b/src/legacy/i810/i810.h index 874551b..512d07e 100644 --- a/src/legacy/i810/i810.h +++ b/src/legacy/i810/i810.h @@ -42,7 +42,9 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "compiler.h" #include "xf86Pci.h" #include "i810_reg.h" +#ifdef HAVE_XAA #include "xaa.h" +#endif #include "xf86Cursor.h" #include "xf86xv.h" #include "vbe.h" @@ -202,7 +204,9 @@ typedef struct _I810Rec { I810RegRec SavedReg; I810RegRec ModeReg; +#ifdef XAA XAAInfoRecPtr AccelInfoRec; +#endif xf86CursorInfoPtr CursorInfoRec; CloseScreenProcPtr CloseScreen; ScreenBlockHandlerProcPtr BlockHandler; diff --git a/src/legacy/i810/i810_dga.c b/src/legacy/i810/i810_dga.c index 336588c..e258360 100644 --- a/src/legacy/i810/i810_dga.c +++ b/src/legacy/i810/i810_dga.c @@ -29,8 +29,6 @@ #include "xf86.h" #include "xf86_OSproc.h" #include "xf86Pci.h" -#include "xaa.h" -#include "xaalocal.h" #include "i810.h" #include "i810_reg.h" #include "dgaproc.h" @@ -39,11 +37,14 @@ static Bool I810_OpenFramebuffer(ScrnInfoPtr, char **, unsigned char **, int *, int *, int *); static Bool I810_SetMode(ScrnInfoPtr, DGAModePtr); -static void I810_Sync(ScrnInfoPtr); static int I810_GetViewport(ScrnInfoPtr); static void I810_SetViewport(ScrnInfoPtr, int, int, int); + +#ifdef HAVE_XAA +static void I810_Sync(ScrnInfoPtr); static void I810_FillRect(ScrnInfoPtr, int, int, int, int, unsigned long); static void I810_BlitRect(ScrnInfoPtr, int, int, int, int, int, int); +#endif #if 0 static void I810_BlitTransRect(ScrnInfoPtr, int, int, int, int, int, int, @@ -57,9 +58,15 @@ DGAFunctionRec I810DGAFuncs = { I810_SetMode, I810_SetViewport, I810_GetViewport, +#ifdef HAVE_XAA I810_Sync, I810_FillRect, I810_BlitRect, +#else + NULL, + NULL, + NULL, +#endif #if 0 I810_BlitTransRect #else @@ -186,6 +193,7 @@ I810_SetViewport(ScrnInfoPtr pScrn, int x, int y, int flags) pI810->DGAViewportStatus = 0; } +#ifdef HAVE_XAA static void I810_FillRect(ScrnInfoPtr pScrn, int x, int y, int w, int h, unsigned long color) @@ -226,6 +234,7 @@ I810_BlitRect(ScrnInfoPtr pScrn, SET_SYNC_FLAG(pI810->AccelInfoRec); } } +#endif #if 0 static void diff --git a/src/legacy/i810/i810_dri.c b/src/legacy/i810/i810_dri.c index ba11245..0910919 100644 --- a/src/legacy/i810/i810_dri.c +++ b/src/legacy/i810/i810_dri.c @@ -1041,8 +1041,10 @@ I810DRIInitBuffers(WindowPtr pWin, RegionPtr prgn, CARD32 index) } I810SelectBuffer(pScrn, I810_SELECT_FRONT); +#ifdef HAVE_XAA if (pI810->AccelInfoRec) pI810->AccelInfoRec->NeedToSync = TRUE; +#endif } /* This routine is a modified form of XAADoBitBlt with the calls to @@ -1201,8 +1203,10 @@ I810DRIMoveBuffers(WindowPtr pParent, DDXPointRec ptOldOrg, free(pboxNew1); } +#ifdef HAVE_XAA if (pI810->AccelInfoRec) pI810->AccelInfoRec->NeedToSync = TRUE; +#endif } diff --git a/src/legacy/i810/i810_driver.c b/src/legacy/i810/i810_driver.c index 141c19c..0354a4a 100644 --- a/src/legacy/i810/i810_driver.c +++ b/src/legacy/i810/i810_driver.c @@ -68,6 +68,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "xf86xv.h" #include <X11/extensions/Xv.h> #include "vbe.h" +#include "xf86fbman.h" #include "i810.h" @@ -1700,6 +1701,7 @@ I810ScreenInit(SCREEN_INIT_ARGS_DECL) return FALSE; } +#ifdef HAVE_XAA if (!xf86ReturnOptValBool(pI810->Options, OPTION_NOACCEL, FALSE)) { if (pI810->LpRing->mem.Size != 0) { I810SetRingRegs(scrn); @@ -1711,6 +1713,7 @@ I810ScreenInit(SCREEN_INIT_ARGS_DECL) I810EmitFlush(scrn); } } +#endif miInitializeBackingStore(screen); xf86SetBackingStore(screen); @@ -1938,11 +1941,13 @@ I810LeaveVT(VT_FUNC_ARGS_DECL) } #endif +#ifdef HAVE_XAA if (pI810->AccelInfoRec != NULL) { I810RefreshRing(scrn); I810Sync(scrn); pI810->AccelInfoRec->NeedToSync = FALSE; } +#endif I810Restore(scrn); if (!I810UnbindGARTMemory(scrn)) @@ -1961,14 +1966,18 @@ I810CloseScreen(CLOSE_SCREEN_ARGS_DECL) ScrnInfoPtr scrn = xf86ScreenToScrn(screen); vgaHWPtr hwp = VGAHWPTR(scrn); I810Ptr pI810 = I810PTR(scrn); +#ifdef HAVE_XAA XAAInfoRecPtr infoPtr = pI810->AccelInfoRec; +#endif if (scrn->vtSema == TRUE) { +#ifdef HAVE_XAA if (pI810->AccelInfoRec != NULL) { I810RefreshRing(scrn); I810Sync(scrn); pI810->AccelInfoRec->NeedToSync = FALSE; } +#endif I810Restore(scrn); vgaHWLock(hwp); } @@ -1993,12 +2002,14 @@ I810CloseScreen(CLOSE_SCREEN_ARGS_DECL) pI810->ScanlineColorExpandBuffers = NULL; } +#ifdef HAVE_XAA if (infoPtr) { if (infoPtr->ScanlineColorExpandBuffers) free(infoPtr->ScanlineColorExpandBuffers); XAADestroyInfoRec(infoPtr); pI810->AccelInfoRec = NULL; } +#endif if (pI810->CursorInfoRec) { xf86DestroyCursorInfoRec(pI810->CursorInfoRec); diff --git a/src/legacy/i810/i810_video.c b/src/legacy/i810/i810_video.c index 56d04a4..4ebad66 100644 --- a/src/legacy/i810/i810_video.c +++ b/src/legacy/i810/i810_video.c @@ -49,8 +49,6 @@ THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "i810.h" #include "xf86xv.h" #include <X11/extensions/Xv.h> -#include "xaa.h" -#include "xaalocal.h" #include "dixstruct.h" #include "fourcc.h" -- 1.7.10.4