Freeing the compiler in the common destroy function is a sad hack, but
it's too annoying to create separate destroy functions.

Signed-off-by: Ilia Mirkin <imir...@alum.mit.edu>
---
 src/gallium/drivers/freedreno/freedreno_context.c    | 2 ++
 src/gallium/drivers/freedreno/freedreno_screen.c     | 4 ++++
 src/gallium/drivers/freedreno/ir3/ir3.c              | 1 +
 src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c | 2 ++
 4 files changed, 9 insertions(+)

diff --git a/src/gallium/drivers/freedreno/freedreno_context.c 
b/src/gallium/drivers/freedreno/freedreno_context.c
index 0b6b9fb..5b7c32f 100644
--- a/src/gallium/drivers/freedreno/freedreno_context.c
+++ b/src/gallium/drivers/freedreno/freedreno_context.c
@@ -160,6 +160,8 @@ fd_context_destroy(struct pipe_context *pctx)
        if (ctx->primconvert)
                util_primconvert_destroy(ctx->primconvert);
 
+       util_unreference_framebuffer_state(&ctx->framebuffer);
+
        util_slab_destroy(&ctx->transfer_pool);
 
        fd_ringmarker_del(ctx->draw_start);
diff --git a/src/gallium/drivers/freedreno/freedreno_screen.c 
b/src/gallium/drivers/freedreno/freedreno_screen.c
index 208d8d2..0bd8f60 100644
--- a/src/gallium/drivers/freedreno/freedreno_screen.c
+++ b/src/gallium/drivers/freedreno/freedreno_screen.c
@@ -37,6 +37,7 @@
 #include "util/u_format_s3tc.h"
 #include "util/u_string.h"
 #include "util/u_debug.h"
+#include "util/ralloc.h"
 
 #include "os/os_time.h"
 
@@ -119,6 +120,9 @@ fd_screen_destroy(struct pipe_screen *pscreen)
        if (screen->dev)
                fd_device_del(screen->dev);
 
+       if (screen->compiler)
+               ralloc_free(screen->compiler);
+
        free(screen);
 }
 
diff --git a/src/gallium/drivers/freedreno/ir3/ir3.c 
b/src/gallium/drivers/freedreno/ir3/ir3.c
index 389d9a0..0c05af3 100644
--- a/src/gallium/drivers/freedreno/ir3/ir3.c
+++ b/src/gallium/drivers/freedreno/ir3/ir3.c
@@ -95,6 +95,7 @@ void ir3_destroy(struct ir3 *shader)
        free(shader->indirects);
        free(shader->predicates);
        free(shader->baryfs);
+       free(shader->keeps);
        free(shader);
 }
 
diff --git a/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c 
b/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
index d193da1..67131f6 100644
--- a/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
+++ b/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
@@ -298,6 +298,8 @@ compile_error(struct ir3_compile *ctx, const char *format, 
...)
 static void
 compile_free(struct ir3_compile *ctx)
 {
+       if (ctx->s)
+               ralloc_free(ctx->s);
        ralloc_free(ctx);
 }
 
-- 
2.4.9

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to