freedreno: fix context teardown harder
authorRob Clark <robdclark@gmail.com>
Wed, 22 Aug 2018 13:07:37 +0000 (09:07 -0400)
committerRob Clark <robdclark@gmail.com>
Wed, 5 Sep 2018 17:38:43 +0000 (13:38 -0400)
The border_color_uploaders need to be torn down before the transfer_pool
is destroyed.

Fixes: e11e9d63943 freedreno: fix context teardown race
Signed-off-by: Rob Clark <robdclark@gmail.com>
src/gallium/drivers/freedreno/a3xx/fd3_context.c
src/gallium/drivers/freedreno/a4xx/fd4_context.c
src/gallium/drivers/freedreno/a5xx/fd5_context.c
src/gallium/drivers/freedreno/a6xx/fd6_context.c

index c045133a27f6836094a73cee9b0df1fae8ecbadc..b2dbc52071629edaf65de7786b6bf99473b6c788 100644 (file)
@@ -44,6 +44,8 @@ fd3_context_destroy(struct pipe_context *pctx)
 {
        struct fd3_context *fd3_ctx = fd3_context(fd_context(pctx));
 
+       u_upload_destroy(fd3_ctx->border_color_uploader);
+
        fd_context_destroy(pctx);
 
        fd_bo_del(fd3_ctx->vs_pvt_mem);
@@ -52,8 +54,6 @@ fd3_context_destroy(struct pipe_context *pctx)
 
        fd_context_cleanup_common_vbos(&fd3_ctx->base);
 
-       u_upload_destroy(fd3_ctx->border_color_uploader);
-
        fd_hw_query_fini(pctx);
 
        free(fd3_ctx);
index 97aae13bc640a83588fa77c9b8adc866082450c1..2e29aafebc620f116bbd6d424751cfee07983aa6 100644 (file)
@@ -44,6 +44,8 @@ fd4_context_destroy(struct pipe_context *pctx)
 {
        struct fd4_context *fd4_ctx = fd4_context(fd_context(pctx));
 
+       u_upload_destroy(fd4_ctx->border_color_uploader);
+
        fd_context_destroy(pctx);
 
        fd_bo_del(fd4_ctx->vs_pvt_mem);
@@ -52,8 +54,6 @@ fd4_context_destroy(struct pipe_context *pctx)
 
        fd_context_cleanup_common_vbos(&fd4_ctx->base);
 
-       u_upload_destroy(fd4_ctx->border_color_uploader);
-
        fd_hw_query_fini(pctx);
 
        free(fd4_ctx);
index d69b787064a56836567542284743e8f4edf64bd8..e6af5d265a6af37b0581cac92adbd5e7986dc846 100644 (file)
@@ -44,6 +44,8 @@ fd5_context_destroy(struct pipe_context *pctx)
 {
        struct fd5_context *fd5_ctx = fd5_context(fd_context(pctx));
 
+       u_upload_destroy(fd5_ctx->border_color_uploader);
+
        fd_context_destroy(pctx);
 
        fd_bo_del(fd5_ctx->vs_pvt_mem);
@@ -53,8 +55,6 @@ fd5_context_destroy(struct pipe_context *pctx)
 
        fd_context_cleanup_common_vbos(&fd5_ctx->base);
 
-       u_upload_destroy(fd5_ctx->border_color_uploader);
-
        free(fd5_ctx);
 }
 
index f67a0a761408ee7db6bd949244663c4da09913b3..695a4c49bad399483a7fd71ce34f1edb067f93b7 100644 (file)
@@ -43,6 +43,8 @@ fd6_context_destroy(struct pipe_context *pctx)
 {
        struct fd6_context *fd6_ctx = fd6_context(fd_context(pctx));
 
+       u_upload_destroy(fd6_ctx->border_color_uploader);
+
        fd_context_destroy(pctx);
 
        fd_bo_del(fd6_ctx->vs_pvt_mem);
@@ -52,8 +54,6 @@ fd6_context_destroy(struct pipe_context *pctx)
 
        fd_context_cleanup_common_vbos(&fd6_ctx->base);
 
-       u_upload_destroy(fd6_ctx->border_color_uploader);
-
        free(fd6_ctx);
 }