rpms/xorg-x11-drv-nouveau/F-12 nouveau-randr-unify.patch, NONE, 1.1 xorg-x11-drv-nouveau.spec, 1.67, 1.68

Ben Skeggs bskeggs at fedoraproject.org
Wed Feb 10 22:40:25 UTC 2010


Author: bskeggs

Update of /cvs/pkgs/rpms/xorg-x11-drv-nouveau/F-12
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv30453

Modified Files:
	xorg-x11-drv-nouveau.spec 
Added Files:
	nouveau-randr-unify.patch 
Log Message:
* Thu Feb 11 2010 Ben Skeggs <bskeggs at redhat.com> 0.0.15-20.20091105gite1c2efd
- fix segfault from randr unification patches in xserver



nouveau-randr-unify.patch:
 drmmode_display.c |   13 +++++++------
 nv10_exa.c        |    2 +-
 nv_driver.c       |    6 +++---
 nv_proto.h        |    2 +-
 4 files changed, 12 insertions(+), 11 deletions(-)

--- NEW FILE nouveau-randr-unify.patch ---
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index fe2539d..1b6e869 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -160,8 +160,9 @@ drmmode_crtc_dpms(xf86CrtcPtr drmmode_crtc, int mode)
 }
 
 void
-drmmode_fbcon_copy(ScrnInfoPtr pScrn)
+drmmode_fbcon_copy(ScreenPtr pScreen)
 {
+	ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
 	xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
 	NVPtr pNv = NVPTR(pScrn);
 	ExaDriverPtr exa = pNv->EXADriverPtr;
@@ -208,7 +209,7 @@ drmmode_fbcon_copy(ScrnInfoPtr pScrn)
 		return;
 	}
 
-	pspix = drmmode_pixmap_wrap(pScrn->pScreen, fb->width, fb->height,
+	pspix = drmmode_pixmap_wrap(pScreen, fb->width, fb->height,
 				    fb->depth, fb->bpp, fb->pitch, bo);
 	nouveau_bo_ref(NULL, &bo);
 	drmFree(fb);
@@ -218,14 +219,14 @@ drmmode_fbcon_copy(ScrnInfoPtr pScrn)
 		return;
 	}
 
-	pdpix = drmmode_pixmap_wrap(pScrn->pScreen, pScrn->virtualX,
+	pdpix = drmmode_pixmap_wrap(pScreen, pScrn->virtualX,
 				    pScrn->virtualY, pScrn->depth,
 				    pScrn->bitsPerPixel, pScrn->displayWidth *
 				    pScrn->bitsPerPixel / 8, pNv->scanout);
 	if (!pdpix) {
 		xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
 			   "Failed to init scanout pixmap for fbcon mirror\n");
-		pScrn->pScreen->DestroyPixmap(pspix);
+		pScreen->DestroyPixmap(pspix);
 		return;
 	}
 
@@ -240,8 +241,8 @@ drmmode_fbcon_copy(ScrnInfoPtr pScrn)
 	nouveau_bo_map(pNv->scanout, NOUVEAU_BO_RDWR);
 	nouveau_bo_unmap(pNv->scanout);
 
-	pScrn->pScreen->DestroyPixmap(pdpix);
-	pScrn->pScreen->DestroyPixmap(pspix);
+	pScreen->DestroyPixmap(pdpix);
+	pScreen->DestroyPixmap(pspix);
 }
 
 static Bool
diff --git a/src/nv10_exa.c b/src/nv10_exa.c
index fe86fd7..497d7ab 100644
--- a/src/nv10_exa.c
+++ b/src/nv10_exa.c
@@ -466,7 +466,7 @@ static Bool NV10SetBuffer(NVPtr pNv, PicturePtr Pict, PixmapPtr pixmap)
 #else
 	OUT_RINGf (chan, 65536.0);
 #endif
-	BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_SCALE_X, 4);
+//	BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_SCALE_X, 4);
 	OUT_RINGf (chan, -2048.0);
 	OUT_RINGf (chan, -2048.0);
 	OUT_RINGf (chan, 0);
