1a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block//
2a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
3a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block// Use of this source code is governed by a BSD-style license that can be
4a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block// found in the LICENSE file.
5a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block//
6a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
7a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block// main.h: Management of thread-local data.
8a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
9a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block#ifndef LIBGLESV2_MAIN_H_
10a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block#define LIBGLESV2_MAIN_H_
11a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
12a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block#define GL_APICALL
13a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block#include <GLES2/gl2.h>
145abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick#include <GLES2/gl2ext.h>
15a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
16a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block#include "common/debug.h"
17a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block#include "libEGL/Display.h"
18a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
19a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block#include "libGLESv2/Context.h"
20a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
21a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blocknamespace gl
22a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block{
23a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blockstruct Current
24a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block{
25a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block    Context *context;
26a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block    egl::Display *display;
27a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block};
28a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
29a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blockvoid makeCurrent(Context *context, egl::Display *display, egl::Surface *surface);
30a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
31a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve BlockContext *getContext();
32a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blockegl::Display *getDisplay();
33a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
34a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve BlockIDirect3DDevice9 *getDevice();
35a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block}
36a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
37a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blockvoid error(GLenum errorCode);
38a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
39a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blocktemplate<class T>
40a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blockconst T &error(GLenum errorCode, const T &returnValue)
41a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block{
42a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block    error(errorCode);
43a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
44a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block    return returnValue;
45a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block}
46a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
47a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block#endif   // LIBGLESV2_MAIN_H_
48