[Mesa-dev] [PATCH] i965: unref push_const_bo in intelDestroyContext
Tapani Pälli
tapani.palli at intel.com
Fri Oct 27 06:52:10 UTC 2017
Valgrind shows that leak is caused by gen6_upload_push_constant, add
unref push_const_bo per stage to destructor to fix this (like done for
scratch_bo).
==10952== 144 bytes in 1 blocks are definitely lost in loss record 44 of 66
==10952== at 0x4C30A1E: calloc (vg_replace_malloc.c:711)
==10952== by 0x8C02847: bo_alloc_internal.constprop.10 (brw_bufmgr.c:344)
==10952== by 0x8C425C4: intel_upload_space (intel_upload.c:101)
==10952== by 0x8C22ED0: gen6_upload_push_constants (gen6_constant_state.c:154)
Fixes: 24891d7c05 ("i965: Store per-stage push constant BO pointers.")
Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
Cc: mesa-stable at lists.freedesktop.org
---
src/mesa/drivers/dri/i965/brw_context.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
index c8de074638..61088e2f1f 100644
--- a/src/mesa/drivers/dri/i965/brw_context.c
+++ b/src/mesa/drivers/dri/i965/brw_context.c
@@ -1072,6 +1072,17 @@ intelDestroyContext(__DRIcontext * driContextPriv)
if (brw->wm.base.scratch_bo)
brw_bo_unreference(brw->wm.base.scratch_bo);
+ if (brw->vs.base.push_const_bo)
+ brw_bo_unreference(brw->vs.base.push_const_bo);
+ if (brw->tcs.base.push_const_bo)
+ brw_bo_unreference(brw->tcs.base.push_const_bo);
+ if (brw->tes.base.push_const_bo)
+ brw_bo_unreference(brw->tes.base.push_const_bo);
+ if (brw->gs.base.push_const_bo)
+ brw_bo_unreference(brw->gs.base.push_const_bo);
+ if (brw->wm.base.push_const_bo)
+ brw_bo_unreference(brw->wm.base.push_const_bo);
+
brw_destroy_hw_context(brw->bufmgr, brw->hw_ctx);
if (ctx->swrast_context) {
--
2.13.6
More information about the mesa-dev
mailing list