diff --git a/src/nv_driver.c b/src/nv_driver.c
index c907015..8a77fd9 100644
--- a/src/nv_driver.c
+++ b/src/nv_driver.c
@@ -1697,13 +1697,13 @@ NVScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
 	pNv->BlockHandler = pScreen->BlockHandler;
 	pScreen->BlockHandler = NVBlockHandler;
 
-	pScrn->vtSema = TRUE;
-	pScrn->pScreen = pScreen;
 	if (pNv->kms_enable)
-		drmmode_fbcon_copy(pScrn);
+		drmmode_fbcon_copy(pScreen);
 
 	if (!NVEnterVT(pScrn->scrnIndex, 0))
 		return FALSE;
+	pScrn->vtSema = TRUE;
+	pScrn->pScreen = pScreen;
 
 	xf86DPMSInit(pScreen, xf86DPMSSet, 0);
 
diff --git a/src/nv_proto.h b/src/nv_proto.h
index ceddbee..c8f3fa1 100644
--- a/src/nv_proto.h
+++ b/src/nv_proto.h
@@ -7,7 +7,7 @@ Bool drmmode_is_rotate_pixmap(PixmapPtr, struct nouveau_bo **);
 void drmmode_adjust_frame(ScrnInfoPtr pScrn, int x, int y, int flags);
 void drmmode_remove_fb(ScrnInfoPtr pScrn);
 Bool drmmode_cursor_init(ScreenPtr pScreen);
-void drmmode_fbcon_copy(ScrnInfoPtr pScrn);
+void drmmode_fbcon_copy(ScreenPtr pScreen);
 
 /* in nouveau_calc.c */
 void nouveau_calc_arb(ScrnInfoPtr pScrn, int vclk, int bpp, int *burst, int *lwm);


Index: xorg-x11-drv-nouveau.spec
===================================================================
RCS file: /cvs/pkgs/rpms/xorg-x11-drv-nouveau/F-12/xorg-x11-drv-nouveau.spec,v
retrieving revision 1.67
retrieving revision 1.68
diff -u -p -r1.67 -r1.68
--- xorg-x11-drv-nouveau.spec	15 Jan 2010 01:25:09 -0000	1.67
+++ xorg-x11-drv-nouveau.spec	10 Feb 2010 22:39:44 -0000	1.68
@@ -19,7 +19,7 @@ Name:      xorg-x11-drv-nouveau
 # need to set an epoch to get version number in sync with upstream
 Epoch:     1
 Version:   %{nouveau_version}
-Release:   19.%{snapshot}%{?dist}
+Release:   20.%{snapshot}%{?dist}
 URL:       http://www.x.org
 License:   MIT
 Group:     User Interface/X Hardware Support
@@ -51,6 +51,7 @@ Patch9: nouveau-kms-noaccel-fixes.patch
 Patch10: nouveau-nv04_nodcb.patch
 Patch11: nouveau-libdrm-compat.patch
 Patch12: nouveau-randr-fixes.patch
+Patch13: nouveau-randr-unify.patch
 
 %description 
 X.Org X11 nouveau video driver.
@@ -68,6 +69,7 @@ X.Org X11 nouveau video driver.
 %patch10 -p1 -b .nv04nodcb
 %patch11 -p1 -b .libdrm
 %patch12 -p1 -b .randrfix
+%patch13 -p1 -b .randrunify
 
 %build
 autoreconf -v --install
@@ -91,6 +93,9 @@ rm -rf $RPM_BUILD_ROOT
 %{_mandir}/man4/nouveau.4*
 
 %changelog
+* Thu Feb 11 2010 Ben Skeggs <bskeggs at redhat.com> 0.0.15-20.20091105gite1c2efd
+- fix segfault from randr unification patches in xserver
+
 * Fri Jan 15 2010 Ben Skeggs <bskeggs at redhat.com> 0.0.15-19.20091105gite1c2efd
 - nouveau-nv04_nodcb.patch: assume nv04 doesn't have a DCB table (rh#555202)
 - nouveau-randr-fixes.patch: fix fb resize/rotate on <nv50 (rh#532978)



More information about the scm-commits mailing list