Mesa (master): freedreno: fix context teardown harder

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Sep 5 18:08:53 UTC 2018


Module: Mesa
Branch: master
Commit: 73378013d7ff6ddf7f503c6386d8243463be11f3
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=73378013d7ff6ddf7f503c6386d8243463be11f3

Author: Rob Clark <robdclark at gmail.com>
Date:   Wed Aug 22 09:07:37 2018 -0400

freedreno: fix context teardown harder

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 at gmail.com>

---

 src/gallium/drivers/freedreno/a3xx/fd3_context.c | 4 ++--
 src/gallium/drivers/freedreno/a4xx/fd4_context.c | 4 ++--
 src/gallium/drivers/freedreno/a5xx/fd5_context.c | 4 ++--
 src/gallium/drivers/freedreno/a6xx/fd6_context.c | 4 ++--
 4 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/gallium/drivers/freedreno/a3xx/fd3_context.c b/src/gallium/drivers/freedreno/a3xx/fd3_context.c
index c045133a27..b2dbc52071 100644
--- a/src/gallium/drivers/freedreno/a3xx/fd3_context.c
+++ b/src/gallium/drivers/freedreno/a3xx/fd3_context.c
@@ -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);
diff --git a/src/gallium/drivers/freedreno/a4xx/fd4_context.c b/src/gallium/drivers/freedreno/a4xx/fd4_context.c
index 97aae13bc6..2e29aafebc 100644
--- a/src/gallium/drivers/freedreno/a4xx/fd4_context.c
+++ b/src/gallium/drivers/freedreno/a4xx/fd4_context.c
@@ -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);
diff --git a/src/gallium/drivers/freedreno/a5xx/fd5_context.c b/src/gallium/drivers/freedreno/a5xx/fd5_context.c
index d69b787064..e6af5d265a 100644
--- a/src/gallium/drivers/freedreno/a5xx/fd5_context.c
+++ b/src/gallium/drivers/freedreno/a5xx/fd5_context.c
@@ -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);
 }
 
diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_context.c b/src/gallium/drivers/freedreno/a6xx/fd6_context.c
index f67a0a7614..695a4c49ba 100644
--- a/src/gallium/drivers/freedreno/a6xx/fd6_context.c
+++ b/src/gallium/drivers/freedreno/a6xx/fd6_context.c
@@ -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);
 }
 




More information about the mesa-commit mailing list