xserver-xorg-video-r128: Changes to 'debian-experimental'
.gitignore | 84 +++++++++--
COPYING | 95 ++++++++++++-
ChangeLog | 354 ++++++++++++++++++++++++++++++++++++++++++++++++++
Makefile.am | 16 --
README | 159 ++++++++++++++++++++++
README.r128 | 160 ----------------------
README.r128.sgml | 138 -------------------
configure.ac | 77 ++++++----
debian/changelog | 13 +
debian/control | 6
debian/patches/series | 1
man/Makefile.am | 63 +++-----
man/r128.man | 1
src/Makefile.am | 1
src/atipcirename.h | 27 +++
src/compat-api.h | 99 +++++++++++++
src/r128.h | 30 ++--
src/r128_accel.c | 40 ++++-
src/r128_cursor.c | 4
src/r128_dga.c | 32 ++--
src/r128_dri.c | 76 ++++++----
src/r128_driver.c | 203 +++++++++++++---------------
src/r128_misc.c | 3
src/r128_probe.c | 10 -
src/r128_probe.h | 14 -
src/r128_video.c | 22 +--
26 files changed, 1113 insertions(+), 615 deletions(-)
New commits:
commit 1592e880e50acceb83883bdbcd55197cda50059d
Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Date: Wed Jul 18 16:17:18 2012 +0200
Add missing misc:Depends to shut up lintian
diff --git a/debian/control b/debian/control
index eba422e..45eec5e 100644
--- a/debian/control
+++ b/debian/control
@@ -46,7 +46,9 @@ Description: X.Org X server -- ATI r128 display driver
Package: xserver-xorg-video-r128-dbg
Architecture: any
-Depends: xserver-xorg-video-r128 (= ${binary:Version})
+Depends:
+ xserver-xorg-video-r128 (= ${binary:Version}),
+ ${misc:Depends},
Section: debug
Priority: extra
Description: X.Org X server -- ATI r128 display driver (debugging symbols)
commit 10ff322effd588ae9ece92e19a3885915d959eae
Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Date: Wed Jul 18 16:15:03 2012 +0200
Bump Standards-Version to 3.9.3
diff --git a/debian/changelog b/debian/changelog
index f8774b1..ef69746 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,7 @@
xserver-xorg-video-r128 (6.8.4-1) UNRELEASED; urgency=low
* New upstream release.
+ * Bump Standards-Version to 3.9.3
-- Maarten Lankhorst <maarten.lankhorst@canonical.com> Wed, 18 Jul 2012 16:13:52 +0200
diff --git a/debian/control b/debian/control
index 5567265..eba422e 100644
--- a/debian/control
+++ b/debian/control
@@ -21,7 +21,7 @@ Build-Depends:
x11proto-xf86dri-dev,
quilt,
xutils-dev
-Standards-Version: 3.9.1
+Standards-Version: 3.9.3
Vcs-Git: git://git.debian.org/git/pkg-xorg/driver/xserver-xorg-video-r128
Vcs-Browser: http://git.debian.org/?p=pkg-xorg/driver/xserver-xorg-video-r128.git
diff --git a/debian/patches/series b/debian/patches/series
index e69de29..fdffa2a 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -0,0 +1 @@
+# placeholder
commit 1dd257e2ae08b4ecf373431b1e1cb05c5421bf73
Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Date: Wed Jul 18 16:14:41 2012 +0200
New upstream release.
diff --git a/debian/changelog b/debian/changelog
index 499a397..f8774b1 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+xserver-xorg-video-r128 (6.8.4-1) UNRELEASED; urgency=low
+
+ * New upstream release.
+
+ -- Maarten Lankhorst <maarten.lankhorst@canonical.com> Wed, 18 Jul 2012 16:13:52 +0200
+
xserver-xorg-video-r128 (6.8.2-1) unstable; urgency=low
* New upstream release.
commit c0418e1fb0407fcdfa665386ddd33ebad219d7a8
Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Date: Wed Jul 18 16:13:46 2012 +0200
Bump changelog.
diff --git a/ChangeLog b/ChangeLog
index eb9ceaf..bb89291 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,37 @@
+commit a4231073010096f689df72c1f8f1453852f28d81
+Author: Dave Airlie <airlied@redhat.com>
+Date: Tue Jul 17 16:05:09 2012 +1000
+
+ xf86-video-r128: bump to version 6.8.4
+
+ Signed-off-by: Dave Airlie <airlied@redhat.com>
+
+commit 16df5622c550c64711a25a9d8ece9152c3047a94
+Author: Dave Airlie <airlied@gmail.com>
+Date: Sun Jul 15 17:14:10 2012 +1000
+
+ r128: drop XAA support.
+
+ this just makes XAA conditional.
+
+ Signed-off-by: Dave Airlie <airlied@redhat.com>
+
+commit 734e9ff97b81af732ab7065761212e8eb8f6aa3c
+Author: Dave Airlie <airlied@redhat.com>
+Date: Mon Jul 2 12:26:11 2012 +0100
+
+ r128: bump 6.8.3 release
+
+ Signed-off-by: Dave Airlie <airlied@redhat.com>
+
+commit b027633fcfc0e226b78036e27c66ccd76542e43f
+Author: Dave Airlie <airlied@redhat.com>
+Date: Wed Jun 6 11:02:27 2012 +0100
+
+ r128: port to new compat API.
+
+ Signed-off-by: Dave Airlie <airlied@redhat.com>
+
commit 1ac4cd4b41d0e8232660df78ff136df1214f3907
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date: Fri Mar 23 19:23:54 2012 -0700
commit a4231073010096f689df72c1f8f1453852f28d81
Author: Dave Airlie <airlied@redhat.com>
Date: Tue Jul 17 16:05:09 2012 +1000
xf86-video-r128: bump to version 6.8.4
Signed-off-by: Dave Airlie <airlied@redhat.com>
diff --git a/configure.ac b/configure.ac
index 6c4f5d9..e45a402 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
# Initialize Autoconf
AC_PREREQ([2.60])
AC_INIT([xf86-video-r128],
- [6.8.3],
+ [6.8.4],
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
[xf86-video-r128])
AC_CONFIG_SRCDIR([Makefile.am])
commit 16df5622c550c64711a25a9d8ece9152c3047a94
Author: Dave Airlie <airlied@gmail.com>
Date: Sun Jul 15 17:14:10 2012 +1000
r128: drop XAA support.
this just makes XAA conditional.
Signed-off-by: Dave Airlie <airlied@redhat.com>
diff --git a/configure.ac b/configure.ac
index 8049006..6c4f5d9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -117,6 +117,24 @@ AC_CHECK_DECL(XSERVER_LIBPCIACCESS,
[#include "xorg-server.h"])
CPPFLAGS="$SAVE_CPPFLAGS"
+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])
+
AM_CONDITIONAL(USE_EXA, test "x$USE_EXA" = xyes)
if test "x$XSERVER_LIBPCIACCESS" = xyes; then
diff --git a/src/r128.h b/src/r128.h
index 3c51879..bee1562 100644
--- a/src/r128.h
+++ b/src/r128.h
@@ -44,7 +44,10 @@
#include "xf86Pci.h"
/* XAA and Cursor Support */
+#ifdef HAVE_XAA_H
#include "xaa.h"
+#endif
+#include "xf86fbman.h"
#include "xf86Cursor.h"
/* DDC support */
@@ -65,6 +68,8 @@
#include "GL/glxint.h"
#endif
+#include "fb.h"
+
#include "compat-api.h"
#include "atipcirename.h"
@@ -276,7 +281,9 @@ typedef struct {
Bool PaletteSavedOnVT; /* Palette saved on last VT switch */
+#ifdef HAVE_XAA_H
XAAInfoRecPtr accel;
+#endif
Bool accelOn;
xf86CursorInfoPtr cursor;
unsigned long cursor_start;
diff --git a/src/r128_accel.c b/src/r128_accel.c
index 7708bda..defc076 100644
--- a/src/r128_accel.c
+++ b/src/r128_accel.c
@@ -101,6 +101,7 @@
/* X and server generic header files */
#include "xf86.h"
+#ifdef HAVE_XAA_H
static struct {
int rop;
int pattern;
@@ -122,6 +123,7 @@ static struct {
{ R128_ROP3_DSan, R128_ROP3_DPan }, /* GXnand */
{ R128_ROP3_ONE, R128_ROP3_ONE } /* GXset */
};
+#endif
extern int getR128EntityIndex(void);
@@ -317,6 +319,7 @@ int R128CCEStop(ScrnInfoPtr pScrn)
#endif
+#ifdef HAVE_XAA_H
/* Setup for XAA SolidFill. */
static void R128SetupForSolidFill(ScrnInfoPtr pScrn,
int color, int rop, unsigned int planemask)
@@ -1006,6 +1009,7 @@ static void R128SubsequentImageWriteScanline(ScrnInfoPtr pScrn, int bufno)
}
}
}
+#endif
/* Initialize the acceleration hardware. */
void R128EngineInit(ScrnInfoPtr pScrn)
@@ -1098,6 +1102,8 @@ void R128EngineInit(ScrnInfoPtr pScrn)
#ifdef R128DRI
+#ifdef HAVE_XAA_H
+
/* Setup for XAA SolidFill. */
static void R128CCESetupForSolidFill(ScrnInfoPtr pScrn,
int color, int rop,
@@ -1540,6 +1546,7 @@ static void R128CCESubsequentMono8x8PatternFillRect(ScrnInfoPtr pScrn,
ADVANCE_RING();
}
+#endif
/* Get an indirect buffer for the CCE 2D acceleration commands.
*/
@@ -1634,6 +1641,7 @@ void R128CCEFlushIndirect( ScrnInfoPtr pScrn, int discard )
info->indirectStart = buffer->used;
}
+#ifdef HAVE_XAA_H
/* Flush and release the indirect buffer.
*/
void R128CCEReleaseIndirect( ScrnInfoPtr pScrn )
@@ -1743,7 +1751,9 @@ static void R128CCEAccelInit(ScrnInfoPtr pScrn, XAAInfoRecPtr a)
}
#endif
+#endif
+#ifdef HAVE_XAA_H
/* This callback is required for multihead cards using XAA */
static
void R128RestoreAccelState(ScrnInfoPtr pScrn)
@@ -1857,11 +1867,15 @@ static void R128MMIOAccelInit(ScrnInfoPtr pScrn, XAAInfoRecPtr a)
}
}
+#endif
/* Initialize XAA for supported acceleration and also initialize the
graphics hardware for acceleration. */
Bool R128AccelInit(ScreenPtr pScreen)
{
+#ifndef HAVE_XAA_H
+ return FALSE;
+#else
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
XAAInfoRecPtr a;
@@ -1880,4 +1894,5 @@ Bool R128AccelInit(ScreenPtr pScreen)
R128EngineInit(pScrn);
return XAAInit(pScreen, a);
+#endif
}
diff --git a/src/r128_dga.c b/src/r128_dga.c
index 71e1b42..d7fee02 100644
--- a/src/r128_dga.c
+++ b/src/r128_dga.c
@@ -29,10 +29,12 @@ static Bool R128_OpenFramebuffer(ScrnInfoPtr, char **, unsigned char **,
static Bool R128_SetMode(ScrnInfoPtr, DGAModePtr);
static int R128_GetViewport(ScrnInfoPtr);
static void R128_SetViewport(ScrnInfoPtr, int, int, int);
+#ifdef HAVE_XAA_H
static void R128_FillRect(ScrnInfoPtr, int, int, int, int, unsigned long);
static void R128_BlitRect(ScrnInfoPtr, int, int, int, int, int, int);
static void R128_BlitTransRect(ScrnInfoPtr, int, int, int, int, int, int,
unsigned long);
+#endif
static DGAModePtr R128SetupDGAMode(ScrnInfoPtr pScrn,
DGAModePtr modes,
@@ -81,6 +83,7 @@ SECOND_PASS:
if (pixmap)
currentMode->flags |= DGA_PIXMAP_AVAILABLE;
+#ifdef HAVE_XAA_H
if (info->accel) {
if (info->accel->SetupForSolidFill &&
info->accel->SubsequentSolidFillRect)
@@ -93,6 +96,7 @@ SECOND_PASS:
DGA_BLIT_RECT | DGA_BLIT_RECT_TRANS))
currentMode->flags &= ~DGA_CONCURRENT_ACCESS;
}
+#endif
if (pMode->Flags & V_DBLSCAN)
currentMode->flags |= DGA_DOUBLESCAN;
if (pMode->Flags & V_INTERLACE)
@@ -211,6 +215,7 @@ R128DGAInit(ScreenPtr pScreen)
info->DGAFuncs.BlitRect = NULL;
info->DGAFuncs.BlitTransRect = NULL;
+#ifdef HAVE_XAA_H
if (info->accel) {
info->DGAFuncs.Sync = info->accel->Sync;
if (info->accel->SetupForSolidFill &&
@@ -222,6 +227,7 @@ R128DGAInit(ScreenPtr pScreen)
info->DGAFuncs.BlitTransRect = R128_BlitTransRect;
}
}
+#endif
return DGAInit(pScreen, &(info->DGAFuncs), modes, num);
}
@@ -317,7 +323,7 @@ R128_SetViewport(
info->DGAViewportStatus = 0; /* FIXME */
}
-
+#ifdef HAVE_XAA_H
static void
R128_FillRect (
ScrnInfoPtr pScrn,
@@ -379,7 +385,7 @@ R128_BlitTransRect(
if (pScrn->bitsPerPixel == info->CurrentLayout.bitsPerPixel)
SET_SYNC_FLAG(info->accel);
}
-
+#endif
static Bool
R128_OpenFramebuffer(
diff --git a/src/r128_dri.c b/src/r128_dri.c
index 4f318ef..09b3cff 100644
--- a/src/r128_dri.c
+++ b/src/r128_dri.c
@@ -301,10 +301,11 @@ static void R128DestroyContext(ScreenPtr pScreen, drm_context_t hwContext,
can start/stop the engine. */
static void R128EnterServer(ScreenPtr pScreen)
{
+#ifdef HAVE_XAA_H
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
-
if (info->accel) info->accel->NeedToSync = TRUE;
+#endif
}
/* Called when the X server goes to sleep to allow the X server's
@@ -358,9 +359,11 @@ static void R128DRIInitBuffers(WindowPtr pWin, RegionPtr prgn, CARD32 indx)
ScreenPtr pScreen = pWin->drawable.pScreen;
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
+#ifdef HAVE_XAA_H
BoxPtr pbox, pboxSave;
int nbox, nboxSave;
int depth;
+#endif
/* FIXME: Use accel when CCE 2D code is written
* EA: What is this code kept for? Radeon doesn't have it and
@@ -369,7 +372,7 @@ static void R128DRIInitBuffers(WindowPtr pWin, RegionPtr prgn, CARD32 indx)
*/
if (info->directRenderingEnabled)
return;
-
+#ifdef HAVE_XAA_H
/* FIXME: This should be based on the __GLXvisualConfig info */
switch (pScrn->bitsPerPixel) {
case 8: depth = 0x000000ff; break;
@@ -413,6 +416,7 @@ static void R128DRIInitBuffers(WindowPtr pWin, RegionPtr prgn, CARD32 indx)
pbox->y2 - pbox->y1);
info->accel->NeedToSync = TRUE;
+#endif
}
/* Copy the back and depth buffers when the X server moves a window. */
@@ -1386,8 +1390,10 @@ void R128DRICloseScreen(ScreenPtr pScreen)
static void R128DRIRefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox)
{
+#ifdef HAVE_XAA_H
R128InfoPtr info = R128PTR(pScrn);
int i;
+#endif
R128SAREAPrivPtr pSAREAPriv = DRIGetSAREAPrivate(pScrn->pScreen);
/* Don't want to do this when no 3d is active and pages are
@@ -1396,6 +1402,7 @@ static void R128DRIRefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox)
if (!pSAREAPriv->pfAllowPageFlip && pSAREAPriv->pfCurrentPage == 0)
return;
+#ifdef HAVE_XAA_H
(*info->accel->SetupForScreenToScreenCopy)(pScrn,
1, 1, GXcopy,
(CARD32)(-1), -1);
@@ -1412,10 +1419,12 @@ static void R128DRIRefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox)
yb - ya + 1);
}
}
+#endif
}
static void R128EnablePageFlip(ScreenPtr pScreen)
{
+#ifdef HAVE_XAA_H
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
R128SAREAPrivPtr pSAREAPriv = DRIGetSAREAPrivate(pScreen);
@@ -1436,6 +1445,7 @@ static void R128EnablePageFlip(ScreenPtr pScreen)
pSAREAPriv->pfAllowPageFlip = 1;
}
+#endif
}
static void R128DisablePageFlip(ScreenPtr pScreen)
diff --git a/src/r128_driver.c b/src/r128_driver.c
index bfa3dfd..9714896 100644
--- a/src/r128_driver.c
+++ b/src/r128_driver.c
@@ -78,8 +78,6 @@
#include "r128_sarea.h"
#endif
-#include "fb.h"
-
/* colormap initialization */
#include "micmap.h"
@@ -4298,8 +4296,10 @@ static Bool R128CloseScreen(CLOSE_SCREEN_ARGS_DECL)
R128UnmapMem(pScrn);
}
+#ifdef HAVE_XAA_H
if (info->accel) XAADestroyInfoRec(info->accel);
info->accel = NULL;
+#endif
if (info->scratch_save) free(info->scratch_save);
info->scratch_save = NULL;
commit 734e9ff97b81af732ab7065761212e8eb8f6aa3c
Author: Dave Airlie <airlied@redhat.com>
Date: Mon Jul 2 12:26:11 2012 +0100
r128: bump 6.8.3 release
Signed-off-by: Dave Airlie <airlied@redhat.com>
diff --git a/configure.ac b/configure.ac
index ecbe3d3..8049006 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
# Initialize Autoconf
AC_PREREQ([2.60])
AC_INIT([xf86-video-r128],
- [6.8.2],
+ [6.8.3],
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
[xf86-video-r128])
AC_CONFIG_SRCDIR([Makefile.am])
commit b027633fcfc0e226b78036e27c66ccd76542e43f
Author: Dave Airlie <airlied@redhat.com>
Date: Wed Jun 6 11:02:27 2012 +0100
r128: port to new compat API.
Signed-off-by: Dave Airlie <airlied@redhat.com>
diff --git a/src/Makefile.am b/src/Makefile.am
index df7c65c..f8bc8d1 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -40,6 +40,7 @@ r128_drv_la_SOURCES = \
r128_video.c r128_misc.c r128_probe.c $(R128_DRI_SRCS)
EXTRA_DIST = \
+ compat-api.h \
r128_common.h \
r128_dri.h \
r128_dripriv.h \
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/r128.h b/src/r128.h
index fcef00c..3c51879 100644
--- a/src/r128.h
+++ b/src/r128.h
@@ -53,8 +53,6 @@
/* Xv support */
#include "xf86xv.h"
-#include "r128_probe.h"
-
/* DRI support */
#ifndef XF86DRI
#undef R128DRI
@@ -67,8 +65,11 @@
#include "GL/glxint.h"
#endif
+#include "compat-api.h"
#include "atipcirename.h"
+#include "r128_probe.h"
+
#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 */
@@ -270,8 +271,8 @@ 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 */
diff --git a/src/r128_accel.c b/src/r128_accel.c
index 056b0b3..7708bda 100644
--- a/src/r128_accel.c
+++ b/src/r128_accel.c
@@ -1862,7 +1862,7 @@ static void R128MMIOAccelInit(ScrnInfoPtr pScrn, XAAInfoRecPtr a)
graphics hardware for acceleration. */
Bool R128AccelInit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
XAAInfoRecPtr a;
diff --git a/src/r128_cursor.c b/src/r128_cursor.c
index 8321284..62d277d 100644
--- a/src/r128_cursor.c
+++ b/src/r128_cursor.c
@@ -241,7 +241,7 @@ static void R128ShowCursor(ScrnInfoPtr pScrn)
/* Determine if hardware cursor is in use. */
static Bool R128UseHWCursor(ScreenPtr pScreen, CursorPtr pCurs)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
return info->cursor_start ? TRUE : FALSE;
@@ -250,7 +250,7 @@ static Bool R128UseHWCursor(ScreenPtr pScreen, CursorPtr pCurs)
/* Initialize hardware cursor support. */
Bool R128CursorInit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
xf86CursorInfoPtr cursor;
FBAreaPtr fbarea;
diff --git a/src/r128_dga.c b/src/r128_dga.c
index 1c8a8dd..71e1b42 100644
--- a/src/r128_dga.c
+++ b/src/r128_dga.c
@@ -142,7 +142,7 @@ SECOND_PASS:
Bool
R128DGAInit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
DGAModePtr modes = NULL;
int num = 0;
@@ -243,7 +243,7 @@ R128_SetMode(
pScrn->currentMode = info->CurrentLayout.mode;
- pScrn->SwitchMode(indx, pScrn->currentMode, 0);
+ pScrn->SwitchMode(SWITCH_MODE_ARGS(pScrn, pScrn->currentMode));
#ifdef R128DRI
if (info->directRenderingEnabled) {
R128CCE_STOP(pScrn, info);
@@ -256,7 +256,7 @@ R128_SetMode(
R128CCE_START(pScrn, info);
}
#endif
- pScrn->AdjustFrame(indx, 0, 0, 0);
+ pScrn->AdjustFrame(ADJUST_FRAME_ARGS(pScrn, 0, 0));
info->DGAactive = FALSE;
} else {
if(!info->DGAactive) { /* save the old parameters */
@@ -274,7 +274,7 @@ R128_SetMode(
: pMode->depth);
/* R128ModeInit() will set the mode field */
- pScrn->SwitchMode(indx, pMode->mode, 0);
+ pScrn->SwitchMode(SWITCH_MODE_ARGS(pScrn, pMode->mode));
#ifdef R128DRI
if (info->directRenderingEnabled) {
@@ -313,7 +313,7 @@ R128_SetViewport(
){
R128InfoPtr info = R128PTR(pScrn);
- pScrn->AdjustFrame(pScrn->pScreen->myNum, x, y, flags);
+ pScrn->AdjustFrame(ADJUST_FRAME_ARGS(pScrn, x, y));
info->DGAViewportStatus = 0; /* FIXME */
}
diff --git a/src/r128_dri.c b/src/r128_dri.c
index 624e3a5..4f318ef 100644
--- a/src/r128_dri.c
+++ b/src/r128_dri.c
@@ -77,7 +77,7 @@ static void R128DRIRefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
client. */
static Bool R128InitVisualConfigs(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
int numConfigs = 0;
__GLXvisualConfig *pConfigs = NULL;
@@ -279,7 +279,7 @@ static Bool R128CreateContext(ScreenPtr pScreen, VisualPtr visual,
drm_context_t hwContext, void *pVisualConfigPriv,
DRIContextType contextStore)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
info->drmCtx = hwContext;
@@ -301,7 +301,7 @@ static void R128DestroyContext(ScreenPtr pScreen, drm_context_t hwContext,
can start/stop the engine. */
static void R128EnterServer(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
if (info->accel) info->accel->NeedToSync = TRUE;
@@ -315,7 +315,7 @@ static void R128EnterServer(ScreenPtr pScreen)
can start/stop the engine. */
static void R128LeaveServer(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
unsigned char *R128MMIO = info->MMIO;
@@ -356,7 +356,7 @@ static void R128DRIInitBuffers(WindowPtr pWin, RegionPtr prgn, CARD32 indx)
{
/* FIXME: This routine needs to have acceleration turned on */
ScreenPtr pScreen = pWin->drawable.pScreen;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
BoxPtr pbox, pboxSave;
int nbox, nboxSave;
@@ -420,7 +420,7 @@ static void R128DRIMoveBuffers(WindowPtr pWin, DDXPointRec ptOldOrg,
RegionPtr prgnSrc, CARD32 indx)
{
ScreenPtr pScreen = pWin->drawable.pScreen;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
/* FIXME: This routine needs to have acceleration turned on */
@@ -905,7 +905,7 @@ static Bool R128DRIBufInit(R128InfoPtr info, ScreenPtr pScreen)
static void R128DRIIrqInit(R128InfoPtr info, ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
if (!info->irq) {
info->irq = drmGetInterruptFromBusID(
@@ -969,7 +969,7 @@ static void R128DRICCEInit(ScrnInfoPtr pScrn)
create the DRI data structures and initialize the DRI state. */
Bool R128DRIScreenInit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
DRIInfoPtr pDRIInfo;
R128DRIPtr pR128DRI;
@@ -1206,7 +1206,7 @@ Bool R128DRIScreenInit(ScreenPtr pScreen)
initialization. */
Bool R128DRIFinishScreenInit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
R128SAREAPrivPtr pSAREAPriv;
R128DRIPtr pR128DRI;
@@ -1291,7 +1291,7 @@ Bool R128DRIFinishScreenInit(ScreenPtr pScreen)
resources used by the DRI. */
void R128DRICloseScreen(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
drmR128Init drmInfo;
@@ -1416,7 +1416,7 @@ static void R128DRIRefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox)
static void R128EnablePageFlip(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
R128SAREAPrivPtr pSAREAPriv = DRIGetSAREAPrivate(pScreen);
@@ -1462,7 +1462,7 @@ static void R128DRITransitionMultiToSingle3d(ScreenPtr pScreen)
static void R128DRITransitionTo3d(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
R128EnablePageFlip(pScreen);
@@ -1475,7 +1475,7 @@ static void R128DRITransitionTo3d(ScreenPtr pScreen)
static void R128DRITransitionTo2d(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
R128SAREAPrivPtr pSAREAPriv = DRIGetSAREAPrivate(pScreen);
diff --git a/src/r128_driver.c b/src/r128_driver.c
index dc83076..bfa3dfd 100644
--- a/src/r128_driver.c
+++ b/src/r128_driver.c
@@ -118,7 +118,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);
@@ -1357,7 +1357,7 @@ static Bool R128GetDFPInfo(ScrnInfoPtr pScrn)
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);
if(!MonInfo) {
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"No DFP detected\n");
@@ -2165,10 +2165,10 @@ static void R128LoadPalette(ScrnInfoPtr pScrn, int numColors,
}
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 R128DRI
@@ -2177,7 +2177,7 @@ R128BlockHandler(int i, pointer blockData, pointer pTimeout, pointer pReadmask)
#endif
pScreen->BlockHandler = info->BlockHandler;
- (*pScreen->BlockHandler) (i, blockData, pTimeout, pReadmask);
+ (*pScreen->BlockHandler) (BLOCKHANDLER_ARGS);
pScreen->BlockHandler = R128BlockHandler;
if(info->VideoTimerCallback) {
@@ -2186,10 +2186,9 @@ R128BlockHandler(int i, pointer blockData, pointer pTimeout, pointer pReadmask)
}
/* 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;
@@ -2223,7 +2222,7 @@ Bool R128ScreenInit(int scrnIndex, ScreenPtr pScreen,
}
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();
@@ -2250,11 +2249,11 @@ Bool R128ScreenInit(int scrnIndex, ScreenPtr pScreen,
int maxy = info->FbMapSize / width_bytes;
if (noAccel) {
- xf86DrvMsg(scrnIndex, X_WARNING,
+ 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 *
@@ -2269,7 +2268,7 @@ Bool R128ScreenInit(int scrnIndex, ScreenPtr pScreen,
if(xf86IsEntityShared(pScrn->entityList[0]))
{
info->directRenderingEnabled = FALSE;
- xf86DrvMsg(scrnIndex, X_WARNING,
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
Reply to: