xserver-xorg-video-mga: Changes to 'upstream-unstable'
configure.ac | 22 +++++++-
src/Makefile.am | 9 +--
src/compat-api.h | 99 ++++++++++++++++++++++++++++++++++++++
src/mga.h | 64 ++++++++++++++-----------
src/mga_arc.c | 2
src/mga_bios.c | 3 -
src/mga_dac3026.c | 3 -
src/mga_dacG.c | 5 -
src/mga_dga.c | 24 +++++----
src/mga_dh.c | 3 -
src/mga_dri.c | 33 +++++-------
src/mga_driver.c | 138 ++++++++++++++++++++++++------------------------------
src/mga_exa.c | 11 +---
src/mga_g450pll.c | 3 -
src/mga_hwcurs.c | 3 -
src/mga_merge.c | 63 ++++++++++++------------
src/mga_merge.h | 6 +-
src/mga_shadow.c | 7 +-
src/mga_storm.c | 31 +++++++++---
src/mga_video.c | 21 ++++----
20 files changed, 332 insertions(+), 218 deletions(-)
New commits:
commit fcd27b2b4ab2a181d5263296e71cda2d8772ba2d
Author: Dave Airlie <airlied@redhat.com>
Date: Fri Sep 28 11:36:44 2012 +1000
mga: bump release to 1.6.2
diff --git a/configure.ac b/configure.ac
index 1b6c20f..fca1a9c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
# Initialize Autoconf
AC_PREREQ([2.60])
AC_INIT([xf86-video-mga],
- [1.6.1],
+ [1.6.2],
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
[xf86-video-mga])
AC_CONFIG_SRCDIR([Makefile.am])
commit 29de36da0ed031815bd302f55f2ef5cc0cce6cc6
Author: Dave Airlie <airlied@redhat.com>
Date: Fri Sep 28 10:54:00 2012 +1000
mga: bring dri1 back to life.
we need to at least setup the memory manager bits so dri1 clients
get a backbuffer. this at least gets gears working again without XAA.
Signed-off-by: Dave Airlie <airlied@redhat.com>
diff --git a/src/Makefile.am b/src/Makefile.am
index 79745d1..8227c05 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -55,6 +55,7 @@ mga_drv_la_SOURCES = \
mga_ucode.h \
mga_vga.c \
mga_video.c \
+ mga_storm.c \
compat-api.h
if DRI
@@ -71,6 +72,5 @@ endif
if XAA
mga_drv_la_SOURCES += \
- mga_arc.c \
- mga_storm.c
+ mga_arc.c
endif
diff --git a/src/mga_dri.c b/src/mga_dri.c
index 0154671..3923c04 100644
--- a/src/mga_dri.c
+++ b/src/mga_dri.c
@@ -922,13 +922,11 @@ static void MGADRIInitBuffersXAA(WindowPtr pWin, RegionPtr prgn,
}
#endif
-#ifdef USE_EXA
static void MGADRIInitBuffersEXA(WindowPtr pWin, RegionPtr prgn,
CARD32 index)
{
/* FIXME */
}
-#endif
#ifdef USE_XAA
/*
@@ -1078,13 +1076,11 @@ static void MGADRIMoveBuffersXAA(WindowPtr pParent, DDXPointRec ptOldOrg,
}
#endif
-#ifdef USE_EXA
static void MGADRIMoveBuffersEXA(WindowPtr pParent, DDXPointRec ptOldOrg,
RegionPtr prgnSrc, CARD32 index)
{
/* FIXME */
}
-#endif
Bool MGADRIScreenInit( ScreenPtr pScreen )
{
@@ -1231,6 +1227,8 @@ Bool MGADRIScreenInit( ScreenPtr pScreen )
pDRIInfo->SwapContext = MGADRISwapContext;
}
+ pDRIInfo->InitBuffers = MGADRIInitBuffersEXA;
+ pDRIInfo->MoveBuffers = MGADRIMoveBuffersEXA;
#ifdef USE_EXA
if (pMga->Exa) {
pDRIInfo->InitBuffers = MGADRIInitBuffersEXA;
diff --git a/src/mga_driver.c b/src/mga_driver.c
index 3db3a74..8c4bb9c 100644
--- a/src/mga_driver.c
+++ b/src/mga_driver.c
@@ -3398,11 +3398,7 @@ MGAScreenInit(SCREEN_INIT_ARGS_DECL)
mgaExaInit(pScreen);
else
#endif
-#ifdef XAA
MGAStormAccelInit(pScreen);
-#else
- ;
-#endif
}
xf86SetBackingStore(pScreen);
@@ -4184,14 +4180,3 @@ MGAG100BlackMagic(ScrnInfoPtr pScrn)
OUTREG(MGAREG_MACCESS, 1<<15);
usleep(10);
}
-
-#ifndef HAVE_XAA_H
-void MGAStormEngineInit( ScrnInfoPtr pScrn )
-{
-}
-
-void
-MGAStormSync(ScrnInfoPtr pScrn)
-{
-}
-#endif
diff --git a/src/mga_storm.c b/src/mga_storm.c
index c32caf4..fb0e7be 100644
--- a/src/mga_storm.c
+++ b/src/mga_storm.c
@@ -15,8 +15,10 @@
#include "xf86Pci.h"
/* Drivers that use XAA need this */
+#ifdef HAVE_XAA_H
#include "xaa.h"
#include "xaalocal.h"
+#endif
#include "xf86fbman.h"
#include "miline.h"
#include "servermd.h"
@@ -59,6 +61,7 @@ do { \
XAAMoveDWORDS((d),(s),(c)); \
} while (0)
+#ifdef HAVE_XAA_H
static void mgaSetupForSolidFill( ScrnInfoPtr pScrn, int color,
int rop, unsigned int planemask );
@@ -569,10 +572,13 @@ MGASubsequentCPUToScreenTexture (
#endif /* defined(RENDER) */
+#endif
Bool mgaAccelInit( ScreenPtr pScreen )
{
+#ifdef HAVE_XAA_H
XAAInfoRecPtr infoPtr;
+#endif
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
MGAPtr pMga = MGAPTR(pScrn);
int maxFastBlitMem, maxlines;
@@ -583,8 +589,10 @@ Bool mgaAccelInit( ScreenPtr pScreen )
pMga->ScratchBuffer = malloc(((pScrn->displayWidth * pMga->CurrentLayout.bitsPerPixel) + 127) >> 3);
if(!pMga->ScratchBuffer) return FALSE;
+#ifdef HAVE_XAA_H
pMga->AccelInfoRec = infoPtr = XAACreateInfoRec();
if(!infoPtr) return FALSE;
+#endif
pMga->RenderTime = 0;
pMga->LinearScratch = 0;
@@ -617,6 +625,7 @@ Bool mgaAccelInit( ScreenPtr pScreen )
pMga->AtypeNoBLK = MGAAtypeNoBLK;
}
+#ifdef HAVE_XAA_H
/* fill out infoPtr here */
infoPtr->Flags = PIXMAP_CACHE |
OFFSCREEN_PIXMAPS |
@@ -782,6 +791,8 @@ Bool mgaAccelInit( ScreenPtr pScreen )
pMga->MaxFastBlitY = maxFastBlitMem / (pScrn->displayWidth * pMga->CurrentLayout.bitsPerPixel / 8);
}
+#endif
+
switch (pMga->Chipset) {
case PCI_CHIP_MGAG200_SE_A_PCI:
case PCI_CHIP_MGAG200_SE_B_PCI:
@@ -917,6 +928,7 @@ Bool mgaAccelInit( ScreenPtr pScreen )
}
+#ifdef HAVE_XAA_H
for (i = 0; i < pScrn->numEntities; i++) {
if (xf86IsEntityShared(pScrn->entityList[i])) {
infoPtr->RestoreAccelState = mgaRestoreAccelState;
@@ -949,9 +961,13 @@ Bool mgaAccelInit( ScreenPtr pScreen )
#endif /* defined(RENDER) */
return(XAAInit(pScreen, infoPtr));
+#else
+ return TRUE;
+#endif
}
+#ifdef HAVE_XAA_H
/* Support for multiscreen */
static void mgaRestoreAccelState(ScrnInfoPtr pScrn)
{
@@ -994,7 +1010,7 @@ static void mgaRestoreAccelState(ScrnInfoPtr pScrn)
OUTREG(MGAREG_YBOT, 0x007FFFFF); /* maxPixelPointer */
pMga->AccelFlags &= ~CLIPPER_ON;
}
-
+#endif
CARD32 MGAAtype[16] = {
MGADWG_RPL | 0x00000000, MGADWG_RSTR | 0x00080000,
@@ -1080,9 +1096,11 @@ void MGAStormEngineInit( ScrnInfoPtr pScrn )
opmode &= ~0x30000;
#endif
+#ifdef HAVE_XAA_H
pMga->SetupForSolidFill = mgaSetupForSolidFill;
pMga->SubsequentSolidFillRect = mgaSubsequentSolidFillRect;
pMga->RestoreAccelState = mgaRestoreAccelState;
+#endif
pMga->fifoCount = 0;
@@ -1155,6 +1173,7 @@ void MGAStormEngineInit( ScrnInfoPtr pScrn )
}
+#ifdef HAVE_XAA_H
static void
MGASetClippingRectangle(
ScrnInfoPtr pScrn,
@@ -2534,3 +2553,4 @@ MGAFillCacheBltRects(
SET_SYNC_FLAG(infoRec);
}
+#endif
commit e777a2845bfeefad386db35d694e4b1cd74a0dd5
Author: Dave Airlie <airlied@redhat.com>
Date: Wed Sep 26 15:18:44 2012 +1000
mga: add stub storm functions if not using XAA
If we aren't using XAA just add stub storm init/sync functions.
This lets the driver load yay.
Signed-off-by: Dave Airlie <airlied@redhat.com>
diff --git a/src/mga_driver.c b/src/mga_driver.c
index f4f54a1..3db3a74 100644
--- a/src/mga_driver.c
+++ b/src/mga_driver.c
@@ -4185,3 +4185,13 @@ MGAG100BlackMagic(ScrnInfoPtr pScrn)
usleep(10);
}
+#ifndef HAVE_XAA_H
+void MGAStormEngineInit( ScrnInfoPtr pScrn )
+{
+}
+
+void
+MGAStormSync(ScrnInfoPtr pScrn)
+{
+}
+#endif
commit 220e06fefe77175d9827954e61549eadda245d9a
Author: Adam Jackson <ajax@redhat.com>
Date: Tue Sep 25 08:54:42 2012 -0400
Remove mibstore.h
Signed-off-by: Adam Jackson <ajax@redhat.com>
diff --git a/src/mga_driver.c b/src/mga_driver.c
index b3fe538..f4f54a1 100644
--- a/src/mga_driver.c
+++ b/src/mga_driver.c
@@ -73,9 +73,6 @@
/* All drivers initialising the SW cursor need this */
#include "mipointer.h"
-/* All drivers implementing backing store need this */
-#include "mibstore.h"
-
#include "micmap.h"
#include "xf86DDC.h"
@@ -3408,7 +3405,6 @@ MGAScreenInit(SCREEN_INIT_ARGS_DECL)
#endif
}
- miInitializeBackingStore(pScreen);
xf86SetBackingStore(pScreen);
xf86SetSilkenMouse(pScreen);
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);
Reply to: