From 8fc9702a1b7027d266121713771eafd2aa1a93b6 Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Fri, 26 May 2017 10:18:31 -0400 Subject: [PATCH] freedreno: fix fence creation fail if no rendering Android tries to create a FENCE_FD fence without any rendering. And then falls over when that fails. So just always create an initial batch. Fixes: e4ad8695 ("freedreno: fix crash when flush() but no rendering") Signed-off-by: Rob Clark --- src/gallium/drivers/freedreno/freedreno_context.c | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/src/gallium/drivers/freedreno/freedreno_context.c b/src/gallium/drivers/freedreno/freedreno_context.c index 450f4a803ed..1cf366b0c6a 100644 --- a/src/gallium/drivers/freedreno/freedreno_context.c +++ b/src/gallium/drivers/freedreno/freedreno_context.c @@ -45,12 +45,6 @@ fd_context_flush(struct pipe_context *pctx, struct pipe_fence_handle **fence, { struct fd_context *ctx = fd_context(pctx); - if (!ctx->batch) { - if (fence) - *fence = NULL; - return; - } - if (flags & PIPE_FLUSH_FENCE_FD) ctx->batch->needs_out_fence_fd = true; @@ -283,13 +277,7 @@ fd_context_init(struct fd_context *ctx, struct pipe_screen *pscreen, goto fail; pctx->const_uploader = pctx->stream_uploader; - /* TODO what about compute? Ideally it creates it's own independent - * batches per compute job (since it isn't using tiling, so no point - * in getting involved with the re-ordering madness).. - */ - if (!screen->reorder) { - ctx->batch = fd_bc_alloc_batch(&screen->batch_cache, ctx); - } + ctx->batch = fd_bc_alloc_batch(&screen->batch_cache, ctx); slab_create_child(&ctx->transfer_pool, &screen->transfer_pool); -- 2.30.2