.gitignore | 70 ++++++++++++++- COPYING | 72 ++++++++++++++-- ChangeLog | 57 ------------ Makefile.am | 15 ++- README | 151 +++++++++++++++++----------------- README.sgml | 156 ----------------------------------- configure.ac | 66 +++++++++----- man/.cvsignore | 2 man/Makefile.am | 59 ++++--------- man/i740.man | 56 +++++++++++- src/.cvsignore | 6 - src/Makefile.am | 1 src/compat-api.h | 99 ++++++++++++++++++++++ src/i740.h | 10 +- src/i740_accel.c | 13 ++ src/i740_cursor.c | 4 src/i740_dga.c | 31 ++++--- src/i740_driver.c | 238 +++++++++++++++++------------------------------------- src/i740_video.c | 46 ++++------ 19 files changed, 564 insertions(+), 588 deletions(-)
New commits: commit c754f573590b74b16d0deb9f86d6505bffa028bf Author: Dave Airlie <airl...@redhat.com> Date: Tue Jul 17 16:05:09 2012 +1000 xf86-video-i740: bump to version 1.3.4 Signed-off-by: Dave Airlie <airl...@redhat.com> diff --git a/configure.ac b/configure.ac index 086a41f..4ff76fa 100644 --- a/configure.ac +++ b/configure.ac @@ -23,7 +23,7 @@ # Initialize Autoconf AC_PREREQ([2.60]) AC_INIT([xf86-video-i740], - [1.3.3], + [1.3.4], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [xf86-video-i740]) AC_CONFIG_SRCDIR([Makefile.am]) commit e3f81a683f3f5d3c70c4320568b756fb50bec527 Author: Dave Airlie <airl...@redhat.com> Date: Tue Jul 17 14:52:33 2012 +1000 i740: convert to new X server screen conv api. Signed-off-by: Dave Airlie <airl...@redhat.com> diff --git a/src/i740_accel.c b/src/i740_accel.c index 7d59ae6..de06e07 100644 --- a/src/i740_accel.c +++ b/src/i740_accel.c @@ -125,7 +125,7 @@ Bool I740AccelInit(ScreenPtr pScreen) { #ifdef HAVE_XAA_H XAAInfoRecPtr infoPtr; - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); I740Ptr pI740 = I740PTR(pScrn); pI740->AccelInfoRec = infoPtr = XAACreateInfoRec(); diff --git a/src/i740_cursor.c b/src/i740_cursor.c index b61fc5b..8c8cc8f 100644 --- a/src/i740_cursor.c +++ b/src/i740_cursor.c @@ -61,7 +61,7 @@ I740CursorInit(ScreenPtr pScreen) xf86CursorInfoPtr infoPtr; FBAreaPtr fbarea; - pScrn = xf86Screens[pScreen->myNum]; + pScrn = xf86ScreenToScrn(pScreen); pI740 = I740PTR(pScrn); pI740->CursorInfoRec = infoPtr = xf86CreateCursorInfoRec(); if (!infoPtr) return FALSE; @@ -117,7 +117,7 @@ I740UseHWCursor(ScreenPtr pScreen, CursorPtr pCurs) { ScrnInfoPtr pScrn; I740Ptr pI740; - pScrn = xf86Screens[pScreen->myNum]; + pScrn = xf86ScreenToScrn(pScreen); pI740 = I740PTR(pScrn); if (pScrn->currentMode->Flags&V_DBLSCAN) return FALSE; diff --git a/src/i740_dga.c b/src/i740_dga.c index a81c16f..532d614 100644 --- a/src/i740_dga.c +++ b/src/i740_dga.c @@ -73,7 +73,7 @@ static DGAFunctionRec I740DGAFuncs = { Bool I740DGAInit(ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); I740Ptr pI740 = I740PTR(pScrn); DGAModePtr modes = NULL, newmodes = NULL, currentMode; DisplayModePtr pMode, firstMode; diff --git a/src/i740_video.c b/src/i740_video.c index 00c69af..fc2d137 100644 --- a/src/i740_video.c +++ b/src/i740_video.c @@ -598,7 +598,7 @@ static FBLinearPtr I740AllocateMemory(ScrnInfoPtr pScrn, FBLinearPtr linear, int xf86FreeOffscreenLinear(linear); } - pScreen = screenInfo.screens[pScrn->scrnIndex]; + pScreen = xf86ScrnToScreen(pScrn); new_linear = xf86AllocateOffscreenLinear(pScreen, size, 4, NULL, NULL, NULL); @@ -1122,7 +1122,7 @@ static void I740InitOffscreenImages(ScreenPtr pScreen) { XF86OffscreenImagePtr offscreenImages; { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "I740InitOffscreenImages entered\n"); /* ### */ } @@ -1169,7 +1169,7 @@ static XF86VideoAdaptorPtr I740SetupImageVideo(ScreenPtr pScreen) {15, TrueColor}, {16, TrueColor}, {24, TrueColor}, {8, PseudoColor} }; - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); I740Ptr pI740 = I740PTR(pScrn); XF86VideoAdaptorPtr adapt; I740PortPrivPtr pPriv; @@ -1238,7 +1238,7 @@ static XF86VideoAdaptorPtr I740SetupImageVideo(ScreenPtr pScreen) void I740InitVideo(ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); XF86VideoAdaptorPtr newAdaptor = NULL; xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "I740InitVideo entered\n"); /* ### */ commit a4b43ddf74966bff74e92b0d2bdd4573730d97a8 Author: Dave Airlie <airl...@redhat.com> Date: Tue Jul 17 14:17:42 2012 +1000 i740: bump to new X server compat API. Signed-off-by: Dave Airlie <airl...@redhat.com> diff --git a/src/Makefile.am b/src/Makefile.am index 6f084aa..0e447b8 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -29,6 +29,7 @@ i740_drv_la_LDFLAGS = -module -avoid-version i740_drv_ladir = @moduledir@/drivers i740_drv_la_SOURCES = \ + compat-api.h \ i740_accel.c \ i740_cursor.c \ i740_dga.c \ diff --git a/src/compat-api.h b/src/compat-api.h new file mode 100644 index 0000000..6bc946f --- /dev/null +++ b/src/compat-api.h @@ -0,0 +1,99 @@ +/* + * Copyright 2012 Red Hat, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Author: Dave Airlie <airl...@redhat.com> + */ + +/* this file provides API compat between server post 1.13 and pre it, + it should be reused inside as many drivers as possible */ +#ifndef COMPAT_API_H +#define COMPAT_API_H + +#ifndef GLYPH_HAS_GLYPH_PICTURE_ACCESSOR +#define GetGlyphPicture(g, s) GlyphPicture((g))[(s)->myNum] +#define SetGlyphPicture(g, s, p) GlyphPicture((g))[(s)->myNum] = p +#endif + +#ifndef XF86_HAS_SCRN_CONV +#define xf86ScreenToScrn(s) xf86Screens[(s)->myNum] +#define xf86ScrnToScreen(s) screenInfo.screens[(s)->scrnIndex] +#endif + +#ifndef XF86_SCRN_INTERFACE + +#define SCRN_ARG_TYPE int +#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = xf86Screens[(arg1)] + +#define SCREEN_ARG_TYPE int +#define SCREEN_PTR(arg1) ScreenPtr pScreen = screenInfo.screens[(arg1)] + +#define SCREEN_INIT_ARGS_DECL int i, ScreenPtr pScreen, int argc, char **argv + +#define BLOCKHANDLER_ARGS_DECL int arg, pointer blockData, pointer pTimeout, pointer pReadmask +#define BLOCKHANDLER_ARGS arg, blockData, pTimeout, pReadmask + +#define CLOSE_SCREEN_ARGS_DECL int scrnIndex, ScreenPtr pScreen +#define CLOSE_SCREEN_ARGS scrnIndex, pScreen + +#define ADJUST_FRAME_ARGS_DECL int arg, int x, int y, int flags +#define ADJUST_FRAME_ARGS(arg, x, y) (arg)->scrnIndex, x, y, 0 + +#define SWITCH_MODE_ARGS_DECL int arg, DisplayModePtr mode, int flags +#define SWITCH_MODE_ARGS(arg, m) (arg)->scrnIndex, m, 0 + +#define FREE_SCREEN_ARGS_DECL int arg, int flags + +#define VT_FUNC_ARGS_DECL int arg, int flags +#define VT_FUNC_ARGS pScrn->scrnIndex, 0 + +#define XF86_SCRN_ARG(x) ((x)->scrnIndex) +#else +#define SCRN_ARG_TYPE ScrnInfoPtr +#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = (arg1) + +#define SCREEN_ARG_TYPE ScreenPtr +#define SCREEN_PTR(arg1) ScreenPtr pScreen = (arg1) + +#define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv + +#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask +#define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask + +#define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen +#define CLOSE_SCREEN_ARGS pScreen + +#define ADJUST_FRAME_ARGS_DECL ScrnInfoPtr arg, int x, int y +#define ADJUST_FRAME_ARGS(arg, x, y) arg, x, y + +#define SWITCH_MODE_ARGS_DECL ScrnInfoPtr arg, DisplayModePtr mode +#define SWITCH_MODE_ARGS(arg, m) arg, m + +#define FREE_SCREEN_ARGS_DECL ScrnInfoPtr arg + +#define VT_FUNC_ARGS_DECL ScrnInfoPtr arg +#define VT_FUNC_ARGS pScrn + +#define XF86_SCRN_ARG(x) (x) + +#endif + +#endif diff --git a/src/i740.h b/src/i740.h index 4e4dd9c..3723e57 100644 --- a/src/i740.h +++ b/src/i740.h @@ -48,6 +48,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #endif #include "xf86Cursor.h" +#include "compat-api.h" /* Globals */ /* Memory mapped register access macros */ #define INREG8(addr) *(volatile CARD8 *)(pI740->MMIOBase + (addr)) @@ -155,8 +156,8 @@ void I740SetPIOAccess(I740Ptr pI740); void I740SetMMIOAccess(I740Ptr pI740); void I740InitVideo(ScreenPtr pScreen); -Bool I740SwitchMode(int scrnIndex, DisplayModePtr mode, int flags); -void I740AdjustFrame(int scrnIndex, int x, int y, int flags); +Bool I740SwitchMode(SWITCH_MODE_ARGS_DECL); +void I740AdjustFrame(ADJUST_FRAME_ARGS_DECL); Bool I740_I2CInit(ScrnInfoPtr pScrn); diff --git a/src/i740_dga.c b/src/i740_dga.c index 9315080..a81c16f 100644 --- a/src/i740_dga.c +++ b/src/i740_dga.c @@ -153,8 +153,8 @@ static Bool I740_SetMode(ScrnInfoPtr pScrn, DGAModePtr pMode) if(!pMode) { /* restore the original mode */ if(pI740->DGAactive) { pScrn->currentMode = I740SavedDGAModes[index]; - I740SwitchMode(index, pScrn->currentMode, 0); - I740AdjustFrame(index, 0, 0, 0); + I740SwitchMode(SWITCH_MODE_ARGS(pScrn, pScrn->currentMode)); + I740AdjustFrame(ADJUST_FRAME_ARGS(pScrn, 0, 0)); pI740->DGAactive = FALSE; } } else { @@ -163,7 +163,7 @@ static Bool I740_SetMode(ScrnInfoPtr pScrn, DGAModePtr pMode) pI740->DGAactive = TRUE; } - I740SwitchMode(index, pMode->mode, 0); + I740SwitchMode(SWITCH_MODE_ARGS(pScrn, pMode->mode)); } return TRUE; @@ -181,7 +181,7 @@ static void I740_SetViewport(ScrnInfoPtr pScrn, int x, int y, int flags) I740Ptr pI740 = I740PTR(pScrn); vgaHWPtr hwp = VGAHWPTR(pScrn); - I740AdjustFrame(pScrn->pScreen->myNum, x, y, flags); + I740AdjustFrame(ADJUST_FRAME_ARGS(pScrn, x, y)); /* wait for retrace */ while((hwp->readST01(hwp) & 0x08)); diff --git a/src/i740_driver.c b/src/i740_driver.c index fc26f0e..1c82198 100644 --- a/src/i740_driver.c +++ b/src/i740_driver.c @@ -107,25 +107,25 @@ static Bool I740Probe(DriverPtr drv, int flags); static Bool I740PreInit(ScrnInfoPtr pScrn, int flags); /* Initialize a screen */ -static Bool I740ScreenInit(int Index, ScreenPtr pScreen, int argc, char **argv); +static Bool I740ScreenInit(SCREEN_INIT_ARGS_DECL); /* Enter from a virtual terminal */ -static Bool I740EnterVT(int scrnIndex, int flags); +static Bool I740EnterVT(VT_FUNC_ARGS_DECL); /* Leave to a virtual terminal */ -static void I740LeaveVT(int scrnIndex, int flags); +static void I740LeaveVT(VT_FUNC_ARGS_DECL); /* Close down each screen we initialized */ -static Bool I740CloseScreen(int scrnIndex, ScreenPtr pScreen); +static Bool I740CloseScreen(CLOSE_SCREEN_ARGS_DECL); /* Change screensaver state */ static Bool I740SaveScreen(ScreenPtr pScreen, int mode); /* Cleanup server private data */ -static void I740FreeScreen(int scrnIndex, int flags); +static void I740FreeScreen(FREE_SCREEN_ARGS_DECL); /* Check if a mode is valid on the hardware */ -static ModeStatus I740ValidMode(int scrnIndex, DisplayModePtr mode, +static ModeStatus I740ValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, int flags); /* Switch to various Display Power Management System levels */ @@ -675,7 +675,7 @@ I740PreInit(ScrnInfoPtr pScrn, int flags) { if (I740_I2CInit(pScrn)) { xf86MonPtr MonInfo; - if ((MonInfo = xf86DoEDID_DDC2(pScrn->scrnIndex,pI740->rc_i2c))) { + if ((MonInfo = xf86DoEDID_DDC2(XF86_SCRN_ARG(pScrn),pI740->rc_i2c))) { xf86DrvMsg(pScrn->scrnIndex, X_INFO, "DDC Monitor info: %p\n", MonInfo); xf86PrintEDID( MonInfo ); @@ -1471,13 +1471,13 @@ I740LoadPalette24(ScrnInfoPtr pScrn, int numColors, int *indices, LOCO *colors, } static Bool -I740ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) { +I740ScreenInit(SCREEN_INIT_ARGS_DECL) { ScrnInfoPtr pScrn; vgaHWPtr hwp; I740Ptr pI740; VisualPtr visual; - pScrn = xf86Screens[pScreen->myNum]; + pScrn = xf86ScreenToScrn(pScreen); pI740 = I740PTR(pScrn); hwp = VGAHWPTR(pScrn); @@ -1494,7 +1494,7 @@ I740ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) { if (!I740ModeInit(pScrn, pScrn->currentMode)) return FALSE; I740SaveScreen(pScreen, SCREEN_SAVER_ON); - I740AdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0); + I740AdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0)); miClearVisualTypes(); @@ -1515,7 +1515,7 @@ I740ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) { return FALSE; break; default: - xf86DrvMsg(scrnIndex, X_ERROR, + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Internal error: invalid bpp (%d) in I740ScrnInit\n", pScrn->bitsPerPixel); return FALSE; @@ -1608,20 +1608,17 @@ I740ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) { } Bool -I740SwitchMode(int scrnIndex, DisplayModePtr mode, int flags) { - ScrnInfoPtr pScrn; - - pScrn=xf86Screens[scrnIndex]; +I740SwitchMode(SWITCH_MODE_ARGS_DECL) { + SCRN_INFO_PTR(arg); return I740ModeInit(pScrn, mode); } void -I740AdjustFrame(int scrnIndex, int x, int y, int flags) { - ScrnInfoPtr pScrn; +I740AdjustFrame(ADJUST_FRAME_ARGS_DECL) { + SCRN_INFO_PTR(arg); int Base; vgaHWPtr hwp; - pScrn = xf86Screens[scrnIndex]; hwp = VGAHWPTR(pScrn); Base = (y * pScrn->displayWidth + x) >> 2; @@ -1652,34 +1649,32 @@ I740AdjustFrame(int scrnIndex, int x, int y, int flags) { } static Bool -I740EnterVT(int scrnIndex, int flags) { - ScrnInfoPtr pScrn; +I740EnterVT(VT_FUNC_ARGS_DECL) { + SCRN_INFO_PTR(arg); - pScrn = xf86Screens[scrnIndex]; if (!I740ModeInit(pScrn, pScrn->currentMode)) return FALSE; - I740AdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0); + I740AdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0)); return TRUE; } static void -I740LeaveVT(int scrnIndex, int flags) { - ScrnInfoPtr pScrn; +I740LeaveVT(VT_FUNC_ARGS_DECL) { + SCRN_INFO_PTR(arg); vgaHWPtr hwp; - pScrn = xf86Screens[scrnIndex]; hwp=VGAHWPTR(pScrn); I740Restore(pScrn); vgaHWLock(hwp); } static Bool -I740CloseScreen(int scrnIndex, ScreenPtr pScreen) +I740CloseScreen(CLOSE_SCREEN_ARGS_DECL) { ScrnInfoPtr pScrn; vgaHWPtr hwp; I740Ptr pI740; - pScrn = xf86Screens[scrnIndex]; + pScrn = xf86ScreenToScrn(pScreen); hwp = VGAHWPTR(pScrn); pI740 = I740PTR(pScrn); @@ -1701,21 +1696,23 @@ I740CloseScreen(int scrnIndex, ScreenPtr pScreen) pScrn->vtSema=FALSE; pScreen->CloseScreen = pI740->CloseScreen; - return (*pScreen->CloseScreen)(scrnIndex, pScreen); + return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS); } static void -I740FreeScreen(int scrnIndex, int flags) { - I740FreeRec(xf86Screens[scrnIndex]); +I740FreeScreen(FREE_SCREEN_ARGS_DECL) { + SCRN_INFO_PTR(arg); + I740FreeRec(pScrn); if (xf86LoaderCheckSymbol("vgaHWFreeHWRec")) - vgaHWFreeHWRec(xf86Screens[scrnIndex]); + vgaHWFreeHWRec(pScrn); } static ModeStatus -I740ValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags) { +I740ValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, int flags) { + SCRN_INFO_PTR(arg); if (mode->Flags & V_INTERLACE) { if (verbose) { - xf86DrvMsg(scrnIndex, X_PROBED, + xf86DrvMsg(pScrn->scrnIndex, X_PROBED, "Removing interlaced mode \"%s\"\n", mode->name); } diff --git a/src/i740_video.c b/src/i740_video.c index 2f783c2..00c69af 100644 --- a/src/i740_video.c +++ b/src/i740_video.c @@ -828,10 +828,10 @@ static int I740QueryImageAttributes(ScrnInfoPtr pScrn, int id, unsigned short *w return size; } -static void I740BlockHandler(int i, pointer blockData, pointer pTimeout, pointer pReadmask) +static void I740BlockHandler(BLOCKHANDLER_ARGS_DECL) { - ScreenPtr pScreen = screenInfo.screens[i]; - ScrnInfoPtr pScrn = xf86Screens[i]; + SCREEN_PTR(arg); + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); I740Ptr pI740 = I740PTR(pScrn); I740PortPrivPtr pPriv = GET_PORT_PRIVATE(pScrn); @@ -839,7 +839,7 @@ static void I740BlockHandler(int i, pointer blockData, pointer pTimeout, pointer pScreen->BlockHandler = pI740->BlockHandler; - (*pScreen->BlockHandler) (i, blockData, pTimeout, pReadmask); + (*pScreen->BlockHandler) (BLOCKHANDLER_ARGS); pScreen->BlockHandler = I740BlockHandler; commit 018440b3e852304b6a1aa46ae8ed358635d70ff4 Author: Dave Airlie <airl...@redhat.com> Date: Tue Jul 17 14:06:43 2012 +1000 i740: fix build after XAA removal from server. Signed-off-by: Dave Airlie <airl...@redhat.com> diff --git a/configure.ac b/configure.ac index 285975f..086a41f 100644 --- a/configure.ac +++ b/configure.ac @@ -76,6 +76,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=i740 diff --git a/src/i740.h b/src/i740.h index 7da7ebc..4e4dd9c 100644 --- a/src/i740.h +++ b/src/i740.h @@ -43,7 +43,9 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "i740_reg.h" #include "i740_macros.h" +#ifdef HAVE_XAA_H #include "xaa.h" +#endif #include "xf86Cursor.h" /* Globals */ @@ -106,7 +108,9 @@ typedef struct _I740Rec { int HasSGRAM; I740RegRec SavedReg; I740RegRec ModeReg; +#ifdef HAVE_XAA_H XAAInfoRecPtr AccelInfoRec; +#endif xf86CursorInfoPtr CursorInfoRec; FBAreaPtr CursorData; CloseScreenProcPtr CloseScreen; diff --git a/src/i740_accel.c b/src/i740_accel.c index 81c7565..7d59ae6 100644 --- a/src/i740_accel.c +++ b/src/i740_accel.c @@ -44,12 +44,12 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "xf86Pci.h" #include "xf86PciInfo.h" -#include "xaa.h" #include "vgaHW.h" #include "xf86xv.h" #include "i740.h" +#ifdef HAVE_XAA_H static unsigned int i740Rop[16] = { 0x00, /* GXclear */ 0x88, /* GXand */ @@ -115,6 +115,7 @@ static void I740SubsequentCPUToScreenColorExpandFill(ScrnInfoPtr pScrn, int x, int y, int w, int h, int skipleft); #endif +#endif /* * The following function sets up the supported acceleration. Call it * from the FbInit() function in the SVGA driver, or before ScreenInit @@ -122,6 +123,7 @@ static void I740SubsequentCPUToScreenColorExpandFill(ScrnInfoPtr pScrn, */ Bool I740AccelInit(ScreenPtr pScreen) { +#ifdef HAVE_XAA_H XAAInfoRecPtr infoPtr; ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; I740Ptr pI740 = I740PTR(pScrn); @@ -192,8 +194,13 @@ I740AccelInit(ScreenPtr pScreen) { #endif #endif return XAAInit(pScreen, infoPtr); +#else + return FALSE; +#endif } +#ifdef HAVE_XAA_H + static void I740SyncPIO(ScrnInfoPtr pScrn) { WAIT_ENGINE_IDLE_PIO(); @@ -396,3 +403,5 @@ I740SubsequentCPUToScreenColorExpandFill(ScrnInfoPtr pScrn, int x, int y, OUTREG(LP_FIFO, (h << 16) | (w * pI740->cpp)); } #endif + +#endif diff --git a/src/i740_dga.c b/src/i740_dga.c index 8fac946..9315080 100644 --- a/src/i740_dga.c +++ b/src/i740_dga.c @@ -30,11 +30,12 @@ #include "xf86_OSproc.h" #include "xf86Pci.h" #include "xf86PciInfo.h" -#include "xaa.h" -#include "xaalocal.h" #include "vgaHW.h" #include "xf86xv.h" #include "i740.h" +#ifdef HAVE_XAA_H +#include "xaalocal.h" +#endif #include "dgaproc.h" #include "i740_dga.h" @@ -43,12 +44,13 @@ static Bool I740_SetMode(ScrnInfoPtr, DGAModePtr); static void I740_Sync(ScrnInfoPtr); static int I740_GetViewport(ScrnInfoPtr); static void I740_SetViewport(ScrnInfoPtr, int, int, int); +#ifdef HAVE_XAA_H static void I740_FillRect(ScrnInfoPtr, int, int, int, int, unsigned long); static void I740_BlitRect(ScrnInfoPtr, int, int, int, int, int, int); #if 0 static void I740_BlitTransRect(ScrnInfoPtr, int, int, int, int, int, int, unsigned long); #endif - +#endif static DGAFunctionRec I740DGAFuncs = { I740_OpenFramebuffer, NULL, @@ -56,6 +58,7 @@ static DGAFunctionRec I740DGAFuncs = { I740_SetViewport, I740_GetViewport, I740_Sync, +#ifdef HAVE_XAA_H I740_FillRect, I740_BlitRect, #if 0 @@ -63,6 +66,9 @@ static DGAFunctionRec I740DGAFuncs = { #else NULL #endif +#else + NULL, NULL, NULL +#endif }; Bool I740DGAInit(ScreenPtr pScreen) @@ -91,8 +97,10 @@ Bool I740DGAInit(ScreenPtr pScreen) currentMode->mode = pMode; currentMode->flags = DGA_CONCURRENT_ACCESS | DGA_PIXMAP_AVAILABLE; +#ifdef HAVE_XAA_H if(pI740->AccelInfoRec) currentMode->flags |= DGA_FILL_RECT | DGA_BLIT_RECT; +#endif if(pMode->Flags & V_DBLSCAN) currentMode->flags |= DGA_DOUBLESCAN; if(pMode->Flags & V_INTERLACE) @@ -182,6 +190,7 @@ static void I740_SetViewport(ScrnInfoPtr pScrn, int x, int y, int flags) pI740->DGAViewportStatus = 0; } +#ifdef HAVE_XAA_H static void I740_FillRect(ScrnInfoPtr pScrn, int x, int y, int w, int h, unsigned long color) { I740Ptr pI740 = I740PTR(pScrn); @@ -219,7 +228,7 @@ static void I740_BlitRect( SET_SYNC_FLAG(pI740->AccelInfoRec); } } - +#endif #if 0 static void I740_BlitTransRect(ScrnInfoPtr pScrn, int srcx, int srcy, diff --git a/src/i740_driver.c b/src/i740_driver.c index d819ad9..fc26f0e 100644 --- a/src/i740_driver.c +++ b/src/i740_driver.c @@ -1690,9 +1690,11 @@ I740CloseScreen(int scrnIndex, ScreenPtr pScreen) I740UnmapMem(pScrn); vgaHWUnmapMem(pScrn); +#ifdef HAVE_XAA_H if (pI740->AccelInfoRec) XAADestroyInfoRec(pI740->AccelInfoRec); pI740->AccelInfoRec=0; +#endif if (pI740->CursorInfoRec) xf86DestroyCursorInfoRec(pI740->CursorInfoRec); pI740->CursorInfoRec=0; diff --git a/src/i740_video.c b/src/i740_video.c index ca60ded..2f783c2 100644 --- a/src/i740_video.c +++ b/src/i740_video.c @@ -67,8 +67,6 @@ #include "xf86xv.h" #include <X11/extensions/Xv.h> -#include "xaa.h" -#include "xaalocal.h" #include "dixstruct.h" #include "fourcc.h" commit 94a2eb3193867502d0d52d88a8e1bb990cad2b2a Author: Julien Cristau <jcris...@debian.org> Date: Sat May 12 13:19:28 2012 +0200 xf86-video-i740 1.3.3 diff --git a/configure.ac b/configure.ac index 834aa0b..285975f 100644 --- a/configure.ac +++ b/configure.ac @@ -23,7 +23,7 @@ # Initialize Autoconf AC_PREREQ([2.60]) AC_INIT([xf86-video-i740], - [1.3.2], + [1.3.3], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [xf86-video-i740]) AC_CONFIG_SRCDIR([Makefile.am]) commit c9f21d2bac44c624f770a20d1102db28fe03c3f4 Author: Julien Cristau <jcris...@debian.org> Date: Sat May 12 13:19:00 2012 +0200 Add missing unistd.h includes for usleep() Signed-off-by: Julien Cristau <jcris...@debian.org> diff --git a/src/i740_driver.c b/src/i740_driver.c index 7a57431..d819ad9 100644 --- a/src/i740_driver.c +++ b/src/i740_driver.c @@ -38,6 +38,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include <string.h> #include <math.h> +#include <unistd.h> /* * This server does not support these XFree86 4.0 features yet diff --git a/src/i740_video.c b/src/i740_video.c index 2a26f21..ca60ded 100644 --- a/src/i740_video.c +++ b/src/i740_video.c @@ -55,6 +55,7 @@ #include <stdio.h> #include <string.h> +#include <unistd.h> #include "xf86.h" #include "xf86_OSproc.h" commit 8dd5542ba4dd8f51b4a87142b8e61af8b88e7957 Author: Julien Cristau <jcris...@debian.org> Date: Sat May 12 13:16:16 2012 +0200 Replace deprecated xalloc/xrealloc/xcalloc/xfree with the standard functions Signed-off-by: Julien Cristau <jcris...@debian.org> diff --git a/src/i740_dga.c b/src/i740_dga.c index 19a6d0d..8fac946 100644 --- a/src/i740_dga.c +++ b/src/i740_dga.c @@ -78,10 +78,10 @@ Bool I740DGAInit(ScreenPtr pScreen) while(pMode) { - newmodes = xrealloc(modes, (num + 1) * sizeof(DGAModeRec)); + newmodes = realloc(modes, (num + 1) * sizeof(DGAModeRec)); if(!newmodes) { - xfree(modes); + free(modes); return FALSE; } modes = newmodes; diff --git a/src/i740_driver.c b/src/i740_driver.c index 2eb8d98..7a57431 100644 --- a/src/i740_driver.c +++ b/src/i740_driver.c @@ -256,8 +256,7 @@ I740GetRec(ScrnInfoPtr pScrn) { static void I740FreeRec(ScrnInfoPtr pScrn) { if (!pScrn) return; - if (!pScrn->driverPrivate) return; - xfree(pScrn->driverPrivate); + free(pScrn->driverPrivate); pScrn->driverPrivate=0; } @@ -371,8 +370,8 @@ I740Probe(DriverPtr drv, int flags) { } } - xfree(devSections); - xfree(usedChips); + free(devSections); + free(usedChips); return foundScreen; } @@ -488,7 +487,7 @@ I740PreInit(ScrnInfoPtr pScrn, int flags) { /* Process the options */ xf86CollectOptions(pScrn, NULL); - if (!(pI740->Options = xalloc(sizeof(I740Options)))) + if (!(pI740->Options = malloc(sizeof(I740Options)))) return FALSE; memcpy(pI740->Options, I740Options, sizeof(I740Options)); xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, pI740->Options); diff --git a/src/i740_video.c b/src/i740_video.c index 8cfe09a..2a26f21 100644 --- a/src/i740_video.c +++ b/src/i740_video.c @@ -912,18 +912,18 @@ static int I740AllocateSurface( surface->width = w; surface->height = h; - if(!(surface->pitches = xalloc(sizeof(int)))) { + if(!(surface->pitches = malloc(sizeof(int)))) { xf86FreeOffscreenLinear(linear); return BadAlloc; } - if(!(surface->offsets = xalloc(sizeof(int)))) { - xfree(surface->pitches); + if(!(surface->offsets = malloc(sizeof(int)))) { + free(surface->pitches); xf86FreeOffscreenLinear(linear); return BadAlloc; } - if(!(pPriv = xalloc(sizeof(OffscreenPrivRec)))) { - xfree(surface->pitches); - xfree(surface->offsets); + if(!(pPriv = malloc(sizeof(OffscreenPrivRec)))) { + free(surface->pitches); + free(surface->offsets); xf86FreeOffscreenLinear(linear); return BadAlloc; } @@ -967,9 +967,9 @@ static int I740FreeSurface(XF86SurfacePtr surface) } xf86FreeOffscreenLinear(pPriv->linear); - xfree(surface->pitches); - xfree(surface->offsets); - xfree(surface->devPrivate.ptr); + free(surface->pitches); + free(surface->offsets); + free(surface->devPrivate.ptr); return Success; } @@ -1128,7 +1128,7 @@ static void I740InitOffscreenImages(ScreenPtr pScreen) } /* need to free this someplace */ - if(!(offscreenImages = xalloc(sizeof(XF86OffscreenImageRec)))) + if(!(offscreenImages = malloc(sizeof(XF86OffscreenImageRec)))) { return; } @@ -1179,7 +1179,7 @@ static XF86VideoAdaptorPtr I740SetupImageVideo(ScreenPtr pScreen) { const int n=sizeof(XF86VideoAdaptorRec)+sizeof(I740PortPrivRec)+sizeof(DevUnion); - if(!(adapt = xcalloc(1, n))) + if(!(adapt = calloc(1, n))) return NULL; /*//memset(adapt,0,n);*/ @@ -1276,7 +1276,7 @@ void I740InitVideo(ScreenPtr pScreen) } else { - if((adaptors_newptrs = xalloc((num_adaptors + 1) * sizeof(XF86VideoAdaptorPtr)))) + if((adaptors_newptrs = malloc((num_adaptors + 1) * sizeof(XF86VideoAdaptorPtr)))) { memcpy(adaptors_newptrs, adaptors_oldptrs, num_adaptors * sizeof(XF86VideoAdaptorPtr)); adaptors_newptrs[num_adaptors] = newAdaptor; @@ -1286,7 +1286,7 @@ void I740InitVideo(ScreenPtr pScreen) xf86XVScreenInit(pScreen, adaptors_newptrs, num_adaptors+1); - xfree(adaptors_newptrs); + free(adaptors_newptrs); } } } commit 421f4e721938515fe93f8e81fe6d18be50e5ffee Author: Adam Jackson <a...@redhat.com> Date: Mon Dec 19 17:48:45 2011 -0500 Fix for new vgaHW ABI Signed-off-by: Adam Jackson <a...@redhat.com> diff --git a/src/i740_driver.c b/src/i740_driver.c index d24fa3c..2eb8d98 100644 --- a/src/i740_driver.c +++ b/src/i740_driver.c @@ -429,6 +429,7 @@ I740PreInit(ScrnInfoPtr pScrn, int flags) { /* Allocate a vgaHWRec */ if (!vgaHWGetHWRec(pScrn)) return FALSE; + vgaHWSetStdFuncs(VGAHWPTR(pScrn)); pI740->PciInfo = xf86GetPciInfoForEntity(pI740->pEnt->index); #ifndef XSERVER_LIBPCIACCESS commit cf434e93cdef87f49b0d77b4f3b65ddf388fbcd9 Author: Adam Jackson <a...@redhat.com> Date: Mon Dec 19 16:34:10 2011 -0500 Make failure to XAA non-fatal No shadowfb support in this driver yet. Signed-off-by: Adam Jackson <a...@redhat.com> diff --git a/src/i740.h b/src/i740.h index 12a5597..7da7ebc 100644 --- a/src/i740.h +++ b/src/i740.h @@ -140,6 +140,7 @@ typedef struct _I740Rec { /*-*/ Bool usevgacompat; + Bool NoAccel; } I740Rec; #define I740PTR(p) ((I740Ptr)((p)->driverPrivate)) diff --git a/src/i740_driver.c b/src/i740_driver.c index 6e6b0fa..d24fa3c 100644 --- a/src/i740_driver.c +++ b/src/i740_driver.c @@ -725,10 +725,11 @@ I740PreInit(ScrnInfoPtr pScrn, int flags) { return FALSE; } - if (!xf86ReturnOptValBool(pI740->Options, OPTION_NOACCEL, FALSE)) { + pI740->NoAccel = xf86ReturnOptValBool(pI740->Options, OPTION_NOACCEL, FALSE); + if (!pI740->NoAccel) { if (!xf86LoadSubModule(pScrn, "xaa")) { - I740FreeRec(pScrn); - return FALSE; + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "No acceleration available\n"); -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/e1sruwf-00061f...@vasks.debian.org