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 <robdclark@gmail.com>
This commit is contained in:
parent
ab8fb5a082
commit
8fc9702a1b
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue