[Mesa-dev] [PATCH 1/4] r600g/compute: Don't leak cbufs in compute state

Aaron Watry awatry at gmail.com
Thu Nov 13 15:43:09 PST 2014


Walk the array of cbufs backwards and free all of them.

v3: Rebase on top of changes since Aug 2014

Signed-off-by: Aaron Watry <awatry at gmail.com>
---
 src/gallium/drivers/r600/evergreen_compute.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/gallium/drivers/r600/evergreen_compute.c b/src/gallium/drivers/r600/evergreen_compute.c
index 90fdd79..4334743 100644
--- a/src/gallium/drivers/r600/evergreen_compute.c
+++ b/src/gallium/drivers/r600/evergreen_compute.c
@@ -252,6 +252,15 @@ void evergreen_delete_compute_state(struct pipe_context *ctx, void* state)
 	if (!shader)
 		return;
 
+	if (shader->ctx){
+		struct pipe_framebuffer_state *fb_state = &shader->ctx->framebuffer.state;
+		for (int i = fb_state->nr_cbufs - 1; fb_state->nr_cbufs > 0 ; i--){
+			shader->ctx->b.b.surface_destroy(ctx, fb_state->cbufs[i]);
+			fb_state->cbufs[i] = NULL;
+			fb_state->nr_cbufs--;
+		}
+	}
+
 	FREE(shader);
 }
 
-- 
2.1.0



More information about the mesa-dev mailing list