14f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com// 2eff3a1272e72ef04e66d1aaf22d934a59627c781shannonwoods@chromium.org// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. 34f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com// Use of this source code is governed by a BSD-style license that can be 44f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com// found in the LICENSE file. 54f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com// 64f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com 74f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com// main.h: Management of thread-local data. 84f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com 94f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com#ifndef LIBGLESV2_MAIN_H_ 104f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com#define LIBGLESV2_MAIN_H_ 114f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com 12ea0e1af4c3db538081d776e4ec1a588ca82cb9d9alokp@chromium.org#include "common/debug.h" 134f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com 140b7eef7c469bf717f7e1b57c6273f00d88e8b1d9Geoff Lang#include <GLES2/gl2.h> 150b7eef7c469bf717f7e1b57c6273f00d88e8b1d9Geoff Lang#include <EGL/egl.h> 160b7eef7c469bf717f7e1b57c6273f00d88e8b1d9Geoff Lang 17486d9e9b6b4ed31f66d2624b8e822020fe40a1f7shannon.woods@transgaming.comnamespace egl 18486d9e9b6b4ed31f66d2624b8e822020fe40a1f7shannon.woods@transgaming.com{ 19486d9e9b6b4ed31f66d2624b8e822020fe40a1f7shannon.woods@transgaming.comclass Display; 20486d9e9b6b4ed31f66d2624b8e822020fe40a1f7shannon.woods@transgaming.comclass Surface; 21486d9e9b6b4ed31f66d2624b8e822020fe40a1f7shannon.woods@transgaming.com} 22e6842296d00cda4d731782f1e7f22006ea277c4fdaniel@transgaming.com 234f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.comnamespace gl 244f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com{ 25486d9e9b6b4ed31f66d2624b8e822020fe40a1f7shannon.woods@transgaming.comclass Context; 26486d9e9b6b4ed31f66d2624b8e822020fe40a1f7shannon.woods@transgaming.com 274f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.comstruct Current 284f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com{ 294f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com Context *context; 304f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com egl::Display *display; 314f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com}; 324f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com 334f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.comvoid makeCurrent(Context *context, egl::Display *display, egl::Surface *surface); 344f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com 354f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.comContext *getContext(); 369d78850211eddee0ffdd6d02d7eecbb2bbf9a854daniel@transgaming.comContext *getNonLostContext(); 374f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.comegl::Display *getDisplay(); 384f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com 394f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.comvoid error(GLenum errorCode); 404f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com 414f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.comtemplate<class T> 424f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.comconst T &error(GLenum errorCode, const T &returnValue) 434f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com{ 444f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com error(errorCode); 454f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com 464f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com return returnValue; 474f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com} 484f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com 49779aa2618c1333c034768f3a4ca7826a14753b60shannon.woods@transgaming.com} 50779aa2618c1333c034768f3a4ca7826a14753b60shannon.woods@transgaming.com 51486d9e9b6b4ed31f66d2624b8e822020fe40a1f7shannon.woods@transgaming.comnamespace rx 52486d9e9b6b4ed31f66d2624b8e822020fe40a1f7shannon.woods@transgaming.com{ 53486d9e9b6b4ed31f66d2624b8e822020fe40a1f7shannon.woods@transgaming.comclass Renderer; 54486d9e9b6b4ed31f66d2624b8e822020fe40a1f7shannon.woods@transgaming.com} 55486d9e9b6b4ed31f66d2624b8e822020fe40a1f7shannon.woods@transgaming.com 56cfa8efdfe5cf382d1afd81abde03a145fdb5168bdaniel@transgaming.comextern "C" 57cfa8efdfe5cf382d1afd81abde03a145fdb5168bdaniel@transgaming.com{ 58cfa8efdfe5cf382d1afd81abde03a145fdb5168bdaniel@transgaming.com// Exported functions for use by EGL 59daea4b4584cdbd8c82dd9946eb07a32ab2f278b7shannon.woods%transgaming.com@gtempaccount.comgl::Context *glCreateContext(int clientVersion, const gl::Context *shareContext, rx::Renderer *renderer, bool notifyResets, bool robustAccess); 60cfa8efdfe5cf382d1afd81abde03a145fdb5168bdaniel@transgaming.comvoid glDestroyContext(gl::Context *context); 61cfa8efdfe5cf382d1afd81abde03a145fdb5168bdaniel@transgaming.comvoid glMakeCurrent(gl::Context *context, egl::Display *display, egl::Surface *surface); 62cfa8efdfe5cf382d1afd81abde03a145fdb5168bdaniel@transgaming.comgl::Context *glGetCurrentContext(); 63591e6afe5a73c9ced13dfef2c2e18fd5531e1d8eGeoff Langrx::Renderer *glCreateRenderer(egl::Display *display, EGLNativeDisplayType nativeDisplay, EGLint requestedDisplayType); 64cfa8efdfe5cf382d1afd81abde03a145fdb5168bdaniel@transgaming.comvoid glDestroyRenderer(rx::Renderer *renderer); 65cfa8efdfe5cf382d1afd81abde03a145fdb5168bdaniel@transgaming.com 66cfa8efdfe5cf382d1afd81abde03a145fdb5168bdaniel@transgaming.com__eglMustCastToProperFunctionPointerType __stdcall glGetProcAddress(const char *procname); 67cfa8efdfe5cf382d1afd81abde03a145fdb5168bdaniel@transgaming.combool __stdcall glBindTexImage(egl::Surface *surface); 68cfa8efdfe5cf382d1afd81abde03a145fdb5168bdaniel@transgaming.com} 69cfa8efdfe5cf382d1afd81abde03a145fdb5168bdaniel@transgaming.com 704f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com#endif // LIBGLESV2_MAIN_H_ 71