[Mesa-dev] [PATCH] freedreno: unreference resources on context destruction

Ilia Mirkin imirkin at alum.mit.edu
Sun Sep 27 20:43:04 PDT 2015


Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
---
 src/gallium/drivers/freedreno/freedreno_context.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/freedreno/freedreno_context.c b/src/gallium/drivers/freedreno/freedreno_context.c
index 5b7c32f..9dc918d 100644
--- a/src/gallium/drivers/freedreno/freedreno_context.c
+++ b/src/gallium/drivers/freedreno/freedreno_context.c
@@ -145,7 +145,7 @@ void
 fd_context_destroy(struct pipe_context *pctx)
 {
 	struct fd_context *ctx = fd_context(pctx);
-	unsigned i;
+	unsigned i, j;
 
 	DBG("");
 
@@ -162,6 +162,23 @@ fd_context_destroy(struct pipe_context *pctx)
 
 	util_unreference_framebuffer_state(&ctx->framebuffer);
 
+	for (i = 0; i < PIPE_SHADER_TYPES; i++)
+		for (j = 0; j < PIPE_MAX_CONSTANT_BUFFERS; j++)
+			pipe_resource_reference(&ctx->constbuf[i].cb[j].buffer, NULL);
+
+	for (i = 0; i < PIPE_MAX_ATTRIBS; i++)
+		pipe_resource_reference(&ctx->vtx.vertexbuf.vb[i].buffer, NULL);
+
+	pipe_resource_reference(&ctx->indexbuf.buffer, NULL);
+
+	for (i = 0; i < PIPE_MAX_SAMPLERS; i++) {
+		pipe_sampler_view_reference(&ctx->verttex.textures[i], NULL);
+		pipe_sampler_view_reference(&ctx->fragtex.textures[i], NULL);
+	}
+
+	for (i = 0; i < PIPE_MAX_SO_BUFFERS; i++)
+		pipe_so_target_reference(&ctx->streamout.targets[i], NULL);
+
 	util_slab_destroy(&ctx->transfer_pool);
 
 	fd_ringmarker_del(ctx->draw_start);
-- 
2.4.9



More information about the mesa-dev mailing list