From b2303d90af34da3427d27302f40055c548cc657a Mon Sep 17 00:00:00 2001 From: Robert Xiao Date: Sat, 12 Aug 2017 12:09:06 -0400 Subject: [PATCH] wined3d: Reduce timeout to avoid GL_TIMEOUT_EXPIRED on macOS. Signed-off-by: Robert Xiao Signed-off-by: Henri Verbeet Signed-off-by: Alexandre Julliard --- dlls/wined3d/query.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/dlls/wined3d/query.c b/dlls/wined3d/query.c index f1e780396bc..88f64bddc20 100644 --- a/dlls/wined3d/query.c +++ b/dlls/wined3d/query.c @@ -198,11 +198,12 @@ enum wined3d_fence_result wined3d_fence_wait(const struct wined3d_fence *fence, if (gl_info->supported[ARB_SYNC]) { - /* Apple seems to be into arbitrary limits, and timeouts larger than - * 0xfffffffffffffbff immediately return GL_TIMEOUT_EXPIRED. We don't - * really care and can live with waiting a few μs less. (OS X 10.7.4). */ + /* Timeouts near 0xffffffffffffffff may immediately return GL_TIMEOUT_EXPIRED, + * possibly because macOS internally adds some slop to the timer. To avoid this, + * we use a large number that isn't near the point of overflow (macOS 10.12.5). + */ GLenum gl_ret = GL_EXTCALL(glClientWaitSync(fence->object.sync, - GL_SYNC_FLUSH_COMMANDS_BIT, ~(GLuint64)0xffff)); + GL_SYNC_FLUSH_COMMANDS_BIT, ~(GLuint64)0 >> 1)); checkGLcall("glClientWaitSync"); switch (gl_ret) @@ -212,7 +213,7 @@ enum wined3d_fence_result wined3d_fence_wait(const struct wined3d_fence *fence, ret = WINED3D_FENCE_OK; break; - /* We don't expect a timeout for a ~584 year wait */ + /* We don't expect a timeout for a ~292 year wait */ default: ERR("glClientWaitSync returned %#x.\n", gl_ret); ret = WINED3D_FENCE_ERROR;