diff options
author | Tapani Pälli <[email protected]> | 2017-10-27 12:54:02 +0300 |
---|---|---|
committer | Emil Velikov <[email protected]> | 2017-10-27 18:55:56 +0100 |
commit | 7df1b901b92407fcfc96543ca7db5604cfa4051d (patch) | |
tree | a0967a0d2f9925ea61b648c1a3ecfb92142d2d87 | |
parent | cbb8aec81cf55d4ebafbfb60f4a3538d2f10fbef (diff) |
i965: unref push_const_bo in intelDestroyContext
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)
v2: remove if conditions, brw_bo_unreference handles NULL (Ken, Emil)
Fixes: 24891d7c05 ("i965: Store per-stage push constant BO pointers.")
Signed-off-by: Tapani Pälli <[email protected]>
Reviewed-by: Emil Velikov <[email protected]>
Reviewed-by: Kenneth Graunke <[email protected]>
Cc: [email protected]
(cherry picked from commit 0b131ca427d788ae08426bdeddb8f4bd3c7da202)
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_context.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index c8de0746387..f0adacad1d7 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -1072,6 +1072,12 @@ intelDestroyContext(__DRIcontext * driContextPriv) if (brw->wm.base.scratch_bo) brw_bo_unreference(brw->wm.base.scratch_bo); + brw_bo_unreference(brw->vs.base.push_const_bo); + brw_bo_unreference(brw->tcs.base.push_const_bo); + brw_bo_unreference(brw->tes.base.push_const_bo); + brw_bo_unreference(brw->gs.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) { |