summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@gmail.com>2012-07-16 19:08:25 +1000
committerDave Airlie <airlied@gmail.com>2012-07-16 19:08:25 +1000
commit880187727ca6125d6332346ec740fe36ef577910 (patch)
treed835f744f88036b63271fff1d0d1277f374f5e0a
parent909da5737b3adb3193ccd829969e7bfee71e258a (diff)
tseng: fix XAA-less server build
Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r--configure.ac18
-rw-r--r--src/tseng.h4
-rw-r--r--src/tseng_accel.c7
-rw-r--r--src/tseng_dga.c17
-rw-r--r--src/tseng_driver.c2
5 files changed, 44 insertions, 4 deletions
diff --git a/configure.ac b/configure.ac
index 8458c06..667e64f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -78,6 +78,24 @@ if test "x$XSERVER_LIBPCIACCESS" = xyes; then
fi
AM_CONDITIONAL(XSERVER_LIBPCIACCESS, test "x$XSERVER_LIBPCIACCESS" = xyes)
+AC_ARG_ENABLE(xaa,
+ AS_HELP_STRING([--enable-xaa],
+ [Enable legacy X Acceleration Architecture (XAA) [default=auto]]),
+ [XAA="$enableval"],
+ [XAA=auto])
+if test "x$XAA" != xno; then
+ save_CFLAGS=$CFLAGS
+ save_CPPFLAGS=$CPPFLAGS
+ CFLAGS=$XORG_CFLAGS
+ CPPFLAGS="$XORG_CFLAGS"
+ AC_CHECK_HEADERS([xaa.h], XAA=yes, XAA=no)
+ CFLAGS=$save_CFLAGS
+ CPPFLAGS=$save_CPPFLAGS
+fi
+AC_MSG_CHECKING([whether to include XAA support])
+AM_CONDITIONAL(XAA, test "x$XAA" = xyes)
+AC_MSG_RESULT([$XAA])
+
AC_SUBST([moduledir])
DRIVER_NAME=tseng
diff --git a/src/tseng.h b/src/tseng.h
index c6a51b7..2e05090 100644
--- a/src/tseng.h
+++ b/src/tseng.h
@@ -35,8 +35,10 @@
#include "fb.h"
/* Drivers using the XAA interface ... */
+#ifdef HAVE_XAA_H
#include "xaa.h"
#include "xaalocal.h"
+#endif
#include "xf86Cursor.h"
#include "xf86fbman.h"
@@ -137,7 +139,9 @@ typedef struct {
int max_vco_freq; /* ET6000: max internal VCO frequency */
CloseScreenProcPtr CloseScreen;
int save_divide;
+#ifdef HAVE_XAA_H
XAAInfoRecPtr AccelInfoRec;
+#endif
xf86CursorInfoPtr CursorInfoRec;
CARD32 AccelColorBufferOffset; /* offset in video memory where FG and BG colors will be stored */
CARD32 AccelColorExpandBufferOffsets[3]; /* offset in video memory for ColorExpand buffers */
diff --git a/src/tseng_accel.c b/src/tseng_accel.c
index adeaf24..3edf001 100644
--- a/src/tseng_accel.c
+++ b/src/tseng_accel.c
@@ -26,6 +26,7 @@
#include "tseng.h"
#include "tseng_accel.h"
+#ifdef HAVE_XAA_H
#include "miline.h"
/*
@@ -1257,6 +1258,7 @@ TsengSubsequentFillTrapezoidSolid(ytop, height, left, dxL, dyL, eL, right, dxR,
#endif
+#endif
/*
* The following function sets up the supported acceleration. Call it from
@@ -1266,6 +1268,7 @@ TsengSubsequentFillTrapezoidSolid(ytop, height, left, dxL, dyL, eL, right, dxR,
Bool
TsengXAAInit(ScreenPtr pScreen)
{
+#ifdef HAVE_XAA_H
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
TsengPtr pTseng = TsengPTR(pScrn);
XAAInfoRecPtr pXAAinfo;
@@ -1542,5 +1545,7 @@ TsengXAAInit(ScreenPtr pScreen)
xf86InitFBManager(pScreen, &AvailFBArea);
return (XAAInit(pScreen, pXAAinfo));
-
+#else
+ return FALSE;
+#endif
}
diff --git a/src/tseng_dga.c b/src/tseng_dga.c
index c0a85a5..72baf09 100644
--- a/src/tseng_dga.c
+++ b/src/tseng_dga.c
@@ -36,12 +36,14 @@ static Bool Tseng_SetMode(ScrnInfoPtr, DGAModePtr);
static void Tseng_Sync(ScrnInfoPtr);
static int Tseng_GetViewport(ScrnInfoPtr);
static void Tseng_SetViewport(ScrnInfoPtr, int, int, int);
+#ifdef HAVE_XAA_H
static void Tseng_FillRect(ScrnInfoPtr, int, int, int, int, unsigned long);
static void Tseng_BlitRect(ScrnInfoPtr, int, int, int, int, int, int);
/*
static void Tseng_BlitTransRect(ScrnInfoPtr, int, int, int, int, int, int,
unsigned long);
*/
+#endif
static
DGAFunctionRec TsengDGAFuncs = {
@@ -51,9 +53,13 @@ DGAFunctionRec TsengDGAFuncs = {
Tseng_SetViewport,
Tseng_GetViewport,
Tseng_Sync,
+#ifdef HAVE_XAA_H
Tseng_FillRect,
Tseng_BlitRect,
NULL /* Tseng_BlitTransRect */
+#else
+ NULL, NULL, NULL
+#endif
};
@@ -84,8 +90,10 @@ TsengDGAInit(ScreenPtr pScreen)
num++;
(void)memset(currentMode, 1, sizeof(DGAModeRec));
currentMode->mode = pMode;
- currentMode->flags = DGA_PIXMAP_AVAILABLE
- | ((pTseng->UseAccel) ? (DGA_FILL_RECT | DGA_BLIT_RECT) : 0);
+ currentMode->flags = DGA_PIXMAP_AVAILABLE;
+#ifdef HAVE_XAA_H
+ currentMode->flags |= ((pTseng->UseAccel) ? (DGA_FILL_RECT | DGA_BLIT_RECT) : 0);
+#endif
if (pMode->Flags & V_DBLSCAN)
currentMode->flags |= DGA_DOUBLESCAN;
if(pMode->Flags & V_INTERLACE)
@@ -205,12 +213,14 @@ Tseng_Sync(
ScrnInfoPtr pScrn
){
TsengPtr pTseng = TsengPTR(pScrn);
-
+#ifdef HAVE_XAA_H
if(pTseng->AccelInfoRec) {
(*pTseng->AccelInfoRec->Sync)(pScrn);
}
+#endif
}
+#ifdef HAVE_XAA_H
static void
Tseng_FillRect (
ScrnInfoPtr pScrn,
@@ -246,3 +256,4 @@ Tseng_BlitRect(
SET_SYNC_FLAG(pTseng->AccelInfoRec);
}
}
+#endif
diff --git a/src/tseng_driver.c b/src/tseng_driver.c
index 0c04e54..ffafb19 100644
--- a/src/tseng_driver.c
+++ b/src/tseng_driver.c
@@ -1545,8 +1545,10 @@ TsengCloseScreen(CLOSE_SCREEN_ARGS_DECL)
&(pTseng->SavedReg),VGA_SR_ALL);
TsengUnmapMem(pScrn);
}
+#ifdef HAVE_XAA_H
if (pTseng->AccelInfoRec)
XAADestroyInfoRec(pTseng->AccelInfoRec);
+#endif
if (pTseng->CursorInfoRec)
xf86DestroyCursorInfoRec(pTseng->CursorInfoRec);