zink: always force flushes when originating from api frontend
flags=0 is used for e.g., glFenceSync, which apps use to insert sync points to determine when all prior work has completed. eliding these flushes into no-ops is fine for all scenarios except when the last op was a present, in which case the no-op (previous) fence will not sync as expected for the present and graphical artifacts will result in the future, this may be changed back to the previous behavior if/when presentation gains timeline semaphore capabilities by providing the last timeline id as a fence instead of the last batch fixes #10386 cc: mesa-stable Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26935>
This commit is contained in:

committed by
Marge Bot

parent
4ee32ced41
commit
03f049f497
@@ -3863,7 +3863,8 @@ zink_flush(struct pipe_context *pctx,
|
||||
}
|
||||
}
|
||||
|
||||
if (!batch->has_work) {
|
||||
/* TODO: if swapchains gain timeline semaphore semantics, `flags` can be eliminated and no-op fence can return timeline id */
|
||||
if (!batch->has_work && flags) {
|
||||
if (pfence) {
|
||||
/* reuse last fence */
|
||||
fence = ctx->last_fence;
|
||||
|
Reference in New Issue
Block a user