summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Simmons <jsimmons@infradead.org>2012-06-29 08:45:35 -0400
committerJames Simmons <jsimmons@infradead.org>2012-06-29 08:45:35 -0400
commit28f00c86fbfccb539af748ff13aa9d64b5da091b (patch)
tree16cca90b10d39bffd36d74a2a92b1ffbf473df33
parent6754933bb48a0fd306a62636f6fb0c540b85df7e (diff)
parentbb0329d5c4276bdcbfb457a9dcfffdda33d8954f (diff)
Merge branch 'master' into kms_branch
Conflicts: configure.ac src/Makefile.am src/via_accel.c src/via_cursor.c src/via_dga.c src/via_dri.c src/via_driver.c src/via_driver.h src/via_eng_regs.h src/via_memory.c src/via_mode.c src/via_panel.c src/via_ums.h src/via_xv.c src/via_xv_overlay.c
-rw-r--r--NEWS11
-rw-r--r--README7
-rw-r--r--src/Makefile.am1
-rw-r--r--src/compat-api.h96
-rw-r--r--src/via_display.c7
-rw-r--r--src/via_dri.c31
-rw-r--r--src/via_driver.c54
-rw-r--r--src/via_driver.h1
-rw-r--r--src/via_exa.c12
-rw-r--r--src/via_exa_h2.c18
-rw-r--r--src/via_exa_h6.c18
-rw-r--r--src/via_i2c.c30
-rw-r--r--src/via_id.c1
-rw-r--r--src/via_kms.c2
-rw-r--r--src/via_memcpy.c4
-rw-r--r--src/via_ums.c2
-rw-r--r--src/via_ums.h2
-rw-r--r--src/via_vbe.c4
-rw-r--r--src/via_xv.c8
-rw-r--r--src/via_xvmc.c4
20 files changed, 214 insertions, 99 deletions
diff --git a/NEWS b/NEWS
index a54dde5..5e1bb33 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,14 @@
+openchrome 0.2.906 (15/05/2012)
+-------------------------------
+* New features :
+- VX900 Xv support.
+- EXA is now the default although compositing is buggy and thus disabled.
+
+* Bugfixes and enhancements :
+- Fix I420 Xv surface on CME engine.
+- Fix EXA to not require XAA module in X server.
+
+
openchrome 0.2.905 (10/02/2012)
-------------------------------
* New features :
diff --git a/README b/README
index 48ad4e5..f7a8744 100644
--- a/README
+++ b/README
@@ -55,11 +55,8 @@ KNOWN BUGS/LIMITATIONS :
- CX700, VX800 and VX855 integrated TMDS is supported.
* Chrome9
-- Chrome9 chipsets' family (P4M900, K8M890, VX800, VX855) currently doesn't
- support neither AGP DMA nor 3D acceleration.
-
-* VX900
-- Xv is not yet supported.
+- Chrome9 chipsets' family (P4M900, K8M890, VX800, VX855, VX900) currently
+ doesn't support neither AGP DMA nor 3D acceleration.
Please note that 3D acceleration is provided by Mesa (http://mesa3d.org) and is
diff --git a/src/Makefile.am b/src/Makefile.am
index 4e5b21e..db044d6 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -35,6 +35,7 @@ openchrome_drv_la_LDFLAGS = -module -avoid-version
openchrome_drv_ladir = @moduledir@/drivers
openchrome_drv_la_SOURCES = \
+ compat-api.h \
via_eng_regs.h \
via_3d.c \
via_3d.h \
diff --git a/src/compat-api.h b/src/compat-api.h
new file mode 100644
index 0000000..b1591b1
--- /dev/null
+++ b/src/compat-api.h
@@ -0,0 +1,96 @@
+/*
+ * 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 index, 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 SWITCH_MODE_ARGS_DECL int arg, DisplayModePtr mode, int flags
+
+#define FREE_SCREEN_ARGS_DECL int arg, int flags
+#define FREE_SCREEN_ARGS(x) (x)->scrnIndex, 0
+
+#define VT_FUNC_ARGS_DECL int arg, int flags
+#define VT_FUNC_ARGS(flags) pScrn->scrnIndex, (flags)
+
+#define XF86_ENABLEDISABLEFB_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 SWITCH_MODE_ARGS_DECL ScrnInfoPtr arg, DisplayModePtr mode
+
+#define FREE_SCREEN_ARGS_DECL ScrnInfoPtr arg
+#define FREE_SCREEN_ARGS(x) (x)
+
+#define VT_FUNC_ARGS_DECL ScrnInfoPtr arg
+#define VT_FUNC_ARGS(flags) pScrn
+
+#define XF86_ENABLEDISABLEFB_ARG(x) (x)
+
+#endif
+
+#endif
diff --git a/src/via_display.c b/src/via_display.c
index c5ccc1e..4472778 100644
--- a/src/via_display.c
+++ b/src/via_display.c
@@ -940,15 +940,13 @@ static void
iga1_crtc_set_origin(xf86CrtcPtr crtc, int x, int y)
{
ScrnInfoPtr pScrn = crtc->scrn;
- int scrnIndex = pScrn->scrnIndex;
VIAPtr pVia = VIAPTR(pScrn);
if (pVia->pVbe) {
- ViaVbeAdjustFrame(scrnIndex, x, y);
+ ViaVbeAdjustFrame(pScrn, x, y);
} else {
ViaFirstCRTCSetStartingAddress(pScrn, x, y);
}
-
VIAVidAdjustFrame(pScrn, x, y);
}
@@ -1344,11 +1342,10 @@ static void
iga2_crtc_set_origin(xf86CrtcPtr crtc, int x, int y)
{
ScrnInfoPtr pScrn = crtc->scrn;
- int scrnIndex = pScrn->scrnIndex;
VIAPtr pVia = VIAPTR(pScrn);
if (pVia->pVbe) {
- ViaVbeAdjustFrame(scrnIndex, x, y);
+ ViaVbeAdjustFrame(pScrn, x, y);
} else {
ViaSecondCRTCSetStartingAddress(pScrn, x, y);
}
diff --git a/src/via_dri.c b/src/via_dri.c
index d42d495..3907785 100644
--- a/src/via_dri.c
+++ b/src/via_dri.c
@@ -368,7 +368,7 @@ VIADRIFBInit(ScrnInfoPtr pScrn)
static Bool
VIAInitVisualConfigs(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
VIAPtr pVia = VIAPTR(pScrn);
int numConfigs = 0;
__GLXvisualConfig *pConfigs = 0;
@@ -493,7 +493,7 @@ VIAInitVisualConfigs(ScreenPtr pScreen)
Bool
VIADRI1ScreenInit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
VIAPtr pVia = VIAPTR(pScrn);
int major, minor, patch;
DRIInfoPtr pDRIInfo;
@@ -510,7 +510,7 @@ VIADRI1ScreenInit(ScreenPtr pScreen)
if (!xf86LoaderCheckSymbol("drmAvailable"))
return FALSE;
if (!xf86LoaderCheckSymbol("DRIQueryVersion")) {
- xf86DrvMsg(pScreen->myNum, X_ERROR,
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"[dri] VIADRI1ScreenInit failed (libdri.a is too old).\n");
return FALSE;
}
@@ -518,7 +518,7 @@ VIADRI1ScreenInit(ScreenPtr pScreen)
/* Check the DRI version. */
DRIQueryVersion(&major, &minor, &patch);
if (major != DRIINFO_MAJOR_VERSION || minor < DRIINFO_MINOR_VERSION) {
- xf86DrvMsg(pScreen->myNum, X_ERROR,
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"[dri] VIADRI1ScreenInit failed -- FALSE mismatch.\n"
"[dri] libdri is %d.%d.%d, but %d.%d.x is needed.\n"
"[dri] Disabling DRI.\n",
@@ -599,7 +599,7 @@ VIADRI1ScreenInit(ScreenPtr pScreen)
pDRIInfo->bufferRequests = DRI_ALL_WINDOWS;
if (!DRIScreenInit(pScreen, pDRIInfo, &pVia->drmmode.fd)) {
- xf86DrvMsg(pScreen->myNum, X_ERROR,
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"[dri] DRIScreenInit failed. Disabling DRI.\n");
free(pDRIInfo->devPrivate);
pDRIInfo->devPrivate = NULL;
@@ -623,7 +623,7 @@ VIADRI1ScreenInit(ScreenPtr pScreen)
}
pVIADRI->regs.size = VIA_MMIO_REGSIZE;
pVIADRI->regs.handle = pVia->registerHandle;
- xf86DrvMsg(pScreen->myNum, X_INFO, "[drm] mmio Registers = 0x%08lx\n",
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[drm] mmio Registers = 0x%08lx\n",
(unsigned long)pVIADRI->regs.handle);
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[dri] mmio mapped.\n");
@@ -633,7 +633,7 @@ VIADRI1ScreenInit(ScreenPtr pScreen)
void
VIADRICloseScreen(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
VIAPtr pVia = VIAPTR(pScrn);
VIADRIPtr pVIADRI;
@@ -642,9 +642,9 @@ VIADRICloseScreen(ScreenPtr pScreen)
drmUnmap(pVia->agpMappedAddr, pVia->agpSize);
drmRmMap(pVia->drmmode.fd, pVia->agpHandle);
drmAgpUnbind(pVia->drmmode.fd, pVia->agpHandle);
- xf86DrvMsg(pScreen->myNum, X_INFO, "[drm] Freeing agp memory\n");
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[drm] Freeing agp memory\n");
drmAgpFree(pVia->drmmode.fd, pVia->agpHandle);
- xf86DrvMsg(pScreen->myNum, X_INFO, "[drm] Releasing agp module\n");
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[drm] Releasing agp module\n");
drmAgpRelease(pVia->drmmode.fd);
}
@@ -691,7 +691,7 @@ VIADestroyContext(ScreenPtr pScreen, drm_context_t hwContext,
Bool
VIADRIFinishScreenInit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
VIAPtr pVia = VIAPTR(pScrn);
VIADRIPtr pVIADRI;
@@ -754,7 +754,7 @@ VIADRISwapContext(ScreenPtr pScreen, DRISyncType syncType,
DRIContextType newContextType, void *newContext)
{
#if 0
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
VIAPtr pVia = VIAPTR(pScrn);
#endif
return;
@@ -765,7 +765,7 @@ VIADRIInitBuffers(WindowPtr pWin, RegionPtr prgn, CARD32 index)
{
#if 0
ScreenPtr pScreen = pWin->drawable.pScreen;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
VIAPtr pVia = VIAPTR(pScrn);
#endif
return;
@@ -777,7 +777,7 @@ VIADRIMoveBuffers(WindowPtr pParent, DDXPointRec ptOldOrg,
{
#if 0
ScreenPtr pScreen = pParent->drawable.pScreen;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
VIAPtr pVia = VIAPTR(pScrn);
#endif
return;
@@ -832,19 +832,20 @@ VIADRIKernelInit(ScrnInfoPtr pScrn)
static Bool
VIADRIMapInit(ScreenPtr pScreen, VIAPtr pVia)
{
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
int flags = DRM_READ_ONLY;
if (drmAddMap(pVia->drmmode.fd, pVia->MmioBase, VIA_MMIO_REGSIZE,
DRM_REGISTERS, flags, &pVia->registerHandle) < 0) {
return FALSE;
}
- xf86DrvMsg(pScreen->myNum, X_INFO, "[drm] register handle = 0x%08lx\n",
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[drm] register handle = 0x%08lx\n",
(unsigned long)pVia->registerHandle);
if (drmAddMap(pVia->drmmode.fd, pVia->FrameBufferBase, pVia->videoRambytes,
DRM_FRAME_BUFFER, 0, &pVia->frameBufferHandle) < 0) {
return FALSE;
}
- xf86DrvMsg(pScreen->myNum, X_INFO, "[drm] framebuffer handle = 0x%08lx\n",
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[drm] framebuffer handle = 0x%08lx\n",
(unsigned long)pVia->frameBufferHandle);
return TRUE;
diff --git a/src/via_driver.c b/src/via_driver.c
index d3fed2d..bd7593f 100644
--- a/src/via_driver.c
+++ b/src/via_driver.c
@@ -288,21 +288,21 @@ VIAAvailableOptions(int chipid, int busid)
}
static Bool
-VIASwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
+VIASwitchMode(SWITCH_MODE_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
return xf86SetSingleMode(pScrn, mode, RR_Rotate_0);
}
static void
-VIAAdjustFrame(int scrnIndex, int x, int y, int flags)
+VIAAdjustFrame(ADJUST_FRAME_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
int i;
- DEBUG(xf86DrvMsg(scrnIndex, X_INFO, "VIAAdjustFrame %dx%d\n", x, y));
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "VIAAdjustFrame %dx%d\n", x, y));
for (i = 0; i < xf86_config->num_crtc; i++) {
xf86CrtcPtr crtc = xf86_config->crtc[i];
@@ -312,14 +312,14 @@ VIAAdjustFrame(int scrnIndex, int x, int y, int flags)
}
static Bool
-VIAEnterVT(int scrnIndex, int flags)
+VIAEnterVT(VT_FUNC_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
VIAPtr pVia = VIAPTR(pScrn);
int i;
- DEBUG(xf86DrvMsg(scrnIndex, X_INFO, "VIAEnterVT\n"));
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "VIAEnterVT\n"));
for (i = 0; i < xf86_config->num_crtc; i++) {
xf86CrtcPtr crtc = xf86_config->crtc[i];
@@ -348,7 +348,7 @@ VIAEnterVT(int scrnIndex, int flags)
kickVblank(pScrn);
VIADRIRingBufferInit(pScrn);
viaDRIOffscreenRestore(pScrn);
- DRIUnlock(screenInfo.screens[scrnIndex]);
+ DRIUnlock(xf86ScrnToScreen(pScrn));
}
#endif
}
@@ -356,20 +356,20 @@ VIAEnterVT(int scrnIndex, int flags)
}
static void
-VIALeaveVT(int scrnIndex, int flags)
+VIALeaveVT(VT_FUNC_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
VIAPtr pVia = VIAPTR(pScrn);
int i;
- DEBUG(xf86DrvMsg(scrnIndex, X_INFO, "VIALeaveVT\n"));
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "VIALeaveVT\n"));
#ifdef XF86DRI
if (pVia->directRenderingType == DRI_1) {
volatile drm_via_sarea_t *saPriv = (drm_via_sarea_t *) DRIGetSAREAPrivate(pScrn->pScreen);
- DRILock(screenInfo.screens[scrnIndex], 0);
+ DRILock(xf86ScrnToScreen(pScrn), 0);
saPriv->ctxOwner = ~0;
viaAccelSync(pScrn);
@@ -437,12 +437,12 @@ VIAFreeRec(ScrnInfoPtr pScrn)
* get called routinely at the end of a server generation.
*/
static void
-VIAFreeScreen(int scrnIndex, int flags)
+VIAFreeScreen(FREE_SCREEN_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
VIAPtr pVia = VIAPTR(pScrn);
- DEBUG(xf86DrvMsg(scrnIndex, X_INFO, "VIAFreeScreen\n"));
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "VIAFreeScreen\n"));
if (pVia->directRenderingType != DRI_2)
VIAUnmapMem(pScrn);
@@ -450,7 +450,7 @@ VIAFreeScreen(int scrnIndex, int flags)
VIAFreeRec(pScrn);
if (!pVia->KMS && xf86LoaderCheckSymbol("vgaHWFreeHWRec"))
- vgaHWFreeHWRec(xf86Screens[scrnIndex]);
+ vgaHWFreeHWRec(pScrn);
}
static void
@@ -1644,10 +1644,10 @@ LoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices,
}
static void *
-viaShadowWindow(ScreenPtr screen, CARD32 row, CARD32 offset, int mode,
+viaShadowWindow(ScreenPtr pScreen, CARD32 row, CARD32 offset, int mode,
CARD32 *size, void *closure)
{
- ScrnInfoPtr pScrn = xf86Screens[screen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
VIAPtr pVia = VIAPTR(pScrn);
int stride;
@@ -1659,7 +1659,7 @@ viaShadowWindow(ScreenPtr screen, CARD32 row, CARD32 offset, int mode,
static Bool
VIACreateScreenResources(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
VIAPtr pVia = VIAPTR(pScrn);
PixmapPtr rootPixmap;
void *surface;
@@ -1693,14 +1693,14 @@ VIACreateScreenResources(ScreenPtr pScreen)
}
static Bool
-VIACloseScreen(int scrnIndex, ScreenPtr pScreen)
+VIACloseScreen(CLOSE_SCREEN_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
VIAPtr pVia = VIAPTR(pScrn);
int i;
- DEBUG(xf86DrvMsg(scrnIndex, X_INFO, "VIACloseScreen\n"));
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "VIACloseScreen\n"));
if (pVia->directRenderingType != DRI_2)
viaExitVideo(pScrn);
@@ -1754,12 +1754,12 @@ VIACloseScreen(int scrnIndex, ScreenPtr pScreen)
}
static Bool
-VIAScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+VIAScreenInit(SCREEN_INIT_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
VIAPtr pVia = VIAPTR(pScrn);
- int pitch, i;
+ int pitch;
pScrn->pScreen = pScreen;
pScrn->displayWidth = pScrn->virtualX;
@@ -1931,7 +1931,7 @@ VIAScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
xf86DPMSInit(pScreen, xf86DPMSSet, 0);
DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "- DPMS set up\n"));
- if (!VIAEnterVT(scrnIndex, 1))
+ if (!VIAEnterVT(VT_FUNC_ARGS(1)))
return FALSE;
if (pVia->directRenderingType != DRI_2) {
diff --git a/src/via_driver.h b/src/via_driver.h
index da22c0e..bb4bdf7 100644
--- a/src/via_driver.h
+++ b/src/via_driver.h
@@ -34,6 +34,7 @@
#define DEBUG(x)
#endif
+#include "compat-api.h"
#include "vgaHW.h"
#include "xf86.h"
diff --git a/src/via_exa.c b/src/via_exa.c
index 6dafb89..ffedae1 100644
--- a/src/via_exa.c
+++ b/src/via_exa.c
@@ -496,7 +496,7 @@ viaAccelSync(ScrnInfoPtr pScrn)
static void
viaAccelWaitMarker(ScreenPtr pScreen, int marker)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
VIAPtr pVia = VIAPTR(pScrn);
CARD32 uMarker = marker;
@@ -603,7 +603,7 @@ static Bool
viaExaDownloadFromScreen(PixmapPtr pSrc, int x, int y, int w, int h,
char *dst, int dst_pitch)
{
- ScrnInfoPtr pScrn = xf86Screens[pSrc->drawable.pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pSrc->drawable.pScreen);
unsigned wBytes = (pSrc->drawable.bitsPerPixel * w + 7) >> 3;
unsigned srcPitch = exaGetPixmapPitch(pSrc), srcOffset;
char *bounceAligned = NULL;
@@ -658,7 +658,7 @@ static Bool
viaExaTexUploadToScreen(PixmapPtr pDst, int x, int y, int w, int h, char *src,
int src_pitch)
{
- ScrnInfoPtr pScrn = xf86Screens[pDst->drawable.pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pDst->drawable.pScreen);
unsigned dstPitch = exaGetPixmapPitch(pDst), dstOffset;
unsigned wBytes = (w * pDst->drawable.bitsPerPixel + 7) >> 3;
int i, sync[2], yOffs, bufH, bufOffs, height, format;
@@ -776,7 +776,7 @@ viaExaTexUploadToScreen(PixmapPtr pDst, int x, int y, int w, int h, char *src,
Bool
viaInitExa(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
ExaDriverPtr pExa = exaDriverAlloc();
Bool nPOTSupported = TRUE;
VIAPtr pVia = VIAPTR(pScrn);
@@ -917,7 +917,7 @@ viaInitExa(ScreenPtr pScreen)
void
viaFinishInitAccel(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
VIAPtr pVia = VIAPTR(pScrn);
#ifdef XF86DRI
int size, ret;
@@ -976,7 +976,7 @@ viaFinishInitAccel(ScreenPtr pScreen)
void
viaExitAccel(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
VIAPtr pVia = VIAPTR(pScrn);
viaAccelSync(pScrn);
diff --git a/src/via_exa_h2.c b/src/via_exa_h2.c
index 5a91dfd..6f78249 100644
--- a/src/via_exa_h2.c
+++ b/src/via_exa_h2.c
@@ -134,7 +134,7 @@ viaAccelTransparentHelper_H2(VIAPtr pVia, CARD32 keyControl,
int
viaAccelMarkSync_H2(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
VIAPtr pVia = VIAPTR(pScrn);
RING_VARS;
@@ -166,7 +166,7 @@ viaAccelMarkSync_H2(ScreenPtr pScreen)
Bool
viaExaPrepareSolid_H2(PixmapPtr pPixmap, int alu, Pixel planeMask, Pixel fg)
{
- ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen);
VIAPtr pVia = VIAPTR(pScrn);
ViaTwodContext *tdc = &pVia->td;
@@ -193,7 +193,7 @@ viaExaPrepareSolid_H2(PixmapPtr pPixmap, int alu, Pixel planeMask, Pixel fg)
void
viaExaSolid_H2(PixmapPtr pPixmap, int x1, int y1, int x2, int y2)
{
- ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen);
CARD32 dstOffset = exaGetPixmapOffset(pPixmap);
CARD32 dstPitch = exaGetPixmapPitch(pPixmap);
int w = x2 - x1, h = y2 - y1;
@@ -223,7 +223,7 @@ Bool
viaExaPrepareCopy_H2(PixmapPtr pSrcPixmap, PixmapPtr pDstPixmap, int xdir,
int ydir, int alu, Pixel planeMask)
{
- ScrnInfoPtr pScrn = xf86Screens[pDstPixmap->drawable.pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pDstPixmap->drawable.pScreen);
VIAPtr pVia = VIAPTR(pScrn);
ViaTwodContext *tdc = &pVia->td;
@@ -260,7 +260,7 @@ void
viaExaCopy_H2(PixmapPtr pDstPixmap, int srcX, int srcY, int dstX, int dstY,
int width, int height)
{
- ScrnInfoPtr pScrn = xf86Screens[pDstPixmap->drawable.pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pDstPixmap->drawable.pScreen);
CARD32 dstOffset = exaGetPixmapOffset(pDstPixmap), val;
CARD32 dstPitch = exaGetPixmapPitch(pDstPixmap);
VIAPtr pVia = VIAPTR(pScrn);
@@ -299,7 +299,7 @@ Bool
viaExaCheckComposite_H2(int op, PicturePtr pSrcPicture,
PicturePtr pMaskPicture, PicturePtr pDstPicture)
{
- ScrnInfoPtr pScrn = xf86Screens[pDstPicture->pDrawable->pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pDstPicture->pDrawable->pScreen);
VIAPtr pVia = VIAPTR(pScrn);
Via3DState *v3d = &pVia->v3d;
@@ -389,7 +389,7 @@ viaIsAGP(VIAPtr pVia, PixmapPtr pPix, unsigned long *offset)
static Bool
viaExaIsOffscreen(PixmapPtr pPix)
{
- ScrnInfoPtr pScrn = xf86Screens[pPix->drawable.pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPix->drawable.pScreen);
VIAPtr pVia = VIAPTR(pScrn);
return ((unsigned long)pPix->devPrivate.ptr -
@@ -402,7 +402,7 @@ viaExaPrepareComposite_H2(int op, PicturePtr pSrcPicture,
PixmapPtr pSrc, PixmapPtr pMask, PixmapPtr pDst)
{
CARD32 height, width;
- ScrnInfoPtr pScrn = xf86Screens[pDst->drawable.pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pDst->drawable.pScreen);
VIAPtr pVia = VIAPTR(pScrn);
Via3DState *v3d = &pVia->v3d;
int curTex = 0;
@@ -510,7 +510,7 @@ void
viaExaComposite_H2(PixmapPtr pDst, int srcX, int srcY, int maskX, int maskY,
int dstX, int dstY, int width, int height)
{
- ScrnInfoPtr pScrn = xf86Screens[pDst->drawable.pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pDst->drawable.pScreen);
VIAPtr pVia = VIAPTR(pScrn);
Via3DState *v3d = &pVia->v3d;
CARD32 col;
diff --git a/src/via_exa_h6.c b/src/via_exa_h6.c
index edfa79b..9aa7bc7 100644
--- a/src/via_exa_h6.c
+++ b/src/via_exa_h6.c
@@ -134,7 +134,7 @@ viaAccelTransparentHelper_H6(VIAPtr pVia, CARD32 keyControl,
int
viaAccelMarkSync_H6(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
VIAPtr pVia = VIAPTR(pScrn);
RING_VARS;
@@ -167,7 +167,7 @@ viaAccelMarkSync_H6(ScreenPtr pScreen)
Bool
viaExaPrepareSolid_H6(PixmapPtr pPixmap, int alu, Pixel planeMask, Pixel fg)
{
- ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen);
VIAPtr pVia = VIAPTR(pScrn);
ViaTwodContext *tdc = &pVia->td;
@@ -194,7 +194,7 @@ viaExaPrepareSolid_H6(PixmapPtr pPixmap, int alu, Pixel planeMask, Pixel fg)
void
viaExaSolid_H6(PixmapPtr pPixmap, int x1, int y1, int x2, int y2)
{
- ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen);
CARD32 dstOffset = exaGetPixmapOffset(pPixmap);
CARD32 dstPitch = exaGetPixmapPitch(pPixmap);
int w = x2 - x1, h = y2 - y1;
@@ -224,7 +224,7 @@ Bool
viaExaPrepareCopy_H6(PixmapPtr pSrcPixmap, PixmapPtr pDstPixmap, int xdir,
int ydir, int alu, Pixel planeMask)
{
- ScrnInfoPtr pScrn = xf86Screens[pDstPixmap->drawable.pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pDstPixmap->drawable.pScreen);
VIAPtr pVia = VIAPTR(pScrn);
ViaTwodContext *tdc = &pVia->td;
@@ -261,7 +261,7 @@ void
viaExaCopy_H6(PixmapPtr pDstPixmap, int srcX, int srcY, int dstX, int dstY,
int width, int height)
{
- ScrnInfoPtr pScrn = xf86Screens[pDstPixmap->drawable.pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pDstPixmap->drawable.pScreen);
CARD32 dstOffset = exaGetPixmapOffset(pDstPixmap), val;
CARD32 dstPitch = exaGetPixmapPitch(pDstPixmap);
VIAPtr pVia = VIAPTR(pScrn);
@@ -301,7 +301,7 @@ Bool
viaExaCheckComposite_H6(int op, PicturePtr pSrcPicture,
PicturePtr pMaskPicture, PicturePtr pDstPicture)
{
- ScrnInfoPtr pScrn = xf86Screens[pDstPicture->pDrawable->pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pDstPicture->pDrawable->pScreen);
VIAPtr pVia = VIAPTR(pScrn);
Via3DState *v3d = &pVia->v3d;
@@ -391,7 +391,7 @@ viaIsAGP(VIAPtr pVia, PixmapPtr pPix, unsigned long *offset)
static Bool
viaExaIsOffscreen(PixmapPtr pPix)
{
- ScrnInfoPtr pScrn = xf86Screens[pPix->drawable.pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPix->drawable.pScreen);
VIAPtr pVia = VIAPTR(pScrn);
return ((unsigned long)pPix->devPrivate.ptr -
@@ -404,7 +404,7 @@ viaExaPrepareComposite_H6(int op, PicturePtr pSrcPicture,
PixmapPtr pSrc, PixmapPtr pMask, PixmapPtr pDst)
{
CARD32 height, width;
- ScrnInfoPtr pScrn = xf86Screens[pDst->drawable.pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pDst->drawable.pScreen);
VIAPtr pVia = VIAPTR(pScrn);
Via3DState *v3d = &pVia->v3d;
int curTex = 0;
@@ -512,7 +512,7 @@ void
viaExaComposite_H6(PixmapPtr pDst, int srcX, int srcY, int maskX, int maskY,
int dstX, int dstY, int width, int height)
{
- ScrnInfoPtr pScrn = xf86Screens[pDst->drawable.pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pDst->drawable.pScreen);
VIAPtr pVia = VIAPTR(pScrn);
Via3DState *v3d = &pVia->v3d;
CARD32 col;
diff --git a/src/via_i2c.c b/src/via_i2c.c
index ba2bc8d..912b87d 100644
--- a/src/via_i2c.c
+++ b/src/via_i2c.c
@@ -44,7 +44,8 @@
static void
ViaI2C1PutBits(I2CBusPtr Bus, int clock, int data)
{
- vgaHWPtr hwp = VGAHWPTR(xf86Screens[Bus->scrnIndex]);
+ SCRN_INFO_PTR(Bus->scrnIndex);
+ vgaHWPtr hwp = VGAHWPTR(pScrn);
CARD8 value = 0x01; /* Enable */
if (clock)
@@ -59,7 +60,8 @@ ViaI2C1PutBits(I2CBusPtr Bus, int clock, int data)
static void
ViaI2C1GetBits(I2CBusPtr Bus, int *clock, int *data)
{
- vgaHWPtr hwp = VGAHWPTR(xf86Screens[Bus->scrnIndex]);
+ SCRN_INFO_PTR(Bus->scrnIndex);
+ vgaHWPtr hwp = VGAHWPTR(pScrn);
CARD8 value = hwp->readSeq(hwp, 0x26);
*clock = (value & SCL_READ) != 0;
@@ -97,7 +99,8 @@ ViaI2CBus1Init(int scrnIndex)
static void
ViaI2C2PutBits(I2CBusPtr Bus, int clock, int data)
{
- vgaHWPtr hwp = VGAHWPTR(xf86Screens[Bus->scrnIndex]);
+ SCRN_INFO_PTR(Bus->scrnIndex);
+ vgaHWPtr hwp = VGAHWPTR(pScrn);
CARD8 value = 0x01; /* Enable */
if (clock)
@@ -112,7 +115,8 @@ ViaI2C2PutBits(I2CBusPtr Bus, int clock, int data)
static void
ViaI2C2GetBits(I2CBusPtr Bus, int *clock, int *data)
{
- vgaHWPtr hwp = VGAHWPTR(xf86Screens[Bus->scrnIndex]);
+ SCRN_INFO_PTR(Bus->scrnIndex);
+ vgaHWPtr hwp = VGAHWPTR(pScrn);
CARD8 value = hwp->readSeq(hwp, 0x31);
*clock = (value & SCL_READ) != 0;
@@ -151,7 +155,8 @@ ViaI2CBus2Init(int scrnIndex)
static Bool
ViaI2C3Start(I2CBusPtr b, int timeout)
{
- vgaHWPtr hwp = VGAHWPTR(xf86Screens[b->scrnIndex]);
+ SCRN_INFO_PTR(b->scrnIndex);
+ vgaHWPtr hwp = VGAHWPTR(pScrn);
ViaSeqMask(hwp, 0x2C, 0xF0, 0xF0);
b->I2CUDelay(b, b->RiseFallTime);
@@ -192,7 +197,8 @@ static void
ViaI2C3Stop(I2CDevPtr d)
{
I2CBusPtr b = d->pI2CBus;
- vgaHWPtr hwp = VGAHWPTR(xf86Screens[b->scrnIndex]);
+ SCRN_INFO_PTR(b->scrnIndex);
+ vgaHWPtr hwp = VGAHWPTR(pScrn);
ViaSeqMask(hwp, 0x2C, 0xC0, 0xF0);
b->I2CUDelay(b, b->RiseFallTime);
@@ -210,7 +216,8 @@ ViaI2C3Stop(I2CDevPtr d)
static void
ViaI2C3PutBit(I2CBusPtr b, Bool sda, int timeout)
{
- vgaHWPtr hwp = VGAHWPTR(xf86Screens[b->scrnIndex]);
+ SCRN_INFO_PTR(b->scrnIndex);
+ vgaHWPtr hwp = VGAHWPTR(pScrn);
if (sda)
ViaSeqMask(hwp, 0x2C, 0x50, 0x50);
@@ -230,7 +237,8 @@ static Bool
ViaI2C3PutByte(I2CDevPtr d, I2CByte data)
{
I2CBusPtr b = d->pI2CBus;
- vgaHWPtr hwp = VGAHWPTR(xf86Screens[b->scrnIndex]);
+ SCRN_INFO_PTR(b->scrnIndex);
+ vgaHWPtr hwp = VGAHWPTR(pScrn);
Bool ret;
int i;
@@ -257,7 +265,8 @@ ViaI2C3PutByte(I2CDevPtr d, I2CByte data)
static Bool
ViaI2C3GetBit(I2CBusPtr b, int timeout)
{
- vgaHWPtr hwp = VGAHWPTR(xf86Screens[b->scrnIndex]);
+ SCRN_INFO_PTR(b->scrnIndex);
+ vgaHWPtr hwp = VGAHWPTR(pScrn);
Bool ret;
ViaSeqMask(hwp, 0x2c, 0x80, 0xC0);
@@ -282,7 +291,8 @@ static Bool
ViaI2C3GetByte(I2CDevPtr d, I2CByte * data, Bool last)
{
I2CBusPtr b = d->pI2CBus;
- vgaHWPtr hwp = VGAHWPTR(xf86Screens[b->scrnIndex]);
+ SCRN_INFO_PTR(b->scrnIndex);
+ vgaHWPtr hwp = VGAHWPTR(pScrn);
int i;
*data = 0x00;
diff --git a/src/via_id.c b/src/via_id.c
index 911131f..6bf97c9 100644
--- a/src/via_id.c
+++ b/src/via_id.c
@@ -239,6 +239,7 @@ static struct ViaCardIdStruct ViaCardId[] = {
{"FIC CE2A1", VIA_VX800, 0x1509, 0x3002, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
{"Quanta DreamBook Light IL1", VIA_VX800, 0x152d, 0x0771, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
{"Lenovo S12", VIA_VX800, 0x17aa, 0x388c, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
+ {"Fujitsu Futro S100", VIA_VX800, 0xA0A0, 0x0702, VIA_DEVICE_CRT},
/*** VX855 ***/
{"VIA VT8562C", VIA_VX855, 0x1106, 0x5122, VIA_DEVICE_CRT},
diff --git a/src/via_kms.c b/src/via_kms.c
index 90165fc..c0847d6 100644
--- a/src/via_kms.c
+++ b/src/via_kms.c
@@ -962,7 +962,7 @@ drmmode_handle_uevents(int fd, void *closure)
if (!dev)
return;
- RRGetInfo(screenInfo.screens[scrn->scrnIndex], TRUE);
+ RRGetInfo(xf86ScrnToScreen(scrn), TRUE);
udev_device_unref(dev);
}
#endif
diff --git a/src/via_memcpy.c b/src/via_memcpy.c
index 6eff2af..d4eb804 100644
--- a/src/via_memcpy.c
+++ b/src/via_memcpy.c
@@ -523,7 +523,7 @@ cpuValid(const char *cpuinfo, char **flags)
vidCopyFunc
viaVidCopyInit(char *copyType, ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
#ifdef linux
char buf[BSIZ];
@@ -653,7 +653,7 @@ viaVidCopyInit(char *copyType, ScreenPtr pScreen)
vidCopyFunc
viaVidCopyInit(char *copyType, ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
"Using default xfree86 memcpy for video.\n");
diff --git a/src/via_ums.c b/src/via_ums.c
index 6d84755..d775a7c 100644
--- a/src/via_ums.c
+++ b/src/via_ums.c
@@ -557,7 +557,7 @@ VIAInitialize3DEngine(ScrnInfoPtr pScrn)
Bool
UMSAccelInit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
VIAPtr pVia = VIAPTR(pScrn);
Bool ret = FALSE;
diff --git a/src/via_ums.h b/src/via_ums.h
index 7d5a0a9..db7c7de 100644
--- a/src/via_ums.h
+++ b/src/via_ums.h
@@ -183,7 +183,7 @@ typedef struct _VIABIOSINFO {
/* Function prototypes */
/* via_vbe.c */
-void ViaVbeAdjustFrame(int scrnIndex, int x, int y);
+void ViaVbeAdjustFrame(ScrnInfoPtr pScrn, int x, int y);
Bool ViaVbeSetMode(ScrnInfoPtr pScrn, DisplayModePtr pMode);
Bool ViaVbeSaveRestore(ScrnInfoPtr pScrn, vbeSaveRestoreFunction function);
Bool ViaVbeModePreInit(ScrnInfoPtr pScrn);
diff --git a/src/via_vbe.c b/src/via_vbe.c
index fd8b06d..a13c464 100644
--- a/src/via_vbe.c
+++ b/src/via_vbe.c
@@ -41,9 +41,9 @@
#define VBE_DEFAULT_REFRESH 6000
void
-ViaVbeAdjustFrame(int scrnIndex, int x, int y)
+ViaVbeAdjustFrame(ScrnInfoPtr pScrn, int x, int y)
{
- VIAPtr pVia = VIAPTR(xf86Screens[scrnIndex]);
+ VIAPtr pVia = VIAPTR(pScrn);
VBESetDisplayStart(pVia->pVbe, x, y, TRUE);
}
diff --git a/src/via_xv.c b/src/via_xv.c
index 21e5a3f..028ee29 100644
--- a/src/via_xv.c
+++ b/src/via_xv.c
@@ -588,9 +588,9 @@ viaExitVideo(ScrnInfoPtr pScrn)
void
viaInitVideo(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- VIAPtr pVia = VIAPTR(pScrn);
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
XF86VideoAdaptorPtr *adaptors, *newAdaptors;
+ VIAPtr pVia = VIAPTR(pScrn);
int num_adaptors, num_new;
DBG_DD(ErrorF(" via_xv.c : viaInitVideo, Screen[%d]\n", pScrn->scrnIndex));
@@ -672,10 +672,10 @@ viaInitVideo(ScreenPtr pScreen)
static unsigned
viaSetupAdaptors(ScreenPtr pScreen, XF86VideoAdaptorPtr ** adaptors)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
+ int i, j, usedPorts, numPorts;
viaPortPrivRec *viaPortPriv;
DevUnion *pdevUnion;
- int i, j, usedPorts, numPorts;
DBG_DD(ErrorF(" via_xv.c : viaSetupAdaptors (viaSetupImageVideo): \n"));
diff --git a/src/via_xvmc.c b/src/via_xvmc.c
index de5dcf1..50acfe9 100644
--- a/src/via_xvmc.c
+++ b/src/via_xvmc.c
@@ -311,7 +311,7 @@ mpegDisable(VIAPtr pVia, CARD32 val)
void
ViaInitXVMC(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
VIAPtr pVia = VIAPTR(pScrn);
ViaXvMCPtr vXvMC = &(pVia->xvmc);
volatile ViaXvMCSAreaPriv *saPriv;
@@ -500,7 +500,7 @@ ViaXvMCCreateContext(ScrnInfoPtr pScrn, XvMCContextPtr pContext,
(pVia->Chipset == VIA_PM800) ||
(pVia->Chipset == VIA_P4M900)));
contextRec->chipId = pVia->ChipId;
- contextRec->screen = pScrn->pScreen->myNum;
+ contextRec->screen = pScrn->scrnIndex;
contextRec->depth = pScrn->bitsPerPixel;
contextRec->stride = pVia->Bpp * pScrn->virtualX;