[Intel-gfx] PATCH fix leak of composite_op

Zdenek Kabelac zdenek.kabelac at gmail.com
Tue Mar 24 02:09:25 CET 2009


2009/3/24 Zdenek Kabelac <zdenek.kabelac at gmail.com>:
> Hi
>
> I think I've discovered yet another leak in LeaveVT, when the last
> composite_op is not being released.
> Patch also completely free gen4_render_state - so it's clean at exit
> and safes few lines of code.
>
> From 69e6aa95a6eedaba883b710de0f52aa098bad390 Mon Sep 17 00:00:00 2001
> From: Zdenek Kabelac <zkabelac at redhat.com>
> Date: Tue, 24 Mar 2009 01:46:36 +0100
> Subject: [PATCH] * fixes1
>
>
> Signed-off-by: Zdenek Kabelac <zkabelac at redhat.com>
> ---
>
> diff --git a/src/i965_render.c b/src/i965_render.c
> index c123a36..610f03e 100644
> --- a/src/i965_render.c
> +++ b/src/i965_render.c
> @@ -1717,34 +1720,30 @@ gen4_render_state_cleanup(ScrnInfoPtr pScrn)
>     struct gen4_render_state *render_state= pI830->gen4_render_state;
>     int i, j, k, l, m;
>
> -    if (render_state->vertex_buffer_bo) {
> +    gen4_composite_op *composite_op = &render_state->composite_op;
> +    if (composite_op)
> +       drm_intel_bo_unreference(composite_op->binding_table_bo);


Of course I should not be sending patches halve asleep :)
Le't try again:

>From 69e6aa95a6eedaba883b710de0f52aa098bad390 Mon Sep 17 00:00:00 2001
From: Zdenek Kabelac <zkabelac at redhat.com>
Date: Tue, 24 Mar 2009 01:46:36 +0100
Subject: [PATCH] * fixes1


Signed-off-by: Zdenek Kabelac <zkabelac at redhat.com>
---

diff --git a/src/i965_render.c b/src/i965_render.c
index c123a36..610f03e 100644
--- a/src/i965_render.c
+++ b/src/i965_render.c
@@ -1717,34 +1720,30 @@ gen4_render_state_cleanup(ScrnInfoPtr pScrn)
     struct gen4_render_state *render_state= pI830->gen4_render_state;
     int i, j, k, l, m;

-    if (render_state->vertex_buffer_bo) {
+    gen4_composite_op *composite_op = &render_state->composite_op;
+    if (composite_op->binding_table_bo)
+	drm_intel_bo_unreference(composite_op->binding_table_bo);
+
+    if (render_state->vertex_buffer_bo)
 	dri_bo_unreference (render_state->vertex_buffer_bo);
-	render_state->vertex_buffer_bo = NULL;
-    }

     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;
 }
-- 
1.6.2



More information about the Intel-gfx mailing list