// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Note: This header should be compilable as C.

#ifndef MOJO_PUBLIC_C_GPU_MGL_MGL_H_
#define MOJO_PUBLIC_C_GPU_MGL_MGL_H_

#include <stdint.h>

#include "mojo/public/c/gpu/MGL/mgl_types.h"
#include "mojo/public/c/system/handle.h"

#ifdef __cplusplus
extern "C" {
#endif

typedef uint32_t MGLOpenGLAPIVersion;

// OpenGL ES 2.0
#define MGL_API_VERSION_GLES2 ((MGLOpenGLAPIVersion)1)
// OpenGL ES 3.0
#define MGL_API_VERSION_GLES3 ((MGLOpenGLAPIVersion)2)
// OpenGL ES 3.1
#define MGL_API_VERSION_GLES31 ((MGLOpenGLAPIVersion)3)

#define MGL_NO_CONTEXT ((MGLContext)0)

struct MojoAsyncWaiter;

// Creates a context at the given API version or returns MGL_NO_CONTEXT.
// |command_buffer_handle| must be a command buffer message pipe handle from
// the Gpu service or another source. The callee takes ownership of this
// handle.
// |share_group| specifies the share group to create this context in.
// If this is MGL_NO_CONTEXT a new share group will be created for this context.
// |lost_callback|, if not null, will be invoked when the context is lost.
// |async_waiter| must be a pointer to a MojoAsyncWaiter implementation that is
// usable from any thread the returned MGLContext will be used from
// for as long as the context exists.
MGLContext MGLCreateContext(MGLOpenGLAPIVersion version,
                            MojoHandle command_buffer_handle,
                            MGLContext share_group,
                            MGLContextLostCallback lost_callback,
                            void* lost_callback_closure,
                            const struct MojoAsyncWaiter* async_waiter);
void MGLDestroyContext(MGLContext context);

// Makes |context| the current MGLContext for the calling thread. Calling with
// MGL_NO_CONTEXT clears the current context.
void MGLMakeCurrent(MGLContext context);

// Returns the currently bound context for the calling thread or MGL_NO_CONTEXT
// if there is none.
MGLContext MGLGetCurrentContext(void);

// Returns GL function usable in any context that advertise the corresponding
// extension in their GL_EXTENSIONS string, or null for functions that the
// implementation does not support. The implementation only advertises GL
// functions.
// |name| is the name of the GL function.
MGLMustCastToProperFunctionPointerType MGLGetProcAddress(const char* name);

#ifdef __cplusplus
}  // extern "C"
#endif

#endif  // MOJO_PUBLIC_C_GPU_MGL_MGL_H_
