summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2012-05-02 14:10:56 +0100
committerDave Airlie <airlied@redhat.com>2012-05-02 14:10:56 +0100
commit2477a9f115678fb472b14c5a9f005ce34d6463e5 (patch)
treedebe2af9a4f1f96685df822936233a5d070a5c5e
parentf83f5a5129f4a5822bb7bb862b43d62792d22290 (diff)
port to new aBI
-rw-r--r--src/drmmode_display.c2
-rw-r--r--src/nv_driver.c71
2 files changed, 45 insertions, 28 deletions
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 73f1e25..46bebd6 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -1192,7 +1192,7 @@ Bool drmmode_pre_init(ScrnInfoPtr pScrn, int fd, int cpp)
drmmode->mode_res->max_height);
for (i = 0; i < drmmode->mode_res->count_crtcs; i++) {
if (!xf86IsEntityShared(pScrn->entityList[0]) ||
- (pScrn->confScreen->device->screen == i))
+ (pScrn->confScreen->devices[0]->screen == i))
drmmode_crtc_init(pScrn, drmmode, i);
}
diff --git a/src/nv_driver.c b/src/nv_driver.c
index 98486f8..a963fda 100644
--- a/src/nv_driver.c
+++ b/src/nv_driver.c
@@ -40,18 +40,18 @@
static const OptionInfoRec * NVAvailableOptions(int chipid, int busid);
static void NVIdentify(int flags);
static Bool NVPreInit(ScrnInfoPtr pScrn, int flags);
-static Bool NVScreenInit(int Index, ScreenPtr pScreen, int argc,
+static Bool NVScreenInit(ScreenPtr pScreen, int argc,
char **argv);
-static Bool NVEnterVT(int scrnIndex, int flags);
-static void NVLeaveVT(int scrnIndex, int flags);
-static Bool NVCloseScreen(int scrnIndex, ScreenPtr pScreen);
+static Bool NVEnterVT(ScrnInfoPtr pScrn, int flags);
+static void NVLeaveVT(ScrnInfoPtr pScrn, int flags);
+static Bool NVCloseScreen(ScreenPtr pScreen);
static Bool NVSaveScreen(ScreenPtr pScreen, int mode);
static void NVCloseDRM(ScrnInfoPtr);
/* Optional functions */
-static Bool NVSwitchMode(int scrnIndex, DisplayModePtr mode, int flags);
-static void NVAdjustFrame(int scrnIndex, int x, int y, int flags);
-static void NVFreeScreen(int scrnIndex, int flags);
+static Bool NVSwitchMode(ScrnInfoPtr pScrn, DisplayModePtr mode, int flags);
+static void NVAdjustFrame(ScrnInfoPtr pScrn, int x, int y, int flags);
+static void NVFreeScreen(ScrnInfoPtr pScrn, int flags);
/* Internally used functions */
@@ -300,10 +300,8 @@ NVPciProbe(DriverPtr drv, int entity_num, struct pci_device *pci_dev,
#define MAX_CHIPS MAXSCREENS
Bool
-NVSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
+NVSwitchMode(ScrnInfoPtr pScrn, DisplayModePtr mode, int flags)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
-
return xf86SetSingleMode(pScrn, mode, RR_Rotate_0);
}
@@ -313,10 +311,8 @@ NVSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
*/
/* Usually mandatory */
void
-NVAdjustFrame(int scrnIndex, int x, int y, int flags)
+NVAdjustFrame(ScrnInfoPtr pScrn, int x, int y, int flags)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
-
drmmode_adjust_frame(pScrn, x, y, flags);
}
@@ -327,9 +323,8 @@ NVAdjustFrame(int scrnIndex, int x, int y, int flags)
/* Mandatory */
static Bool
-NVEnterVT(int scrnIndex, int flags)
+NVEnterVT(ScrnInfoPtr pScrn, int flags)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
NVPtr pNv = NVPTR(pScrn);
int ret;
@@ -355,9 +350,8 @@ NVEnterVT(int scrnIndex, int flags)
/* Mandatory */
static void
-NVLeaveVT(int scrnIndex, int flags)
+NVLeaveVT(ScrnInfoPtr pScrn, int flags)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
NVPtr pNv = NVPTR(pScrn);
int ret;
@@ -378,8 +372,9 @@ NVFlushCallback(CallbackListPtr *list, pointer user_data, pointer call_data)
nouveau_pushbuf_kick(pNv->pushbuf, pNv->pushbuf->channel);
}
+#if 0
static void
-NVBlockHandler (
+NVBlockHandler_old (
int i,
pointer blockData,
pointer pTimeout,
@@ -400,6 +395,29 @@ NVBlockHandler (
if (pNv->VideoTimerCallback)
(*pNv->VideoTimerCallback)(pScrn, currentTime.milliseconds);
}
+#endif
+
+static void
+NVBlockHandler (
+ ScreenPtr pScreen,
+ pointer blockData,
+ pointer pTimeout,
+ pointer pReadmask
+)
+{
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
+ NVPtr pNv = NVPTR(pScrn);
+
+ pScreen->BlockHandler = pNv->BlockHandler;
+ (*pScreen->BlockHandler) (pScreen, blockData, pTimeout, pReadmask);
+ pScreen->BlockHandler = NVBlockHandler;
+
+ if (pScrn->vtSema && !pNv->NoAccel)
+ nouveau_pushbuf_kick(pNv->pushbuf, pNv->pushbuf->channel);
+
+ if (pNv->VideoTimerCallback)
+ (*pNv->VideoTimerCallback)(pScrn, currentTime.milliseconds);
+}
static Bool
NVCreateScreenResources(ScreenPtr pScreen)
@@ -414,7 +432,7 @@ NVCreateScreenResources(ScreenPtr pScreen)
pScreen->CreateScreenResources = NVCreateScreenResources;
drmmode_fbcon_copy(pScreen);
- if (!NVEnterVT(pScrn->scrnIndex, 0))
+ if (!NVEnterVT(pScrn, 0))
return FALSE;
if (!pNv->NoAccel) {
@@ -434,9 +452,9 @@ NVCreateScreenResources(ScreenPtr pScreen)
/* Mandatory */
static Bool
-NVCloseScreen(int scrnIndex, ScreenPtr pScreen)
+NVCloseScreen(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
NVPtr pNv = NVPTR(pScrn);
drmmode_screen_fini(pScreen);
@@ -445,7 +463,7 @@ NVCloseScreen(int scrnIndex, ScreenPtr pScreen)
nouveau_dri2_fini(pScreen);
if (pScrn->vtSema) {
- NVLeaveVT(scrnIndex, 0);
+ NVLeaveVT(pScrn, 0);
pScrn->vtSema = FALSE;
}
@@ -487,21 +505,20 @@ NVCloseScreen(int scrnIndex, ScreenPtr pScreen)
pScrn->vtSema = FALSE;
pScreen->CloseScreen = pNv->CloseScreen;
pScreen->BlockHandler = pNv->BlockHandler;
- return (*pScreen->CloseScreen)(scrnIndex, pScreen);
+ return (*pScreen->CloseScreen)(pScreen);
}
/* Free up any persistent data structures */
/* Optional */
static void
-NVFreeScreen(int scrnIndex, int flags)
+NVFreeScreen(ScrnInfoPtr pScrn, int flags)
{
/*
* This only gets called when a screen is being deleted. It does not
* get called routinely at the end of a server generation.
*/
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
NVPtr pNv = NVPTR(pScrn);
if (!pNv)
@@ -1059,7 +1076,7 @@ NVLoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices,
/* This gets called at the start of each server generation */
static Bool
-NVScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+NVScreenInit(ScreenPtr pScreen, int argc, char **argv)
{
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
NVPtr pNv = NVPTR(pScrn);
@@ -1163,7 +1180,7 @@ NVScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
}
break;
default:
- xf86DrvMsg(scrnIndex, X_ERROR,
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"Internal error: invalid bpp (%d) in NVScreenInit\n",
pScrn->bitsPerPixel);
ret = FALSE;