[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xserver-xorg-video-savage: Changes to 'debian-unstable'



 ChangeLog           |   53 ++++++++++++++++++++++++++
 configure.ac        |   20 +++++++++
 debian/changelog    |    6 ++
 src/Makefile.am     |    1 
 src/compat-api.h    |  105 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/savage_accel.c  |    2 
 src/savage_cursor.c |    4 -
 src/savage_dga.c    |   23 +++++++----
 src/savage_dri.c    |   54 ++++++++++++++------------
 src/savage_driver.c |   93 +++++++++++++++++++++-------------------------
 src/savage_driver.h |   16 +++++--
 src/savage_exa.c    |   14 +++---
 src/savage_hwmc.c   |    5 +-
 src/savage_i2c.c    |   11 +++++
 src/savage_shadow.c |    6 +-
 src/savage_vbe.c    |   25 ++++++------
 src/savage_video.c  |   10 ++--
 src/savage_xaa.c    |   17 +++++---
 18 files changed, 343 insertions(+), 122 deletions(-)

New commits:
commit cdb1396417d63e727612b5f27eb36c89a10c34b5
Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Date:   Wed Sep 25 14:07:17 2013 +0200

    release to unstable

diff --git a/debian/changelog b/debian/changelog
index bb7137f..3e0d167 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,8 @@
-xserver-xorg-video-savage (1:2.3.6-1) UNRELEASED; urgency=low
+xserver-xorg-video-savage (1:2.3.6-1) unstable; urgency=low
 
   * New upstream release
 
- -- Maarten Lankhorst <maarten.lankhorst@canonical.com>  Wed, 18 Jul 2012 13:42:19 +0200
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Wed, 25 Sep 2013 14:06:58 +0200
 
 xserver-xorg-video-savage (1:2.3.4-1) unstable; urgency=low
 

commit 3299a36b373cc6d3237b79ef42908e63f822edd1
Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Date:   Wed Jul 18 13:42:47 2012 +0200

    New upstream release

diff --git a/debian/changelog b/debian/changelog
index e68bc48..bb7137f 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+xserver-xorg-video-savage (1:2.3.6-1) UNRELEASED; urgency=low
+
+  * New upstream release
+
+ -- Maarten Lankhorst <maarten.lankhorst@canonical.com>  Wed, 18 Jul 2012 13:42:19 +0200
+
 xserver-xorg-video-savage (1:2.3.4-1) unstable; urgency=low
 
   * New upstream release

commit 03e24e57a11ed176c845ab9c2e5308dceab08d26
Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Date:   Wed Jul 18 13:42:38 2012 +0200

    Bump changelog

diff --git a/ChangeLog b/ChangeLog
index eda84db..ac40aff 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,56 @@
+commit cb27a7a072c6e087a2e272d84c1d569dc717da8b
+Author: Dave Airlie <airlied@redhat.com>
+Date:   Tue Jul 17 16:05:09 2012 +1000
+
+    xf86-video-savage: bump to version 2.3.6
+    
+    Signed-off-by: Dave Airlie <airlied@redhat.com>
+
+commit d7edd7c545473d5ed80c9a46c1405042267a7293
+Author: Dave Airlie <airlied@redhat.com>
+Date:   Mon Jul 16 03:39:32 2012 +0100
+
+    savage: make build with no xaa server.
+    
+    This fixes savage build against the no XAA server.
+    
+    Signed-off-by: Dave Airlie <airlied@redhat.com>
+
+commit 508e0742b7d1ac1e4ff6b648d19bfa062c535d61
+Author: Dave Airlie <airlied@redhat.com>
+Date:   Mon Jul 2 12:29:41 2012 +0100
+
+    savage: bump to 2.3.5
+    
+    Signed-off-by: Dave Airlie <airlied@redhat.com>
+
+commit 430b956b49b6c883189074ce13bc234545b714e0
+Author: Dave Airlie <airlied@redhat.com>
+Date:   Wed Jun 6 11:24:31 2012 +0100
+
+    savage: i2c drop xf86Screens usage.
+    
+    Signed-off-by: Dave Airlie <airlied@redhat.com>
+
+commit a2714fb09e1e0badbb3e98e24d4b1ed92003bdb9
+Author: Dave Airlie <airlied@redhat.com>
+Date:   Wed Jun 6 11:22:29 2012 +0100
+
+    savage: port to new compat API
+    
+    Signed-off-by: Dave Airlie <airlied@redhat.com>
+
+commit de22eab9a21df80fe965dc37d21ba3ac2b9f5fd0
+Author: Tormod Volden <debian.tormod@gmail.com>
+Date:   Wed Feb 15 22:20:37 2012 +0100
+
+    Refactor BIOS modes retrieval to call VBEGetVBEInfo only once
+    
+    Otherwise, calling it twice would trigger a VBE bug when using
+    xserver 1.12.
+    
+    Signed-off-by: Tormod Volden <debian.tormod@gmail.com>
+
 commit 63dd44674a28263c5d8d6aec8b72e95f94d3fe6c
 Author: Alan Coopersmith <alan.coopersmith@oracle.com>
 Date:   Fri Mar 23 19:46:12 2012 -0700

commit cb27a7a072c6e087a2e272d84c1d569dc717da8b
Author: Dave Airlie <airlied@redhat.com>
Date:   Tue Jul 17 16:05:09 2012 +1000

    xf86-video-savage: bump to version 2.3.6
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>

diff --git a/configure.ac b/configure.ac
index 5e4fbe2..2b99314 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
 # Initialize Autoconf
 AC_PREREQ([2.60])
 AC_INIT([xf86-video-savage],
-        [2.3.5],
+        [2.3.6],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         [xf86-video-savage])
 AC_CONFIG_SRCDIR([Makefile.am])

commit d7edd7c545473d5ed80c9a46c1405042267a7293
Author: Dave Airlie <airlied@redhat.com>
Date:   Mon Jul 16 03:39:32 2012 +0100

    savage: make build with no xaa server.
    
    This fixes savage build against the no XAA server.
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>

diff --git a/configure.ac b/configure.ac
index ca60e76..5e4fbe2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -103,6 +103,24 @@ if test "$DRI" = yes; then
         AC_DEFINE(SAVAGEDRI_DEVEL,1,[Enable developmental DRI driver support])
 fi
 
+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])
+
 save_CFLAGS="$CFLAGS"
 CFLAGS="$XORG_CFLAGS"
 AC_CHECK_DECL(XSERVER_LIBPCIACCESS,
diff --git a/src/savage_dga.c b/src/savage_dga.c
index cb541d3..413e0e7 100644
--- a/src/savage_dga.c
+++ b/src/savage_dga.c
@@ -34,8 +34,9 @@ in this Software without prior written authorization from the XFree86 Project.
  *
  */
 
-
+#ifdef HAVE_XAA_H
 #include "xaalocal.h"
+#endif
 #include "savage_driver.h"
 #include "dgaproc.h"
 
@@ -46,9 +47,10 @@ static Bool Savage_OpenFramebuffer(ScrnInfoPtr, char **, unsigned char **,
 static Bool Savage_SetMode(ScrnInfoPtr, DGAModePtr);
 static int  Savage_GetViewport(ScrnInfoPtr);
 static void Savage_SetViewport(ScrnInfoPtr, int, int, int);
+#ifdef HAVE_XAA_H
 static void Savage_FillRect(ScrnInfoPtr, int, int, int, int, unsigned long);
 static void Savage_BlitRect(ScrnInfoPtr, int, int, int, int, int, int);
-
+#endif
 
 static
 DGAFunctionRec Savage_DGAFuncs = {
@@ -58,8 +60,12 @@ DGAFunctionRec Savage_DGAFuncs = {
     Savage_SetViewport,
     Savage_GetViewport,
     SavageAccelSync,
+#ifdef HAVE_XAA_H
     Savage_FillRect,
     Savage_BlitRect,
+#else
+    NULL, NULL,
+#endif
     NULL			 /* BlitTransRect */
 };
 
@@ -127,8 +133,10 @@ SECOND_PASS:
 
 	mode->mode = pMode;
 	mode->flags = DGA_CONCURRENT_ACCESS | DGA_PIXMAP_AVAILABLE;
+#ifdef HAVE_XAA_H
 	if(!psav->NoAccel)
 	    mode->flags |= DGA_FILL_RECT | DGA_BLIT_RECT;
+#endif
 	if(pMode->Flags & V_DBLSCAN)
 	    mode->flags |= DGA_DOUBLESCAN;
 	if(pMode->Flags & V_INTERLACE)
@@ -341,6 +349,7 @@ Savage_SetViewport(
     psav->DGAViewportStatus = 0;  /* MGAAdjustFrame loops until finished */
 }
 
+#ifdef HAVE_XAA_H
 static void 
 Savage_FillRect (
     ScrnInfoPtr pScrn, 
@@ -376,7 +385,7 @@ Savage_BlitRect(
     SET_SYNC_FLAG(psav->AccelInfoRec);
     }
 }
-
+#endif
 
 static Bool 
 Savage_OpenFramebuffer(
diff --git a/src/savage_dri.c b/src/savage_dri.c
index 7b5d2b1..bdb78e4 100644
--- a/src/savage_dri.c
+++ b/src/savage_dri.c
@@ -31,8 +31,10 @@
 #include "xf86.h"
 #include "xf86_OSproc.h"
 
+#ifdef HAVE_XAA_H
 #include "xaalocal.h"
 #include "xaarop.h"
+#endif
 
 #include "xf86Pci.h"
 #include "xf86fbman.h"
@@ -287,8 +289,10 @@ static void SAVAGEWakeupHandler(WAKEUPHANDLER_ARGS_DECL)
    }
    if (psav->useEXA)
 	exaMarkSync(pScreen);
+#ifdef HAVE_XAA_H
    else
 	psav->AccelInfoRec->NeedToSync = TRUE;
+#endif
    /* FK: this flag doesn't seem to be used. */
 }
 
@@ -1535,8 +1539,10 @@ SAVAGEDRIMoveBuffers(WindowPtr pParent, DDXPointRec ptOldOrg,
     BCI_SEND(0xc0020000); /* wait for 2D idle */
     if (psav->useEXA)
 	exaMarkSync(pScreen);
+#ifdef HAVE_XAA_H
     else
 	psav->AccelInfoRec->NeedToSync = TRUE;
+#endif
 }
 
 /* Definition in savage_accel.c */
diff --git a/src/savage_driver.c b/src/savage_driver.c
index 1083d65..026bf5c 100644
--- a/src/savage_driver.c
+++ b/src/savage_driver.c
@@ -3987,10 +3987,12 @@ static Bool SavageCloseScreen(CLOSE_SCREEN_ARGS_DECL)
 	psav->EXADriverPtr = NULL;
     }
 
+#ifdef HAVE_XAA_H
     if( psav->AccelInfoRec ) {
         XAADestroyInfoRec( psav->AccelInfoRec );
 	psav->AccelInfoRec = NULL;
     }
+#endif
 
     if( psav->DGAModes ) {
 	free( psav->DGAModes );
diff --git a/src/savage_driver.h b/src/savage_driver.h
index d51b2a1..b604292 100644
--- a/src/savage_driver.h
+++ b/src/savage_driver.h
@@ -63,7 +63,10 @@
 #include "fboverlay.h"
 #include "xf86cmap.h"
 #include "vbe.h"
+#ifdef HAVE_XAA_H
 #include "xaa.h"
+#endif
+#include "xf86fbman.h"
 #include "exa.h"
 #include "xf86xv.h"
 
@@ -421,7 +424,9 @@ typedef struct _Savage {
     unsigned long	sbd_high;
 
     /* Support for XAA acceleration */
+#ifdef HAVE_XAA_H
     XAAInfoRecPtr	AccelInfoRec;
+#endif
     xRectangle		Rect;
     unsigned int	SavedBciCmd;
     unsigned int	SavedFgColor;
diff --git a/src/savage_hwmc.c b/src/savage_hwmc.c
index 2dea4df..d1e5553 100644
--- a/src/savage_hwmc.c
+++ b/src/savage_hwmc.c
@@ -40,8 +40,9 @@
 #include "xf86xvmc.h"
 #include <X11/extensions/Xv.h>
 #include <X11/extensions/XvMC.h>
-#include "xaa.h"
+#ifdef HAVE_XAA_H
 #include "xaalocal.h"
+#endif
 #include "dixstruct.h"
 #include "fourcc.h"
 
diff --git a/src/savage_xaa.c b/src/savage_xaa.c
index e4d661b..858cb97 100644
--- a/src/savage_xaa.c
+++ b/src/savage_xaa.c
@@ -14,10 +14,13 @@
 #endif
 
 #include <X11/Xarch.h>
+#include "savage_driver.h"
+#ifdef HAVE_XAA_H
 #include "xaalocal.h"
 #include "xaarop.h"
+
 #include "miline.h"
-#include "savage_driver.h"
+
 #include "savage_bci.h"
 
 extern int gSavageEntityIndex;
@@ -146,11 +149,12 @@ void SavageRestoreAccelState(ScrnInfoPtr pScrn)
 
     return;
 }
-
+#endif
 
 Bool 
 SavageXAAInit(ScreenPtr pScreen)
 {
+#ifdef HAVE_XAA_H
     ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
     SavagePtr psav = SAVPTR(pScrn);
     XAAInfoRecPtr xaaptr;
@@ -344,7 +348,9 @@ SavageXAAInit(ScreenPtr pScreen)
 
 
     return XAAInit(pScreen, xaaptr);
-
+#else
+    return FALSE;
+#endif
 }
 
 /* The sync function for the GE */
@@ -355,7 +361,7 @@ SavageAccelSync(ScrnInfoPtr pScrn)
     psav->WaitIdleEmpty(psav);
 }
 
-
+#ifdef HAVE_XAA_H
 /*
  * The XAA ROP helper routines all assume that a solid color is a 
  * "pattern".  The Savage chips, however, apply a non-stippled solid
@@ -1020,3 +1026,4 @@ void SavageSubsequentImageWriteRect
     BCI_SEND(BCI_W_H(w, h));
 }
 
+#endif

commit 508e0742b7d1ac1e4ff6b648d19bfa062c535d61
Author: Dave Airlie <airlied@redhat.com>
Date:   Mon Jul 2 12:29:41 2012 +0100

    savage: bump to 2.3.5
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>

diff --git a/configure.ac b/configure.ac
index d82af14..ca60e76 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
 # Initialize Autoconf
 AC_PREREQ([2.60])
 AC_INIT([xf86-video-savage],
-        [2.3.4],
+        [2.3.5],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         [xf86-video-savage])
 AC_CONFIG_SRCDIR([Makefile.am])

commit 430b956b49b6c883189074ce13bc234545b714e0
Author: Dave Airlie <airlied@redhat.com>
Date:   Wed Jun 6 11:24:31 2012 +0100

    savage: i2c drop xf86Screens usage.
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>

diff --git a/src/savage_i2c.c b/src/savage_i2c.c
index b5739a2..a37fc7f 100644
--- a/src/savage_i2c.c
+++ b/src/savage_i2c.c
@@ -37,7 +37,11 @@ in this Software without prior written authorization from the XFree86 Project.
 static void
 SavageI2CPutBits(I2CBusPtr b, int clock,  int data)
 {
+#ifdef XF86_SCRN_INTERFACE
+    ScrnInfoPtr pScrn = b->pScrn;
+#else
     ScrnInfoPtr pScrn = (ScrnInfoPtr)(xf86Screens[b->scrnIndex]);
+#endif
     SavagePtr psav = SAVPTR(pScrn);
     unsigned char reg = 0x10;
 
@@ -51,7 +55,11 @@ SavageI2CPutBits(I2CBusPtr b, int clock,  int data)
 static void
 SavageI2CGetBits(I2CBusPtr b, int *clock, int *data)
 {
+#ifdef XF86_SCRN_INTERFACE
+    ScrnInfoPtr pScrn = b->pScrn;
+#else
     ScrnInfoPtr pScrn = (ScrnInfoPtr)(xf86Screens[b->scrnIndex]);
+#endif
     SavagePtr psav = SAVPTR(pScrn);
     unsigned char reg = 0x10;
 
@@ -76,6 +84,9 @@ SavageI2CInit(ScrnInfoPtr pScrn)
 
     I2CPtr->BusName    = "I2C bus";
     I2CPtr->scrnIndex  = pScrn->scrnIndex;
+#ifdef XF86_SCRN_INTERFACE
+    I2CPtr->pScrn  = pScrn;
+#endif
     I2CPtr->I2CPutBits = SavageI2CPutBits;
     I2CPtr->I2CGetBits = SavageI2CGetBits;
 

commit a2714fb09e1e0badbb3e98e24d4b1ed92003bdb9
Author: Dave Airlie <airlied@redhat.com>
Date:   Wed Jun 6 11:22:29 2012 +0100

    savage: port to new compat API
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>

diff --git a/src/Makefile.am b/src/Makefile.am
index e980c1a..52fdf9e 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -29,6 +29,7 @@ savage_drv_la_LDFLAGS = -module -avoid-version
 savage_drv_ladir = @moduledir@/drivers
 
 savage_drv_la_SOURCES = \
+         compat-api.h \
          savage_accel.c \
 	 savage_xaa.c \
 	 savage_exa.c \
diff --git a/src/compat-api.h b/src/compat-api.h
new file mode 100644
index 0000000..98ba435
--- /dev/null
+++ b/src/compat-api.h
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2012 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Author: Dave Airlie <airlied@redhat.com>
+ */
+
+/* this file provides API compat between server post 1.13 and pre it,
+   it should be reused inside as many drivers as possible */
+#ifndef COMPAT_API_H
+#define COMPAT_API_H
+
+#ifndef GLYPH_HAS_GLYPH_PICTURE_ACCESSOR
+#define GetGlyphPicture(g, s) GlyphPicture((g))[(s)->myNum]
+#define SetGlyphPicture(g, s, p) GlyphPicture((g))[(s)->myNum] = p
+#endif
+
+#ifndef XF86_HAS_SCRN_CONV
+#define xf86ScreenToScrn(s) xf86Screens[(s)->myNum]
+#define xf86ScrnToScreen(s) screenInfo.screens[(s)->scrnIndex]
+#endif
+
+#ifndef XF86_SCRN_INTERFACE
+
+#define SCRN_ARG_TYPE int
+#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = xf86Screens[(arg1)]
+
+#define SCREEN_ARG_TYPE int
+#define SCREEN_PTR(arg1) ScreenPtr pScreen = screenInfo.screens[(arg1)]
+
+#define SCREEN_INIT_ARGS_DECL int i, ScreenPtr pScreen, int argc, char **argv
+
+#define BLOCKHANDLER_ARGS_DECL int arg, pointer blockData, pointer pTimeout, pointer pReadmask
+#define BLOCKHANDLER_ARGS arg, blockData, pTimeout, pReadmask
+
+#define WAKEUPHANDLER_ARGS_DECL int arg, pointer wakeupData, unsigned long result, pointer read_mask
+#define WAKEUPHANDLER_ARGS arg, wakeupData, result, read_mask
+
+#define CLOSE_SCREEN_ARGS_DECL int scrnIndex, ScreenPtr pScreen
+#define CLOSE_SCREEN_ARGS scrnIndex, pScreen
+
+#define ADJUST_FRAME_ARGS_DECL int arg, int x, int y, int flags
+#define ADJUST_FRAME_ARGS(arg, x, y) (arg)->scrnIndex, x, y, 0
+
+#define SWITCH_MODE_ARGS_DECL int arg, DisplayModePtr mode, int flags
+#define SWITCH_MODE_ARGS(arg, m) (arg)->scrnIndex, m, 0
+
+#define FREE_SCREEN_ARGS_DECL int arg, int flags
+
+#define VT_FUNC_ARGS_DECL int arg, int flags
+#define VT_FUNC_ARGS pScrn->scrnIndex, 0
+
+#define XF86_SCRN_ARG(x) ((x)->scrnIndex)
+#else
+#define SCRN_ARG_TYPE ScrnInfoPtr
+#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = (arg1)
+
+#define SCREEN_ARG_TYPE ScreenPtr
+#define SCREEN_PTR(arg1) ScreenPtr pScreen = (arg1)
+
+#define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv
+
+#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask
+#define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask
+
+#define WAKEUPHANDLER_ARGS_DECL ScreenPtr arg, unsigned long result, pointer read_mask
+#define WAKEUPHANDLER_ARGS arg, result, read_mask
+
+#define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen
+#define CLOSE_SCREEN_ARGS pScreen
+
+#define ADJUST_FRAME_ARGS_DECL ScrnInfoPtr arg, int x, int y
+#define ADJUST_FRAME_ARGS(arg, x, y) arg, x, y
+
+#define SWITCH_MODE_ARGS_DECL ScrnInfoPtr arg, DisplayModePtr mode
+#define SWITCH_MODE_ARGS(arg, m) arg, m
+
+#define FREE_SCREEN_ARGS_DECL ScrnInfoPtr arg
+
+#define VT_FUNC_ARGS_DECL ScrnInfoPtr arg
+#define VT_FUNC_ARGS pScrn
+
+#define XF86_SCRN_ARG(x) (x)
+
+#endif
+
+#endif
diff --git a/src/savage_accel.c b/src/savage_accel.c
index 0920e22..1bcb5fa 100644
--- a/src/savage_accel.c
+++ b/src/savage_accel.c
@@ -1274,7 +1274,7 @@ void SavageRestoreAccelState(ScrnInfoPtr pScrn)
 Bool 
 SavageInitAccel(ScreenPtr pScreen)
 {
-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
     SavagePtr psav = SAVPTR(pScrn);
 
 #ifdef SAVAGEDRI
diff --git a/src/savage_cursor.c b/src/savage_cursor.c
index 6364293..3506f3a 100644
--- a/src/savage_cursor.c
+++ b/src/savage_cursor.c
@@ -83,7 +83,7 @@ static void SavageSetCursorColors(ScrnInfoPtr pScrn, int bg, int fg);
 static Bool
 SavageUseHWCursor(ScreenPtr pScr, CursorPtr pCurs)
 {
-    ScrnInfoPtr pScrn = xf86Screens[pScr->myNum];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScr);
     SavagePtr psav = SAVPTR(pScrn);
 
     if (psav->PanelX != pScrn->currentMode->HDisplay 
@@ -100,7 +100,7 @@ SavageUseHWCursor(ScreenPtr pScr, CursorPtr pCurs)
 Bool 
 SavageHWCursorInit(ScreenPtr pScreen)
 {
-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
     SavagePtr psav = SAVPTR(pScrn);
     xf86CursorInfoPtr infoPtr;
 
diff --git a/src/savage_dga.c b/src/savage_dga.c
index 1c4d884..cb541d3 100644
--- a/src/savage_dga.c
+++ b/src/savage_dga.c
@@ -202,7 +202,7 @@ SECOND_PASS:
 Bool
 SavageDGAInit(ScreenPtr pScreen)
 {   
-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
     SavagePtr psav = SAVPTR(pScrn);
     DGAModePtr modes = NULL;
     int num = 0;
@@ -276,7 +276,7 @@ Savage_SetMode(
 	pScrn->currentMode = OldMode[index];
 
 	psav->DGAactive = FALSE;
-	SavageSwitchMode(index, pScrn->currentMode, 0);
+	SavageSwitchMode(SWITCH_MODE_ARGS(pScrn, pScrn->currentMode));
 	if( psav->hwcursor && psav->hwc_on )
 	    SavageShowCursor(pScrn);
     } else {
@@ -312,7 +312,7 @@ Savage_SetMode(
 	    (pMode->bitsPerPixel >> 3);
 
 /*	psav->UseBIOS = FALSE; */
-	SavageSwitchMode(index, pMode->mode, 0);
+	SavageSwitchMode(SWITCH_MODE_ARGS(pScrn, pMode->mode));
 	psav->UseBIOS = holdBIOS;
     }
 
@@ -337,7 +337,7 @@ Savage_SetViewport(
 ){
     SavagePtr psav = SAVPTR(pScrn);
 
-    SavageAdjustFrame(pScrn->pScreen->myNum, x, y, flags);
+    SavageAdjustFrame(ADJUST_FRAME_ARGS(pScrn, x, y));
     psav->DGAViewportStatus = 0;  /* MGAAdjustFrame loops until finished */
 }
 
diff --git a/src/savage_dri.c b/src/savage_dri.c
index 38d2a86..7b5d2b1 100644
--- a/src/savage_dri.c
+++ b/src/savage_dri.c
@@ -104,7 +104,7 @@ SAVAGEDRISubsequentScreenToScreenCopy(
  */
 static Bool SAVAGEInitVisualConfigs( ScreenPtr pScreen )
 {
-   ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+   ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
    SavagePtr psav = SAVPTR(pScrn);
    int numConfigs = 0;
    __GLXvisualConfig *pConfigs = 0;
@@ -243,7 +243,7 @@ static Bool SAVAGECreateContext( ScreenPtr pScreen, VisualPtr visual,
 			      drm_context_t hwContext, void *pVisualConfigPriv,
 			      DRIContextType contextStore )
 {
-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
     SavagePtr psav = SAVPTR(pScrn);
 
     if(psav->xvmcContext)
@@ -259,21 +259,20 @@ static Bool SAVAGECreateContext( ScreenPtr pScreen, VisualPtr visual,
 static void SAVAGEDestroyContext( ScreenPtr pScreen, drm_context_t hwContext,
 			       DRIContextType contextStore )
 {
-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
     SavagePtr psav = SAVPTR(pScrn);
 
     psav->DRIrunning--;
 }
 
-static void SAVAGEWakeupHandler( int screenNum, pointer wakeupData,
-				 unsigned long result, pointer pReadmask )
+static void SAVAGEWakeupHandler(WAKEUPHANDLER_ARGS_DECL)
 {
-   ScreenPtr pScreen = screenInfo.screens[screenNum];
-   ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+   SCREEN_PTR(arg);
+   ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
    SavagePtr psav = SAVPTR(pScrn);
 
    psav->pDRIInfo->wrap.WakeupHandler = psav->coreWakeupHandler;
-   (*psav->pDRIInfo->wrap.WakeupHandler) (screenNum, wakeupData, result, pReadmask);
+   (*psav->pDRIInfo->wrap.WakeupHandler) (WAKEUPHANDLER_ARGS);
    psav->pDRIInfo->wrap.WakeupHandler = SAVAGEWakeupHandler;
    psav->LockHeld = 1;
    if (psav->ShadowStatus) {
@@ -293,11 +292,10 @@ static void SAVAGEWakeupHandler( int screenNum, pointer wakeupData,
    /* FK: this flag doesn't seem to be used. */
 }
 
-static void SAVAGEBlockHandler( int screenNum, pointer blockData,
-				pointer pTimeout, pointer pReadmask)
+static void SAVAGEBlockHandler(BLOCKHANDLER_ARGS_DECL)
 {
-   ScreenPtr pScreen = screenInfo.screens[screenNum];
-   ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+   SCREEN_PTR(arg);
+   ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
    SavagePtr psav = SAVPTR(pScrn);
 
    if (psav->ShadowStatus) {
@@ -316,7 +314,7 @@ static void SAVAGEBlockHandler( int screenNum, pointer blockData,
    }
    psav->LockHeld = 0;
    psav->pDRIInfo->wrap.BlockHandler = psav->coreBlockHandler;
-   (*psav->pDRIInfo->wrap.BlockHandler) (screenNum, blockData, pTimeout, pReadmask);
+   (*psav->pDRIInfo->wrap.BlockHandler) (BLOCKHANDLER_ARGS);
    psav->pDRIInfo->wrap.BlockHandler = SAVAGEBlockHandler;
 }
 
@@ -395,7 +393,7 @@ static Bool SAVAGESetAgpMode(SavagePtr psav, ScreenPtr pScreen)
 
 static Bool SAVAGEDRIAgpInit(ScreenPtr pScreen)
 {
-   ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+   ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
    SavagePtr psav = SAVPTR(pScrn);
    SAVAGEDRIServerPrivatePtr pSAVAGEDRIServer = psav->DRIServerInfo;
    unsigned int offset;
@@ -586,7 +584,7 @@ static Bool SAVAGEDRIAgpInit(ScreenPtr pScreen)
 
 static Bool SAVAGEDRIMapInit( ScreenPtr pScreen )
 {
-   ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+   ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
    SavagePtr psav = SAVPTR(pScrn);
    SAVAGEDRIServerPrivatePtr pSAVAGEDRIServer = psav->DRIServerInfo;
 
@@ -688,7 +686,7 @@ static Bool SAVAGEDRIMapInit( ScreenPtr pScreen )
 
 static Bool SAVAGEDRIBuffersInit( ScreenPtr pScreen )
 {
-   ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+   ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
    SavagePtr psav = SAVPTR(pScrn);
    SAVAGEDRIServerPrivatePtr pSAVAGEDRIServer = psav->DRIServerInfo;
    int count;
@@ -736,7 +734,7 @@ static Bool SAVAGEDRIBuffersInit( ScreenPtr pScreen )
 
 static Bool SAVAGEDRIKernelInit( ScreenPtr pScreen )
 {
-   ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+   ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
    SavagePtr psav = SAVPTR(pScrn);
    SAVAGEDRIServerPrivatePtr pSAVAGEDRIServer = psav->DRIServerInfo;
    drmSAVAGEInit init;
@@ -791,7 +789,7 @@ static Bool SAVAGEDRIKernelInit( ScreenPtr pScreen )
 
 Bool SAVAGEDRIScreenInit( ScreenPtr pScreen )
 {
-   ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+   ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
    SavagePtr psav = SAVPTR(pScrn);
    DRIInfoPtr pDRIInfo;
    SAVAGEDRIPtr pSAVAGEDRI;
@@ -1069,7 +1067,7 @@ static void SAVAGEDRISetupTiledSurfaceRegs( SavagePtr psav )
 
 Bool SAVAGEDRIFinishScreenInit( ScreenPtr pScreen )
 {
-   ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+   ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
    SavagePtr psav = SAVPTR(pScrn);
    SAVAGEDRIServerPrivatePtr pSAVAGEDRIServer = psav->DRIServerInfo;
    SAVAGEDRIPtr pSAVAGEDRI = (SAVAGEDRIPtr)psav->pDRIInfo->devPrivate;
@@ -1234,7 +1232,7 @@ Bool SAVAGEDRIFinishScreenInit( ScreenPtr pScreen )
 
 void SAVAGEDRIResume(ScreenPtr pScreen)
 {
-   ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+   ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
    SavagePtr psav = SAVPTR(pScrn);
    SAVAGESAREAPrivPtr pSAREAPriv =
 			(SAVAGESAREAPrivPtr)DRIGetSAREAPrivate(pScreen);
@@ -1250,7 +1248,7 @@ void SAVAGEDRIResume(ScreenPtr pScreen)
 
 void SAVAGEDRICloseScreen( ScreenPtr pScreen )
 {
-   ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+   ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
    SavagePtr psav = SAVPTR(pScrn);
    SAVAGEDRIServerPrivatePtr pSAVAGEDRIServer = psav->DRIServerInfo;
 
@@ -1346,7 +1344,7 @@ void
 SAVAGEDRIInitBuffers(WindowPtr pWin, RegionPtr prgn, CARD32 index)
 {
     ScreenPtr pScreen = pWin->drawable.pScreen;
-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
     SavagePtr psav = SAVPTR(pScrn);
     BoxPtr pbox = REGION_RECTS(prgn);
     int nbox  = REGION_NUM_RECTS(prgn);
@@ -1396,7 +1394,7 @@ SAVAGEDRIMoveBuffers(WindowPtr pParent, DDXPointRec ptOldOrg,
 		   RegionPtr prgnSrc, CARD32 index)
 {
     ScreenPtr pScreen = pParent->drawable.pScreen;
-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
     SavagePtr psav = SAVPTR(pScrn);
     int nbox;
     BoxPtr pbox, pboxTmp, pboxNext, pboxBase, pboxNew1, pboxNew2;
@@ -1613,7 +1611,7 @@ SAVAGEDRISubsequentScreenToScreenCopy(
 static Bool
 SAVAGEDRIOpenFullScreen(ScreenPtr pScreen)
 {
-  ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+  ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
   vgaHWPtr hwp = VGAHWPTR(pScrn);
   SavagePtr psav = SAVPTR(pScrn);
   unsigned int vgaCRIndex = hwp->IOBase + 4;
@@ -1678,7 +1676,7 @@ SAVAGEDRIOpenFullScreen(ScreenPtr pScreen)
 static Bool
 SAVAGEDRICloseFullScreen(ScreenPtr pScreen)
 {
-  ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+  ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
   SavagePtr psav = SAVPTR(pScrn);
   BCI_GET_PTR;
 
diff --git a/src/savage_driver.c b/src/savage_driver.c
index 5e4ca0e..1083d65 100644
--- a/src/savage_driver.c
+++ b/src/savage_driver.c
@@ -73,7 +73,6 @@
 #include "savage_sarea.h"
 #endif
 
-
 /*
  * prototypes
  */
@@ -91,25 +90,24 @@ static int LookupChipID(PciChipsets* pset, int ChipID);
 #endif
 static Bool SavagePreInit(ScrnInfoPtr pScrn, int flags);
 
-static Bool SavageEnterVT(int scrnIndex, int flags);
-static void SavageLeaveVT(int scrnIndex, int flags);
+static Bool SavageEnterVT(VT_FUNC_ARGS_DECL);
+static void SavageLeaveVT(VT_FUNC_ARGS_DECL);
 static void SavageSave(ScrnInfoPtr pScrn);
 static void SavageWriteMode(ScrnInfoPtr pScrn, vgaRegPtr, SavageRegPtr, Bool);
 
 static void SavageInitStatus(ScrnInfoPtr pScrn);
 static void SavageInitShadowStatus(ScrnInfoPtr pScrn);
 
-static Bool SavageScreenInit(int scrnIndex, ScreenPtr pScreen, int argc,
-			     char **argv);
-static int SavageInternalScreenInit(int scrnIndex, ScreenPtr pScreen);
-static ModeStatus SavageValidMode(int index, DisplayModePtr mode,
+static Bool SavageScreenInit(SCREEN_INIT_ARGS_DECL);
+static int SavageInternalScreenInit(ScreenPtr pScreen);
+static ModeStatus SavageValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode,
 				  Bool verbose, int flags);
 
 void SavageDGAInit(ScreenPtr);
 static Bool SavageMapMem(ScrnInfoPtr pScrn);
 static void SavageUnmapMem(ScrnInfoPtr pScrn, int All);
 static Bool SavageModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode);
-static Bool SavageCloseScreen(int scrnIndex, ScreenPtr pScreen);
+static Bool SavageCloseScreen(CLOSE_SCREEN_ARGS_DECL);
 static Bool SavageSaveScreen(ScreenPtr pScreen, int mode);
 static void SavageLoadPalette(ScrnInfoPtr pScrn, int numColors,
 			      int *indicies, LOCO *colors,
@@ -125,7 +123,7 @@ static void SavageCalcClock(long freq, int min_m, int min_n1, int max_n1,
 void SavageGEReset(ScrnInfoPtr pScrn, int from_timeout, int line, char *file);
 void SavagePrintRegs(ScrnInfoPtr pScrn);
 static void SavageDPMS(ScrnInfoPtr pScrn, int mode, int flags);
-static Bool SavageDDC1(int scrnIndex);
+static Bool SavageDDC1(ScrnInfoPtr pScrn);
 static unsigned int SavageDDC1Read(ScrnInfoPtr pScrn);
 static void SavageProbeDDC(ScrnInfoPtr pScrn, int index);
 static void SavageGetTvMaxSize(SavagePtr psav);
@@ -899,7 +897,7 @@ static void SavageDoDDC(ScrnInfoPtr pScrn)
                 break;
         }
 
-        if (!SavageDDC1(pScrn->scrnIndex)) {
+        if (!SavageDDC1(pScrn)) {
             /* DDC1 failed,switch to DDC2 */
             if (xf86LoadSubModule(pScrn, "i2c")) {
                 if (SavageI2CInit(pScrn)) {
@@ -908,7 +906,7 @@ static void SavageDoDDC(ScrnInfoPtr pScrn)
                     
                     InI2CREG(tmp,psav->DDCPort);
                     OutI2CREG(tmp | 0x13,psav->DDCPort);
-                    pMon = xf86PrintEDID(xf86DoEDID_DDC2(pScrn->scrnIndex,psav->I2C));
+                    pMon = xf86PrintEDID(xf86DoEDID_DDC2(XF86_SCRN_ARG(pScrn),psav->I2C));
                     if (!psav->IgnoreEDID) xf86SetDDCproperties(pScrn, pMon);
                     OutI2CREG(tmp,psav->DDCPort);
                 }
@@ -2198,22 +2196,20 @@ static Bool SavagePreInit(ScrnInfoPtr pScrn, int flags)
 }
 
 
-static Bool SavageEnterVT(int scrnIndex, int flags)
+static Bool SavageEnterVT(VT_FUNC_ARGS_DECL)
 {
-    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+    SCRN_INFO_PTR(arg);
 #ifdef SAVAGEDRI
     SavagePtr psav = SAVPTR(pScrn);
     ScreenPtr pScreen;
 #endif
 
-    TRACE(("SavageEnterVT(%d)\n", flags));
-
     gpScrn = pScrn;
     SavageEnableMMIO(pScrn);
 
 #ifdef SAVAGEDRI
     if (psav->directRenderingEnabled) {
-        pScreen = screenInfo.screens[scrnIndex];
+        pScreen = xf86ScrnToScreen(pScrn);
         SAVAGEDRIResume(pScreen);
         DRIUnlock(pScreen);
         psav->LockHeld = 0;
@@ -2232,9 +2228,9 @@ static Bool SavageEnterVT(int scrnIndex, int flags)
 }
 
 
-static void SavageLeaveVT(int scrnIndex, int flags)
+static void SavageLeaveVT(VT_FUNC_ARGS_DECL)
 {
-    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+    SCRN_INFO_PTR(arg);
     vgaHWPtr hwp = VGAHWPTR(pScrn);
     SavagePtr psav = SAVPTR(pScrn);
     vgaRegPtr vgaSavePtr = &hwp->SavedReg;
@@ -2248,7 +2244,7 @@ static void SavageLeaveVT(int scrnIndex, int flags)
 
 #ifdef SAVAGEDRI
     if (psav->directRenderingEnabled) {
-        pScreen = screenInfo.screens[scrnIndex];
+        pScreen = xf86ScrnToScreen(pScrn);
         DRILock(pScreen, 0);
         psav->LockHeld = 1;
     }
@@ -2461,7 +2457,7 @@ static void SavageWriteMode(ScrnInfoPtr pScrn, vgaRegPtr vgaSavePtr,
 
 #ifdef SAVAGEDRI
     if (psav->directRenderingEnabled) {
-        DRILock(screenInfo.screens[pScrn->scrnIndex], 0);
+        DRILock(xf86ScrnToScreen(pScrn), 0);
         psav->LockHeld = 1;
     }
 #endif
@@ -2654,7 +2650,7 @@ static void SavageWriteMode(ScrnInfoPtr pScrn, vgaRegPtr vgaSavePtr,
 
 #ifdef SAVAGEDRI


Reply to: