Module Name: xsrc
Committed By: mrg
Date: Sun Jun 2 08:29:33 UTC 2013
Modified Files:
xsrc/external/mit/xf86-video-mach64/dist/src: atipreinit.c atiprobe.c
xsrc/external/mit/xf86-video-mga/dist/src: mga_dac3026.c mga_vga.c
xsrc/external/mit/xf86-video-nv/dist/src: g80_output.c nv_driver.c
xsrc/external/mit/xf86-video-r128/dist/src: r128.h r128_driver.c
Removed Files:
xsrc/external/mit/xf86-video-mga/dist/src: clientlx.c
xsrc/external/mit/xf86-video-r128/dist: README.r128 README.r128.sgml
Log Message:
merge xf86-video-mach64 6.9.4, xf86-video-mga 1.6.2, xf86-video-nv 2.1.20,
and xf86-video-r128 6.9.1.
To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 \
xsrc/external/mit/xf86-video-mach64/dist/src/atipreinit.c
cvs rdiff -u -r1.2 -r1.3 \
xsrc/external/mit/xf86-video-mach64/dist/src/atiprobe.c
cvs rdiff -u -r1.1.1.1 -r0 \
xsrc/external/mit/xf86-video-mga/dist/src/clientlx.c
cvs rdiff -u -r1.2 -r1.3 \
xsrc/external/mit/xf86-video-mga/dist/src/mga_dac3026.c \
xsrc/external/mit/xf86-video-mga/dist/src/mga_vga.c
cvs rdiff -u -r1.2 -r1.3 \
xsrc/external/mit/xf86-video-nv/dist/src/g80_output.c
cvs rdiff -u -r1.3 -r1.4 xsrc/external/mit/xf86-video-nv/dist/src/nv_driver.c
cvs rdiff -u -r1.1.1.1 -r0 xsrc/external/mit/xf86-video-r128/dist/README.r128 \
xsrc/external/mit/xf86-video-r128/dist/README.r128.sgml
cvs rdiff -u -r1.3 -r1.4 xsrc/external/mit/xf86-video-r128/dist/src/r128.h
cvs rdiff -u -r1.7 -r1.8 \
xsrc/external/mit/xf86-video-r128/dist/src/r128_driver.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: xsrc/external/mit/xf86-video-mach64/dist/src/atipreinit.c
diff -u xsrc/external/mit/xf86-video-mach64/dist/src/atipreinit.c:1.3 xsrc/external/mit/xf86-video-mach64/dist/src/atipreinit.c:1.4
--- xsrc/external/mit/xf86-video-mach64/dist/src/atipreinit.c:1.3 Wed Aug 15 17:35:03 2012
+++ xsrc/external/mit/xf86-video-mach64/dist/src/atipreinit.c Sun Jun 2 08:29:33 2013
@@ -35,7 +35,6 @@
#endif
#include "ati.h"
-#include "atiadjust.h"
#include "atiaudio.h"
#include "atibus.h"
#include "atichip.h"
@@ -57,6 +56,7 @@
#include "atividmem.h"
#include "atiwonderio.h"
#include "atixv.h"
+#include "atiadjust.h"
#include "vbe.h"
#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6
Index: xsrc/external/mit/xf86-video-mach64/dist/src/atiprobe.c
diff -u xsrc/external/mit/xf86-video-mach64/dist/src/atiprobe.c:1.2 xsrc/external/mit/xf86-video-mach64/dist/src/atiprobe.c:1.3
--- xsrc/external/mit/xf86-video-mach64/dist/src/atiprobe.c:1.2 Thu Dec 4 22:29:41 2008
+++ xsrc/external/mit/xf86-video-mach64/dist/src/atiprobe.c Sun Jun 2 08:29:33 2013
@@ -373,7 +373,7 @@ ATIMach64ProbeIO
#ifndef AVOID_CPIO
- static const IOADDRESS Mach64SparseIOBases[] = {
+ static const unsigned long Mach64SparseIOBases[] = {
0x02ECU,
0x01CCU,
0x01C8U
Index: xsrc/external/mit/xf86-video-mga/dist/src/mga_dac3026.c
diff -u xsrc/external/mit/xf86-video-mga/dist/src/mga_dac3026.c:1.2 xsrc/external/mit/xf86-video-mga/dist/src/mga_dac3026.c:1.3
--- xsrc/external/mit/xf86-video-mga/dist/src/mga_dac3026.c:1.2 Fri Jun 12 01:55:07 2009
+++ xsrc/external/mit/xf86-video-mga/dist/src/mga_dac3026.c Sun Jun 2 08:29:33 2013
@@ -42,9 +42,6 @@
#include "xf86.h"
#include "xf86_OSproc.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"
Index: xsrc/external/mit/xf86-video-mga/dist/src/mga_vga.c
diff -u xsrc/external/mit/xf86-video-mga/dist/src/mga_vga.c:1.2 xsrc/external/mit/xf86-video-mga/dist/src/mga_vga.c:1.3
--- xsrc/external/mit/xf86-video-mga/dist/src/mga_vga.c:1.2 Sun May 15 23:44:47 2011
+++ xsrc/external/mit/xf86-video-mga/dist/src/mga_vga.c Sun Jun 2 08:29:33 2013
@@ -2,6 +2,8 @@
#include "config.h"
#endif
+#include <unistd.h>
+
#include "misc.h"
#include "xf86.h"
#include "xf86_OSproc.h"
@@ -198,17 +200,17 @@ MGAG200SESaveFonts(ScrnInfoPtr scrninfp,
hwp->writeSeq(hwp, 0x04, 0x06); /* enable plane graphics */
hwp->writeGr(hwp, 0x05, 0x00); /* write mode 0, read mode 0 */
hwp->writeGr(hwp, 0x06, 0x05); /* set graphics */
- if (hwp->FontInfo1 || (hwp->FontInfo1 = xalloc(FONT_AMOUNT))) {
+ if (hwp->FontInfo1 || (hwp->FontInfo1 = malloc(FONT_AMOUNT))) {
hwp->writeSeq(hwp, 0x02, 0x04); /* write to plane 2 */
hwp->writeGr(hwp, 0x04, 0x02); /* read plane 2 */
slowbcopy_frombus(hwp->Base, hwp->FontInfo1, FONT_AMOUNT);
}
- if (hwp->FontInfo2 || (hwp->FontInfo2 = xalloc(FONT_AMOUNT))) {
+ if (hwp->FontInfo2 || (hwp->FontInfo2 = malloc(FONT_AMOUNT))) {
hwp->writeSeq(hwp, 0x02, 0x08); /* write to plane 3 */
hwp->writeGr(hwp, 0x04, 0x03); /* read plane 3 */
slowbcopy_frombus(hwp->Base, hwp->FontInfo2, FONT_AMOUNT);
}
- if (hwp->TextInfo || (hwp->TextInfo = xalloc(2 * TEXT_AMOUNT))) {
+ if (hwp->TextInfo || (hwp->TextInfo = malloc(2 * TEXT_AMOUNT))) {
hwp->writeSeq(hwp, 0x02, 0x01); /* write to plane 0 */
hwp->writeGr(hwp, 0x04, 0x00); /* read plane 0 */
slowbcopy_frombus(hwp->Base, hwp->TextInfo, TEXT_AMOUNT);
Index: xsrc/external/mit/xf86-video-nv/dist/src/g80_output.c
diff -u xsrc/external/mit/xf86-video-nv/dist/src/g80_output.c:1.2 xsrc/external/mit/xf86-video-nv/dist/src/g80_output.c:1.3
--- xsrc/external/mit/xf86-video-nv/dist/src/g80_output.c:1.2 Thu Jan 31 08:24:32 2013
+++ xsrc/external/mit/xf86-video-nv/dist/src/g80_output.c Sun Jun 2 08:29:33 2013
@@ -254,13 +254,21 @@ static CARD32 i2cAddr(const int port)
static void G80_I2CPutBits(I2CBusPtr b, int clock, int data)
{
+#ifdef XF86_SCRN_INTERFACE
+ G80Ptr pNv = G80PTR(b->pScrn);
+#else
G80Ptr pNv = G80PTR(xf86Screens[b->scrnIndex]);
+#endif
pNv->reg[i2cAddr(b->DriverPrivate.val)/4] = 4 | clock | data << 1;
}
static void G80_I2CGetBits(I2CBusPtr b, int *clock, int *data)
{
+#ifdef XF86_SCRN_INTERFACE
+ G80Ptr pNv = G80PTR(b->pScrn);
+#else
G80Ptr pNv = G80PTR(xf86Screens[b->scrnIndex]);
+#endif
unsigned char val;
val = pNv->reg[i2cAddr(b->DriverPrivate.val)/4];
@@ -279,6 +287,9 @@ G80I2CInit(ScrnInfoPtr pScrn, const char
i2c->BusName = strdup(name);
i2c->scrnIndex = pScrn->scrnIndex;
+#ifdef XF86_SCRN_INTERFACE
+ i2c->pScrn = pScrn;
+#endif
i2c->I2CPutBits = G80_I2CPutBits;
i2c->I2CGetBits = G80_I2CGetBits;
i2c->ByteTimeout = 2200; /* VESA DDC spec 3 p. 43 (+10 %) */
@@ -339,9 +350,9 @@ ProbeDDC(I2CBusPtr i2c)
pNv->reg[addr/4] = 7;
/* Should probably use xf86OutputGetEDID here */
#ifdef EDID_COMPLETE_RAWDATA
- monInfo = xf86DoEEDID(pScrn->scrnIndex, i2c, TRUE);
+ monInfo = xf86DoEEDID(XF86_SCRN_ARG(pScrn), i2c, TRUE);
#else
- monInfo = xf86DoEDID_DDC2(pScrn->scrnIndex, i2c);
+ monInfo = xf86DoEDID_DDC2(XF86_SCRN_ARG(pScrn), i2c);
#endif
pNv->reg[addr/4] = 3;
Index: xsrc/external/mit/xf86-video-nv/dist/src/nv_driver.c
diff -u xsrc/external/mit/xf86-video-nv/dist/src/nv_driver.c:1.3 xsrc/external/mit/xf86-video-nv/dist/src/nv_driver.c:1.4
--- xsrc/external/mit/xf86-video-nv/dist/src/nv_driver.c:1.3 Fri Nov 2 07:44:09 2012
+++ xsrc/external/mit/xf86-video-nv/dist/src/nv_driver.c Sun Jun 2 08:29:33 2013
@@ -49,17 +49,16 @@ static Bool NVPciProbe(DriverPtr, int
static Bool NVProbe(DriverPtr drv, int flags);
#endif
static Bool NVPreInit(ScrnInfoPtr pScrn, int flags);
-static Bool NVScreenInit(int Index, ScreenPtr pScreen, int argc,
- char **argv);
-static Bool NVEnterVT(int scrnIndex, int flags);
-static Bool NVEnterVTFBDev(int scrnIndex, int flags);
-static void NVLeaveVT(int scrnIndex, int flags);
-static Bool NVCloseScreen(int scrnIndex, ScreenPtr pScreen);
+static Bool NVScreenInit(SCREEN_INIT_ARGS_DECL);
+static Bool NVEnterVT(VT_FUNC_ARGS_DECL);
+static Bool NVEnterVTFBDev(VT_FUNC_ARGS_DECL);
+static void NVLeaveVT(VT_FUNC_ARGS_DECL);
+static Bool NVCloseScreen(CLOSE_SCREEN_ARGS_DECL);
static Bool NVSaveScreen(ScreenPtr pScreen, int mode);
/* Optional functions */
-static void NVFreeScreen(int scrnIndex, int flags);
-static ModeStatus NVValidMode(int scrnIndex, DisplayModePtr mode,
+static void NVFreeScreen(FREE_SCREEN_ARGS_DECL);
+static ModeStatus NVValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode,
Bool verbose, int flags);
#ifdef RANDR
static Bool NVDriverFunc(ScrnInfoPtr pScrnInfo, xorgDriverFuncOp op,
@@ -1051,31 +1050,31 @@ NVProbe(DriverPtr drv, int flags)
/* Usually mandatory */
Bool
-NVSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
+NVSwitchMode(SWITCH_MODE_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
NVSync(pScrn);
return NVModeInit(pScrn, mode);
}
static Bool
-NVSwitchModeVBE(int scrnIndex, DisplayModePtr mode, int flags)
+NVSwitchModeVBE(SWITCH_MODE_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
NVPtr pNv = NVPTR(pScrn);
const Bool disableAccess = pNv->accessEnabled;
if(disableAccess)
- pScrn->EnableDisableFBAccess(scrnIndex, FALSE);
+ pScrn->EnableDisableFBAccess(XF86_SCRN_ARG(pScrn), FALSE);
NVSync(pScrn);
if (!NVSetModeVBE(pScrn, mode))
return FALSE;
- NVAdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0);
+ NVAdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0));
if(disableAccess)
- pScrn->EnableDisableFBAccess(scrnIndex, TRUE);
+ pScrn->EnableDisableFBAccess(XF86_SCRN_ARG(pScrn), TRUE);
return TRUE;
}
@@ -1086,9 +1085,9 @@ NVSwitchModeVBE(int scrnIndex, DisplayMo
*/
/* Usually mandatory */
void
-NVAdjustFrame(int scrnIndex, int x, int y, int flags)
+NVAdjustFrame(ADJUST_FRAME_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
int startAddr;
NVPtr pNv = NVPTR(pScrn);
NVFBLayout *pLayout = &pNv->CurrentLayout;
@@ -1107,14 +1106,14 @@ NVAdjustFrame(int scrnIndex, int x, int
/* Mandatory */
static Bool
-NVEnterVT(int scrnIndex, int flags)
+NVEnterVT(VT_FUNC_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
NVPtr pNv = NVPTR(pScrn);
if (!NVModeInit(pScrn, pScrn->currentMode))
return FALSE;
- NVAdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0);
+ NVAdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0));
if(pNv->overlayAdaptor)
NVResetVideo(pScrn);
@@ -1122,20 +1121,21 @@ NVEnterVT(int scrnIndex, int flags)
}
static Bool
-NVEnterVTFBDev(int scrnIndex, int flags)
+NVEnterVTFBDev(VT_FUNC_ARGS_DECL)
{
- fbdevHWEnterVT(scrnIndex,flags);
+ SCRN_INFO_PTR(arg);
+ fbdevHWEnterVT(VT_FUNC_ARGS);
return TRUE;
}
static Bool
-NVEnterVTVBE(int scrnIndex, int flags)
+NVEnterVTVBE(VT_FUNC_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
if (!NVSetModeVBE(pScrn, pScrn->currentMode))
return FALSE;
- NVAdjustFrame(scrnIndex, 0, 0, 0);
+ NVAdjustFrame(ADJUST_FRAME_ARGS(pScrn, 0, 0));
return TRUE;
}
@@ -1148,9 +1148,9 @@ NVEnterVTVBE(int scrnIndex, int flags)
/* Mandatory */
static void
-NVLeaveVT(int scrnIndex, int flags)
+NVLeaveVT(VT_FUNC_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
NVPtr pNv = NVPTR(pScrn);
NVSync(pScrn);
@@ -1159,31 +1159,26 @@ NVLeaveVT(int scrnIndex, int flags)
}
static void
-NVLeaveVTVBE(int scrnIndex, int flags)
+NVLeaveVTVBE(VT_FUNC_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
NVSync(pScrn);
NVSaveRestoreVBE(pScrn, MODE_RESTORE);
}
static void
-NVBlockHandler (
- int i,
- pointer blockData,
- pointer pTimeout,
- pointer pReadmask
-)
+NVBlockHandler (BLOCKHANDLER_ARGS_DECL)
{
- ScreenPtr pScreen = screenInfo.screens[i];
- ScrnInfoPtr pScrnInfo = xf86Screens[i];
+ SCREEN_PTR(arg);
+ ScrnInfoPtr pScrnInfo = xf86ScreenToScrn(pScreen);
NVPtr pNv = NVPTR(pScrnInfo);
if (pNv->DMAKickoffCallback)
(*pNv->DMAKickoffCallback)(pScrnInfo);
pScreen->BlockHandler = pNv->BlockHandler;
- (*pScreen->BlockHandler) (i, blockData, pTimeout, pReadmask);
+ (*pScreen->BlockHandler) (BLOCKHANDLER_ARGS);
pScreen->BlockHandler = NVBlockHandler;
if (pNv->VideoTimerCallback)
@@ -1201,9 +1196,9 @@ NVBlockHandler (
/* Mandatory */
static Bool
-NVCloseScreen(int scrnIndex, ScreenPtr pScreen)
+NVCloseScreen(CLOSE_SCREEN_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
NVPtr pNv = NVPTR(pScrn);
if (pScrn->vtSema) {
@@ -1222,8 +1217,10 @@ NVCloseScreen(int scrnIndex, ScreenPtr p
#ifndef AVOID_VGAHW
vgaHWUnmapMem(pScrn);
#endif
+#ifdef HAVE_XAA_H
if (pNv->AccelInfoRec)
XAADestroyInfoRec(pNv->AccelInfoRec);
+#endif
if (pNv->CursorInfoRec)
xf86DestroyCursorInfoRec(pNv->CursorInfoRec);
if (pNv->ShadowPtr)
@@ -1238,16 +1235,17 @@ NVCloseScreen(int scrnIndex, ScreenPtr p
pScrn->vtSema = FALSE;
pScreen->CloseScreen = pNv->CloseScreen;
pScreen->BlockHandler = pNv->BlockHandler;
- return (*pScreen->CloseScreen)(scrnIndex, pScreen);
+ return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS);
}
static void
-NVEnableDisableFBAccess(int scrnIndex, Bool enable)
+NVEnableDisableFBAccess(SCRN_ARG_TYPE arg, Bool enable)
{
- NVPtr pNv = NVPTR(xf86Screens[scrnIndex]);
+ SCRN_INFO_PTR(arg);
+ NVPtr pNv = NVPTR(pScrn);
pNv->accessEnabled = enable;
- pNv->EnableDisableFBAccess(scrnIndex, enable);
+ pNv->EnableDisableFBAccess(arg, enable);
}
@@ -1255,16 +1253,17 @@ NVEnableDisableFBAccess(int scrnIndex, B
/* Optional */
static void
-NVFreeScreen(int scrnIndex, int flags)
+NVFreeScreen(FREE_SCREEN_ARGS_DECL)
{
+ SCRN_INFO_PTR(arg);
/*
* This only gets called when a screen is being deleted. It does not
* get called routinely at the end of a server generation.
*/
if (xf86LoaderCheckSymbol("vgaHWFreeHWRec"))
- vgaHWFreeHWRec(xf86Screens[scrnIndex]);
- NVFreeRec(xf86Screens[scrnIndex]);
+ vgaHWFreeHWRec(pScrn);
+ NVFreeRec(pScrn);
}
@@ -1272,9 +1271,10 @@ NVFreeScreen(int scrnIndex, int flags)
/* Optional */
static ModeStatus
-NVValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
+NVValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, int flags)
{
- NVPtr pNv = NVPTR(xf86Screens[scrnIndex]);
+ SCRN_INFO_PTR(arg);
+ NVPtr pNv = NVPTR(pScrn);
if(pNv->fpWidth && pNv->fpHeight)
if((pNv->fpWidth < mode->HDisplay) || (pNv->fpHeight < mode->VDisplay))
@@ -1546,6 +1546,7 @@ NVPreInit(ScrnInfoPtr pScrn, int flags)
xf86FreeInt10(pNv->pInt);
return FALSE;
}
+ vgaHWSetStdFuncs(VGAHWPTR(pScrn));
/* We use a programmable clock */
pScrn->progClock = TRUE;
@@ -2051,9 +2052,9 @@ NVPreInit(ScrnInfoPtr pScrn, int flags)
/* Load XAA if needed */
if (!pNv->NoAccel) {
if (!xf86LoadSubModule(pScrn, "xaa")) {
- xf86FreeInt10(pNv->pInt);
- NVFreeRec(pScrn);
- return FALSE;
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Falling back to shadwwfb\n");
+ pNv->NoAccel = 1;
+ pNv->ShadowFB = 1;
}
}
@@ -2382,7 +2383,7 @@ NVDPMSSet(ScrnInfoPtr pScrn, int PowerMa
/* This gets called at the start of each server generation */
static Bool
-NVScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+NVScreenInit(SCREEN_INIT_ARGS_DECL)
{
ScrnInfoPtr pScrn;
vgaHWPtr hwp;
@@ -2396,7 +2397,7 @@ NVScreenInit(int scrnIndex, ScreenPtr pS
/*
* First get the ScrnInfoRec
*/
- pScrn = xf86Screens[pScreen->myNum];
+ pScrn = xf86ScreenToScrn(pScreen);
hwp = VGAHWPTR(pScrn);
pNv = NVPTR(pScrn);
@@ -2439,7 +2440,7 @@ NVScreenInit(int scrnIndex, ScreenPtr pS
/* Darken the screen for aesthetic reasons and set the viewport */
NVSaveScreen(pScreen, SCREEN_SAVER_ON);
- pScrn->AdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0);
+ pScrn->AdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0));
/*
* The next step is to setup the screen's visuals, and initialise the
@@ -2509,7 +2510,7 @@ NVScreenInit(int scrnIndex, ScreenPtr pS
displayWidth, pScrn->bitsPerPixel);
break;
default:
- xf86DrvMsg(scrnIndex, X_ERROR,
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"Internal error: invalid bpp (%d) in NVScreenInit\n",
pScrn->bitsPerPixel);
ret = FALSE;
Index: xsrc/external/mit/xf86-video-r128/dist/src/r128.h
diff -u xsrc/external/mit/xf86-video-r128/dist/src/r128.h:1.3 xsrc/external/mit/xf86-video-r128/dist/src/r128.h:1.4
--- xsrc/external/mit/xf86-video-r128/dist/src/r128.h:1.3 Thu Dec 23 04:32:50 2010
+++ xsrc/external/mit/xf86-video-r128/dist/src/r128.h Sun Jun 2 08:29:33 2013
@@ -43,8 +43,16 @@
/* PCI support */
#include "xf86Pci.h"
+ /* EXA support */
+#ifdef USE_EXA
+#include "exa.h"
+#endif
+
/* XAA and Cursor Support */
+#ifdef HAVE_XAA_H
#include "xaa.h"
+#endif
+#include "xf86fbman.h"
#include "xf86Cursor.h"
/* DDC support */
@@ -53,18 +61,55 @@
/* Xv support */
#include "xf86xv.h"
-#include "r128_probe.h"
-
/* DRI support */
-#ifdef XF86DRI
+#ifndef XF86DRI
+#undef R128DRI
+#endif
+
+#if R128DRI
#define _XF86DRI_SERVER_
#include "r128_dripriv.h"
#include "dri.h"
#include "GL/glxint.h"
#endif
+#include "fb.h"
+
+#include "compat-api.h"
#include "atipcirename.h"
+#include "r128_probe.h"
+
+#if HAVE_BYTESWAP_H
+#include <byteswap.h>
+#elif defined(USE_SYS_ENDIAN_H)
+#include <sys/endian.h>
+#else
+#define bswap_16(value) \
+ ((((value) & 0xff) << 8) | ((value) >> 8))
+
+#define bswap_32(value) \
+ (((uint32_t)bswap_16((uint16_t)((value) & 0xffff)) << 16) | \
+ (uint32_t)bswap_16((uint16_t)((value) >> 16)))
+
+#define bswap_64(value) \
+ (((uint64_t)bswap_32((uint32_t)((value) & 0xffffffff)) \
+ << 32) | \
+ (uint64_t)bswap_32((uint32_t)((value) >> 32)))
+#endif
+
+#if X_BYTE_ORDER == X_BIG_ENDIAN
+#define le32_to_cpu(x) bswap_32(x)
+#define le16_to_cpu(x) bswap_16(x)
+#define cpu_to_le32(x) bswap_32(x)
+#define cpu_to_le16(x) bswap_16(x)
+#else
+#define le32_to_cpu(x) (x)
+#define le16_to_cpu(x) (x)
+#define cpu_to_le32(x) (x)
+#define cpu_to_le16(x) (x)
+#endif
+
#define R128_DEBUG 0 /* Turn off debugging output */
#define R128_IDLE_RETRY 32 /* Fall out of idle loops after this count */
#define R128_TIMEOUT 2000000 /* Fall out of wait loops after this count */
@@ -74,6 +119,8 @@
#define R128_NAME "R128"
#if R128_DEBUG
+#include "r128_version.h"
+
#define R128TRACE(x) \
do { \
ErrorF("(**) %s(%d): ", R128_NAME, pScrn->scrnIndex); \
@@ -225,6 +272,34 @@ typedef enum
MT_STV
} R128MonitorType;
+#ifdef USE_EXA
+struct r128_2d_state {
+ Bool in_use;
+ Bool composite_setup;
+ uint32_t dst_pitch_offset;
+ uint32_t src_pitch_offset;
+ uint32_t dp_gui_master_cntl;
+ uint32_t dp_cntl;
+ uint32_t dp_write_mask;
+ uint32_t dp_brush_frgd_clr;
+ uint32_t dp_brush_bkgd_clr;
+ uint32_t dp_src_frgd_clr;
+ uint32_t dp_src_bkgd_clr;
+ uint32_t default_sc_bottom_right;
+#if defined(R128DRI) && defined(RENDER)
+ Bool has_mask;
+ int x_offset;
+ int y_offset;
+ int widths[2];
+ int heights[2];
+ Bool is_transform[2];
+ PictTransform *transform[2];
+ PixmapPtr src_pix;
+ PixmapPtr msk_pix;
+#endif
+};
+#endif
+
typedef struct {
EntityInfoPtr pEnt;
pciVideoPtr PciInfo;
@@ -270,13 +345,24 @@ typedef struct {
R128SaveRec SavedReg; /* Original (text) mode */
R128SaveRec ModeReg; /* Current mode */
- Bool (*CloseScreen)(int, ScreenPtr);
- void (*BlockHandler)(int, pointer, pointer, pointer);
+ Bool (*CloseScreen)(CLOSE_SCREEN_ARGS_DECL);
+ void (*BlockHandler)(BLOCKHANDLER_ARGS_DECL);
Bool PaletteSavedOnVT; /* Palette saved on last VT switch */
+#ifdef HAVE_XAA_H
XAAInfoRecPtr accel;
+#endif
Bool accelOn;
+
+ Bool useEXA;
+ Bool RenderAccel;
+#ifdef USE_EXA
+ ExaDriverPtr ExaDriver;
+ XF86ModReqInfo exaReq;
+ struct r128_2d_state state_2d;
+#endif
+
xf86CursorInfoPtr cursor;
unsigned long cursor_start;
unsigned long cursor_end;
@@ -307,14 +393,14 @@ typedef struct {
int scanline_y;
int scanline_w;
int scanline_h;
-#ifdef XF86DRI
+#ifdef R128DRI
int scanline_hpass;
int scanline_x1clip;
int scanline_x2clip;
int scanline_rop;
int scanline_fg;
int scanline_bg;
-#endif /* XF86DRI */
+#endif /* R128DRI */
int scanline_words;
int scanline_direct;
int scanline_bpp; /* Only used for ImageWrite */
@@ -326,7 +412,7 @@ typedef struct {
DGAFunctionRec DGAFuncs;
R128FBLayout CurrentLayout;
-#ifdef XF86DRI
+#ifdef R128DRI
Bool directRenderingEnabled;
DRIInfoPtr pDRIInfo;
int drmFD;
@@ -478,7 +564,7 @@ extern int R128MinBits(int val);
extern void R128InitVideo(ScreenPtr pScreen);
-#ifdef XF86DRI
+#ifdef R128DRI
extern Bool R128DRIScreenInit(ScreenPtr pScreen);
extern void R128DRICloseScreen(ScreenPtr pScreen);
extern Bool R128DRIFinishScreenInit(ScreenPtr pScreen);
@@ -521,6 +607,14 @@ extern void R128CCEReleaseIndirec
extern void R128CCEWaitForIdle(ScrnInfoPtr pScrn);
extern int R128CCEStop(ScrnInfoPtr pScrn);
+#ifdef USE_EXA
+extern Bool R128EXAInit(ScreenPtr pScreen);
+extern Bool R128GetDatatypeBpp(int bpp, uint32_t *type);
+extern Bool R128GetPixmapOffsetPitch(PixmapPtr pPix, uint32_t *pitch_offset);
+extern void R128DoPrepareCopy(ScrnInfoPtr pScrn, uint32_t src_pitch_offset,
+ uint32_t dst_pitch_offset, uint32_t datatype, int alu, Pixel planemask);
+#endif
+
#define CCE_PACKET0( reg, n ) \
(R128_CCE_PACKET0 | ((n) << 16) | ((reg) >> 2))
Index: xsrc/external/mit/xf86-video-r128/dist/src/r128_driver.c
diff -u xsrc/external/mit/xf86-video-r128/dist/src/r128_driver.c:1.7 xsrc/external/mit/xf86-video-r128/dist/src/r128_driver.c:1.8
--- xsrc/external/mit/xf86-video-r128/dist/src/r128_driver.c:1.7 Wed Jul 13 22:43:04 2011
+++ xsrc/external/mit/xf86-video-r128/dist/src/r128_driver.c Sun Jun 2 08:29:33 2013
@@ -71,15 +71,13 @@
#include "r128_reg.h"
#include "r128_version.h"
-#ifdef XF86DRI
+#ifdef R128DRI
#define _XF86DRI_SERVER_
#include "r128_dri.h"
#include "r128_common.h"
#include "r128_sarea.h"
#endif
-#include "fb.h"
-
/* colormap initialization */
#include "micmap.h"
@@ -128,7 +126,7 @@
#define USE_CRT_ONLY 0
/* Forward definitions for driver functions */
-static Bool R128CloseScreen(int scrnIndex, ScreenPtr pScreen);
+static Bool R128CloseScreen(CLOSE_SCREEN_ARGS_DECL);
static Bool R128SaveScreen(ScreenPtr pScreen, int mode);
static void R128Save(ScrnInfoPtr pScrn);
static void R128Restore(ScrnInfoPtr pScrn);
@@ -143,7 +141,7 @@ typedef enum {
OPTION_SW_CURSOR,
OPTION_DAC_6BIT,
OPTION_DAC_8BIT,
-#ifdef XF86DRI
+#ifdef R128DRI
OPTION_XV_DMA,
OPTION_IS_PCI,
OPTION_CCE_PIO,
@@ -168,7 +166,9 @@ typedef enum {
#endif
OPTION_VIDEO_KEY,
OPTION_SHOW_CACHE,
- OPTION_VGA_ACCESS
+ OPTION_VGA_ACCESS,
+ OPTION_ACCELMETHOD,
+ OPTION_RENDERACCEL
} R128Opts;
static const OptionInfoRec R128Options[] = {
@@ -176,7 +176,7 @@ static const OptionInfoRec R128Options[]
{ OPTION_SW_CURSOR, "SWcursor", OPTV_BOOLEAN, {0}, FALSE },
{ OPTION_DAC_6BIT, "Dac6Bit", OPTV_BOOLEAN, {0}, FALSE },
{ OPTION_DAC_8BIT, "Dac8Bit", OPTV_BOOLEAN, {0}, TRUE },
-#ifdef XF86DRI
+#ifdef R128DRI
{ OPTION_XV_DMA, "DMAForXv", OPTV_BOOLEAN, {0}, FALSE },
{ OPTION_IS_PCI, "ForcePCIMode", OPTV_BOOLEAN, {0}, FALSE },
{ OPTION_CCE_PIO, "CCEPIOMode", OPTV_BOOLEAN, {0}, FALSE },
@@ -198,6 +198,8 @@ static const OptionInfoRec R128Options[]
{ OPTION_VIDEO_KEY, "VideoKey", OPTV_INTEGER, {0}, FALSE },
{ OPTION_SHOW_CACHE, "ShowCache", OPTV_BOOLEAN, {0}, FALSE },
{ OPTION_VGA_ACCESS, "VGAAccess", OPTV_BOOLEAN, {0}, TRUE },
+ { OPTION_ACCELMETHOD, "AccelMethod", OPTV_STRING, {0}, FALSE },
+ { OPTION_RENDERACCEL, "RenderAccel", OPTV_BOOLEAN, {0}, FALSE },
{ -1, NULL, OPTV_NONE, {0}, FALSE }
};
@@ -242,7 +244,7 @@ static Bool R128GetRec(ScrnInfoPtr pScrn
static void R128FreeRec(ScrnInfoPtr pScrn)
{
if (!pScrn || !pScrn->driverPrivate) return;
- xfree(pScrn->driverPrivate);
+ free(pScrn->driverPrivate);
pScrn->driverPrivate = NULL;
}
@@ -531,9 +533,9 @@ static Bool R128GetBIOSParameters(ScrnIn
#ifdef XSERVER_LIBPCIACCESS
int size = info->PciInfo->rom_size > R128_VBIOS_SIZE ? info->PciInfo->rom_size : R128_VBIOS_SIZE;
- info->VBIOS = xalloc(size);
+ info->VBIOS = malloc(size);
#else
- info->VBIOS = xalloc(R128_VBIOS_SIZE);
+ info->VBIOS = malloc(R128_VBIOS_SIZE);
#endif
if (!info->VBIOS) {
@@ -566,7 +568,7 @@ static Bool R128GetBIOSParameters(ScrnIn
}
if (info->VBIOS[0] != 0x55 || info->VBIOS[1] != 0xaa) {
info->BIOSAddr = 0x00000000;
- xfree(info->VBIOS);
+ free(info->VBIOS);
info->VBIOS = NULL;
xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
"Video BIOS not found!\n");
@@ -983,14 +985,6 @@ static Bool R128PreInitConfig(ScrnInfoPt
/* BIOS */
from = X_PROBED;
info->BIOSAddr = info->PciInfo->biosBase & 0xfffe0000;
- if (dev->BiosBase) {
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "BIOS address override, using 0x%08lx instead of 0x%08lx\n",
- dev->BiosBase,
- info->BIOSAddr);
- info->BIOSAddr = dev->BiosBase;
- from = X_CONFIG;
- }
if (info->BIOSAddr) {
xf86DrvMsg(pScrn->scrnIndex, from,
"BIOS at 0x%08lx\n", info->BIOSAddr);
@@ -1234,7 +1228,7 @@ static Bool R128PreInitConfig(ScrnInfoPt
}
}
-#ifdef XF86DRI
+#ifdef R128DRI
/* DMA for Xv */
info->DMAForXv = xf86ReturnOptValBool(info->Options, OPTION_XV_DMA, FALSE);
if (info->DMAForXv) {
@@ -1420,7 +1414,7 @@ static Bool R128GetDFPInfo(ScrnInfoPtr p
OUTREG(info->DDCReg, INREG(info->DDCReg)
& ~(CARD32)(R128_GPIO_MONID_A_0 | R128_GPIO_MONID_A_3));
- MonInfo = xf86DoEDID_DDC2(pScrn->scrnIndex, info->pI2CBus);
+ MonInfo = xf86DoEDID_DDC2(XF86_SCRN_ARG(pScrn), info->pI2CBus);
#ifdef __NetBSD__
if (MonInfo == NULL) {
struct wsdisplayio_edid_info ei;
@@ -1598,7 +1592,7 @@ static void R128SetSyncRangeFromEdid(Scr
}
/***********
- xfree's xf86ValidateModes routine deosn't work well with DFPs
+ free's xf86ValidateModes routine deosn't work well with DFPs
here is our own validation routine. All modes between
640<=XRes<=MaxRes and 480<=YRes<=MaxYRes will be permitted.
NOTE: RageProII doesn't support rmx, can only work with the
@@ -1834,17 +1828,6 @@ static Bool R128PreInitCursor(ScrnInfoPt
return TRUE;
}
-/* This is called by R128PreInit to initialize hardware acceleration. */
-static Bool R128PreInitAccel(ScrnInfoPtr pScrn)
-{
- R128InfoPtr info = R128PTR(pScrn);
-
- if (!xf86ReturnOptValBool(info->Options, OPTION_NOACCEL, FALSE)) {
- if (!xf86LoadSubModule(pScrn, "xaa")) return FALSE;
- }
- return TRUE;
-}
-
static Bool R128PreInitInt10(ScrnInfoPtr pScrn, xf86Int10InfoPtr *ppInt10)
{
R128InfoPtr info = R128PTR(pScrn);
@@ -1858,7 +1841,7 @@ static Bool R128PreInitInt10(ScrnInfoPtr
return TRUE;
}
-#ifdef XF86DRI
+#ifdef R128DRI
static Bool R128PreInitDRI(ScrnInfoPtr pScrn)
{
R128InfoPtr info = R128PTR(pScrn);
@@ -2068,7 +2051,7 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int
/* We can't do this until we have a
pScrn->display. */
xf86CollectOptions(pScrn, NULL);
- if (!(info->Options = xalloc(sizeof(R128Options)))) goto fail;
+ if (!(info->Options = malloc(sizeof(R128Options)))) goto fail;
memcpy(info->Options, R128Options, sizeof(R128Options));
xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, info->Options);
@@ -2094,8 +2077,10 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int
} else
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "VGAAccess option set to FALSE,"
" VGA module load skipped\n");
- if (info->VGAAccess)
+ if (info->VGAAccess) {
+ vgaHWSetStdFuncs(VGAHWPTR(pScrn));
vgaHWGetIOBase(VGAHWPTR(pScrn));
+ }
#else
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "VGAHW support not compiled, VGA "
"module load skipped\n");
@@ -2157,15 +2142,13 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int
if (!R128PreInitCursor(pScrn)) goto fail;
- if (!R128PreInitAccel(pScrn)) goto fail;
-
-#ifdef XF86DRI
+#ifdef R128DRI
if (!R128PreInitDRI(pScrn)) goto fail;
#endif
/* Free the video bios (if applicable) */
if (info->VBIOS) {
- xfree(info->VBIOS);
+ free(info->VBIOS);
info->VBIOS = NULL;
}
@@ -2184,7 +2167,7 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int
/* Free the video bios (if applicable) */
if (info->VBIOS) {
- xfree(info->VBIOS);
+ free(info->VBIOS);
info->VBIOS = NULL;
}
@@ -2259,19 +2242,19 @@ static void R128LoadPalette(ScrnInfoPtr
}
static void
-R128BlockHandler(int i, pointer blockData, pointer pTimeout, pointer pReadmask)
+R128BlockHandler(BLOCKHANDLER_ARGS_DECL)
{
- ScreenPtr pScreen = screenInfo.screens[i];
- ScrnInfoPtr pScrn = xf86Screens[i];
+ SCREEN_PTR(arg);
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
-#ifdef XF86DRI
+#ifdef R128DRI
if (info->directRenderingEnabled)
FLUSH_RING();
#endif
pScreen->BlockHandler = info->BlockHandler;
- (*pScreen->BlockHandler) (i, blockData, pTimeout, pReadmask);
+ (*pScreen->BlockHandler) (BLOCKHANDLER_ARGS);
pScreen->BlockHandler = R128BlockHandler;
if(info->VideoTimerCallback) {
@@ -2279,18 +2262,94 @@ R128BlockHandler(int i, pointer blockDat
}
}
+#ifdef USE_EXA
+Bool R128VerboseInitEXA(ScreenPtr pScreen)
+{
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
+ R128InfoPtr info = R128PTR(pScrn);
+
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Going to init EXA...\n");
+
+ if (R128EXAInit(pScreen)) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "EXA Acceleration enabled\n");
+ info->accelOn = TRUE;
+
+ return TRUE;
+ } else {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "EXA Acceleration initialization failed\n");
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "EXA Acceleration disabled\n");
+ info->accelOn = FALSE;
+
+ return FALSE;
+ }
+}
+#endif
+
+void R128VerboseInitAccel(Bool noAccel, ScreenPtr pScreen)
+{
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
+ R128InfoPtr info = R128PTR(pScrn);
+
+ if (!noAccel) {
+ if (R128AccelInit(pScreen)) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Acceleration enabled\n");
+ info->accelOn = TRUE;
+ } else {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "Acceleration initialization failed\n");
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Acceleration disabled\n");
+ info->accelOn = FALSE;
+ }
+ } else {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Acceleration disabled\n");
+ info->accelOn = FALSE;
+ }
+}
+
/* Called at the start of each server generation. */
-Bool R128ScreenInit(int scrnIndex, ScreenPtr pScreen,
- int argc, char **argv)
+Bool R128ScreenInit(SCREEN_INIT_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
BoxRec MemBox;
- int y2;
+ int width_bytes = (pScrn->displayWidth *
+ info->CurrentLayout.pixel_bytes);
+ int x1 = 0, x2 = 0, y1 = 0, y2 = 0;
+ Bool noAccel;
+#ifdef USE_EXA
+ ExaOffscreenArea* osArea = NULL;
+#else
+ void* osArea = NULL;
+#endif
+ char *optstr;
R128TRACE(("R128ScreenInit %x %d\n", pScrn->memPhysBase, pScrn->fbOffset));
+ info->useEXA = FALSE;
+#ifdef USE_EXA
+#ifndef HAVE_XAA_H
+ info->useEXA = TRUE;
+#endif
+#endif
-#ifdef XF86DRI
+#ifdef USE_EXA
+ optstr = (char *)xf86GetOptValString(info->Options, OPTION_ACCELMETHOD);
+ if (optstr != NULL) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "AccelMethod option found\n");
+ if (xf86NameCmp(optstr, "EXA") == 0) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "AccelMethod is set to EXA, turning EXA on\n");
+ info->useEXA = TRUE;
+ }
+ }
+#ifdef RENDER
+ info->RenderAccel = xf86ReturnOptValBool(info->Options, OPTION_RENDERACCEL, TRUE);
+ if (info->RenderAccel)
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Acceleration of RENDER operations will be enabled"
+ "upon successful loading of DRI and EXA\n");
+#endif
+#endif
+
+#ifdef R128DRI
/* Turn off the CCE for now. */
info->CCEInUse = FALSE;
info->indirectBuffer = NULL;
@@ -2299,7 +2358,7 @@ Bool R128ScreenInit(int scrnIndex, Scree
if (!R128MapMem(pScrn)) return FALSE;
pScrn->fbOffset = 0;
if(info->IsSecondary) pScrn->fbOffset = pScrn->videoRam * 1024;
-#ifdef XF86DRI
+#ifdef R128DRI
info->fbX = 0;
info->fbY = 0;
info->frontOffset = 0;
@@ -2317,7 +2376,7 @@ Bool R128ScreenInit(int scrnIndex, Scree
if (!R128ModeInit(pScrn, pScrn->currentMode)) return FALSE;
R128SaveScreen(pScreen, SCREEN_SAVER_ON);
- pScrn->AdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0);
+ pScrn->AdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0));
/* Visual setup */
miClearVisualTypes();
@@ -2327,7 +2386,9 @@ Bool R128ScreenInit(int scrnIndex, Scree
pScrn->defaultVisual)) return FALSE;
miSetPixmapDepths ();
-#ifdef XF86DRI
+ noAccel = xf86ReturnOptValBool(info->Options, OPTION_NOACCEL, FALSE);
+
+#ifdef R128DRI
/* Setup DRI after visuals have been
established, but before fbScreenInit is
called. fbScreenInit will eventually
@@ -2337,16 +2398,14 @@ Bool R128ScreenInit(int scrnIndex, Scree
/* FIXME: When we move to dynamic allocation of back and depth
buffers, we will want to revisit the following check for 3
times the virtual size of the screen below. */
- int width_bytes = (pScrn->displayWidth *
- info->CurrentLayout.pixel_bytes);
int maxy = info->FbMapSize / width_bytes;
- if (xf86ReturnOptValBool(info->Options, OPTION_NOACCEL, FALSE)) {
- xf86DrvMsg(scrnIndex, X_WARNING,
+ if (noAccel) {
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
"Acceleration disabled, not initializing the DRI\n");
info->directRenderingEnabled = FALSE;
} else if (maxy <= pScrn->virtualY * 3) {
- xf86DrvMsg(scrnIndex, X_WARNING,
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
"Static buffer allocation failed -- "
"need at least %d kB video memory\n",
(pScrn->displayWidth * pScrn->virtualY *
@@ -2361,7 +2420,7 @@ Bool R128ScreenInit(int scrnIndex, Scree
if(xf86IsEntityShared(pScrn->entityList[0]))
{
info->directRenderingEnabled = FALSE;
- xf86DrvMsg(scrnIndex, X_WARNING,
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
"Direct Rendering Disabled -- "
"Dual-head configuration is not working with DRI "
"at present.\nPlease use only one Device/Screen "
@@ -2412,11 +2471,9 @@ Bool R128ScreenInit(int scrnIndex, Scree
fbPictureInit (pScreen, 0, 0);
/* Memory manager setup */
-#ifdef XF86DRI
+#ifdef R128DRI
if (info->directRenderingEnabled) {
- FBAreaPtr fbarea;
- int width_bytes = (pScrn->displayWidth *
- info->CurrentLayout.pixel_bytes);
+ FBAreaPtr fbarea = NULL;
int cpp = info->CurrentLayout.pixel_bytes;
int bufferSize = pScrn->virtualY * width_bytes;
int l, total;
@@ -2494,52 +2551,103 @@ Bool R128ScreenInit(int scrnIndex, Scree
MemBox.x2 = pScrn->displayWidth;
MemBox.y2 = scanlines;
- if (!xf86InitFBManager(pScreen, &MemBox)) {
- xf86DrvMsg(scrnIndex, X_ERROR,
- "Memory manager initialization to (%d,%d) (%d,%d) failed\n",
- MemBox.x1, MemBox.y1, MemBox.x2, MemBox.y2);
- return FALSE;
- } else {
- int width, height;
-
- xf86DrvMsg(scrnIndex, X_INFO,
- "Memory manager initialized to (%d,%d) (%d,%d)\n",
- MemBox.x1, MemBox.y1, MemBox.x2, MemBox.y2);
- if ((fbarea = xf86AllocateOffscreenArea(pScreen,
- pScrn->displayWidth,
- 2, 0, NULL, NULL, NULL))) {
- xf86DrvMsg(scrnIndex, X_INFO,
- "Reserved area from (%d,%d) to (%d,%d)\n",
- fbarea->box.x1, fbarea->box.y1,
- fbarea->box.x2, fbarea->box.y2);
+ if (!info->useEXA) {
+ if (!xf86InitFBManager(pScreen, &MemBox)) {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "Memory manager initialization to (%d,%d) (%d,%d) failed\n",
+ MemBox.x1, MemBox.y1, MemBox.x2, MemBox.y2);
+ return FALSE;
} else {
- xf86DrvMsg(scrnIndex, X_ERROR, "Unable to reserve area\n");
- }
- if (xf86QueryLargestOffscreenArea(pScreen, &width,
- &height, 0, 0, 0)) {
- xf86DrvMsg(scrnIndex, X_INFO,
- "Largest offscreen area available: %d x %d\n",
- width, height);
+ int width, height;
+
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Memory manager initialized to (%d,%d) (%d,%d)\n",
+ MemBox.x1, MemBox.y1, MemBox.x2, MemBox.y2);
+ if ((fbarea = xf86AllocateOffscreenArea(pScreen,
+ pScrn->displayWidth,
+ 2, 0, NULL, NULL, NULL))) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Reserved area from (%d,%d) to (%d,%d)\n",
+ fbarea->box.x1, fbarea->box.y1,
+ fbarea->box.x2, fbarea->box.y2);
+ } else {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Unable to reserve area\n");
+ }
+ if (xf86QueryLargestOffscreenArea(pScreen, &width,
+ &height, 0, 0, 0)) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Largest offscreen area available: %d x %d\n",
+ width, height);
+ }
+
+ R128VerboseInitAccel(noAccel, pScreen);
}
}
+#ifdef USE_EXA
+ else {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Filling in EXA memory info\n");
+
+ R128VerboseInitAccel(noAccel, pScreen);
+ info->ExaDriver->offScreenBase = pScrn->virtualY * width_bytes;
+
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Filled in offs\n");
+
+ /* Don't give EXA the true full memory size, because the
+ textureSize sized chunk on the end is handled by DRI */
+ info->ExaDriver->memorySize = total;
+
+ R128VerboseInitEXA(pScreen);
+ }
+#endif
/* Allocate the shared back buffer */
- if ((fbarea = xf86AllocateOffscreenArea(pScreen,
- pScrn->virtualX,
- pScrn->virtualY,
- 32, NULL, NULL, NULL))) {
- xf86DrvMsg(scrnIndex, X_INFO,
- "Reserved back buffer from (%d,%d) to (%d,%d)\n",
- fbarea->box.x1, fbarea->box.y1,
- fbarea->box.x2, fbarea->box.y2);
-
- info->backX = fbarea->box.x1;
- info->backY = fbarea->box.y1;
- info->backOffset = (fbarea->box.y1 * width_bytes +
- fbarea->box.x1 * cpp);
+ if(!info->useEXA) {
+ fbarea = xf86AllocateOffscreenArea(pScreen,
+ pScrn->virtualX,
+ pScrn->virtualY,
+ 32, NULL, NULL, NULL);
+
+ if (fbarea) {
+ x1 = fbarea->box.x1;
+ x2 = fbarea->box.x2;
+ y1 = fbarea->box.y1;
+ y2 = fbarea->box.y2;
+ }
+ }
+#ifdef USE_EXA
+ else {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Actually trying an EXA allocation...\n");
+ osArea = exaOffscreenAlloc(pScreen,
+ pScrn->virtualY * width_bytes,
+ 32, TRUE, NULL, NULL);
+
+ if (osArea) {
+ x1 = osArea->offset % width_bytes;
+ x2 = (osArea->offset + osArea->size) % width_bytes;
+ y1 = osArea->offset / width_bytes;
+ y2 = (osArea->offset + osArea->size) / width_bytes;
+
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Went swimmingly...\n");
+ }
+ }
+#endif
+
+ if ((!info->useEXA && fbarea) || (info->useEXA && osArea)) {
+ /* info->backOffset = y1 * width_bytes + x1 * cpp; */
+ info->backOffset = R128_ALIGN(y1 * width_bytes + x1 * cpp, 16);
+ info->backX = info->backOffset % width_bytes;
+ info->backY = info->backOffset / width_bytes;
info->backPitch = pScrn->displayWidth;
+
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Reserved back buffer from (%d,%d) to (%d,%d) offset: %x\n",
+ x1, y1,
+ x2, y2, info->backOffset);
} else {
- xf86DrvMsg(scrnIndex, X_ERROR, "Unable to reserve back buffer\n");
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Unable to reserve back buffer\n");
info->backX = -1;
info->backY = -1;
info->backOffset = -1;
@@ -2547,27 +2655,51 @@ Bool R128ScreenInit(int scrnIndex, Scree
}
/* Allocate the shared depth buffer */
- if ((fbarea = xf86AllocateOffscreenArea(pScreen,
- pScrn->virtualX,
- pScrn->virtualY + 1,
- 32, NULL, NULL, NULL))) {
- xf86DrvMsg(scrnIndex, X_INFO,
- "Reserved depth buffer from (%d,%d) to (%d,%d)\n",
- fbarea->box.x1, fbarea->box.y1,
- fbarea->box.x2, fbarea->box.y2);
-
- info->depthX = fbarea->box.x1;
- info->depthY = fbarea->box.y1;
- info->depthOffset = (fbarea->box.y1 * width_bytes +
- fbarea->box.x1 * cpp);
+ if(!info->useEXA) {
+ fbarea = xf86AllocateOffscreenArea(pScreen,
+ pScrn->virtualX,
+ pScrn->virtualY + 1,
+ 32, NULL, NULL, NULL);
+ if (fbarea) {
+ x1 = fbarea->box.x1;
+ x2 = fbarea->box.x2;
+ y1 = fbarea->box.y1;
+ y2 = fbarea->box.y2;
+ }
+ }
+#ifdef USE_EXA
+ else {
+ osArea = exaOffscreenAlloc(pScreen,
+ (pScrn->virtualY + 1) * width_bytes,
+ 32, TRUE, NULL, NULL);
+
+ if (osArea) {
+ x1 = osArea->offset % width_bytes;
+ x2 = (osArea->offset + osArea->size) % width_bytes;
+ y1 = osArea->offset / width_bytes;
+ y2 = (osArea->offset + osArea->size) / width_bytes;
+ }
+ }
+#endif
+
+ if ((!info->useEXA && fbarea) || (info->useEXA && osArea)) {
+ /* info->depthOffset = y1 * width_bytes + x1 * cpp; */
+ info->depthOffset = R128_ALIGN(y1 * width_bytes + x1 * cpp, 16);
+ info->depthX = info->depthOffset % width_bytes;
+ info->depthY = info->depthOffset / width_bytes;
info->depthPitch = pScrn->displayWidth;
- info->spanOffset = ((fbarea->box.y2 - 1) * width_bytes +
- fbarea->box.x1 * cpp);
- xf86DrvMsg(scrnIndex, X_INFO,
+ info->spanOffset = (y2 - 1) * width_bytes + x1 * cpp;
+
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Reserved depth buffer from (%d,%d) to (%d,%d) offset: %x\n",
+ x1, y1,
+ x2, y2, info->depthOffset);
+
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
"Reserved depth span from (%d,%d) offset 0x%x\n",
- fbarea->box.x1, fbarea->box.y2 - 1, info->spanOffset);
+ x1, y2 - 1, info->spanOffset);
} else {
- xf86DrvMsg(scrnIndex, X_ERROR, "Unable to reserve depth buffer\n");
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Unable to reserve depth buffer\n");
info->depthX = -1;
info->depthY = -1;
info->depthOffset = -1;
@@ -2575,12 +2707,12 @@ Bool R128ScreenInit(int scrnIndex, Scree
info->spanOffset = -1;
}
- xf86DrvMsg(scrnIndex, X_INFO,
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
"Reserved %d kb for textures at offset 0x%x\n",
info->textureSize/1024, info->textureOffset);
}
else
-#endif
+#endif /* R128DRI */
{
MemBox.x1 = 0;
MemBox.y1 = 0;
@@ -2594,50 +2726,51 @@ Bool R128ScreenInit(int scrnIndex, Scree
if (y2 > 8191) y2 = 8191;
MemBox.y2 = y2;
- if (!xf86InitFBManager(pScreen, &MemBox)) {
- xf86DrvMsg(scrnIndex, X_ERROR,
- "Memory manager initialization to (%d,%d) (%d,%d) failed\n",
- MemBox.x1, MemBox.y1, MemBox.x2, MemBox.y2);
- return FALSE;
- } else {
- int width, height;
- FBAreaPtr fbarea;
-
- xf86DrvMsg(scrnIndex, X_INFO,
- "Memory manager initialized to (%d,%d) (%d,%d)\n",
- MemBox.x1, MemBox.y1, MemBox.x2, MemBox.y2);
- if ((fbarea = xf86AllocateOffscreenArea(pScreen, pScrn->displayWidth,
- 2, 0, NULL, NULL, NULL))) {
- xf86DrvMsg(scrnIndex, X_INFO,
- "Reserved area from (%d,%d) to (%d,%d)\n",
- fbarea->box.x1, fbarea->box.y1,
- fbarea->box.x2, fbarea->box.y2);
+ if (!info->useEXA) {
+ if (!xf86InitFBManager(pScreen, &MemBox)) {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "Memory manager initialization to (%d,%d) (%d,%d) failed\n",
+ MemBox.x1, MemBox.y1, MemBox.x2, MemBox.y2);
+ return FALSE;
} else {
- xf86DrvMsg(scrnIndex, X_ERROR, "Unable to reserve area\n");
- }
- if (xf86QueryLargestOffscreenArea(pScreen, &width, &height,
- 0, 0, 0)) {
- xf86DrvMsg(scrnIndex, X_INFO,
- "Largest offscreen area available: %d x %d\n",
- width, height);
+ int width, height;
+ FBAreaPtr fbarea;
+
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Memory manager initialized to (%d,%d) (%d,%d)\n",
+ MemBox.x1, MemBox.y1, MemBox.x2, MemBox.y2);
+ if ((fbarea = xf86AllocateOffscreenArea(pScreen, pScrn->displayWidth, 2, 0, NULL, NULL, NULL))) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Reserved area from (%d,%d) to (%d,%d)\n",
+ fbarea->box.x1, fbarea->box.y1,
+ fbarea->box.x2, fbarea->box.y2);
+ } else {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Unable to reserve area\n");
+ }
+ if (xf86QueryLargestOffscreenArea(pScreen, &width, &height, 0, 0, 0)) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Largest offscreen area available: %d x %d\n",
+ width, height);
+ }
+
+ R128VerboseInitAccel(noAccel, pScreen);
}
}
- }
+#ifdef USE_EXA
+ else {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Filling in EXA memory info\n");
- /* Acceleration setup */
- if (!xf86ReturnOptValBool(info->Options, OPTION_NOACCEL, FALSE)) {
- if (R128AccelInit(pScreen)) {
- xf86DrvMsg(scrnIndex, X_INFO, "Acceleration enabled\n");
- info->accelOn = TRUE;
- } else {
- xf86DrvMsg(scrnIndex, X_ERROR,
- "Acceleration initialization failed\n");
- xf86DrvMsg(scrnIndex, X_INFO, "Acceleration disabled\n");
- info->accelOn = FALSE;
+ R128VerboseInitAccel(noAccel, pScreen);
+ info->ExaDriver->offScreenBase = pScrn->virtualY * width_bytes;
+
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Filled in offs\n");
+
+ info->ExaDriver->memorySize = info->FbMapSize;
+ R128VerboseInitEXA(pScreen);
}
- } else {
- xf86DrvMsg(scrnIndex, X_INFO, "Acceleration disabled\n");
- info->accelOn = FALSE;
+#endif
}
/* DGA setup */
@@ -2663,18 +2796,18 @@ Bool R128ScreenInit(int scrnIndex, Scree
info->cursor_start / pScrn->displayWidth);
if (xf86QueryLargestOffscreenArea(pScreen, &width, &height,
0, 0, 0)) {
- xf86DrvMsg(scrnIndex, X_INFO,
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
"Largest offscreen area available: %d x %d\n",
width, height);
}
} else {
- xf86DrvMsg(scrnIndex, X_ERROR,
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"Hardware cursor initialization failed\n");
- xf86DrvMsg(scrnIndex, X_INFO, "Using software cursor\n");
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Using software cursor\n");
}
} else {
info->cursor_start = 0;
- xf86DrvMsg(scrnIndex, X_INFO, "Using software cursor\n");
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Using software cursor\n");
}
/* Colormap setup */
@@ -2720,7 +2853,7 @@ Bool R128ScreenInit(int scrnIndex, Scree
if (serverGeneration == 1)
xf86ShowUnusedOptions(pScrn->scrnIndex, pScrn->options);
-#ifdef XF86DRI
+#ifdef R128DRI
/* DRI finalization */
if (info->directRenderingEnabled) {
/* Now that mi, fb, drm and others have
@@ -3009,6 +3142,10 @@ static void R128RestorePLL2Registers(Scr
restore->p2pll_div_0,
restore->htotal_cntl2,
INPLL(pScrn, R128_P2PLL_CNTL)));
+ R128TRACE(("Wrote: rd=%d, fd=%d, pd=%d\n",
+ restore->p2pll_ref_div & R128_P2PLL_REF_DIV_MASK,
+ restore->p2pll_div_0 & R128_P2PLL_FB0_DIV_MASK,
+ (restore->p2pll_div_0 & R128_P2PLL_POST0_DIV_MASK) >>16));
usleep(5000); /* Let the clock to lock */
@@ -3466,7 +3603,7 @@ static void R128InitCommonRegisters(R128
save->subpic_cntl = 0;
save->viph_control = 0;
save->i2c_cntl_1 = 0;
-#ifdef XF86DRI
+#ifdef R128DRI
save->gen_int_cntl = info->gen_int_cntl;
#else
save->gen_int_cntl = 0;
@@ -3868,8 +4005,8 @@ static void R128InitPLLRegisters(ScrnInf
}
/* Define PLL2 registers for requested video mode. */
-static void R128InitPLL2Registers(R128SavePtr save, R128PLLPtr pll,
- double dot_clock)
+static void R128InitPLL2Registers(ScrnInfoPtr pScrn, R128SavePtr save,
+ R128PLLPtr pll, double dot_clock)
{
unsigned long freq = dot_clock * 100;
struct {
@@ -4131,7 +4268,7 @@ static Bool R128Init(ScrnInfoPtr pScrn,
if (!R128InitCrtc2Registers(pScrn, save,
pScrn->currentMode,info))
return FALSE;
- R128InitPLL2Registers(save, &info->pll, dot_clock);
+ R128InitPLL2Registers(pScrn, save, &info->pll, dot_clock);
if (!R128InitDDA2Registers(pScrn, save, &info->pll, info, mode))
return FALSE;
}
@@ -4187,7 +4324,7 @@ static Bool R128ModeInit(ScrnInfoPtr pSc
static Bool R128SaveScreen(ScreenPtr pScreen, int mode)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
Bool unblank;
unblank = xf86IsUnblank(mode);
@@ -4208,23 +4345,23 @@ static Bool R128SaveScreen(ScreenPtr pSc
* The workaround is to switch the mode, then switch to another VT, then
* switch back. --AGD
*/
-Bool R128SwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
+Bool R128SwitchMode(SWITCH_MODE_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
R128InfoPtr info = R128PTR(pScrn);
Bool ret;
info->SwitchingMode = TRUE;
- ret = R128ModeInit(xf86Screens[scrnIndex], mode);
+ ret = R128ModeInit(pScrn, mode);
info->SwitchingMode = FALSE;
return ret;
}
/* Used to disallow modes that are not supported by the hardware. */
-ModeStatus R128ValidMode(int scrnIndex, DisplayModePtr mode,
+ModeStatus R128ValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode,
Bool verbose, int flags)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
R128InfoPtr info = R128PTR(pScrn);
if (info->BIOSDisplay == R128_BIOS_DISPLAY_CRT)
@@ -4300,9 +4437,9 @@ ModeStatus R128ValidMode(int scrnIndex,
/* Adjust viewport into virtual desktop such that (0,0) in viewport space
is (x,y) in virtual space. */
-void R128AdjustFrame(int scrnIndex, int x, int y, int flags)
+void R128AdjustFrame(ADJUST_FRAME_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
R128InfoPtr info = R128PTR(pScrn);
unsigned char *R128MMIO = info->MMIO;
int Base;
@@ -4336,22 +4473,22 @@ void R128AdjustFrame(int scrnIndex, int
/* Called when VT switching back to the X server. Reinitialize the video
mode. */
-Bool R128EnterVT(int scrnIndex, int flags)
+Bool R128EnterVT(VT_FUNC_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
R128InfoPtr info = R128PTR(pScrn);
R128TRACE(("R128EnterVT\n"));
#ifndef AVOID_FBDEV
if (info->FBDev) {
- if (!fbdevHWEnterVT(scrnIndex,flags)) return FALSE;
+ if (!fbdevHWEnterVT(VT_FUNC_ARGS)) return FALSE;
} else
#endif
if (!R128ModeInit(pScrn, pScrn->currentMode)) return FALSE;
if (info->accelOn)
R128EngineInit(pScrn);
-#ifdef XF86DRI
+#ifdef R128DRI
if (info->directRenderingEnabled) {
if (info->irq) {
/* Need to make sure interrupts are enabled */
@@ -4364,31 +4501,35 @@ Bool R128EnterVT(int scrnIndex, int flag
#endif
info->PaletteSavedOnVT = FALSE;
- pScrn->AdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0);
+ pScrn->AdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0));
return TRUE;
}
/* Called when VT switching away from the X server. Restore the original
text mode. */
-void R128LeaveVT(int scrnIndex, int flags)
+void R128LeaveVT(VT_FUNC_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
R128InfoPtr info = R128PTR(pScrn);
R128SavePtr save = &info->ModeReg;
R128TRACE(("R128LeaveVT\n"));
-#ifdef XF86DRI
+#ifdef R128DRI
if (info->directRenderingEnabled) {
DRILock(pScrn->pScreen, 0);
R128CCE_STOP(pScrn, info);
}
+#ifdef USE_EXA
+ if (info->useEXA)
+ info->state_2d.composite_setup = FALSE;
+#endif
#endif
R128SavePalette(pScrn, save);
info->PaletteSavedOnVT = TRUE;
#ifndef AVOID_FBDEV
if (info->FBDev)
- fbdevHWLeaveVT(scrnIndex,flags);
+ fbdevHWLeaveVT(VT_FUNC_ARGS);
else
#endif
R128Restore(pScrn);
@@ -4398,14 +4539,14 @@ void R128LeaveVT(int scrnIndex, int flag
/* Called at the end of each server generation. Restore the original text
mode, unmap video memory, and unwrap and call the saved CloseScreen
function. */
-static Bool R128CloseScreen(int scrnIndex, ScreenPtr pScreen)
+static Bool R128CloseScreen(CLOSE_SCREEN_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
R128TRACE(("R128CloseScreen\n"));
-#ifdef XF86DRI
+#ifdef R128DRI
/* Disable direct rendering */
if (info->directRenderingEnabled) {
R128DRICloseScreen(pScreen);
@@ -4418,20 +4559,30 @@ static Bool R128CloseScreen(int scrnInde
R128UnmapMem(pScrn);
}
- if (info->accel) XAADestroyInfoRec(info->accel);
- info->accel = NULL;
+#ifdef USE_EXA
+ if (info->useEXA) {
+ exaDriverFini(pScreen);
+ free(info->ExaDriver);
+ } else
+#endif
+#ifdef HAVE_XAA_H
+ {
+ if (info->accel) XAADestroyInfoRec(info->accel);
+ info->accel = NULL;
+ }
+#endif
- if (info->scratch_save) xfree(info->scratch_save);
+ if (info->scratch_save) free(info->scratch_save);
info->scratch_save = NULL;
if (info->cursor) xf86DestroyCursorInfoRec(info->cursor);
info->cursor = NULL;
- if (info->DGAModes) xfree(info->DGAModes);
+ if (info->DGAModes) free(info->DGAModes);
info->DGAModes = NULL;
if (info->adaptor) {
- xfree(info->adaptor->pPortPrivates[0].ptr);
+ free(info->adaptor->pPortPrivates[0].ptr);
xf86XVFreeVideoAdaptorRec(info->adaptor);
info->adaptor = NULL;
}
@@ -4440,12 +4591,12 @@ static Bool R128CloseScreen(int scrnInde
pScreen->BlockHandler = info->BlockHandler;
pScreen->CloseScreen = info->CloseScreen;
- return (*pScreen->CloseScreen)(scrnIndex, pScreen);
+ return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS);
}
-void R128FreeScreen(int scrnIndex, int flags)
+void R128FreeScreen(FREE_SCREEN_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
R128InfoPtr info = R128PTR(pScrn);
R128TRACE(("R128FreeScreen\n"));