static void
glthread_unmarshal_batch(struct gl_context *ctx, struct glthread_batch *batch)
{
+ size_t pos = 0;
+
_glapi_set_dispatch(ctx->CurrentServerDispatch);
+ while (pos < batch->used)
+ pos += _mesa_unmarshal_dispatch_cmd(ctx, &batch->buffer[pos]);
+
+ assert(pos == batch->used);
+
free(batch->buffer);
free(batch);
}
if (!glthread)
return;
+ ctx->MarshalExec = _mesa_create_marshal_table(ctx);
+ if (!ctx->MarshalExec) {
+ free(glthread);
+ return;
+ }
+
+ ctx->CurrentClientDispatch = ctx->MarshalExec;
+
pthread_mutex_init(&glthread->mutex, NULL);
pthread_cond_init(&glthread->new_work, NULL);
pthread_cond_init(&glthread->work_done, NULL);