mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 00:58:05 +02:00
freedreno: Don't return a flushed batch
Somehow fairly recently the traces CI job started hitting timeouts, not all the time but enough to be inconvenient for CI. I tracked it down to getting into a situation where `ctx->batch->flush == true`, which causes an infinite loop in the draw_vbo and clear paths (because fd_batch_lock_submit() checks for flushed batch but fd_context_batch() does not). I'm not entirely sure how we get into that state, or what triggered this (seems possibly triggered by !10937). But it is easy enough to recover. Signed-off-by: Rob Clark <robdclark@chromium.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11196>
This commit is contained in:
parent
ad375d0579
commit
80b1e042e4
1 changed files with 9 additions and 3 deletions
|
|
@ -436,9 +436,15 @@ batch_from_key(struct fd_batch_cache *cache, struct fd_batch_key *key,
|
|||
_mesa_hash_table_search_pre_hashed(cache->ht, hash, key);
|
||||
|
||||
if (entry) {
|
||||
free(key);
|
||||
fd_batch_reference(&batch, (struct fd_batch *)entry->data);
|
||||
return batch;
|
||||
fd_batch_reference_locked(&batch, (struct fd_batch *)entry->data);
|
||||
|
||||
if (batch->flushed) {
|
||||
fd_bc_invalidate_batch(batch, false);
|
||||
fd_batch_reference_locked(&batch, NULL);
|
||||
} else {
|
||||
free(key);
|
||||
return batch;
|
||||
}
|
||||
}
|
||||
|
||||
batch = alloc_batch_locked(cache, ctx, false);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue