xf86-video-intel: 2 commits - src/intel_driver.c src/intel.h

Chris Wilson ickle at kemper.freedesktop.org
Tue Jul 13 02:51:45 PDT 2010


 src/intel.h        |    3 +++
 src/intel_driver.c |   39 ++++++++++++++++++---------------------
 2 files changed, 21 insertions(+), 21 deletions(-)

New commits:
commit 2267e5928bd90a6997970584462bd97df447e819
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Tue Jul 13 10:36:34 2010 +0100

    Workaround a broken container_of define in list.h

diff --git a/src/intel.h b/src/intel.h
index 26cb96a..01291a0 100644
--- a/src/intel.h
+++ b/src/intel.h
@@ -130,6 +130,9 @@ list_is_empty(struct list *head)
 }
 #endif
 
+/* XXX work around a broken define in list.h currently [ickle 20100713] */
+#undef container_of
+
 #ifndef container_of
 #define container_of(ptr, type, member) \
 	((type *)((char *)(ptr) - (char *) &((type *)0)->member))
commit 798c3a5fc6e3d44c9b94e6bc4e72385a10939f52
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Tue Jul 13 10:30:33 2010 +0100

    Teardown the bufmgr on shutdown as well.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/intel_driver.c b/src/intel_driver.c
index c02b004..7761ccf 100644
--- a/src/intel_driver.c
+++ b/src/intel_driver.c
@@ -445,43 +445,32 @@ static void intel_close_drm_master(intel_screen_private *intel)
 	}
 }
 
-static void intel_init_bufmgr(ScrnInfoPtr scrn)
+static int intel_init_bufmgr(intel_screen_private *intel)
 {
-	intel_screen_private *intel = intel_get_screen_private(scrn);
 	int batch_size;
 
-	if (intel->bufmgr)
-		return;
-
 	batch_size = 4096 * 4;
-
-	/* The 865 has issues with larger-than-page-sized batch buffers. */
 	if (IS_I865G(intel))
+		/* The 865 has issues with larger-than-page-sized batch buffers. */
 		batch_size = 4096;
 
 	intel->bufmgr = drm_intel_bufmgr_gem_init(intel->drmSubFD, batch_size);
+	if (!intel->bufmgr)
+		return FALSE;
+
 	drm_intel_bufmgr_gem_enable_reuse(intel->bufmgr);
 	drm_intel_bufmgr_gem_enable_fenced_relocs(intel->bufmgr);
 
 	list_init(&intel->batch_pixmaps);
 	list_init(&intel->flush_pixmaps);
 	list_init(&intel->in_flight);
+
+	return TRUE;
 }
 
-static Bool I830DrmModeInit(ScrnInfoPtr scrn)
+static void intel_bufmgr_fini(intel_screen_private *intel)
 {
-	intel_screen_private *intel = intel_get_screen_private(scrn);
-
-	intel_init_bufmgr(scrn);
-
-	if (drmmode_pre_init(scrn, intel->drmSubFD, intel->cpp) == FALSE) {
-		xf86DrvMsg(scrn->scrnIndex, X_ERROR,
-			   "Kernel modesetting setup failed\n");
-		PreInitCleanup(scrn);
-		return FALSE;
-	}
-
-	return TRUE;
+	drm_intel_bufmgr_destroy(intel->bufmgr);
 }
 
 static void I830XvInit(ScrnInfoPtr scrn)
@@ -605,8 +594,15 @@ static Bool I830PreInit(ScrnInfoPtr scrn, int flags)
 
 	I830XvInit(scrn);
 
-	if (!I830DrmModeInit(scrn))
+	if (!intel_init_bufmgr(intel)) {
+		PreInitCleanup(scrn);
 		return FALSE;
+	}
+
+	if (!drmmode_pre_init(scrn, intel->drmSubFD, intel->cpp)) {
+		PreInitCleanup(scrn);
+		return FALSE;
+	}
 
 	if (!xf86SetGamma(scrn, zeros)) {
 		PreInitCleanup(scrn);
@@ -1035,6 +1031,7 @@ static void I830FreeScreen(int scrnIndex, int flags)
 	if (intel) {
 		drmmode_fini(intel);
 		intel_close_drm_master(intel);
+		intel_bufmgr_fini(intel);
 
 		free(intel);
 		scrn->driverPrivate = NULL;


More information about the xorg-commit mailing list