+++ /dev/null
-commit d4c64f01b9429a8fb314e43f40d1f02bb8aab30f
-Author: Lukas Hejtmanek <xhejtman@ics.muni.cz>
-Date: Wed Mar 4 17:33:27 2009 -0500
-
- Fix serious memory leak at Enter/LeaveVT
-
- This fixes huge memory leak at each VT switch (about 600 BOs + 6MB
- of RSS of Xserver).
-
-diff --git a/src/i965_render.c b/src/i965_render.c
-index de1c8b3..ab7f7d2 100644
---- a/src/i965_render.c
-+++ b/src/i965_render.c
-@@ -1715,7 +1715,7 @@ gen4_render_state_cleanup(ScrnInfoPtr pScrn)
- {
- I830Ptr pI830 = I830PTR(pScrn);
- struct gen4_render_state *render_state= pI830->gen4_render_state;
-- int i;
-+ int i, j, k, l, m;
-
- if (render_state->vertex_buffer_bo) {
- dri_bo_unreference (render_state->vertex_buffer_bo);
-@@ -1728,12 +1728,23 @@ gen4_render_state_cleanup(ScrnInfoPtr pScrn)
- render_state->sf_state_bo = NULL;
- drm_intel_bo_unreference(render_state->sf_mask_state_bo);
- render_state->sf_mask_state_bo = NULL;
-- drm_intel_bo_unreference(render_state->cc_state_bo);
-- render_state->cc_state_bo = NULL;
-+
- 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++) {
-+ 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;
- }