Home | History | Annotate | Download | only in libGLESv2
      1 //
      2 // Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
      3 // Use of this source code is governed by a BSD-style license that can be
      4 // found in the LICENSE file.
      5 //
      6 
      7 // main.h: Management of thread-local data.
      8 
      9 #ifndef LIBGLESV2_MAIN_H_
     10 #define LIBGLESV2_MAIN_H_
     11 
     12 #include "common/debug.h"
     13 #include "common/system.h"
     14 
     15 namespace egl
     16 {
     17 class Display;
     18 class Surface;
     19 }
     20 
     21 namespace gl
     22 {
     23 class Context;
     24 
     25 struct Current
     26 {
     27     Context *context;
     28     egl::Display *display;
     29 };
     30 
     31 void makeCurrent(Context *context, egl::Display *display, egl::Surface *surface);
     32 
     33 Context *getContext();
     34 Context *getNonLostContext();
     35 egl::Display *getDisplay();
     36 
     37 void error(GLenum errorCode);
     38 
     39 template<class T>
     40 const T &error(GLenum errorCode, const T &returnValue)
     41 {
     42     error(errorCode);
     43 
     44     return returnValue;
     45 }
     46 
     47 }
     48 
     49 namespace rx
     50 {
     51 class Renderer;
     52 }
     53 
     54 extern "C"
     55 {
     56 // Exported functions for use by EGL
     57 gl::Context *glCreateContext(const gl::Context *shareContext, rx::Renderer *renderer, bool notifyResets, bool robustAccess);
     58 void glDestroyContext(gl::Context *context);
     59 void glMakeCurrent(gl::Context *context, egl::Display *display, egl::Surface *surface);
     60 gl::Context *glGetCurrentContext();
     61 rx::Renderer *glCreateRenderer(egl::Display *display, HDC hDc, EGLNativeDisplayType displayId);
     62 void glDestroyRenderer(rx::Renderer *renderer);
     63 
     64 __eglMustCastToProperFunctionPointerType __stdcall glGetProcAddress(const char *procname);
     65 bool __stdcall glBindTexImage(egl::Surface *surface);
     66 }
     67 
     68 #endif   // LIBGLESV2_MAIN_H_
     69