summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Kabelac <zdenek.kabelac@gmail.com>2009-04-21 18:47:03 -0700
committerEric Anholt <eric@anholt.net>2009-04-21 18:48:45 -0700
commitb8b6ca830b1fd6956c76a5417462ca55174cb881 (patch)
treec80815a5f5abf288589e51a119425b5dfd66643d
parentd7ca870e1ce251d42e3689a8e1e7d080ab1325fb (diff)
Fix leak of some 965 render state on VT switch.
Signed-off-by: Zdenek Kabelac <zkabelac@redhat.com> [anholt: fixed up unneeded != NULL checks] Signed-off-by: Eric Anholt <eric@anholt.net>
-rw-r--r--src/i965_render.c23
1 files 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;
}