COPYING | 24 ++ configure.ac | 39 ++++ man/apm.man | 4 src/Makefile.am | 1 src/apm.h | 20 +- src/apm_accel.c | 503 ++++++++++++++++--------------------------------------- src/apm_cursor.c | 6 src/apm_dga.c | 41 ++-- src/apm_driver.c | 380 +++++++++++++++-------------------------- src/apm_funcs.c | 42 ---- src/apm_regs.h | 6 src/apm_video.c | 28 +-- src/compat-api.h | 99 ++++++++++ 13 files changed, 519 insertions(+), 674 deletions(-)
New commits: commit 736cb01bfafc2cbb1dfa4e449866b5bc333cfc86 Author: Dave Airlie <airl...@redhat.com> Date: Tue Jul 17 16:05:09 2012 +1000 xf86-video-apm: bump to version 1.2.5 Signed-off-by: Dave Airlie <airl...@redhat.com> diff --git a/configure.ac b/configure.ac index c861812..1bafc32 100644 --- a/configure.ac +++ b/configure.ac @@ -23,7 +23,7 @@ # Initialize Autoconf AC_PREREQ([2.60]) AC_INIT([xf86-video-apm], - [1.2.4], + [1.2.5], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [xf86-video-apm]) AC_CONFIG_SRCDIR([Makefile.am]) commit 09c6ce0beab11d378e661dbdc57e311b16c35aea Author: Dave Airlie <airl...@redhat.com> Date: Tue Jul 17 15:22:37 2012 +1000 apm: fix make dist. Signed-off-by: Dave Airlie <airl...@redhat.com> diff --git a/src/Makefile.am b/src/Makefile.am index ad26a0c..6993ffc 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -32,6 +32,7 @@ apm_drv_la_LDFLAGS = -module -avoid-version apm_drv_ladir = @moduledir@/drivers apm_drv_la_SOURCES = \ + compat-api.h \ apm_accel.c \ apm_cursor.c \ apm_dga.c \ commit a57b784ddfdc9369f6dfe498333c25bfea883e8f Author: Dave Airlie <airl...@redhat.com> Date: Tue Jul 17 14:52:05 2012 +1000 apm: convert to new screen conversion apis. Signed-off-by: Dave Airlie <airl...@redhat.com> diff --git a/src/apm_accel.c b/src/apm_accel.c index 140b44e..181b938 100644 --- a/src/apm_accel.c +++ b/src/apm_accel.c @@ -207,7 +207,7 @@ void ApmAccelReserveSpace(ApmPtr pApm) { memType mem, ScratchMemOffset; - mem = xf86Screens[pApm->pScreen->myNum]->videoRam << 10; + mem = xf86ScreenToScrn(pApm->pScreen)->videoRam << 10; /* * Reserve at least four lines for mono to color expansion */ @@ -225,7 +225,7 @@ void ApmAccelReserveSpace(ApmPtr pApm) int ApmAccelInit(ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); APMDECL(pScrn); XAAInfoRecPtr pXAAinfo; BoxRec AvailFBArea; @@ -356,7 +356,7 @@ void ApmSetupXAAInfo(ApmPtr pApm, XAAInfoRecPtr pXAAinfo) pApm->CurrentLayout.Setup_DEC |= DEC_BITDEPTH_32; break; default: - xf86DrvMsg(xf86Screens[pApm->pScreen->myNum]->scrnIndex, X_WARNING, + xf86DrvMsg(xf86ScreenToScrn(pApm->pScreen)->scrnIndex, X_WARNING, "Cannot set up drawing engine control for bpp = %d\n", pApm->CurrentLayout.bitsPerPixel); break; @@ -383,7 +383,7 @@ void ApmSetupXAAInfo(ApmPtr pApm, XAAInfoRecPtr pXAAinfo) pApm->CurrentLayout.Setup_DEC |= DEC_WIDTH_1600; break; default: - xf86DrvMsg(xf86Screens[pApm->pScreen->myNum]->scrnIndex, X_WARNING, + xf86DrvMsg(xf86ScreenToScrn(pApm->pScreen)->scrnIndex, X_WARNING, "Cannot set up drawing engine control " "for screen width = %d\n", pApm->CurrentLayout.displayWidth); break; diff --git a/src/apm_cursor.c b/src/apm_cursor.c index 3638cf2..1b5d895 100644 --- a/src/apm_cursor.c +++ b/src/apm_cursor.c @@ -56,14 +56,14 @@ void ApmHWCursorReserveSpace(ApmPtr pApm) { pApm->OffscreenReserved += 2 * CURSORALIGN; pApm->DisplayedCursorAddress = pApm->BaseCursorAddress = - pApm->CursorAddress = 1024 * xf86Screens[pApm->pScreen->myNum]->videoRam - + pApm->CursorAddress = 1024 * xf86ScreenToScrn(pApm->pScreen)->videoRam - pApm->OffscreenReserved; } int ApmHWCursorInit(ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); APMDECL(pScrn); xf86CursorInfoPtr infoPtr; u32 i; @@ -116,7 +116,7 @@ ApmHideCursor(ScrnInfoPtr pScrn) static Bool ApmUseHWCursor(ScreenPtr pScreen, CursorPtr pCurs) { - return APMPTR(xf86Screens[pScreen->myNum])->CurrentLayout.bitsPerPixel >= 8; + return APMPTR(xf86ScreenToScrn(pScreen))->CurrentLayout.bitsPerPixel >= 8; } static void diff --git a/src/apm_dga.c b/src/apm_dga.c index dc95a6f..6e92123 100644 --- a/src/apm_dga.c +++ b/src/apm_dga.c @@ -171,7 +171,7 @@ SECOND_PASS: Bool ApmDGAInit(ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); APMDECL(pScrn); DGAModePtr modes = NULL; int num = 0; diff --git a/src/apm_driver.c b/src/apm_driver.c index 62389b0..e40e1c2 100644 --- a/src/apm_driver.c +++ b/src/apm_driver.c @@ -2100,7 +2100,7 @@ ApmDisplayPowerManagementSet(ScrnInfoPtr pScrn, int PowerManagementMode, static Bool ApmSaveScreen(ScreenPtr pScreen, int mode) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); Bool unblank; unblank = xf86IsUnblank(mode); diff --git a/src/apm_regs.h b/src/apm_regs.h index 3f60eef..8fa8514 100644 --- a/src/apm_regs.h +++ b/src/apm_regs.h @@ -29,19 +29,19 @@ #define RDXL_M(addr) (MMIO_IN32(pApm->MemMap, (addr))) #define WRXB_M(addr,val) do { if (check08((addr), (val))) { \ MMIO_OUT8 (pApm->MemMap, (addr), (val)); \ - /*xf86DrvMsg(xf86Screens[pApm->pScreen->myNum]->scrnIndex, X_INFO, \ + /*xf86DrvMsg(xf86ScreenToScrn(pApm->pScreen)->scrnIndex, X_INFO, \ "File %s, line %d, %02X <- %02X\n", \ __FILE__, __LINE__, (addr), (val) & 255); */\ curr08[MIN((addr), 0x80)] = (val); }} while (0) #define WRXW_M(addr,val) do { if (check16((addr), (val))) { \ MMIO_OUT16(pApm->MemMap, (addr), (val)); \ - /*xf86DrvMsg(xf86Screens[pApm->pScreen->myNum]->scrnIndex, X_INFO, \ + /*xf86DrvMsg(xf86ScreenToScrn(pApm->pScreen)->scrnIndex, X_INFO, \ "File %s, line %d, %02X <- %04X\n", \ __FILE__, __LINE__, (addr), (val)&65535); */\ curr16[MIN(((addr) / 2), 0x40)] = (val); }} while (0) #define WRXL_M(addr,val) do { if (check32((addr), (val))) { \ MMIO_OUT32(pApm->MemMap, (addr), (val)); \ - /*xf86DrvMsg(xf86Screens[pApm->pScreen->myNum]->scrnIndex, X_INFO, \ + /*xf86DrvMsg(xf86ScreenToScrn(pApm->pScreen)->scrnIndex, X_INFO, \ "File %s, line %d, %02X <- %08X\n", \ __FILE__, __LINE__, (addr), (val)); */\ curr32[MIN(((addr) / 4), 0x20)] = (val); }} while (0) diff --git a/src/apm_video.c b/src/apm_video.c index 4b8f132..9b5b601 100644 --- a/src/apm_video.c +++ b/src/apm_video.c @@ -43,7 +43,7 @@ static void A(XvRemoveCB)(FBAreaPtr); void A(InitVideo)(ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); XF86VideoAdaptorPtr *adaptors, *newAdaptors; XF86VideoAdaptorPtr newAdaptor; APMDECL(pScrn); @@ -296,7 +296,7 @@ A(ResetVideo)(ScrnInfoPtr pScrn) static XF86VideoAdaptorPtr A(SetupImageVideo)(ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); APMDECL(pScrn); XF86VideoAdaptorPtr adapt; ApmPortPrivPtr pPriv; commit d9a3071242724325d4e3672b3e70d8457f993f78 Author: Dave Airlie <airl...@gmail.com> Date: Fri Jul 13 14:54:06 2012 +1000 apm: handle xaa removal Signed-off-by: Dave Airlie <airl...@redhat.com> diff --git a/configure.ac b/configure.ac index 9b0acde..c861812 100644 --- a/configure.ac +++ b/configure.ac @@ -90,6 +90,25 @@ if test "x$have_xv" = xyes; then fi AM_CONDITIONAL(XV_NEW_REPUT, test x$XV_NEW_REPUT = 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_CONFIG_FILES([ Makefile src/Makefile diff --git a/src/apm.h b/src/apm.h index f92aa8d..a3c06f8 100644 --- a/src/apm.h +++ b/src/apm.h @@ -23,8 +23,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" @@ -122,7 +124,9 @@ typedef struct { int MaxClock; /* Max ramdac clock */ ApmFBLayout CurrentLayout, SavedLayout; EntityInfoPtr pEnt; +#ifdef HAVE_XAA_H XAAInfoRecPtr AccelInfoRec, DGAXAAInfo; +#endif xf86CursorInfoPtr CursorInfoRec; int DGAactive, numDGAModes; DGAModePtr DGAModes; @@ -132,11 +136,13 @@ typedef struct { Bool apmTransparency, apmClip, ShadowFB, I2C; int rop, Bg8x8, Fg8x8; I2CBusPtr I2CPtr; +#ifdef HAVE_XAA_H struct ApmStippleCacheRec { XAACacheInfoRec apmStippleCache; FBAreaPtr area; unsigned int apmStippleCached:1; } apmCache[APM_CACHE_NUMBER]; +#endif int apmCachePtr; unsigned char regcurr[0x54]; ScreenPtr pScreen; @@ -218,7 +224,9 @@ extern Bool ApmI2CInit(ScrnInfoPtr pScrn); extern void XFree86RushExtensionInit(ScreenPtr pScreen); extern void ApmInitVideo(ScreenPtr pScreen); extern void ApmInitVideo_IOP(ScreenPtr pScreen); +#ifdef HAVE_XAA_H extern void ApmSetupXAAInfo(ApmPtr pApm, XAAInfoRecPtr pXAAinfo); +#endif extern Bool ApmSwitchMode(SWITCH_MODE_ARGS_DECL); extern void ApmAdjustFrame(ADJUST_FRAME_ARGS_DECL); extern void ApmHWCursorReserveSpace(ApmPtr pApm); diff --git a/src/apm_accel.c b/src/apm_accel.c index ed73d8d..140b44e 100644 --- a/src/apm_accel.c +++ b/src/apm_accel.c @@ -6,6 +6,7 @@ #include "apm.h" #include "miline.h" +#ifdef HAVE_XAA_H /* Defines */ #define MAXLOOP 1000000 @@ -563,3 +564,4 @@ void ApmSetupXAAInfo(ApmPtr pApm, XAAInfoRecPtr pXAAinfo) #undef XAA } } +#endif diff --git a/src/apm_dga.c b/src/apm_dga.c index fa94006..dc95a6f 100644 --- a/src/apm_dga.c +++ b/src/apm_dga.c @@ -11,8 +11,6 @@ #include "xf86.h" #include "xf86_OSproc.h" #include "xf86Pci.h" -#include "xaa.h" -#include "xaalocal.h" #include "apm.h" #include "dgaproc.h" @@ -22,10 +20,12 @@ static Bool ApmOpenFramebuffer(ScrnInfoPtr, char **, unsigned char **, static Bool ApmSetMode(ScrnInfoPtr, DGAModePtr); static int ApmGetViewport(ScrnInfoPtr); static void ApmSetViewport(ScrnInfoPtr, int, int, int); +#ifdef HAVE_XAA_H static void ApmFillRect(ScrnInfoPtr, int, int, int, int, unsigned long); static void ApmBlitRect(ScrnInfoPtr, int, int, int, int, int, int); static void ApmBlitTransRect(ScrnInfoPtr, int, int, int, int, int, int, unsigned long); +#endif static void ApmSync(ScrnInfoPtr); static @@ -36,9 +36,13 @@ DGAFunctionRec ApmDGAFuncs = { ApmSetViewport, ApmGetViewport, ApmSync, +#ifdef HAVE_XAA_H ApmFillRect, ApmBlitRect, ApmBlitTransRect +#else + NULL, NULL, NULL +#endif }; /* @@ -270,7 +274,9 @@ ApmSetMode(ScrnInfoPtr pScrn, DGAModePtr pMode) pApm->CurrentLayout.mask32 = 32 / pMode->bitsPerPixel - 1; ApmSwitchMode(SWITCH_MODE_ARGS(pScrn, pMode->mode)); +#ifdef HAVE_XAA_H ApmSetupXAAInfo(pApm, NULL); +#endif #if 0 if (pApm->DGAXAAInfo) @@ -334,6 +340,7 @@ ApmSetViewport( } } +#ifdef HAVE_XAA_H static void ApmFillRect ( ScrnInfoPtr pScrn, @@ -403,6 +410,7 @@ ApmBlitTransRect( SET_SYNC_FLAG(pApm->AccelInfoRec); } } +#endif static Bool ApmOpenFramebuffer( diff --git a/src/apm_driver.c b/src/apm_driver.c index 0f20eb6..62389b0 100644 --- a/src/apm_driver.c +++ b/src/apm_driver.c @@ -994,11 +994,16 @@ ApmPreInit(ScrnInfoPtr pScrn, int flags) /* Load XAA if needed */ if (!pApm->NoAccel) { +#ifdef HAVE_XAA_H if (!xf86LoadSubModule(pScrn, "xaa")) { xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Falling back to shadowfb\n"); pApm->NoAccel = TRUE; pApm->ShadowFB = TRUE; } +#else + pApm->NoAccel = TRUE; + pApm->ShadowFB = TRUE; +#endif } /* Load ramdac if needed */ @@ -1773,9 +1778,11 @@ ApmScreenInit(SCREEN_INIT_ARGS_DECL) /* * Initialize the acceleration interface. */ +#ifdef HAVE_XAA_H if (!pApm->NoAccel) { ApmAccelInit(pScreen); /* set up XAA interface */ } +#endif miInitializeBackingStore(pScreen); xf86SetBackingStore(pScreen); @@ -2002,11 +2009,13 @@ ApmCloseScreen(CLOSE_SCREEN_ARGS_DECL) vgaHWLock(hwp); ApmUnmapMem(pScrn); } +#ifdef HAVE_XAA_H if(pApm->AccelInfoRec) XAADestroyInfoRec(pApm->AccelInfoRec); if(pApm->DGAXAAInfo) XAADestroyInfoRec(pApm->DGAXAAInfo); pApm->AccelInfoRec = NULL; +#endif if(pApm->CursorInfoRec) xf86DestroyCursorInfoRec(pApm->CursorInfoRec); pApm->CursorInfoRec = NULL; commit 01bdd7d3d18f5d5c94aa99ccd7677f5928b37392 Author: Dave Airlie <airl...@gmail.com> Date: Fri Jul 13 14:56:12 2012 +1000 apm: initial compat api Port to new server compat API. Signed-off-by: Dave Airlie <airl...@redhat.com> diff --git a/src/apm.h b/src/apm.h index 0894289..f92aa8d 100644 --- a/src/apm.h +++ b/src/apm.h @@ -43,6 +43,7 @@ #include "xf86xv.h" #include <X11/extensions/Xv.h> +#include "compat-api.h" #ifdef TRUE #undef TRUE #endif @@ -218,9 +219,8 @@ extern void XFree86RushExtensionInit(ScreenPtr pScreen); extern void ApmInitVideo(ScreenPtr pScreen); extern void ApmInitVideo_IOP(ScreenPtr pScreen); extern void ApmSetupXAAInfo(ApmPtr pApm, XAAInfoRecPtr pXAAinfo); -extern Bool ApmSwitchMode(int scrnIndex, DisplayModePtr mode, - int flags); -extern void ApmAdjustFrame(int scrnIndex, int x, int y, int flags); +extern Bool ApmSwitchMode(SWITCH_MODE_ARGS_DECL); +extern void ApmAdjustFrame(ADJUST_FRAME_ARGS_DECL); extern void ApmHWCursorReserveSpace(ApmPtr pApm); extern void ApmAccelReserveSpace(ApmPtr pApm); diff --git a/src/apm_dga.c b/src/apm_dga.c index d250251..fa94006 100644 --- a/src/apm_dga.c +++ b/src/apm_dga.c @@ -243,8 +243,8 @@ ApmSetMode(ScrnInfoPtr pScrn, DGAModePtr pMode) } pScrn->currentMode = pApm->CurrentLayout.pMode; - ApmSwitchMode(index, pScrn->currentMode, 0); - ApmAdjustFrame(index, pScrn->frameX0, pScrn->frameY0, 0); + ApmSwitchMode(SWITCH_MODE_ARGS(pScrn, pScrn->currentMode)); + ApmAdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0)); #if 0 if (pApm->AccelInfoRec) XAAInit(pScrn->pScreen, pApm->AccelInfoRec); @@ -269,7 +269,7 @@ ApmSetMode(ScrnInfoPtr pScrn, DGAModePtr pMode) else pApm->CurrentLayout.mask32 = 32 / pMode->bitsPerPixel - 1; - ApmSwitchMode(index, pMode->mode, 0); + ApmSwitchMode(SWITCH_MODE_ARGS(pScrn, pMode->mode)); ApmSetupXAAInfo(pApm, NULL); #if 0 @@ -321,7 +321,7 @@ ApmSetViewport( ApmWriteSeq(0x1C, 0x2F); pApm->apmLock = FALSE; } - pScrn->AdjustFrame(pScrn->pScreen->myNum, x, y, flags); + pScrn->AdjustFrame(ADJUST_FRAME_ARGS(pScrn, x, y)); if (pApm->VGAMap) { /* Wait until vertical retrace is in progress. */ while (APMVGAB(0x3DA) & 0x08); diff --git a/src/apm_driver.c b/src/apm_driver.c index c35f489..0f20eb6 100644 --- a/src/apm_driver.c +++ b/src/apm_driver.c @@ -42,13 +42,12 @@ static const OptionInfoRec * ApmAvailableOptions(int chipid, int busid); static void ApmIdentify(int flags); static Bool ApmProbe(DriverPtr drv, int flags); static Bool ApmPreInit(ScrnInfoPtr pScrn, int flags); -static Bool ApmScreenInit(int Index, ScreenPtr pScreen, int argc, - char **argv); -static Bool ApmEnterVT(int scrnIndex, int flags); -static void ApmLeaveVT(int scrnIndex, int flags); -static Bool ApmCloseScreen(int scrnIndex, ScreenPtr pScreen); -static void ApmFreeScreen(int scrnIndex, int flags); -static ModeStatus ApmValidMode(int scrnIndex, DisplayModePtr mode, +static Bool ApmScreenInit(SCREEN_INIT_ARGS_DECL); +static Bool ApmEnterVT(VT_FUNC_ARGS_DECL); +static void ApmLeaveVT(VT_FUNC_ARGS_DECL); +static Bool ApmCloseScreen(CLOSE_SCREEN_ARGS_DECL); +static void ApmFreeScreen(FREE_SCREEN_ARGS_DECL); +static ModeStatus ApmValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, int flags); static Bool ApmSaveScreen(ScreenPtr pScreen, int mode); static void ApmUnlock(ApmPtr pApm); @@ -787,11 +786,11 @@ ApmPreInit(ScrnInfoPtr pScrn, int flags) xf86DrvMsg(pScrn->scrnIndex,X_ERROR,"I2C initialization failed\n"); } else { - MonInfo = xf86DoEDID_DDC2(pScrn->scrnIndex,pApm->I2CPtr); + MonInfo = xf86DoEDID_DDC2(XF86_SCRN_ARG(pScrn),pApm->I2CPtr); } } if (0 && !MonInfo) - MonInfo = xf86DoEDID_DDC1(pScrn->scrnIndex,vgaHWddc1SetSpeed,ddc1Read); + MonInfo = xf86DoEDID_DDC1(XF86_SCRN_ARG(pScrn),vgaHWddc1SetSpeed,ddc1Read); if (MonInfo) { xf86PrintEDID(MonInfo); xf86SetDDCproperties(pScrn, MonInfo); @@ -1651,9 +1650,9 @@ ApmRefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox) /* This gets called at the start of each server generation */ static Bool -ApmScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) +ApmScreenInit(SCREEN_INIT_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); APMDECL(pScrn); int ret; unsigned char *FbBase; @@ -1676,7 +1675,7 @@ ApmScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) /* Darken the screen for aesthetic reasons and set the viewport */ ApmSaveScreen(pScreen, SCREEN_SAVER_ON); - ApmAdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0); + ApmAdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0)); /* * Reset fb's visual list. @@ -1733,7 +1732,7 @@ ApmScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) pScrn->displayWidth, pScrn->bitsPerPixel); break; default: - xf86DrvMsg(scrnIndex, X_ERROR, + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Internal error: invalid bpp (%d) in ApmScrnInit\n", pScrn->bitsPerPixel); ret = FALSE; @@ -1876,9 +1875,10 @@ ApmLoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices, LOCO *colors, /* Usually mandatory */ Bool -ApmSwitchMode(int scrnIndex, DisplayModePtr mode, int flags) +ApmSwitchMode(SWITCH_MODE_ARGS_DECL) { - return ApmModeInit(xf86Screens[scrnIndex], mode); + SCRN_INFO_PTR(arg); + return ApmModeInit(pScrn, mode); } /* @@ -1887,9 +1887,9 @@ ApmSwitchMode(int scrnIndex, DisplayModePtr mode, int flags) */ /* Usually mandatory */ void -ApmAdjustFrame(int scrnIndex, int x, int y, int flags) +ApmAdjustFrame(ADJUST_FRAME_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + SCRN_INFO_PTR(arg); APMDECL(pScrn); int Base; @@ -1930,9 +1930,9 @@ ApmAdjustFrame(int scrnIndex, int x, int y, int flags) /* Mandatory */ static Bool -ApmEnterVT(int scrnIndex, int flags) +ApmEnterVT(VT_FUNC_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + SCRN_INFO_PTR(arg); APMDECL(pScrn); vgaHWPtr hwp = VGAHWPTR(pScrn); @@ -1952,16 +1952,16 @@ ApmEnterVT(int scrnIndex, int flags) if (!ApmModeInit(pScrn, pScrn->currentMode)) return FALSE; - ApmAdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0); + ApmAdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0)); return TRUE; } /* Mandatory */ static void -ApmLeaveVT(int scrnIndex, int flags) +ApmLeaveVT(VT_FUNC_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + SCRN_INFO_PTR(arg); APMDECL(pScrn); vgaHWPtr hwp = VGAHWPTR(pScrn); @@ -1991,9 +1991,9 @@ ApmLeaveVT(int scrnIndex, int flags) /* Mandatory */ static Bool -ApmCloseScreen(int scrnIndex, ScreenPtr pScreen) +ApmCloseScreen(CLOSE_SCREEN_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); vgaHWPtr hwp = VGAHWPTR(pScrn); APMDECL(pScrn); @@ -2021,24 +2021,25 @@ ApmCloseScreen(int scrnIndex, ScreenPtr pScreen) #endif pScreen->CloseScreen = pApm->CloseScreen; - return (*pScreen->CloseScreen)(scrnIndex, pScreen); + return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS); } /* Free up any per-generation data structures */ /* Optional */ static void -ApmFreeScreen(int scrnIndex, int flags) +ApmFreeScreen(FREE_SCREEN_ARGS_DECL) { - vgaHWFreeHWRec(xf86Screens[scrnIndex]); - ApmFreeRec(xf86Screens[scrnIndex]); + SCRN_INFO_PTR(arg); + vgaHWFreeHWRec(pScrn); + ApmFreeRec(pScrn); } /* Checks if a mode is suitable for the selected chipset. */ /* Optional */ static ModeStatus -ApmValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags) +ApmValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, int flags) { if (mode->Flags & V_INTERLACE) return(MODE_BAD); diff --git a/src/compat-api.h b/src/compat-api.h new file mode 100644 index 0000000..205ac59 --- /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 scrnIndex, 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 commit d63d7c600cb3927a5a2a5e223252cfd9a44112d4 Author: Julien Cristau <jcris...@debian.org> Date: Sat May 12 12:46:11 2012 +0200 xf86-video-apm 1.2.4 Signed-off-by: Julien Cristau <jcris...@debian.org> diff --git a/configure.ac b/configure.ac index 1d8ea0c..9b0acde 100644 --- a/configure.ac +++ b/configure.ac @@ -23,7 +23,7 @@ # Initialize Autoconf AC_PREREQ([2.60]) AC_INIT([xf86-video-apm], - [1.2.3], + [1.2.4], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [xf86-video-apm]) AC_CONFIG_SRCDIR([Makefile.am]) commit 384531dbd4ea359511c274d3cbd2b34449321ad0 Author: Luc Verhaegen <luc.verhae...@basyskom.de> Date: Wed Nov 24 18:21:23 2010 +0100 xv: disable reputimage hook on newer api This change makes Xv support slightly less nice, but should, in itself, not deteriorate things too much, as most drivers function acceptably without reputimage. Signed-off-by: Luc Verhaegen <luc.verhae...@basyskom.de> Signed-off-by: Julien Cristau <jcris...@debian.org> diff --git a/configure.ac b/configure.ac index 780b0a5..1d8ea0c 100644 --- a/configure.ac +++ b/configure.ac @@ -72,6 +72,24 @@ PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.8.0]) DRIVER_NAME=apm AC_SUBST([DRIVER_NAME]) +# since we cannot use the result from XORG_DRIVER_CHECK_EXT directly. +AC_CHECK_DECL([XV], [have_xv=yes], [have_xv=false], [#include "xorg/xorg-server.h"]) +if test "x$have_xv" = xyes; then + SAVED_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $XORG_CFLAGS" + + AC_CHECK_MEMBER([ScrnInfoRec.ModeSet], + [SCRNINFO_HAS_MODESET=yes], [SCRNINFO_HAS_MODESET=no], + [#include "xf86str.h"]) + if test "x$SCRNINFO_HAS_MODESET" = xyes; then + AC_DEFINE(XV_NEW_REPUT, 1, + [XvReputImage takes more all coordinates]) + fi + + CFLAGS="$SAVED_CFLAGS" +fi +AM_CONDITIONAL(XV_NEW_REPUT, test x$XV_NEW_REPUT = xyes) + AC_CONFIG_FILES([ Makefile src/Makefile diff --git a/src/apm_video.c b/src/apm_video.c index c87ffd0..4b8f132 100644 --- a/src/apm_video.c +++ b/src/apm_video.c @@ -26,8 +26,10 @@ static void ApmQueryBestSize(ScrnInfoPtr, Bool, short, short, short, static int ApmQueryImageAttributes(ScrnInfoPtr, int, unsigned short *, unsigned short *, int *, int *); +#ifndef XV_NEW_REPUT static int A(ReputImage)(ScrnInfoPtr, short, short, RegionPtr, pointer, DrawablePtr); +#endif static int A(PutImage)(ScrnInfoPtr, short, short, short, short, short, short, short, short, int, unsigned char*, short, short, Bool, RegionPtr, pointer, @@ -333,7 +335,9 @@ A(SetupImageVideo)(ScreenPtr pScreen) adapt->GetPortAttribute = ApmGetPortAttribute; adapt->QueryBestSize = ApmQueryBestSize; adapt->PutImage = A(PutImage); +#ifndef XV_NEW_REPUT adapt->ReputImage = A(ReputImage); +#endif adapt->QueryImageAttributes = ApmQueryImageAttributes; pPriv->brightness = 0; commit e92c8ed0b03b5a33f4b0c3966e540a31af760402 Author: Julien Cristau <jcris...@debian.org> Date: Tue May 1 15:27:40 2012 +0200 Disable PC98 code on newer servers It was removed in xserver commit 6ad7bb69eebd5e5b4068bd9aa0b9a7168f075006, and keeping API compatibility would have been too hard. Or something. diff --git a/src/apm_driver.c b/src/apm_driver.c index 8f25a3c..c35f489 100644 --- a/src/apm_driver.c +++ b/src/apm_driver.c @@ -776,7 +776,10 @@ ApmPreInit(ScrnInfoPtr pScrn, int flags) xf86DrvMsg(pScrn->scrnIndex, from, "VideoRAM: %d kByte\n", pScrn->videoRam); - if (!xf86IsPc98()) { +#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 12 + if (!xf86IsPc98()) +#endif + { hwp->MapSize = 0x10000; vgaHWMapMem(pScrn); if (pApm->I2C) { @@ -1378,8 +1381,10 @@ ApmModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode) hwp->writeMiscOut(hwp, pApm->MiscOut | 0x0F); +#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 12 if (xf86IsPc98()) outb(0xFAC, 0xFF); +#endif memcpy(ApmReg, &pApm->SavedReg, sizeof pApm->SavedReg); @@ -1973,8 +1978,10 @@ ApmLeaveVT(int scrnIndex, int flags) } WRXB(0xC9, pApm->c9); +#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 12 if (xf86IsPc98()) outb(0xFAC, 0xFE); +#endif } /* @@ -2008,8 +2015,10 @@ ApmCloseScreen(int scrnIndex, ScreenPtr pScreen) pScrn->vtSema = FALSE; +#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 12 if (xf86IsPc98()) outb(0xFAC, 0xFE); +#endif pScreen->CloseScreen = pApm->CloseScreen; return (*pScreen->CloseScreen)(scrnIndex, pScreen); commit 37630bd20e59e49db3ee0bfa77f82a7c2595a0ac Author: Julien Cristau <jcris...@debian.org> Date: Tue May 1 15:25:30 2012 +0200 Stop including xf86PciInfo.h Deprecated in xserver commit 1f5baa924a5907978f564372265d9830ac72a077 diff --git a/src/apm.h b/src/apm.h index 664ed3e..0894289 100644 --- a/src/apm.h +++ b/src/apm.h @@ -11,9 +11,6 @@ /* Everything using inb/outb, etc needs "compiler.h" */ #include "compiler.h" -/* Drivers for PCI hardware need this */ -#include "xf86PciInfo.h" - /* Drivers that need to access the PCI config space directly need this */ #include "xf86Pci.h" diff --git a/src/apm_dga.c b/src/apm_dga.c index 855c08e..d250251 100644 --- a/src/apm_dga.c +++ b/src/apm_dga.c @@ -11,7 +11,6 @@ #include "xf86.h" #include "xf86_OSproc.h" #include "xf86Pci.h" -#include "xf86PciInfo.h" #include "xaa.h" #include "xaalocal.h" #include "apm.h" diff --git a/src/apm_driver.c b/src/apm_driver.c index 2145207..8f25a3c 100644 --- a/src/apm_driver.c +++ b/src/apm_driver.c @@ -28,9 +28,11 @@ #define APM_MAJOR_VERSION PACKAGE_VERSION_MAJOR #define APM_MINOR_VERSION PACKAGE_VERSION_MINOR #define APM_PATCHLEVEL PACKAGE_VERSION_PATCHLEVEL -#ifndef PCI_CHIP_AT3D -#define PCI_CHIP_AT3D 0x643D -#endif + +#define PCI_VENDOR_ALLIANCE 0x1142 +#define PCI_CHIP_AP6422 0x6422 +#define PCI_CHIP_AT24 0x6424 +#define PCI_CHIP_AT3D 0x643D /* bytes to save for text/font data */ #define TEXT_AMOUNT 32768 commit 784c3a1fa53771662b4656e193fb392cbb8c8452 Author: Julien Cristau <jcris...@debian.org> Date: Tue May 1 15:10:39 2012 +0200 Replace x{{,re,c}alloc,free} with malloc/realloc/calloc/free diff --git a/src/apm_dga.c b/src/apm_dga.c index 30079e2..855c08e 100644 --- a/src/apm_dga.c +++ b/src/apm_dga.c @@ -103,7 +103,7 @@ SECOND_PASS: if(secondPitch) pitch = secondPitch; - if(!(newmodes = xrealloc(modes, (*num + 1) * sizeof(DGAModeRec)))) + if(!(newmodes = realloc(modes, (*num + 1) * sizeof(DGAModeRec)))) break; modes = newmodes; diff --git a/src/apm_driver.c b/src/apm_driver.c index 078d443..2145207 100644 --- a/src/apm_driver.c +++ b/src/apm_driver.c @@ -189,10 +189,8 @@ ApmGetRec(ScrnInfoPtr pScrn) -- 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/e1srudx-0004q2...@vasks.debian.org