zink: check last_finished first in fence_finish early out case

a fence's completed flag is irrelevant if we already know it has completed

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10048>
This commit is contained in:
Mike Blumenkrantz 2021-04-05 19:12:40 -04:00
parent d3734ae2dd
commit 24923b4640
1 changed files with 2 additions and 1 deletions

View File

@ -201,7 +201,8 @@ zink_fence_finish(struct zink_screen *screen, struct pipe_context *pctx, struct
bool tc_finish = tc_fence_finish(ctx, mfence, &timeout_ns);
struct zink_fence *fence = mfence->fence;
if (!tc_finish || (fence && !fence->submitted))
return fence ? p_atomic_read(&fence->completed) : false;
return zink_screen_check_last_finished(screen, mfence->batch_id) ? true :
(fence ? p_atomic_read(&fence->completed) : false);
/* this was an invalid flush, just return completed */
if (!mfence->fence)