freedreno: fix potential hang when destroying batch
batch_flush_reset_dependencies() expects to be called unlocked, and can
call fd_batch_reference() which can try to aquire the screen lock again.
Signed-off-by: Rob Clark <robdclark@gmail.com>
diff --git a/src/gallium/drivers/freedreno/freedreno_batch.c b/src/gallium/drivers/freedreno/freedreno_batch.c
index b3d1466..340756e 100644
--- a/src/gallium/drivers/freedreno/freedreno_batch.c
+++ b/src/gallium/drivers/freedreno/freedreno_batch.c
@@ -235,10 +235,10 @@
debug_assert(batch->resources->entries == 0);
_mesa_set_destroy(batch->resources, NULL);
+ fd_context_unlock(ctx);
batch_flush_reset_dependencies(batch, false);
debug_assert(batch->dependents_mask == 0);
- fd_context_unlock(ctx);
util_copy_framebuffer_state(&batch->framebuffer, NULL);
batch_fini(batch);
free(batch);