.gitignore | 70 ++++++++++++- COPYING | 27 +++-- ChangeLog | 76 -------------- Makefile.am | 11 +- README | 20 +++ configure.ac | 73 ++++++++------ man/.gitignore | 2 man/Makefile.am | 59 ++++------- man/tdfx.man | 3 src/.gitignore | 6 - src/Makefile.am | 1 src/compat-api.h | 105 ++++++++++++++++++++ src/tdfx.h | 22 +++- src/tdfx_accel.c | 32 ++++-- src/tdfx_dga.c | 24 +++- src/tdfx_dri.c | 83 ++++++++-------- src/tdfx_driver.c | 274 +++++++++++++++--------------------------------------- src/tdfx_hwcurs.c | 4 src/tdfx_priv.c | 50 +++++---- src/tdfx_sli.c | 5 src/tdfx_video.c | 38 +++---- 21 files changed, 517 insertions(+), 468 deletions(-)
New commits: commit a1037f73cf5da0ee3fec1867a5f20305d9267e63 Author: Dave Airlie <airl...@redhat.com> Date: Tue Jul 17 16:05:09 2012 +1000 xf86-video-tdfx: bump to version 1.4.5 Signed-off-by: Dave Airlie <airl...@redhat.com> diff --git a/configure.ac b/configure.ac index ff9f9ff..5df5818 100644 --- a/configure.ac +++ b/configure.ac @@ -23,7 +23,7 @@ # Initialize Autoconf AC_PREREQ([2.60]) AC_INIT([xf86-video-tdfx], - [1.4.4], + [1.4.5], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [xf86-video-tdfx]) AC_CONFIG_SRCDIR([Makefile.am]) commit 42706433782656adcf831588cf9dde203e50402b Author: Dave Airlie <airl...@gmail.com> Date: Mon Jul 16 19:01:23 2012 +1000 tdfx: fix build against XAA-less server. Signed-off-by: Dave Airlie <airl...@redhat.com> diff --git a/configure.ac b/configure.ac index 3ccb489..ff9f9ff 100644 --- a/configure.ac +++ b/configure.ac @@ -110,6 +110,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=tdfx diff --git a/src/tdfx.h b/src/tdfx.h index 64506bc..7782473 100644 --- a/src/tdfx.h +++ b/src/tdfx.h @@ -120,7 +120,10 @@ extern void FillPrivateDRI(TDFXPtr pTDFX, TDFXDRIPtr pTDFXDRI); #define TDFXTRACEREG if(0) ErrorF #endif +#ifdef HAVE_XAA_H #include "xaa.h" +#endif +#include "xf86fbman.h" #include "xf86Cursor.h" #include "compat-api.h" @@ -226,7 +229,9 @@ typedef struct _TDFXRec { BoxRec prevBlitDest; TDFXRegRec SavedReg; TDFXRegRec ModeReg; +#ifdef HAVE_XAA_H XAAInfoRecPtr AccelInfoRec; +#endif xf86CursorInfoPtr CursorInfoRec; CloseScreenProcPtr CloseScreen; Bool usePIO; diff --git a/src/tdfx_accel.c b/src/tdfx_accel.c index 5767835..65933b4 100644 --- a/src/tdfx_accel.c +++ b/src/tdfx_accel.c @@ -15,14 +15,16 @@ #include "xf86PciInfo.h" /* Drivers that use XAA need this */ -#include "xaa.h" +#ifdef HAVE_XAA_H #include "xaalocal.h" +#endif #include "xf86fbman.h" #include "miline.h" #include "tdfx.h" +#ifdef HAVE_XAA_H #ifdef TDFX_DEBUG_CMDS static int cmdCnt=0; static int lastAddr=0; @@ -77,11 +79,14 @@ static void TDFXSubsequentCPUToScreenColorExpandFill(ScrnInfoPtr pScrn, int skipleft); static void TDFXSubsequentColorExpandScanline(ScrnInfoPtr pScrn, int bufno); +#endif void TDFXNeedSync(ScrnInfoPtr pScrn) { TDFXPtr pTDFX = TDFXPTR(pScrn); pTDFX->syncDone=FALSE; +#ifdef HAVE_XAA_H pTDFX->AccelInfoRec->NeedToSync = TRUE; +#endif } void @@ -203,9 +208,11 @@ TDFXSetLFBConfig(TDFXPtr pTDFX) { } } + Bool TDFXAccelInit(ScreenPtr pScreen) { +#ifdef HAVE_XAA_H XAAInfoRecPtr infoPtr; ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); TDFXPtr pTDFX = TDFXPTR(pScrn); @@ -302,6 +309,9 @@ TDFXAccelInit(ScreenPtr pScreen) /* Fill in acceleration functions */ return XAAInit(pScreen, infoPtr); +#else + return FALSE; +#endif } static void TDFXMakeRoomNoProp(TDFXPtr pTDFX, int size) { @@ -343,6 +353,9 @@ void TDFXSync(ScrnInfoPtr pScrn) pTDFX->PciCnt=stat&0x1F; } +#ifdef HAVE_XAA_H + + static void TDFXMatchState(TDFXPtr pTDFX) { @@ -933,3 +946,4 @@ static void TDFXSubsequentColorExpandScanline(ScrnInfoPtr pScrn, int bufno) } } +#endif diff --git a/src/tdfx_dga.c b/src/tdfx_dga.c index 3972bdd..e83f38d 100644 --- a/src/tdfx_dga.c +++ b/src/tdfx_dga.c @@ -15,10 +15,12 @@ static Bool TDFX_OpenFramebuffer(ScrnInfoPtr, char **, unsigned char **, static Bool TDFX_SetMode(ScrnInfoPtr, DGAModePtr); static int TDFX_GetViewport(ScrnInfoPtr); static void TDFX_SetViewport(ScrnInfoPtr, int, int, int); +#ifdef HAVE_XAA_H static void TDFX_FillRect(ScrnInfoPtr, int, int, int, int, unsigned long); static void TDFX_BlitRect(ScrnInfoPtr, int, int, int, int, int, int); static void TDFX_BlitTransRect(ScrnInfoPtr, int, int, int, int, int, int, unsigned long); +#endif static @@ -29,9 +31,13 @@ DGAFunctionRec TDFX_DGAFuncs = { TDFX_SetViewport, TDFX_GetViewport, TDFXSync, +#ifdef HAVE_XAA_H TDFX_FillRect, TDFX_BlitRect, TDFX_BlitTransRect +#else + NULL, NULL, NULL +#endif }; @@ -60,8 +66,10 @@ TDFXDGAInit(ScreenPtr pScreen) num++; currentMode->mode = pMode; currentMode->flags = DGA_CONCURRENT_ACCESS | DGA_PIXMAP_AVAILABLE; +#ifdef HAVE_XAA_H if (!pTDFX->NoAccel) currentMode->flags |= DGA_FILL_RECT | DGA_BLIT_RECT; +#endif if (pMode->Flags & V_DBLSCAN) currentMode->flags |= DGA_DOUBLESCAN; if (pMode->Flags & V_INTERLACE) @@ -150,6 +158,7 @@ TDFX_SetViewport(ScrnInfoPtr pScrn, int x, int y, int flags) pTDFX->DGAViewportStatus = 0; } +#ifdef HAVE_XAA_H static void TDFX_FillRect(ScrnInfoPtr pScrn, int x, int y, int w, int h, unsigned long color) @@ -189,6 +198,7 @@ TDFX_BlitTransRect( /* this one should be separate since the XAA function would prohibit usage of ~0 as the key */ } +#endif static Bool diff --git a/src/tdfx_dri.c b/src/tdfx_dri.c index e41e220..76064c3 100644 --- a/src/tdfx_dri.c +++ b/src/tdfx_dri.c @@ -545,6 +545,7 @@ TDFXDRISwapContext(ScreenPtr pScreen, DRISyncType syncType, static void TDFXDRIInitBuffers(WindowPtr pWin, RegionPtr prgn, CARD32 index) { +#ifdef HAVE_XAA_H ScreenPtr pScreen = pWin->drawable.pScreen; ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); TDFXPtr pTDFX = TDFXPTR(pScrn); @@ -567,13 +568,16 @@ TDFXDRIInitBuffers(WindowPtr pWin, RegionPtr prgn, CARD32 index) } TDFXSelectBuffer(pTDFX, TDFX_FRONT); + pTDFX->AccelInfoRec->NeedToSync = TRUE; +#endif } static void TDFXDRIMoveBuffers(WindowPtr pParent, DDXPointRec ptOldOrg, RegionPtr prgnSrc, CARD32 index) { +#ifdef HAVE_XAA_H ScreenPtr pScreen = pParent->drawable.pScreen; ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); TDFXPtr pTDFX = TDFXPTR(pScrn); @@ -609,6 +613,8 @@ TDFXDRIMoveBuffers(WindowPtr pParent, DDXPointRec ptOldOrg, TDFXSelectBuffer(pTDFX, TDFX_FRONT); pTDFX->AccelInfoRec->NeedToSync = TRUE; +#endif + } /* diff --git a/src/tdfx_driver.c b/src/tdfx_driver.c index c192f34..ddd5431 100644 --- a/src/tdfx_driver.c +++ b/src/tdfx_driver.c @@ -2537,8 +2537,10 @@ TDFXCloseScreen(CLOSE_SCREEN_ARGS_DECL) vgaHWUnmapMem(pScrn); } +#ifdef HAVE_XAA_H if (pTDFX->AccelInfoRec) XAADestroyInfoRec(pTDFX->AccelInfoRec); pTDFX->AccelInfoRec=0; +#endif if (pTDFX->DGAModes) free(pTDFX->DGAModes); pTDFX->DGAModes=0; if (pTDFX->scanlineColorExpandBuffers[0]) commit abeb6ba8edac356b510ae6e8427c3cb8a0cf6e7a Author: Dave Airlie <airl...@redhat.com> Date: Wed Jun 6 19:34:08 2012 +0100 tdfx: port to new compat API Signed-off-by: Dave Airlie <airl...@redhat.com> diff --git a/src/Makefile.am b/src/Makefile.am index 5dfbd53..faa4e34 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -29,6 +29,7 @@ tdfx_drv_la_LDFLAGS = -module -avoid-version tdfx_drv_ladir = @moduledir@/drivers tdfx_drv_la_SOURCES = \ + compat-api.h \ tdfx_accel.c \ tdfxdefs.h \ tdfx_dga.c \ diff --git a/src/compat-api.h b/src/compat-api.h new file mode 100644 index 0000000..98ba435 --- /dev/null +++ b/src/compat-api.h @@ -0,0 +1,105 @@ +/* + * 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 WAKEUPHANDLER_ARGS_DECL int arg, pointer wakeupData, unsigned long result, pointer read_mask +#define WAKEUPHANDLER_ARGS arg, wakeupData, result, read_mask + +#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 WAKEUPHANDLER_ARGS_DECL ScreenPtr arg, unsigned long result, pointer read_mask +#define WAKEUPHANDLER_ARGS arg, result, read_mask + +#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/tdfx.h b/src/tdfx.h index 2e00fde..64506bc 100644 --- a/src/tdfx.h +++ b/src/tdfx.h @@ -122,6 +122,7 @@ extern void FillPrivateDRI(TDFXPtr pTDFX, TDFXDRIPtr pTDFXDRI); #include "xaa.h" #include "xf86Cursor.h" +#include "compat-api.h" typedef void (*TDFXWriteIndexedByteFunc)(TDFXPtr pTDFX, int addr, char index, char value); @@ -337,8 +338,8 @@ extern void TDFXCursorGrabMemory(ScreenPtr pScreen); extern void TDFXSetLFBConfig(TDFXPtr pTDFX); extern void TDFXSendNOPFifo(ScrnInfoPtr pScrn); -extern Bool TDFXSwitchMode(int scrnIndex, DisplayModePtr mode, int flags); -extern void TDFXAdjustFrame(int scrnIndex, int x, int y, int flags); +extern Bool TDFXSwitchMode(SWITCH_MODE_ARGS_DECL); +extern void TDFXAdjustFrame(ADJUST_FRAME_ARGS_DECL); extern void TDFXSetPIOAccess(TDFXPtr pTDFX); extern void TDFXSetMMIOAccess(TDFXPtr pTDFX); diff --git a/src/tdfx_accel.c b/src/tdfx_accel.c index 12472f3..5767835 100644 --- a/src/tdfx_accel.c +++ b/src/tdfx_accel.c @@ -91,8 +91,8 @@ TDFXFirstSync(ScrnInfoPtr pScrn) { if (!pTDFX->syncDone) { #ifdef TDFXDRI if (pTDFX->directRenderingEnabled) { - DRILock(screenInfo.screens[pScrn->scrnIndex], 0); - TDFXSwapContextFifo(screenInfo.screens[pScrn->scrnIndex]); + DRILock(xf86ScrnToScreen(pScrn), 0); + TDFXSwapContextFifo(xf86ScrnToScreen(pScrn)); } #endif pTDFX->syncDone=TRUE; @@ -109,7 +109,7 @@ TDFXCheckSync(ScrnInfoPtr pScrn) { pTDFX->syncDone=FALSE; #ifdef TDFXDRI if (pTDFX->directRenderingEnabled) { - DRIUnlock(screenInfo.screens[pScrn->scrnIndex]); + DRIUnlock(xf86ScrnToScreen(pScrn)); } #endif } @@ -207,7 +207,7 @@ Bool TDFXAccelInit(ScreenPtr pScreen) { XAAInfoRecPtr infoPtr; - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); TDFXPtr pTDFX = TDFXPTR(pScrn); CARD32 commonFlags; diff --git a/src/tdfx_dga.c b/src/tdfx_dga.c index 0fae286..3972bdd 100644 --- a/src/tdfx_dga.c +++ b/src/tdfx_dga.c @@ -38,7 +38,7 @@ DGAFunctionRec TDFX_DGAFuncs = { Bool TDFXDGAInit(ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); TDFXPtr pTDFX; DisplayModePtr pMode, firstMode; DGAModePtr modes=0, newmodes=0, currentMode; @@ -111,8 +111,8 @@ TDFX_SetMode(ScrnInfoPtr pScrn, DGAModePtr pMode) if (!pMode) { /* restore the original mode */ /* put the ScreenParameters back */ if(pTDFX->DGAactive) { - TDFXSwitchMode(index, OldModes[index], 0); - TDFXAdjustFrame(pScrn->pScreen->myNum, 0, 0, 0); + TDFXSwitchMode(SWITCH_MODE_ARGS(pScrn, OldModes[index])); + TDFXAdjustFrame(ADJUST_FRAME_ARGS(pScrn, 0, 0)); pTDFX->DGAactive = FALSE; } } else { @@ -121,7 +121,7 @@ TDFX_SetMode(ScrnInfoPtr pScrn, DGAModePtr pMode) pTDFX->DGAactive = TRUE; } - TDFXSwitchMode(index, pMode->mode, 0); + TDFXSwitchMode(SWITCH_MODE_ARGS(pScrn, pMode->mode)); } return TRUE; @@ -141,7 +141,7 @@ TDFX_SetViewport(ScrnInfoPtr pScrn, int x, int y, int flags) TDFXPtr pTDFX = TDFXPTR(pScrn); vgaHWPtr hwp = VGAHWPTR(pScrn); - TDFXAdjustFrame(pScrn->pScreen->myNum, x, y, flags); + TDFXAdjustFrame(ADJUST_FRAME_ARGS(pScrn, x, y)); /* fixme */ while(hwp->readST01(hwp) & 0x08); diff --git a/src/tdfx_dri.c b/src/tdfx_dri.c index 8198595..e41e220 100644 --- a/src/tdfx_dri.c +++ b/src/tdfx_dri.c @@ -39,7 +39,7 @@ static void TDFXDRITransitionTo3d(ScreenPtr pScreen); static Bool TDFXInitVisualConfigs(ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); TDFXPtr pTDFX = TDFXPTR(pScrn); int numConfigs = 0; __GLXvisualConfig *pConfigs = 0; @@ -242,15 +242,14 @@ TDFXInitVisualConfigs(ScreenPtr pScreen) } static void -TDFXDoWakeupHandler(int screenNum, pointer wakeupData, unsigned long result, - pointer pReadmask) +TDFXDoWakeupHandler(WAKEUPHANDLER_ARGS_DECL) { - ScreenPtr pScreen = screenInfo.screens[screenNum]; - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + SCREEN_PTR(arg); + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); TDFXPtr pTDFX = TDFXPTR(pScrn); pTDFX->pDRIInfo->wrap.WakeupHandler = pTDFX->coreWakeupHandler; - (*pTDFX->pDRIInfo->wrap.WakeupHandler) (screenNum, wakeupData, result, pReadmask); + (*pTDFX->pDRIInfo->wrap.WakeupHandler) (WAKEUPHANDLER_ARGS); pTDFX->pDRIInfo->wrap.WakeupHandler = TDFXDoWakeupHandler; @@ -258,24 +257,23 @@ TDFXDoWakeupHandler(int screenNum, pointer wakeupData, unsigned long result, } static void -TDFXDoBlockHandler(int screenNum, pointer blockData, pointer pTimeout, - pointer pReadmask) +TDFXDoBlockHandler(BLOCKHANDLER_ARGS_DECL) { - ScreenPtr pScreen = screenInfo.screens[screenNum]; - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + SCREEN_PTR(arg); + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); TDFXPtr pTDFX = TDFXPTR(pScrn); TDFXCheckSync(pScrn); pTDFX->pDRIInfo->wrap.BlockHandler = pTDFX->coreBlockHandler; - (*pTDFX->pDRIInfo->wrap.BlockHandler) (screenNum, blockData, pTimeout, pReadmask); + (*pTDFX->pDRIInfo->wrap.BlockHandler) (BLOCKHANDLER_ARGS); pTDFX->pDRIInfo->wrap.BlockHandler = TDFXDoBlockHandler; } Bool TDFXDRIScreenInit(ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); TDFXPtr pTDFX = TDFXPTR(pScrn); DRIInfoPtr pDRIInfo; TDFXDRIPtr pTDFXDRI; @@ -475,7 +473,7 @@ Bool TDFXDRIScreenInit(ScreenPtr pScreen) void TDFXDRICloseScreen(ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); TDFXPtr pTDFX = TDFXPTR(pScrn); DRICloseScreen(pScreen); @@ -509,7 +507,7 @@ TDFXDestroyContext(ScreenPtr pScreen, drm_context_t hwContext, Bool TDFXDRIFinishScreenInit(ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); TDFXPtr pTDFX = TDFXPTR(pScrn); TDFXDRIPtr pTDFXDRI; @@ -548,7 +546,7 @@ static void TDFXDRIInitBuffers(WindowPtr pWin, RegionPtr prgn, CARD32 index) { ScreenPtr pScreen = pWin->drawable.pScreen; - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); TDFXPtr pTDFX = TDFXPTR(pScrn); BoxPtr pbox; int nbox; @@ -577,7 +575,7 @@ TDFXDRIMoveBuffers(WindowPtr pParent, DDXPointRec ptOldOrg, RegionPtr prgnSrc, CARD32 index) { ScreenPtr pScreen = pParent->drawable.pScreen; - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); TDFXPtr pTDFX = TDFXPTR(pScrn); int dx, dy, xdir, ydir, i, x, y, nbox; BoxPtr pbox; @@ -625,7 +623,7 @@ TDFXDRIOpenFullScreen(ScreenPtr pScreen) TDFXPtr pTDFX; xf86DrvMsg(pScreen->myNum, X_INFO, "OpenFullScreen\n"); - pScrn = xf86Screens[pScreen->myNum]; + pScrn = xf86ScreenToScrn(pScreen); pTDFX=TDFXPTR(pScrn); if (pTDFX->numChips>1) { TDFXSetupSLI(pScrn); @@ -641,7 +639,7 @@ TDFXDRICloseFullScreen(ScreenPtr pScreen) ScrnInfoPtr pScrn; xf86DrvMsg(pScreen->myNum, X_INFO, "CloseFullScreen\n"); - pScrn = xf86Screens[pScreen->myNum]; + pScrn = xf86ScreenToScrn(pScreen); TDFXDisableSLI(pScrn); #endif return TRUE; @@ -650,7 +648,7 @@ TDFXDRICloseFullScreen(ScreenPtr pScreen) static void TDFXDRITransitionTo2d(ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); TDFXPtr pTDFX = TDFXPTR(pScrn); xf86FreeOffscreenArea(pTDFX->reservedArea); @@ -659,7 +657,7 @@ TDFXDRITransitionTo2d(ScreenPtr pScreen) static void TDFXDRITransitionTo3d(ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); TDFXPtr pTDFX = TDFXPTR(pScrn); FBAreaPtr pArea; diff --git a/src/tdfx_driver.c b/src/tdfx_driver.c index 94cce04..c192f34 100644 --- a/src/tdfx_driver.c +++ b/src/tdfx_driver.c @@ -124,28 +124,28 @@ static Bool TDFXProbe(DriverPtr drv, int flags); static Bool TDFXPreInit(ScrnInfoPtr pScrn, int flags); /* Initialize a screen */ -static Bool TDFXScreenInit(int Index, ScreenPtr pScreen, int argc, char **argv); +static Bool TDFXScreenInit(SCREEN_INIT_ARGS_DECL); /* Enter from a virtual terminal */ -static Bool TDFXEnterVT(int scrnIndex, int flags); +static Bool TDFXEnterVT(VT_FUNC_ARGS_DECL); /* Leave to a virtual terminal */ -static void TDFXLeaveVT(int scrnIndex, int flags); +static void TDFXLeaveVT(VT_FUNC_ARGS_DECL); /* Close down each screen we initialized */ -static Bool TDFXCloseScreen(int scrnIndex, ScreenPtr pScreen); +static Bool TDFXCloseScreen(CLOSE_SCREEN_ARGS_DECL); /* Change screensaver state */ static Bool TDFXSaveScreen(ScreenPtr pScreen, int mode); /* Cleanup server private data */ -static void TDFXFreeScreen(int scrnIndex, int flags); +static void TDFXFreeScreen(FREE_SCREEN_ARGS_DECL); /* Check if a mode is valid on the hardware */ -static ModeStatus TDFXValidMode(int scrnIndex, DisplayModePtr mode, +static ModeStatus TDFXValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, int flags); -static void TDFXBlockHandler(int, pointer, pointer, pointer); +static void TDFXBlockHandler(BLOCKHANDLER_ARGS_DECL); /* Switch to various Display Power Management System levels */ static void TDFXDisplayPowerManagementSet(ScrnInfoPtr pScrn, @@ -757,7 +757,7 @@ static xf86MonPtr doTDFXDDC(ScrnInfoPtr pScrn) reg = pTDFX->readLong(pTDFX, VIDSERIALPARALLELPORT); pTDFX->writeLong(pTDFX, VIDSERIALPARALLELPORT, reg | VSP_ENABLE_IIC0); - pMon = xf86DoEDID_DDC2(pScrn->scrnIndex, pTDFX->pI2CBus); + pMon = xf86DoEDID_DDC2(XF86_SCRN_ARG(pScrn), pTDFX->pI2CBus); if (pMon == NULL) xf86Msg(X_WARNING, "No DDC2 capable monitor found\n"); @@ -1910,14 +1910,14 @@ TDFXModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode) #ifdef TDFXDRI if (pTDFX->directRenderingEnabled) { - DRILock(screenInfo.screens[pScrn->scrnIndex], 0); - TDFXSwapContextFifo(screenInfo.screens[pScrn->scrnIndex]); + DRILock(xf86ScrnToScreen(pScrn), 0); + TDFXSwapContextFifo(xf86ScrnToScreen(pScrn)); } #endif DoRestore(pScrn, &hwp->ModeReg, &pTDFX->ModeReg, FALSE); #ifdef TDFXDRI if (pTDFX->directRenderingEnabled) { - DRIUnlock(screenInfo.screens[pScrn->scrnIndex]); + DRIUnlock(xf86ScrnToScreen(pScrn)); } #endif @@ -2195,7 +2195,7 @@ static void allocateMemory(ScrnInfoPtr pScrn) { } static Bool -TDFXScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) { +TDFXScreenInit(SCREEN_INIT_ARGS_DECL) { ScrnInfoPtr pScrn; vgaHWPtr hwp; TDFXPtr pTDFX; @@ -2207,7 +2207,7 @@ TDFXScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) { int scanlines; TDFXTRACE("TDFXScreenInit start\n"); - pScrn = xf86Screens[pScreen->myNum]; + pScrn = xf86ScreenToScrn(pScreen); pTDFX = TDFXPTR(pScrn); hwp = VGAHWPTR(pScrn); @@ -2337,7 +2337,7 @@ TDFXScreenInit(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 TDFXScrnInit\n", pScrn->bitsPerPixel); return FALSE; @@ -2398,7 +2398,7 @@ TDFXScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) { return FALSE; } - TDFXAdjustFrame(scrnIndex, 0, 0, 0); + TDFXAdjustFrame(ADJUST_FRAME_ARGS(pScrn, 0, 0)); xf86DPMSInit(pScreen, TDFXDisplayPowerManagementSet, 0); @@ -2438,22 +2438,20 @@ TDFXScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) { } Bool -TDFXSwitchMode(int scrnIndex, DisplayModePtr mode, int flags) { - ScrnInfoPtr pScrn; +TDFXSwitchMode(SWITCH_MODE_ARGS_DECL) { + SCRN_INFO_PTR(arg); TDFXTRACE("TDFXSwitchMode start\n"); - pScrn=xf86Screens[scrnIndex]; return TDFXModeInit(pScrn, mode); } void -TDFXAdjustFrame(int scrnIndex, int x, int y, int flags) { - ScrnInfoPtr pScrn; +TDFXAdjustFrame(ADJUST_FRAME_ARGS_DECL) { + SCRN_INFO_PTR(arg); TDFXPtr pTDFX; TDFXRegPtr tdfxReg; TDFXTRACE("TDFXAdjustFrame start\n"); - pScrn = xf86Screens[scrnIndex]; pTDFX = TDFXPTR(pScrn); if (pTDFX->ShowCache && y && pScrn->vtSema) @@ -2468,16 +2466,15 @@ TDFXAdjustFrame(int scrnIndex, int x, int y, int flags) { } static Bool -TDFXEnterVT(int scrnIndex, int flags) { - ScrnInfoPtr pScrn; +TDFXEnterVT(VT_FUNC_ARGS_DECL) { + SCRN_INFO_PTR(arg); ScreenPtr pScreen; #ifdef TDFXDRI TDFXPtr pTDFX; #endif TDFXTRACE("TDFXEnterVT start\n"); - pScrn = xf86Screens[scrnIndex]; - pScreen = screenInfo.screens[scrnIndex]; + pScreen = xf86ScrnToScreen(pScrn); TDFXInitFifo(pScreen); #ifdef TDFXDRI pTDFX = TDFXPTR(pScrn); @@ -2486,23 +2483,22 @@ TDFXEnterVT(int scrnIndex, int flags) { } #endif if (!TDFXModeInit(pScrn, pScrn->currentMode)) return FALSE; - TDFXAdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0); + TDFXAdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0)); return TRUE; } static void -TDFXLeaveVT(int scrnIndex, int flags) { - ScrnInfoPtr pScrn; +TDFXLeaveVT(VT_FUNC_ARGS_DECL) { + SCRN_INFO_PTR(arg); vgaHWPtr hwp; ScreenPtr pScreen; TDFXPtr pTDFX; TDFXTRACE("TDFXLeaveVT start\n"); - pScrn = xf86Screens[scrnIndex]; hwp=VGAHWPTR(pScrn); TDFXRestore(pScrn); vgaHWLock(hwp); - pScreen = screenInfo.screens[scrnIndex]; + pScreen = xf86ScrnToScreen(pScrn); pTDFX = TDFXPTR(pScrn); pTDFX->sync(pScrn); TDFXShutdownFifo(pScreen); @@ -2514,14 +2510,14 @@ TDFXLeaveVT(int scrnIndex, int flags) { } static Bool -TDFXCloseScreen(int scrnIndex, ScreenPtr pScreen) +TDFXCloseScreen(CLOSE_SCREEN_ARGS_DECL) { ScrnInfoPtr pScrn; vgaHWPtr hwp; TDFXPtr pTDFX; TDFXTRACE("TDFXCloseScreen start\n"); - pScrn = xf86Screens[scrnIndex]; + pScrn = xf86ScreenToScrn(pScreen); hwp = VGAHWPTR(pScrn); pTDFX = TDFXPTR(pScrn); @@ -2562,27 +2558,27 @@ TDFXCloseScreen(int scrnIndex, ScreenPtr pScreen) pScreen->BlockHandler = pTDFX->BlockHandler; pScreen->CloseScreen = pTDFX->CloseScreen; - return (*pScreen->CloseScreen)(scrnIndex, pScreen); + return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS); } static void -TDFXFreeScreen(int scrnIndex, int flags) { +TDFXFreeScreen(FREE_SCREEN_ARGS_DECL) { + SCRN_INFO_PTR(arg); TDFXTRACE("TDFXFreeScreen start\n"); - TDFXFreeRec(xf86Screens[scrnIndex]); + TDFXFreeRec(pScrn); if (xf86LoaderCheckSymbol("vgaHWFreeHWRec")) - vgaHWFreeHWRec(xf86Screens[scrnIndex]); + vgaHWFreeHWRec(pScrn); } static ModeStatus -TDFXValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags) { - ScrnInfoPtr pScrn; +TDFXValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, int flags) { + SCRN_INFO_PTR(arg); TDFXPtr pTDFX; TDFXTRACE("TDFXValidMode start\n"); if ((mode->HDisplay>2048) || (mode->VDisplay>1536)) return MODE_BAD; /* Banshee doesn't support interlace, but Voodoo 3 and higher do. */ - pScrn = xf86Screens[scrnIndex]; pTDFX = TDFXPTR(pScrn); if (mode->Flags&V_INTERLACE) { switch (pTDFX->ChipType) { @@ -2631,7 +2627,7 @@ TDFXBlankScreen(ScrnInfoPtr pScrn, Bool unblank) static Bool TDFXSaveScreen(ScreenPtr pScreen, int mode) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); Bool unblank; TDFXTRACE("TDFXSaveScreen start\n"); @@ -2648,14 +2644,14 @@ TDFXSaveScreen(ScreenPtr pScreen, int mode) } static void -TDFXBlockHandler(int i, pointer blockData, pointer pTimeout, pointer pReadmask) +TDFXBlockHandler(BLOCKHANDLER_ARGS_DECL) { - ScreenPtr pScreen = screenInfo.screens[i]; - ScrnInfoPtr pScrn = xf86Screens[i]; + SCREEN_PTR(arg); + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); TDFXPtr pTDFX = TDFXPTR(pScrn); pScreen->BlockHandler = pTDFX->BlockHandler; - (*pScreen->BlockHandler) (i, blockData, pTimeout, pReadmask); + (*pScreen->BlockHandler) (BLOCKHANDLER_ARGS); pScreen->BlockHandler = TDFXBlockHandler; if(pTDFX->VideoTimerCallback) { diff --git a/src/tdfx_hwcurs.c b/src/tdfx_hwcurs.c index d5445a6..4e78577 100644 --- a/src/tdfx_hwcurs.c +++ b/src/tdfx_hwcurs.c @@ -31,7 +31,7 @@ TDFXCursorInit(ScreenPtr pScreen) xf86CursorInfoPtr infoPtr; TDFXTRACECURS("TDFXCursorInit start\n"); - pScrn = xf86Screens[pScreen->myNum]; + pScrn = xf86ScreenToScrn(pScreen); pTDFX = TDFXPTR(pScrn); pTDFX->CursorInfoRec = infoPtr = xf86CreateCursorInfoRec(); if (!infoPtr) return FALSE; @@ -146,7 +146,7 @@ TDFXUseHWCursor(ScreenPtr pScreen, CursorPtr pCurs) TDFXPtr pTDFX; TDFXTRACECURS("TDFXUseHWCursor start\n"); - pScrn = xf86Screens[pScreen->myNum]; + pScrn = xf86ScreenToScrn(pScreen); pTDFX = TDFXPTR(pScrn); if (pScrn->currentMode->Flags&V_DBLSCAN) return FALSE; diff --git a/src/tdfx_priv.c b/src/tdfx_priv.c index d5cb2d1..d9ad392 100644 --- a/src/tdfx_priv.c +++ b/src/tdfx_priv.c @@ -192,7 +192,7 @@ Bool TDFXInitFifo(ScreenPtr pScreen) ScrnInfoPtr pScrn; TDFXPtr pTDFX; - pScrn = xf86Screens[pScreen->myNum]; + pScrn = xf86ScreenToScrn(pScreen); pTDFX=TDFXPTR(pScrn); #ifdef DEBUG_FIFO pTDFX->fifoMirrorBase=0; @@ -212,7 +212,7 @@ void TDFXShutdownFifo(ScreenPtr pScreen) ScrnInfoPtr pScrn; TDFXPtr pTDFX; - pScrn = xf86Screens[pScreen->myNum]; + pScrn = xf86ScreenToScrn(pScreen); pTDFX=TDFXPTR(pScrn); TDFXWriteLongMMIO(pTDFX, SST_FIFO_BASESIZE0, 0); pTDFX->sync=TDFXSync; @@ -242,7 +242,7 @@ void TDFXSwapContextFifo(ScreenPtr pScreen) int dummy, readPos; TDFXSAREAPriv *sPriv; - pScrn = xf86Screens[pScreen->myNum]; + pScrn = xf86ScreenToScrn(pScreen); pTDFX=TDFXPTR(pScrn); sPriv=(TDFXSAREAPriv*)DRIGetSAREAPrivate(pScreen); /* if (sPriv) diff --git a/src/tdfx_video.c b/src/tdfx_video.c index 733e6c7..46218c1 100644 --- a/src/tdfx_video.c +++ b/src/tdfx_video.c @@ -122,7 +122,7 @@ static XF86ImageRec TextureImages[] = void TDFXInitVideo(ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); XF86VideoAdaptorPtr *adaptors, *newAdaptors = NULL; XF86VideoAdaptorPtr newAdaptor = NULL; TDFXPtr pTDFX = TDFXPTR(pScrn); @@ -208,7 +208,7 @@ TDFXAllocAdaptor(ScrnInfoPtr pScrn, int numberPorts) static XF86VideoAdaptorPtr TDFXSetupImageVideoOverlay(ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); TDFXPtr pTDFX = TDFXPTR(pScrn); TDFXPortPrivPtr pPriv; XF86VideoAdaptorPtr adapt; @@ -252,7 +252,7 @@ TDFXSetupImageVideoOverlay(ScreenPtr pScreen) static XF86VideoAdaptorPtr TDFXSetupImageVideoTexture(ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); TDFXPtr pTDFX = TDFXPTR(pScrn); XF86VideoAdaptorPtr adapt; int i; -- 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/e1sroov-0005xt...@vasks.debian.org