diff --git a/.pick_status.json b/.pick_status.json index 46ae42c2cb5..57758f48d88 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1075,7 +1075,7 @@ "description": "mesa: unref syncobj after wait_sync", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "0af7c1e385b94c4d3610c4bff4c3af8a1afb26c6" }, diff --git a/src/mesa/main/syncobj.c b/src/mesa/main/syncobj.c index 918604df71a..4a117566d75 100644 --- a/src/mesa/main/syncobj.c +++ b/src/mesa/main/syncobj.c @@ -409,14 +409,17 @@ wait_sync(struct gl_context *ctx, struct gl_sync_object *syncObj, /* Nothing needs to be done here if the driver does not support async * flushes. */ - if (!pipe->fence_server_sync) + if (!pipe->fence_server_sync) { + _mesa_unref_sync_object(ctx, syncObj, 1); return; + } /* If the fence doesn't exist, assume it's signalled. */ simple_mtx_lock(&syncObj->mutex); if (!syncObj->fence) { simple_mtx_unlock(&syncObj->mutex); syncObj->StatusFlag = GL_TRUE; + _mesa_unref_sync_object(ctx, syncObj, 1); return; }