diff --git a/.pick_status.json b/.pick_status.json index e3a634bb8d9..dee7c490725 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1694,7 +1694,7 @@ "description": "r300: fix r300_destroy_context() related memory leaks", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "e01f86c67b0bd955758366827cb8322aa1bec263", "notes": null diff --git a/src/gallium/drivers/r300/r300_context.c b/src/gallium/drivers/r300/r300_context.c index f77a6d6e97d..433f669b58a 100644 --- a/src/gallium/drivers/r300/r300_context.c +++ b/src/gallium/drivers/r300/r300_context.c @@ -93,6 +93,8 @@ static void r300_destroy_context(struct pipe_context* context) u_upload_destroy(r300->uploader); if (r300->context.stream_uploader) u_upload_destroy(r300->context.stream_uploader); + if (r300->context.const_uploader) + u_upload_destroy(r300->context.const_uploader); /* XXX: This function assumes r300->query_list was initialized */ r300_release_referenced_objects(r300); @@ -102,6 +104,7 @@ static void r300_destroy_context(struct pipe_context* context) r300->rws->ctx_destroy(r300->ctx); rc_destroy_regalloc_state(&r300->fs_regalloc_state); + rc_destroy_regalloc_state(&r300->vs_regalloc_state); /* XXX: No way to tell if this was initialized or not? */ slab_destroy_child(&r300->pool_transfers); @@ -128,6 +131,9 @@ static void r300_destroy_context(struct pipe_context* context) FREE(r300->vertex_stream_state.state); } } + + FREE(r300->stencilref_fallback); + FREE(r300); }