summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenneth Graunke <[email protected]>2019-05-09 15:40:13 -0700
committerKenneth Graunke <[email protected]>2019-05-10 12:50:19 -0700
commit3f60810de0a2960ec15118ef9888d9efc9ea605a (patch)
tree0440e021feb5ee837a5c49fbdb887e77cd7d3749
parent98b852cd07a80fa42336031f089bdac6e7c617d3 (diff)
i965: Fix memory leaks in brw_upload_cs_work_groups_surface().
This was taking a reference to the 64kB upload buffer and never returning it, leaking a reference each time this atom triggered. This leaked lots of 64kB upload BOs, eventually running us out of of VMA space. This would usually happen when using mpv to watch a movie, after 20-40 minutes. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110134 Fixes: 63d7b33f516 i965/cs: Setup surface binding for gl_NumWorkGroups Reviewed-by: Caio Marcelo de Oliveira Filho <[email protected]>
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_surface_state.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
index 8175fbf0db4..f1defb3f148 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
@@ -1685,6 +1685,11 @@ brw_upload_cs_work_groups_surface(struct brw_context *brw)
ISL_FORMAT_RAW,
3 * sizeof(GLuint), 1,
RELOC_WRITE);
+
+ /* The state buffer now holds a reference to our upload, drop ours. */
+ if (bo != brw->compute.num_work_groups_bo)
+ brw_bo_unreference(bo);
+
brw->ctx.NewDriverState |= BRW_NEW_SURFACES;
}
}