xf86-video-intel: 4 commits - src/i830_driver.c src/i830.h src/i830_sdvo.c src/i830_video.c src/i965_render.c

Eric Anholt anholt at kemper.freedesktop.org
Tue Apr 21 19:54:51 PDT 2009


 src/i830.h        |    1 +
 src/i830_driver.c |    2 ++
 src/i830_sdvo.c   |    1 +
 src/i830_video.c  |    3 ++-
 src/i965_render.c |   28 ++++++++++++----------------
 5 files changed, 18 insertions(+), 17 deletions(-)

New commits:
commit ceb3a2eaf9090d67e4dfcbed188125108ceab78d
Author: Zdenek Kabelac <zdenek.kabelac at gmail.com>
Date:   Tue Apr 21 18:58:23 2009 -0700

    Remember allocated offscreenImages memory for freeing it in CloseScreen()
    
    Signed-off-by: Zdenek Kabelac <zkabelac at redhat.com>
    [anholt: renamed the member to match the variable name]
    Signed-off-by: Eric Anholt <eric at anholt.net>

diff --git a/src/i830.h b/src/i830.h
index b252f56..5772f1d 100644
--- a/src/i830.h
+++ b/src/i830.h
@@ -431,6 +431,7 @@ typedef struct _I830Rec {
 #ifdef I830_XV
    /* For Xvideo */
    i830_memory *overlay_regs;
+   void *offscreenImages;          /**< remembered memory block for release */
 #endif
 #ifdef INTEL_XVMC
    /* For XvMC */
diff --git a/src/i830_driver.c b/src/i830_driver.c
index f1ea511..2249a99 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -3700,6 +3700,8 @@ I830CloseScreen(int scrnIndex, ScreenPtr pScreen)
 
 #ifdef I830_XV
    i965_free_video(pScrn);
+   free(pI830->offscreenImages);
+   pI830->offscreenImages = NULL;
 #endif
 
    dri_bufmgr_destroy(pI830->bufmgr);
diff --git a/src/i830_video.c b/src/i830_video.c
index a62d7a1..f73c1f7 100644
--- a/src/i830_video.c
+++ b/src/i830_video.c
@@ -2886,11 +2886,12 @@ I830InitOffscreenImages(ScreenPtr pScreen)
     ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
     I830Ptr pI830 = I830PTR(pScrn);
 
-    /* need to free this someplace */
     if (!(offscreenImages = xalloc(sizeof(XF86OffscreenImageRec)))) {
 	return;
     }
 
+    pI830->offscreenImages = offscreenImages;
+
     offscreenImages[0].image = &Images[0];
     offscreenImages[0].flags = VIDEO_OVERLAID_IMAGES /*| VIDEO_CLIP_TO_VIEWPORT*/;
     offscreenImages[0].alloc_surface = I830AllocateSurface;
commit 701c6bef14b5d464847cc42c5ccb66fdeb157f1a
Author: Zdenek Kabelac <zdenek.kabelac at gmail.com>
Date:   Tue Apr 21 18:53:07 2009 -0700

    free allocated name inside sdvo_destroy
    
    Signed-off-by: Zdenek Kabelac <zkabelac at redhat.com>
    Signed-off-by: Eric Anholt <eric at anholt.net>

diff --git a/src/i830_sdvo.c b/src/i830_sdvo.c
index 41e8e59..a291824 100644
--- a/src/i830_sdvo.c
+++ b/src/i830_sdvo.c
@@ -1912,6 +1912,7 @@ i830_sdvo_destroy (xf86OutputPtr output)
 	xf86DestroyI2CBusRec (intel_output->pDDCBus, FALSE, FALSE);
 	xf86DestroyI2CDevRec (&dev_priv->d, FALSE);
 	xf86DestroyI2CBusRec (dev_priv->d.pI2CBus, TRUE, TRUE);
+	free(dev_priv->name);
 
 	if (output->randr_output) {
 	    RROutputPtr	randr_output = output->randr_output;
commit fe71217ca86eb7ae8081bf3e26d30f2002d27691
Author: Zdenek Kabelac <zdenek.kabelac at gmail.com>
Date:   Tue Apr 21 18:51:02 2009 -0700

    Unreference allocated bos in i965 render error paths
    
    Signed-off-by: Zdenek Kabelac <zkabelac at redhat.com>
    Signed-off-by: Eric Anholt <eric at anholt.net>

diff --git a/src/i965_render.c b/src/i965_render.c
index 704db97..e527f11 100644
--- a/src/i965_render.c
+++ b/src/i965_render.c
@@ -1285,8 +1285,10 @@ i965_prepare_composite(int op, PicturePtr pSrcPicture,
     surface_state_bo = dri_bo_alloc(pI830->bufmgr, "surface_state",
 				    3 * sizeof (brw_surface_state_padded),
 				    4096);
-    if (dri_bo_map(surface_state_bo, 1) != 0)
+    if (dri_bo_map(surface_state_bo, 1) != 0) {
+	dri_bo_unreference(surface_state_bo);
 	return FALSE;
+    }
     /* Set up the state buffer for the destination surface */
     i965_set_picture_surface_state(surface_state_bo, 0,
 				   pDstPicture, pDst, TRUE);
@@ -1305,6 +1307,7 @@ i965_prepare_composite(int op, PicturePtr pSrcPicture,
     binding_table_bo = dri_bo_alloc(pI830->bufmgr, "binding_table",
 				    3 * sizeof(uint32_t), 4096);
     if (dri_bo_map (binding_table_bo, 1) != 0) {
+	dri_bo_unreference(binding_table_bo);
 	dri_bo_unreference(surface_state_bo);
 	return FALSE;
     }
commit b8b6ca830b1fd6956c76a5417462ca55174cb881
Author: Zdenek Kabelac <zdenek.kabelac at gmail.com>
Date:   Tue Apr 21 18:47:03 2009 -0700

    Fix leak of some 965 render state on VT switch.
    
    Signed-off-by: Zdenek Kabelac <zkabelac at redhat.com>
    [anholt: fixed up unneeded != NULL checks]
    Signed-off-by: Eric Anholt <eric at anholt.net>

diff --git a/src/i965_render.c b/src/i965_render.c
index c3df9d2..704db97 100644
--- a/src/i965_render.c
+++ b/src/i965_render.c
@@ -1708,35 +1708,28 @@ gen4_render_state_cleanup(ScrnInfoPtr pScrn)
     I830Ptr pI830 = I830PTR(pScrn);
     struct gen4_render_state *render_state= pI830->gen4_render_state;
     int i, j, k, l, m;
+    gen4_composite_op *composite_op = &render_state->composite_op;
 
-    if (render_state->vertex_buffer_bo) {
-	dri_bo_unreference (render_state->vertex_buffer_bo);
-	render_state->vertex_buffer_bo = NULL;
-    }
+    drm_intel_bo_unreference(composite_op->binding_table_bo);
+    drm_intel_bo_unreference(render_state->vertex_buffer_bo);
 
     drm_intel_bo_unreference(render_state->vs_state_bo);
-    render_state->vs_state_bo = NULL;
     drm_intel_bo_unreference(render_state->sf_state_bo);
-    render_state->sf_state_bo = NULL;
     drm_intel_bo_unreference(render_state->sf_mask_state_bo);
-    render_state->sf_mask_state_bo = NULL;
 
-    for (i = 0; i < WM_KERNEL_COUNT; i++) {
+    for (i = 0; i < WM_KERNEL_COUNT; i++)
 	drm_intel_bo_unreference(render_state->wm_kernel_bo[i]);
-	render_state->wm_kernel_bo[i] = NULL;
-    }
 
     for (i = 0; i < SAMPLER_STATE_FILTER_COUNT; i++)
 	for (j = 0; j < SAMPLER_STATE_EXTEND_COUNT; j++)
 	    for (k = 0; k < SAMPLER_STATE_FILTER_COUNT; k++)
 		for (l = 0; l < SAMPLER_STATE_EXTEND_COUNT; l++)
-		    for (m = 0; m < WM_KERNEL_COUNT; m++) {
+		    for (m = 0; m < WM_KERNEL_COUNT; m++)
 			drm_intel_bo_unreference(render_state->wm_state_bo[m][i][j][k][l]);
-			render_state->wm_state_bo[m][i][j][k][l] = NULL;
-		    }
 
     drm_intel_bo_unreference(render_state->cc_state_bo);
-    render_state->cc_state_bo = NULL;
     drm_intel_bo_unreference(render_state->sip_kernel_bo);
-    render_state->sip_kernel_bo = NULL;
+
+    free(pI830->gen4_render_state);
+    pI830->gen4_render_state = NULL;
 }


More information about the xorg-commit mailing list