aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/freedreno/a4xx
diff options
context:
space:
mode:
authorRob Clark <[email protected]>2018-08-20 09:55:12 -0400
committerRob Clark <[email protected]>2018-08-20 10:03:05 -0400
commite11e9d639439c32fe9dfa5af22abda2b54157771 (patch)
treecbf4b30c677fbe193f16539d6927eea04cd81b29 /src/gallium/drivers/freedreno/a4xx
parent5fab32ddad8b32c4a05517c43623653f8634c4d9 (diff)
freedreno: fix context teardown race
We could still have batches queued up to flush, so fd_context_destroy() (which will kill and sync on the flush_queue) before deleting buffers that might be referenced from fdN_gmem() from context of flush_queue. Signed-off-by: Rob Clark <[email protected]>
Diffstat (limited to 'src/gallium/drivers/freedreno/a4xx')
-rw-r--r--src/gallium/drivers/freedreno/a4xx/fd4_context.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/gallium/drivers/freedreno/a4xx/fd4_context.c b/src/gallium/drivers/freedreno/a4xx/fd4_context.c
index 12505e83a6c..97aae13bc64 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));
+ fd_context_destroy(pctx);
+
fd_bo_del(fd4_ctx->vs_pvt_mem);
fd_bo_del(fd4_ctx->fs_pvt_mem);
fd_bo_del(fd4_ctx->vsc_size_mem);
@@ -54,8 +56,6 @@ fd4_context_destroy(struct pipe_context *pctx)
fd_hw_query_fini(pctx);
- fd_context_destroy(pctx);
-
free(fd4_ctx);
}