mesa: add fence_sync() helper

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
This commit is contained in:
Samuel Pitoiset
2017-06-26 14:48:24 +02:00
parent 6e0cd29132
commit dd71fd1dd3

View File

@@ -258,24 +258,10 @@ _mesa_DeleteSync(GLsync sync)
}
GLsync GLAPIENTRY
_mesa_FenceSync(GLenum condition, GLbitfield flags)
static GLsync
fence_sync(struct gl_context *ctx, GLenum condition, GLbitfield flags)
{
GET_CURRENT_CONTEXT(ctx);
struct gl_sync_object *syncObj;
ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, 0);
if (condition != GL_SYNC_GPU_COMMANDS_COMPLETE) {
_mesa_error(ctx, GL_INVALID_ENUM, "glFenceSync(condition=0x%x)",
condition);
return 0;
}
if (flags != 0) {
_mesa_error(ctx, GL_INVALID_VALUE, "glFenceSync(flags=0x%x)",
condition);
return 0;
}
syncObj = ctx->Driver.NewSyncObject(ctx, GL_SYNC_FENCE);
if (syncObj != NULL) {
@@ -298,13 +284,35 @@ _mesa_FenceSync(GLenum condition, GLbitfield flags)
_mesa_set_add(ctx->Shared->SyncObjects, syncObj);
mtx_unlock(&ctx->Shared->Mutex);
return (GLsync) syncObj;
return (GLsync)syncObj;
}
return NULL;
}
GLsync GLAPIENTRY
_mesa_FenceSync(GLenum condition, GLbitfield flags)
{
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, 0);
if (condition != GL_SYNC_GPU_COMMANDS_COMPLETE) {
_mesa_error(ctx, GL_INVALID_ENUM, "glFenceSync(condition=0x%x)",
condition);
return 0;
}
if (flags != 0) {
_mesa_error(ctx, GL_INVALID_VALUE, "glFenceSync(flags=0x%x)",
condition);
return 0;
}
return fence_sync(ctx, condition, flags);
}
static GLenum
client_wait_sync(struct gl_context *ctx, struct gl_sync_object *syncObj,
GLbitfield flags, GLuint64 timeout)