xf86-video-intel: 2 commits - configure.ac src/legacy/i810
Chris Wilson
ickle at kemper.freedesktop.org
Tue Jul 10 01:41:32 PDT 2012
configure.ac | 42 +++++++++++++++++++++++++++++++++++++++++-
src/legacy/i810/Makefile.am | 12 ++++++++++--
src/legacy/i810/i810.h | 4 ++++
src/legacy/i810/i810_dga.c | 15 ++++++++++++---
src/legacy/i810/i810_dri.c | 38 ++++++++++++++++++++++----------------
src/legacy/i810/i810_driver.c | 25 +++++++++++++++++++------
src/legacy/i810/i810_video.c | 2 --
7 files changed, 108 insertions(+), 30 deletions(-)
New commits:
commit 232217eef8f99f5678d65bf9aa5b898ef6d3b3c6
Author: Daniel Stone <daniel at fooishbar.org>
Date: Tue Jul 10 00:32:13 2012 +0100
i810: Make DGA optional
Don't build DGA when it's not available, or when we don't want it.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/configure.ac b/configure.ac
index 15ed9b9..dde23f1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -161,7 +161,6 @@ 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(xaa,
AS_HELP_STRING([--enable-xaa],
@@ -181,6 +180,25 @@ if test "x$XAA" = xyes; then
fi
AM_CONDITIONAL(XAA, test "x$XAA" = xyes)
+AC_MSG_CHECKING([whether to include DGA support])
+AC_ARG_ENABLE(dga,
+ AS_HELP_STRING([--enable-dga],
+ [Enable legacy Direct Graphics Access (DGA) [default=auto]]),
+ [DGA="$enableval"],
+ [DGA=auto])
+AC_MSG_RESULT([$DGA])
+AM_CONDITIONAL(DGA, test "x$DGA" != xno)
+if test "x$DGA" != xno; then
+ save_CFLAGS=$CFLAGS
+ CFLAGS=$XSERVER_CFLAGS
+ AC_CHECK_HEADERS([dgaproc.h], DGA=yes, DGA=no)
+ CFLAGS=$save_CFLAGS
+fi
+if test "x$DGA" = xyes; then
+ AC_DEFINE(USE_DGA, 1, [Enable DGA support])
+fi
+AM_CONDITIONAL(DGA, test "x$DGA" = xyes)
+
AC_ARG_WITH(default-accel,
AS_HELP_STRING([--with-default-accel],
[Select the default acceleration method [default=uxa if enabled, otherwise sna]]),
diff --git a/src/legacy/i810/Makefile.am b/src/legacy/i810/Makefile.am
index 01cc218..07a384f 100644
--- a/src/legacy/i810/Makefile.am
+++ b/src/legacy/i810/Makefile.am
@@ -10,7 +10,6 @@ AM_CFLAGS = @CWARNFLAGS@ @XORG_CFLAGS@ @DRM_CFLAGS@ @DRI_CFLAGS@ @PCIACCESS_CFLA
liblegacy_i810_la_SOURCES = \
i810_common.h \
i810_cursor.c \
- i810_dga.c \
i810_driver.c \
i810.h \
i810_memory.c \
@@ -24,6 +23,11 @@ liblegacy_i810_la_SOURCES += \
i810_accel.c
endif
+if DGA
+liblegacy_i810_la_SOURCES += \
+ i810_dga.c
+endif
+
if DRI
liblegacy_i810_la_SOURCES +=\
i810_dri.c \
diff --git a/src/legacy/i810/i810_driver.c b/src/legacy/i810/i810_driver.c
index df8f8e1..f4f7f3e 100644
--- a/src/legacy/i810/i810_driver.c
+++ b/src/legacy/i810/i810_driver.c
@@ -993,7 +993,7 @@ DoRestore(ScrnInfoPtr scrn, vgaRegPtr vgaReg, I810RegPtr i810Reg,
uint32_t LCD_TV_Control = INREG(LCD_TV_C);
uint32_t TV_HTotal = INREG(LCD_TV_HTOTAL);
uint32_t ActiveStart, ActiveEnd;
-
+
if((LCD_TV_Control & LCD_TV_ENABLE)
&& !(LCD_TV_Control & LCD_TV_VGAMOD)
&& TV_HTotal) {
@@ -1006,7 +1006,7 @@ DoRestore(ScrnInfoPtr scrn, vgaRegPtr vgaReg, I810RegPtr i810Reg,
OUTREG(LCD_TV_OVRACT,
(ActiveEnd << 16) | ActiveStart);
}
-
+
/* Turn on DRAM Refresh */
temp = INREG8(DRAM_ROW_CNTL_HI);
temp &= ~DRAM_REFRESH_RATE;
@@ -1585,11 +1585,11 @@ I810ScreenInit(SCREEN_INIT_ARGS_DECL)
pI810->LpRing = calloc(sizeof(I810RingBuffer),1);
if (!pI810->LpRing) {
- xf86DrvMsg(scrn->scrnIndex, X_ERROR,
+ xf86DrvMsg(scrn->scrnIndex, X_ERROR,
"Could not allocate lpring data structure.\n");
return FALSE;
}
-
+
miClearVisualTypes();
/* Re-implemented Direct Color support, -jens */
@@ -1623,7 +1623,7 @@ I810ScreenInit(SCREEN_INIT_ARGS_DECL)
* pI810->directRenderingEnabled based on it each generation.
*/
pI810->directRenderingEnabled = !pI810->directRenderingDisabled;
-
+
if (pI810->directRenderingEnabled==TRUE)
pI810->directRenderingEnabled = I810DRIScreenInit(screen);
@@ -1693,7 +1693,7 @@ I810ScreenInit(SCREEN_INIT_ARGS_DECL)
}
#endif
-#ifdef XFreeXDGA
+#ifdef HAVE_DGA
I810DGAInit(screen);
#endif
commit 78dc0c04745ad4485b994f67833f4a155749f01d
Author: Daniel Stone <daniel at fooishbar.org>
Date: Tue Jul 10 00:32:13 2012 +0100
i810: Make XAA optional
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>
diff --git a/configure.ac b/configure.ac
index 7ab7ab8..15ed9b9 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(xaa,
+ 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..0f891bb 100644
--- a/src/legacy/i810/i810_dri.c
+++ b/src/legacy/i810/i810_dri.c
@@ -379,7 +379,7 @@ I810DRIScreenInit(ScreenPtr pScreen)
pI810DRI->regsSize = I810_REG_SIZE;
if (drmAddMap(pI810->drmSubFD, (drm_handle_t) pI810->MMIOAddr,
- pI810DRI->regsSize, DRM_REGISTERS, 0,
+ pI810DRI->regsSize, DRM_REGISTERS, 0,
(drmAddress) &pI810DRI->regs) < 0) {
xf86DrvMsg(pScreen->myNum, X_ERROR, "[drm] drmAddMap(regs) failed\n");
DRICloseScreen(pScreen);
@@ -421,7 +421,7 @@ I810DRIScreenInit(ScreenPtr pScreen)
* under the DRI.
*/
- drmAgpAlloc(pI810->drmSubFD, 4096 * 1024, 1, NULL,
+ drmAgpAlloc(pI810->drmSubFD, 4096 * 1024, 1, NULL,
(drmAddress) &dcacheHandle);
pI810->dcacheHandle = dcacheHandle;
@@ -507,7 +507,7 @@ I810DRIScreenInit(ScreenPtr pScreen)
"[agp] GART: no dcache memory found\n");
}
- drmAgpAlloc(pI810->drmSubFD, back_size, 0, NULL,
+ drmAgpAlloc(pI810->drmSubFD, back_size, 0, NULL,
(drmAddress) &agpHandle);
pI810->backHandle = agpHandle;
@@ -564,10 +564,10 @@ I810DRIScreenInit(ScreenPtr pScreen)
/* Now allocate and bind the agp space. This memory will include the
* regular framebuffer as well as texture memory.
*/
- drmAgpAlloc(pI810->drmSubFD, sysmem_size, 0, NULL,
+ drmAgpAlloc(pI810->drmSubFD, sysmem_size, 0, NULL,
(drmAddress)&agpHandle);
pI810->sysmemHandle = agpHandle;
-
+
if (agpHandle != DRM_AGP_NO_HANDLE) {
if (drmAgpBind(pI810->drmSubFD, agpHandle, 0) == 0) {
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
@@ -610,7 +610,7 @@ I810DRIScreenInit(ScreenPtr pScreen)
}
drmAgpAlloc(pI810->drmSubFD, pI810->MC.Size, 0, NULL,
(drmAddress) &agpHandle);
-
+
pI810->xvmcHandle = agpHandle;
if (agpHandle != DRM_AGP_NO_HANDLE) {
@@ -634,7 +634,7 @@ I810DRIScreenInit(ScreenPtr pScreen)
}
drmAgpAlloc(pI810->drmSubFD, 4096, 2,
- (unsigned long *)&pI810->CursorPhysical,
+ (unsigned long *)&pI810->CursorPhysical,
(drmAddress) &agpHandle);
pI810->cursorHandle = agpHandle;
@@ -787,7 +787,7 @@ I810DRIScreenInit(ScreenPtr pScreen)
pI810DRI->agp_buf_size = pI810->BufferMem.Size;
if (drmAddMap(pI810->drmSubFD, (drm_handle_t) pI810->LpRing->mem.Start,
- pI810->LpRing->mem.Size, DRM_AGP, 0,
+ pI810->LpRing->mem.Size, DRM_AGP, 0,
(drmAddress) &pI810->ring_map) < 0) {
xf86DrvMsg(pScreen->myNum, X_ERROR,
"[drm] drmAddMap(ring_map) failed. Disabling DRI.\n");
@@ -821,7 +821,7 @@ I810DRIScreenInit(ScreenPtr pScreen)
}
if (drmAddMap(pI810->drmSubFD, (drm_handle_t) pI810->TexMem.Start,
- pI810->TexMem.Size, DRM_AGP, 0,
+ pI810->TexMem.Size, DRM_AGP, 0,
(drmAddress) &pI810DRI->textures) < 0) {
xf86DrvMsg(pScreen->myNum, X_ERROR,
"[drm] drmAddMap(textures) failed. Disabling DRI.\n");
@@ -975,7 +975,7 @@ I810DRIFinishScreenInit(ScreenPtr pScreen)
*/
if (info->allowPageFlip && info->drmMinor >= 3) {
ShadowFBInit( pScreen, I810DRIRefreshArea );
- }
+ }
else
info->allowPageFlip = 0;
return DRIFinishScreenInit(pScreen);
@@ -1009,11 +1009,20 @@ I810DRISwapContext(ScreenPtr pScreen, DRISyncType syncType,
}
static void
+I810DRISetNeedSync(ScrnInfoPtr pScrn)
+{
+#ifdef HAVE_XAA
+ I810Ptr pI810 = I810PTR(pScrn);
+ if (pI810->AccelInfoRec)
+ pI810->AccelInfoRec->NeedToSync = TRUE;
+#endif
+}
+
+static void
I810DRIInitBuffers(WindowPtr pWin, RegionPtr prgn, CARD32 index)
{
ScreenPtr pScreen = pWin->drawable.pScreen;
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
- I810Ptr pI810 = I810PTR(pScrn);
BoxPtr pbox = REGION_RECTS(prgn);
int nbox = REGION_NUM_RECTS(prgn);
@@ -1041,8 +1050,7 @@ I810DRIInitBuffers(WindowPtr pWin, RegionPtr prgn, CARD32 index)
}
I810SelectBuffer(pScrn, I810_SELECT_FRONT);
- if (pI810->AccelInfoRec)
- pI810->AccelInfoRec->NeedToSync = TRUE;
+ I810DRISetNeedSync(pScrn);
}
/* This routine is a modified form of XAADoBitBlt with the calls to
@@ -1058,7 +1066,6 @@ I810DRIMoveBuffers(WindowPtr pParent, DDXPointRec ptOldOrg,
{
ScreenPtr pScreen = pParent->drawable.pScreen;
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
- I810Ptr pI810 = I810PTR(pScrn);
BoxPtr pboxTmp, pboxNext, pboxBase;
DDXPointPtr pptTmp, pptNew2 = NULL;
int xdir, ydir;
@@ -1201,8 +1208,7 @@ I810DRIMoveBuffers(WindowPtr pParent, DDXPointRec ptOldOrg,
free(pboxNew1);
}
- if (pI810->AccelInfoRec)
- pI810->AccelInfoRec->NeedToSync = TRUE;
+ I810DRISetNeedSync(pScrn);
}
diff --git a/src/legacy/i810/i810_driver.c b/src/legacy/i810/i810_driver.c
index 141c19c..df8f8e1 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"
@@ -1094,6 +1095,7 @@ DoRestore(ScrnInfoPtr scrn, vgaRegPtr vgaReg, I810RegPtr i810Reg,
hwp->writeCrtc(hwp, IO_CTNL, temp);
}
+#ifdef HAVE_XAA
static void
I810SetRingRegs(ScrnInfoPtr scrn)
{
@@ -1113,6 +1115,7 @@ I810SetRingRegs(ScrnInfoPtr scrn)
itemp |= ((pI810->LpRing->mem.Size - 4096) | RING_NO_REPORT | RING_VALID);
OUTREG(LP_RING + RING_LEN, itemp);
}
+#endif
static void
I810Restore(ScrnInfoPtr scrn)
@@ -1700,6 +1703,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 +1715,7 @@ I810ScreenInit(SCREEN_INIT_ARGS_DECL)
I810EmitFlush(scrn);
}
}
+#endif
miInitializeBackingStore(screen);
xf86SetBackingStore(screen);
@@ -1938,11 +1943,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 +1968,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 +2004,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"
More information about the xorg-commit
mailing list