summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2012-06-06 19:34:08 +0100
committerDave Airlie <airlied@redhat.com>2012-06-06 19:34:08 +0100
commitabeb6ba8edac356b510ae6e8427c3cb8a0cf6e7a (patch)
tree108af0ca32a37bcb2661655c73d69ab7b43b240e
parent98d24dd99052322c71d1676e6d66c2c724f6066a (diff)
tdfx: port to new compat API
Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r--src/Makefile.am1
-rw-r--r--src/compat-api.h105
-rw-r--r--src/tdfx.h5
-rw-r--r--src/tdfx_accel.c8
-rw-r--r--src/tdfx_dga.c10
-rw-r--r--src/tdfx_dri.c38
-rw-r--r--src/tdfx_driver.c84
-rw-r--r--src/tdfx_hwcurs.c4
-rw-r--r--src/tdfx_priv.c6
-rw-r--r--src/tdfx_video.c10
10 files changed, 186 insertions, 85 deletions
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 <airlied@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;
@@ -1096,7 +1096,7 @@ TDFXAllocateMemoryArea (ScrnInfoPtr pScrn, FBAreaPtr area, int width, int height
xf86FreeOffscreenArea(area);
}
- pScreen = screenInfo.screens[pScrn->scrnIndex];
+ pScreen = xf86ScrnToScreen(pScrn);
new_area = xf86AllocateOffscreenArea(pScreen, width, height, pTDFX->cpp, NULL, NULL, NULL);
@@ -1132,7 +1132,7 @@ TDFXAllocateMemoryLinear (ScrnInfoPtr pScrn, FBLinearPtr linear, int size)
xf86FreeOffscreenLinear(linear);
}
- pScreen = screenInfo.screens[pScrn->scrnIndex];
+ pScreen = xf86ScrnToScreen(pScrn);
new_linear = xf86AllocateOffscreenLinear(pScreen, size, 4, NULL, NULL, NULL);