xserver-xorg-video-mga: Changes to 'upstream-experimental'
configure.ac | 26 +
src/Makefile.am | 8
src/binding.h | 31 -
src/client.h | 40 --
src/clientlx.c | 848 --------------------------------------------
src/compat-api.h | 99 +++++
src/mga.h | 110 ++---
src/mga_arc.c | 2
src/mga_bios.c | 3
src/mga_dac3026.c | 3
src/mga_dacG.c | 53 --
src/mga_dga.c | 26 -
src/mga_dh.c | 3
src/mga_dri.c | 110 ++---
src/mga_driver.c | 1037 ++++++++++++++----------------------------------------
src/mga_esc.c | 778 ----------------------------------------
src/mga_exa.c | 21 -
src/mga_g450pll.c | 3
src/mga_hwcurs.c | 3
src/mga_macros.h | 15
src/mga_merge.c | 128 ++----
src/mga_merge.h | 6
src/mga_reg.h | 3
src/mga_shadow.c | 7
src/mga_storm.c | 19
src/mga_vga.c | 8
src/mga_video.c | 58 +--
27 files changed, 618 insertions(+), 2830 deletions(-)
New commits:
commit cd41eacaeabf8227197d605b055713ca654633d5
Author: Dave Airlie <airlied@redhat.com>
Date: Tue Jul 17 16:05:09 2012 +1000
xf86-video-mga: bump to version 1.6.1
Signed-off-by: Dave Airlie <airlied@redhat.com>
diff --git a/configure.ac b/configure.ac
index cc2498e..1b6c20f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
# Initialize Autoconf
AC_PREREQ([2.60])
AC_INIT([xf86-video-mga],
- [1.6.0],
+ [1.6.1],
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
[xf86-video-mga])
AC_CONFIG_SRCDIR([Makefile.am])
commit f11a407ceb0857bb0d33811511117b490a8ae6ee
Author: Dave Airlie <airlied@gmail.com>
Date: Sun Jul 15 19:41:28 2012 +1000
mga: fix after XAA removal
Fix mga build after XAA removal.
Signed-off-by: Dave Airlie <airlied@redhat.com>
diff --git a/configure.ac b/configure.ac
index fd870b8..cc2498e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -126,8 +126,24 @@ if test "x$XSERVER_LIBPCIACCESS" = xyes; then
fi
AM_CONDITIONAL(XSERVER_LIBPCIACCESS, test "x$XSERVER_LIBPCIACCESS" = xyes)
-AM_CONDITIONAL(USE_XAA, true)
-AC_DEFINE(USE_XAA, 1, [Build support for XAA])
+
+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])
# Properly handle EXA.
AC_MSG_CHECKING([whether to enable EXA support])
diff --git a/src/Makefile.am b/src/Makefile.am
index 46f0265..79745d1 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -32,7 +32,6 @@ mga_drv_la_LIBADD = $(noinst_LTLIBRARIES)
mga_drv_la_SOURCES = \
binding.h \
client.h \
- mga_arc.c \
mga_bios.c \
mga_common.h \
mga_dac3026.c \
@@ -70,7 +69,8 @@ mga_drv_la_SOURCES += \
mga_exa.c
endif
-if USE_XAA
+if XAA
mga_drv_la_SOURCES += \
+ mga_arc.c \
mga_storm.c
endif
diff --git a/src/mga.h b/src/mga.h
index 5856a3f..34695c1 100644
--- a/src/mga.h
+++ b/src/mga.h
@@ -20,7 +20,10 @@
#include <stdio.h>
#include "compiler.h"
+#ifdef HAVE_XAA_H
#include "xaa.h"
+#endif
+#include "xf86fbman.h"
#include "exa.h"
#include "xf86Cursor.h"
#include "vgaHW.h"
@@ -554,7 +557,9 @@ typedef struct {
CARD32 MAccess;
int FifoSize;
int StyleLen;
+#ifdef HAVE_XAA_H
XAAInfoRecPtr AccelInfoRec;
+#endif
xf86CursorInfoPtr CursorInfoRec;
DGAModePtr DGAModes;
int numDGAModes;
@@ -715,7 +720,7 @@ void MGAAdjustGranularity(ScrnInfoPtr pScrn, int* x, int* y);
void MGA2064SetupFuncs(ScrnInfoPtr pScrn);
void MGAGSetupFuncs(ScrnInfoPtr pScrn);
-/* #ifdef USE_XAA */
+/*#ifdef USE_XAA */
void MGAStormSync(ScrnInfoPtr pScrn);
void MGAStormEngineInit(ScrnInfoPtr pScrn);
Bool MGAStormAccelInit(ScreenPtr pScreen);
diff --git a/src/mga_arc.c b/src/mga_arc.c
index 5263f1f..61ade3b 100644
--- a/src/mga_arc.c
+++ b/src/mga_arc.c
@@ -39,8 +39,10 @@ in this Software without prior written authorization from The Open Group.
#include "mizerarc.h"
#include "mi.h"
#include "scrnintstr.h"
+#ifdef HAVE_XAA_H
#include "xaa.h"
#include "xaalocal.h"
+#endif
#include "xf86.h"
#include "xf86_OSproc.h"
diff --git a/src/mga_dga.c b/src/mga_dga.c
index a806eb2..ef03688 100644
--- a/src/mga_dga.c
+++ b/src/mga_dga.c
@@ -5,8 +5,6 @@
#include "xf86.h"
#include "xf86_OSproc.h"
#include "xf86Pci.h"
-#include "xaa.h"
-#include "xaalocal.h"
#include "mga.h"
#include "mga_reg.h"
#include "dgaproc.h"
@@ -17,10 +15,12 @@ static Bool MGA_OpenFramebuffer(ScrnInfoPtr, char **, unsigned char **,
static Bool MGA_SetMode(ScrnInfoPtr, DGAModePtr);
static int MGA_GetViewport(ScrnInfoPtr);
static void MGA_SetViewport(ScrnInfoPtr, int, int, int);
+#ifdef HAVE_XAA_H
static void MGA_FillRect(ScrnInfoPtr, int, int, int, int, unsigned long);
static void MGA_BlitRect(ScrnInfoPtr, int, int, int, int, int, int);
static void MGA_BlitTransRect(ScrnInfoPtr, int, int, int, int, int, int,
unsigned long);
+#endif
static
DGAFunctionRec MGA_DGAFuncs = {
@@ -30,9 +30,13 @@ DGAFunctionRec MGA_DGAFuncs = {
MGA_SetViewport,
MGA_GetViewport,
MGAStormSync,
+#ifdef HAVE_XAA_H
MGA_FillRect,
MGA_BlitRect,
MGA_BlitTransRect
+#else
+ NULL, NULL, NULL
+#endif
};
@@ -120,11 +124,13 @@ SECOND_PASS:
mode->flags = DGA_CONCURRENT_ACCESS;
if(pixmap)
mode->flags |= DGA_PIXMAP_AVAILABLE;
+#ifdef HAVE_XAA_H
if(!pMga->NoAccel) {
mode->flags |= DGA_FILL_RECT | DGA_BLIT_RECT;
if((Bpp != 3) && (pMga->Chipset != PCI_CHIP_MGA2064))
mode->flags |= DGA_BLIT_RECT_TRANS;
}
+#endif
if(pMode->Flags & V_DBLSCAN)
mode->flags |= DGA_DOUBLESCAN;
if(pMode->Flags & V_INTERLACE)
@@ -359,6 +365,7 @@ MGA_SetViewport(
pMga->DGAViewportStatus = 0; /* MGAAdjustFrame loops until finished */
}
+#ifdef HAVE_XAA_H
static void
MGA_FillRect (
ScrnInfoPtr pScrn,
@@ -424,7 +431,7 @@ static void MGA_BlitTransRect( ScrnInfoPtr pScrn, int srcx, int srcy,
SET_SYNC_FLAG(pMga->AccelInfoRec);
}
}
-
+#endif
static Bool
MGA_OpenFramebuffer(
diff --git a/src/mga_dri.c b/src/mga_dri.c
index c517322..0154671 100644
--- a/src/mga_dri.c
+++ b/src/mga_dri.c
@@ -355,7 +355,7 @@ void MGAGetQuiescence( ScrnInfoPtr pScrn )
MGAWaitForIdleDMA( pScrn );
/* FIXME what about EXA? */
-#ifdef USE_XAA
+#ifdef XAA
if (!pMga->Exa && pMga->AccelInfoRec) {
WAITFIFO( 11 );
OUTREG( MGAREG_MACCESS, pMga->MAccess );
diff --git a/src/mga_driver.c b/src/mga_driver.c
index e50d77b..b3fe538 100644
--- a/src/mga_driver.c
+++ b/src/mga_driver.c
@@ -90,7 +90,7 @@
#include "mga_macros.h"
#include "mga_maven.h"
-#ifdef USE_XAA
+#ifdef XAA
#include "xaa.h"
#endif
@@ -2118,7 +2118,7 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
}
} else {
#endif
-#ifdef USE_XAA
+#ifdef XAA
if (!xf86LoadSubModule(pScrn, "xaa")) {
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
"Falling back to shadowfb\n");
@@ -3401,8 +3401,10 @@ MGAScreenInit(SCREEN_INIT_ARGS_DECL)
mgaExaInit(pScreen);
else
#endif
-#ifdef USE_XAA
+#ifdef XAA
MGAStormAccelInit(pScreen);
+#else
+ ;
#endif
}
@@ -3771,7 +3773,7 @@ MGACloseScreen(CLOSE_SCREEN_ARGS_DECL)
pMgaEnt->refCount--;
}
-#ifdef USE_XAA
+#ifdef XAA
if (pMga->AccelInfoRec)
XAADestroyInfoRec(pMga->AccelInfoRec);
#endif
diff --git a/src/mga_video.c b/src/mga_video.c
index 00e026d..535e329 100644
--- a/src/mga_video.c
+++ b/src/mga_video.c
@@ -14,7 +14,6 @@
#include "mga_macros.h"
#include "xf86xv.h"
#include <X11/extensions/Xv.h>
-#include "xaa.h"
#ifdef USE_XAA
#include "xaa.h"
@@ -1987,9 +1986,11 @@ MGAPutImageILOAD(
bpp = pScrn->bitsPerPixel >> 3;
+#ifdef HAVE_XAA_H
if( pMga->AccelInfoRec->NeedToSync && ((long)data != pPriv->lastPort) ) {
MGAStormSync(pScrn);
}
+#endif
pPriv->lastPort = (long)data;
nbox=REGION_NUM_RECTS(clipBoxes);
@@ -2019,8 +2020,9 @@ MGAPutImageILOAD(
pbox++;
}
-
+#ifdef HAVE_XAA_H
pMga->AccelInfoRec->NeedToSync = TRUE;
+#endif
pPriv->videoStatus = FREE_TIMER;
pPriv->freeTime = currentTime.milliseconds + FREE_DELAY;
pMga->VideoTimerCallback = MGAVideoTimerCallback;
commit fa0f3092ed38ce71ba9f65156bde306eb63feaf8
Author: Dave Airlie <airlied@redhat.com>
Date: Mon Jul 2 12:08:05 2012 +0100
mga: bump to 1.6.0
Signed-off-by: Dave Airlie <airlied@redhat.com>
diff --git a/configure.ac b/configure.ac
index 933500d..fd870b8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
# Initialize Autoconf
AC_PREREQ([2.60])
AC_INIT([xf86-video-mga],
- [1.5.0],
+ [1.6.0],
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
[xf86-video-mga])
AC_CONFIG_SRCDIR([Makefile.am])
commit 7b6dcc4d5768cc8d17a1f664155ebdc8ca8c042e
Author: Dave Airlie <airlied@redhat.com>
Date: Wed Jun 6 09:23:31 2012 +0100
mga: port to new compat API.
Signed-off-by: Dave Airlie <airlied@redhat.com>
diff --git a/src/Makefile.am b/src/Makefile.am
index 44417de..46f0265 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -55,7 +55,8 @@ mga_drv_la_SOURCES = \
mga_shadow.c \
mga_ucode.h \
mga_vga.c \
- mga_video.c
+ mga_video.c \
+ compat-api.h
if DRI
mga_drv_la_SOURCES += \
diff --git a/src/compat-api.h b/src/compat-api.h
new file mode 100644
index 0000000..6bc946f
--- /dev/null
+++ b/src/compat-api.h
@@ -0,0 +1,99 @@
+/*
+ * Copyright 2012 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Author: Dave Airlie <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 CLOSE_SCREEN_ARGS_DECL int scrnIndex, ScreenPtr pScreen
+#define CLOSE_SCREEN_ARGS scrnIndex, pScreen
+
+#define ADJUST_FRAME_ARGS_DECL int arg, int x, int y, int flags
+#define ADJUST_FRAME_ARGS(arg, x, y) (arg)->scrnIndex, x, y, 0
+
+#define SWITCH_MODE_ARGS_DECL int arg, DisplayModePtr mode, int flags
+#define SWITCH_MODE_ARGS(arg, m) (arg)->scrnIndex, m, 0
+
+#define FREE_SCREEN_ARGS_DECL int arg, int flags
+
+#define VT_FUNC_ARGS_DECL int arg, int flags
+#define VT_FUNC_ARGS pScrn->scrnIndex, 0
+
+#define XF86_SCRN_ARG(x) ((x)->scrnIndex)
+#else
+#define SCRN_ARG_TYPE ScrnInfoPtr
+#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = (arg1)
+
+#define SCREEN_ARG_TYPE ScreenPtr
+#define SCREEN_PTR(arg1) ScreenPtr pScreen = (arg1)
+
+#define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv
+
+#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask
+#define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask
+
+#define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen
+#define CLOSE_SCREEN_ARGS pScreen
+
+#define ADJUST_FRAME_ARGS_DECL ScrnInfoPtr arg, int x, int y
+#define ADJUST_FRAME_ARGS(arg, x, y) arg, x, y
+
+#define SWITCH_MODE_ARGS_DECL ScrnInfoPtr arg, DisplayModePtr mode
+#define SWITCH_MODE_ARGS(arg, m) arg, m
+
+#define FREE_SCREEN_ARGS_DECL ScrnInfoPtr arg
+
+#define VT_FUNC_ARGS_DECL ScrnInfoPtr arg
+#define VT_FUNC_ARGS pScrn
+
+#define XF86_SCRN_ARG(x) (x)
+
+#endif
+
+#endif
diff --git a/src/mga.h b/src/mga.h
index 7d94d59..5856a3f 100644
--- a/src/mga.h
+++ b/src/mga.h
@@ -46,6 +46,8 @@
#include "mga_dri.h"
#endif
+#include "compat-api.h"
+
typedef enum {
OPTION_SW_CURSOR,
OPTION_HW_CURSOR,
@@ -564,7 +566,7 @@ typedef struct {
void (*Save)(ScrnInfoPtr, vgaRegPtr, MGARegPtr, Bool);
void (*Restore)(ScrnInfoPtr, vgaRegPtr, MGARegPtr, Bool);
Bool (*ModeInit)(ScrnInfoPtr, DisplayModePtr);
- void (*PointerMoved)(int index, int x, int y);
+ void (*PointerMoved)(SCRN_ARG_TYPE arg, int x, int y);
CloseScreenProcPtr CloseScreen;
ScreenBlockHandlerProcPtr BlockHandler;
unsigned int (*ddc1Read)(ScrnInfoPtr);
@@ -693,8 +695,8 @@ extern CARD32 MGAAtypeNoBLK[16];
/* Prototypes */
-void MGAAdjustFrame(int scrnIndex, int x, int y, int flags);
-Bool MGASwitchMode(int scrnIndex, DisplayModePtr mode, int flags);
+void MGAAdjustFrame(ADJUST_FRAME_ARGS_DECL);
+Bool MGASwitchMode(SWITCH_MODE_ARGS_DECL);
void MGAFillModeInfoStruct(ScrnInfoPtr pScrn, DisplayModePtr mode);
Bool MGAGetRec(ScrnInfoPtr pScrn);
void MGAProbeDDC(ScrnInfoPtr pScrn, int index);
@@ -703,7 +705,7 @@ void MGAFreeRec(ScrnInfoPtr pScrn);
Bool mga_read_and_process_bios(ScrnInfoPtr pScrn);
void MGADisplayPowerManagementSet(ScrnInfoPtr pScrn, int PowerManagementMode,
int flags);
-void MGAAdjustFrameCrtc2(int scrnIndex, int x, int y, int flags);
+void MGAAdjustFrameCrtc2(ADJUST_FRAME_ARGS_DECL);
void MGADisplayPowerManagementSetCrtc2(ScrnInfoPtr pScrn,
int PowerManagementMode,
int flags);
@@ -743,7 +745,7 @@ void mgaDoSetupForScreenToScreenCopy( ScrnInfoPtr pScrn, int xdir,
void mgaDoSetupForSolidFill( ScrnInfoPtr pScrn, int color, int rop,
unsigned int planemask, unsigned int bpp );
-void MGAPointerMoved(int index, int x, int y);
+void MGAPointerMoved(SCRN_ARG_TYPE arg, int x, int y);
void MGAInitVideo(ScreenPtr pScreen);
void MGAResetVideo(ScrnInfoPtr pScrn);
diff --git a/src/mga_dacG.c b/src/mga_dacG.c
index ea598be..9a80193 100644
--- a/src/mga_dacG.c
+++ b/src/mga_dacG.c
@@ -1794,7 +1794,7 @@ MGAGSetCursorColorsG100(ScrnInfoPtr pScrn, int bg, int fg)
static Bool
MGAGUseHWCursor(ScreenPtr pScrn, CursorPtr pCurs)
{
- MGAPtr pMga = MGAPTR(xf86Screens[pScrn->myNum]);
+ MGAPtr pMga = MGAPTR(xf86ScreenToScrn(pScrn));
/* This needs to detect if its on the second dac */
if( XF86SCRNINFO(pScrn)->currentMode->Flags & V_DBLSCAN )
return FALSE;
diff --git a/src/mga_dga.c b/src/mga_dga.c
index 6c26e44..a806eb2 100644
--- a/src/mga_dga.c
+++ b/src/mga_dga.c
@@ -197,7 +197,7 @@ SECOND_PASS:
Bool
MGADGAInit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
MGAPtr pMga = MGAPTR(pScrn);
DGAModePtr modes = NULL;
int num = 0;
@@ -310,8 +310,8 @@ MGA_SetMode(
memcpy(&pMga->CurrentLayout, &SavedLayouts[index], sizeof(MGAFBLayout));
pScrn->currentMode = pMga->CurrentLayout.mode;
- pScrn->SwitchMode(index, pScrn->currentMode, 0);
- MGAAdjustFrame(index, pScrn->frameX0, pScrn->frameY0, 0);
+ pScrn->SwitchMode(SWITCH_MODE_ARGS(pScrn, pScrn->currentMode));
+ MGAAdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0));
pMga->DGAactive = FALSE;
} else {
if(!pMga->DGAactive) { /* save the old parameters */
@@ -328,7 +328,7 @@ MGA_SetMode(
pMga->CurrentLayout.weight.blue = BitsSet(pMode->blue_mask);
/* MGAModeInit() will set the mode field */
- pScrn->SwitchMode(index, pMode->mode, 0);
+ pScrn->SwitchMode(SWITCH_MODE_ARGS(pScrn, pMode->mode));
/* not strictly required but nice */
mgaDGASetPalette(pScrn);
}
@@ -355,7 +355,7 @@ MGA_SetViewport(
){
MGAPtr pMga = MGAPTR(pScrn);
- MGAAdjustFrame(pScrn->pScreen->myNum, x, y, flags);
+ MGAAdjustFrame(ADJUST_FRAME_ARGS(pScrn, x, y));
pMga->DGAViewportStatus = 0; /* MGAAdjustFrame loops until finished */
}
diff --git a/src/mga_dri.c b/src/mga_dri.c
index 4156bb5..c517322 100644
--- a/src/mga_dri.c
+++ b/src/mga_dri.c
@@ -74,7 +74,7 @@ static char MGAClientDriverName[] = "mga";
*/
static Bool MGAInitVisualConfigs( ScreenPtr pScreen )
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
MGAPtr pMga = MGAPTR(pScrn);
int numConfigs = 0;
__GLXvisualConfig *pConfigs = 0;
@@ -407,7 +407,7 @@ void MGAGetQuiescenceShared( ScrnInfoPtr pScrn )
static void MGASwapContext( ScreenPtr pScreen )
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
MGAPtr pMga = MGAPTR(pScrn);
/* Arrange for dma_quiescence and xaa sync to be called as
@@ -420,7 +420,7 @@ static void MGASwapContext( ScreenPtr pScreen )
static void MGASwapContextShared( ScreenPtr pScreen )
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
MGAPtr pMga = MGAPTR(pScrn);
MGAEntPtr pMGAEnt = pMga->entityPrivate;
MGAPtr pMGA2 = MGAPTR(pMGAEnt->pScrn_2);
@@ -522,7 +522,7 @@ static unsigned int mylog2( unsigned int n )
*/
static Bool MGADRIBootstrapDMA(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
MGAPtr pMga = MGAPTR(pScrn);
MGADRIServerPrivatePtr pMGADRIServer = pMga->DRIServerInfo;
int ret;
@@ -778,7 +778,7 @@ static Bool MGADRIBootstrapDMA(ScreenPtr pScreen)
static Bool MGADRIKernelInit( ScreenPtr pScreen )
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
MGAPtr pMga = MGAPTR(pScrn);
MGADRIServerPrivatePtr pMGADRIServer = pMga->DRIServerInfo;
drm_mga_init_t init;
@@ -838,7 +838,7 @@ static Bool MGADRIKernelInit( ScreenPtr pScreen )
*/
static void MGADRIIrqInit(MGAPtr pMga, ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
if (!pMga->irq) {
pMga->irq = drmGetInterruptFromBusID(pMga->drmFD,
@@ -873,7 +873,7 @@ static void MGADRIIrqInit(MGAPtr pMga, ScreenPtr pScreen)
static Bool MGADRIBuffersInit( ScreenPtr pScreen )
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
MGAPtr pMga = MGAPTR(pScrn);
MGADRIServerPrivatePtr pMGADRIServer = pMga->DRIServerInfo;
@@ -896,7 +896,7 @@ static void MGADRIInitBuffersXAA(WindowPtr pWin, RegionPtr prgn,
CARD32 index)
{
ScreenPtr pScreen = pWin->drawable.pScreen;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
MGAPtr pMga = MGAPTR(pScrn);
BoxPtr pbox = REGION_RECTS(prgn);
int nbox = REGION_NUM_RECTS(prgn);
@@ -941,7 +941,7 @@ static void MGADRIMoveBuffersXAA(WindowPtr pParent, DDXPointRec ptOldOrg,
RegionPtr prgnSrc, CARD32 index)
{
ScreenPtr pScreen = pParent->drawable.pScreen;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
MGAPtr pMga = MGAPTR(pScrn);
int nbox;
BoxPtr pbox, pboxTmp, pboxNext, pboxBase, pboxNew1, pboxNew2;
@@ -1088,7 +1088,7 @@ static void MGADRIMoveBuffersEXA(WindowPtr pParent, DDXPointRec ptOldOrg,
Bool MGADRIScreenInit( ScreenPtr pScreen )
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
MGAPtr pMga = MGAPTR(pScrn);
DRIInfoPtr pDRIInfo;
MGADRIPtr pMGADRI;
@@ -1367,7 +1367,7 @@ Bool MGADRIScreenInit( ScreenPtr pScreen )
Bool MGADRIFinishScreenInit( ScreenPtr pScreen )
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
MGAPtr pMga = MGAPTR(pScrn);
MGADRIServerPrivatePtr pMGADRIServer = pMga->DRIServerInfo;
MGADRIPtr pMGADRI;
@@ -1462,7 +1462,7 @@ Bool MGADRIFinishScreenInit( ScreenPtr pScreen )
void MGADRICloseScreen( ScreenPtr pScreen )
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
MGAPtr pMga = MGAPTR(pScrn);
MGADRIServerPrivatePtr pMGADRIServer = pMga->DRIServerInfo;
drm_mga_init_t init;
diff --git a/src/mga_driver.c b/src/mga_driver.c
index 0c04d74..e50d77b 100644
--- a/src/mga_driver.c
+++ b/src/mga_driver.c
@@ -118,12 +118,11 @@ static Bool MGAPciProbe(DriverPtr drv, int entity_num,
static Bool MGAProbe(DriverPtr drv, int flags);
#endif
static Bool MGAPreInit(ScrnInfoPtr pScrn, int flags);
-static Bool MGAScreenInit(int Index, ScreenPtr pScreen, int argc,
- char **argv);
-static Bool MGAEnterVT(int scrnIndex, int flags);
-static Bool MGAEnterVTFBDev(int scrnIndex, int flags);
-static void MGALeaveVT(int scrnIndex, int flags);
-static Bool MGACloseScreen(int scrnIndex, ScreenPtr pScreen);
+static Bool MGAScreenInit(SCREEN_INIT_ARGS_DECL);
+static Bool MGAEnterVT(VT_FUNC_ARGS_DECL);
+static Bool MGAEnterVTFBDev(VT_FUNC_ARGS_DECL);
+static void MGALeaveVT(VT_FUNC_ARGS_DECL);
+static Bool MGACloseScreen(CLOSE_SCREEN_ARGS_DECL);
static Bool MGASaveScreen(ScreenPtr pScreen, int mode);
static Bool MGASaveScreenCrtc2(ScreenPtr pScreen, int mode);
@@ -134,8 +133,8 @@ static void VgaIORestore(int i, void *arg);
#endif
/* Optional functions */
-static void MGAFreeScreen(int scrnIndex, int flags);
-static ModeStatus MGAValidMode(int scrnIndex, DisplayModePtr mode,
+static void MGAFreeScreen(FREE_SCREEN_ARGS_DECL);
+static ModeStatus MGAValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode,
Bool verbose, int flags);
#if ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ >= 4)
@@ -150,7 +149,7 @@ static Bool MGAUnmapMem(ScrnInfoPtr pScrn);
static void MGASave(ScrnInfoPtr pScrn);
static void MGARestore(ScrnInfoPtr pScrn);
static Bool MGAModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode);
-static void MGABlockHandler(int, pointer, pointer, pointer);
+static void MGABlockHandler(BLOCKHANDLER_ARGS_DECL);
static void MGAG100BlackMagic(ScrnInfoPtr pScrn);
static int MGAEntityIndex = -1;
@@ -1331,18 +1330,18 @@ MGAdoDDC(ScrnInfoPtr pScrn)
/* DDC for second head... */
if (pMga->SecondCrtc && pMga->DDC_Bus2) {
- MonInfo = xf86DoEDID_DDC2(pScrn->scrnIndex, pMga->DDC_Bus2);
+ MonInfo = xf86DoEDID_DDC2(XF86_SCRN_ARG(pScrn), pMga->DDC_Bus2);
from = "I2C";
} else {
/* Its the first head... */
if (pMga->DDC_Bus1) {
- MonInfo = xf86DoEDID_DDC2(pScrn->scrnIndex, pMga->DDC_Bus1);
+ MonInfo = xf86DoEDID_DDC2(XF86_SCRN_ARG(pScrn), pMga->DDC_Bus1);
from = "I2C";
}
if (!MonInfo)
/* Read and output monitor info using DDC1 */
if (pMga->ddc1Read && pMga->DDC1SetSpeed) {
- MonInfo = xf86DoEDID_DDC1(pScrn->scrnIndex,
+ MonInfo = xf86DoEDID_DDC1(XF86_SCRN_ARG(pScrn),
pMga->DDC1SetSpeed,
pMga->ddc1Read ) ;
from = "DDC1";
@@ -2886,7 +2885,7 @@ MGAModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode)
#ifdef MGADRI
if (pMga->directRenderingEnabled) {
- DRILock(screenInfo.screens[pScrn->scrnIndex], 0);
+ DRILock(xf86ScrnToScreen(pScrn), 0);
}
#endif
@@ -2997,7 +2996,7 @@ MGAModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode)
#ifdef MGADRI
if (pMga->directRenderingEnabled)
- DRIUnlock(screenInfo.screens[pScrn->scrnIndex]);
+ DRIUnlock(xf86ScrnToScreen(pScrn));
#endif
#ifdef DEBUG
MGAG450PrintPLL(pScrn);
@@ -3131,9 +3130,9 @@ MGACrtc2FillStrip(ScrnInfoPtr pScrn)
/* This gets called at the start of each server generation */
static Bool
-MGAScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+MGAScreenInit(SCREEN_INIT_ARGS_DECL)
{
- ScrnInfoPtr pScrn;
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
vgaHWPtr hwp;
MGAPtr pMga;
MGARamdacPtr MGAdac;
@@ -3149,11 +3148,6 @@ MGAScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
#endif
DPMSSetProcPtr mga_dpms_set_proc = NULL;
- /*
- * First get the ScrnInfoRec
- */
- pScrn = xf86Screens[pScreen->myNum];
-
hwp = VGAHWPTR(pScrn);
pMga = MGAPTR(pScrn);
MGAdac = &pMga->Dac;
@@ -3256,7 +3250,7 @@ MGAScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
/* Darken the screen for aesthetic reasons and set the viewport
*/
(*pScreen->SaveScreen)(pScreen, SCREEN_SAVER_ON);
- pScrn->AdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0);
+ pScrn->AdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0));
/*
@@ -3517,13 +3511,13 @@ MGAScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
/* Usually mandatory */
Bool
-MGASwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
+MGASwitchMode(SWITCH_MODE_ARGS_DECL)
{
-
+ SCRN_INFO_PTR(arg);
if (mode->Flags & 0x80000000) {
return FALSE;
} else
- return MGAModeInit(xf86Screens[scrnIndex], mode);
+ return MGAModeInit(pScrn, mode);
}
/* Adjusts coordinates to match Panning granularity.
@@ -3541,16 +3535,14 @@ MGAAdjustGranularity(ScrnInfoPtr pScrn, int* x, int* y)
*/
/* Usually mandatory */
void
-MGAAdjustFrame(int scrnIndex, int x, int y, int flags)
+MGAAdjustFrame(ADJUST_FRAME_ARGS_DECL)
{
- ScrnInfoPtr pScrn;
+ SCRN_INFO_PTR(arg);
int Base, tmp, count;
MGAFBLayout *pLayout;
MGAPtr pMga;
-
- pScrn = xf86Screens[scrnIndex];
pMga = MGAPTR(pScrn);
pLayout = &pMga->CurrentLayout;
@@ -3589,14 +3581,13 @@ MGAAdjustFrame(int scrnIndex, int x, int y, int flags)
}
void
-MGAAdjustFrameCrtc2(int scrnIndex, int x, int y, int flags)
+MGAAdjustFrameCrtc2(ADJUST_FRAME_ARGS_DECL)
{
- ScrnInfoPtr pScrn;
+ SCRN_INFO_PTR(arg);
int Base;
MGAFBLayout *pLayout;
MGAPtr pMga;
- pScrn = xf86Screens[scrnIndex];
pMga = MGAPTR(pScrn);
pLayout = &pMga->CurrentLayout;
MGA_NOT_HAL(
@@ -3624,9 +3615,9 @@ MGAAdjustFrameCrtc2(int scrnIndex, int x, int y, int flags)
/* Mandatory */
static Bool
-MGAEnterVT(int scrnIndex, int flags)
+MGAEnterVT(VT_FUNC_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
MGAPtr pMga;
pMga = MGAPTR(pScrn);
@@ -3637,13 +3628,13 @@ MGAEnterVT(int scrnIndex, int flags)
/* Need to make sure interrupts are enabled */
OUTREG(MGAREG_IEN, pMga->reg_ien);
}
- DRIUnlock(screenInfo.screens[scrnIndex]);
+ DRIUnlock(xf86ScrnToScreen(pScrn));
}
#endif
if (!MGAModeInit(pScrn, pScrn->currentMode))
return FALSE;
- pScrn->AdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0);
+ pScrn->AdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0));
/* For the second head, work around display problem. */
if (pMga->SecondCrtc) {
@@ -3654,21 +3645,21 @@ MGAEnterVT(int scrnIndex, int flags)
}
static Bool
-MGAEnterVTFBDev(int scrnIndex, int flags)
+MGAEnterVTFBDev(VT_FUNC_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
#ifdef MGADRI
ScreenPtr pScreen;
MGAPtr pMga;
pMga = MGAPTR(pScrn);
if (pMga->directRenderingEnabled) {
- pScreen = screenInfo.screens[scrnIndex];
+ pScreen = xf86ScrnToScreen(pScrn);
DRIUnlock(pScreen);
}
#endif
- fbdevHWEnterVT(scrnIndex,flags);
+ fbdevHWEnterVT(VT_FUNC_ARGS);
MGAStormEngineInit(pScrn);
return TRUE;
}
@@ -3692,9 +3683,9 @@ MGAEnterVTFBDev(int scrnIndex, int flags)
/* Mandatory */
static void
-MGALeaveVT(int scrnIndex, int flags)
+MGALeaveVT(VT_FUNC_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
vgaHWPtr hwp = VGAHWPTR(pScrn);
#ifdef MGADRI
MGAPtr pMga = MGAPTR(pScrn);
@@ -3706,7 +3697,7 @@ MGALeaveVT(int scrnIndex, int flags)
#ifdef MGADRI
if (pMga->directRenderingEnabled) {
- pScreen = screenInfo.screens[scrnIndex];
+ pScreen = xf86ScrnToScreen(pScrn);
DRILock(pScreen, 0);
}
#endif
@@ -3722,16 +3713,16 @@ MGALeaveVT(int scrnIndex, int flags)
/* Mandatory */
static Bool
-MGACloseScreen(int scrnIndex, ScreenPtr pScreen)
+MGACloseScreen(CLOSE_SCREEN_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
vgaHWPtr hwp = VGAHWPTR(pScrn);
MGAPtr pMga = MGAPTR(pScrn);
MGAEntPtr pMgaEnt = NULL;
CARD32 VRTemp, FBTemp;
if (pMga->MergedFB)
- MGACloseScreenMerged(scrnIndex, pScreen);
+ MGACloseScreenMerged(pScreen);
if (pMga->is_G200SE)
{
@@ -3807,7 +3798,7 @@ MGACloseScreen(int scrnIndex, ScreenPtr pScreen)
pScreen->CloseScreen = pMga->CloseScreen;
- return (*pScreen->CloseScreen)(scrnIndex, pScreen);
+ return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS);
}
@@ -3815,16 +3806,16 @@ MGACloseScreen(int scrnIndex, ScreenPtr pScreen)
/* Optional */
static void
-MGAFreeScreen(int scrnIndex, int flags)
+MGAFreeScreen(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]);
- MGAFreeRec(xf86Screens[scrnIndex]);
+ vgaHWFreeHWRec(pScrn);
+ MGAFreeRec(pScrn);
}
@@ -3855,10 +3846,10 @@ xf86ModeBandwidth(DisplayModePtr mode, int depth)
/* Optional */
static ModeStatus
-MGAValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
+MGAValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, int flags)
{
+ SCRN_INFO_PTR(arg);
int lace;
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
MGAPtr pMga = MGAPTR(pScrn);
if (pMga->Chipset == PCI_CHIP_MGAG200_SE_A_PCI) {
Reply to: