From b8b6ca830b1fd6956c76a5417462ca55174cb881 Mon Sep 17 00:00:00 2001 From: Zdenek Kabelac Date: Tue, 21 Apr 2009 18:47:03 -0700 Subject: Fix leak of some 965 render state on VT switch. Signed-off-by: Zdenek Kabelac [anholt: fixed up unneeded != NULL checks] Signed-off-by: Eric Anholt --- src/i965_render.c | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/src/i965_render.c b/src/i965_render.c index c3df9d21..704db975 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; } -- cgit v1.2.3