1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef UI_GL_GL_EGL_API_IMPLEMENTATION_H_ 6 #define UI_GL_GL_EGL_API_IMPLEMENTATION_H_ 7 8 #include "base/compiler_specific.h" 9 #include "gl_bindings.h" 10 #include "ui/gl/gl_export.h" 11 12 namespace gfx { 13 14 class GLContext; 15 struct GLWindowSystemBindingInfo; 16 17 void InitializeStaticGLBindingsEGL(); 18 void InitializeDynamicGLBindingsEGL(GLContext* context); 19 void InitializeDebugGLBindingsEGL(); 20 void ClearGLBindingsEGL(); 21 bool GetGLWindowSystemBindingInfoEGL(GLWindowSystemBindingInfo* info); 22 23 class GL_EXPORT EGLApiBase : public EGLApi { 24 public: 25 // Include the auto-generated part of this class. We split this because 26 // it means we can easily edit the non-auto generated parts right here in 27 // this file instead of having to edit some template or the code generator. 28 #include "gl_bindings_api_autogen_egl.h" 29 30 protected: 31 EGLApiBase(); 32 virtual ~EGLApiBase(); 33 void InitializeBase(DriverEGL* driver); 34 35 DriverEGL* driver_; 36 }; 37 38 class GL_EXPORT RealEGLApi : public EGLApiBase { 39 public: 40 RealEGLApi(); 41 virtual ~RealEGLApi(); 42 void Initialize(DriverEGL* driver); 43 }; 44 45 46 // Inserts a TRACE for every EGL call. 47 class GL_EXPORT TraceEGLApi : public EGLApi { 48 public: TraceEGLApi(EGLApi * egl_api)49 TraceEGLApi(EGLApi* egl_api) : egl_api_(egl_api) { } 50 virtual ~TraceEGLApi(); 51 52 // Include the auto-generated part of this class. We split this because 53 // it means we can easily edit the non-auto generated parts right here in 54 // this file instead of having to edit some template or the code generator. 55 #include "gl_bindings_api_autogen_egl.h" 56 57 private: 58 EGLApi* egl_api_; 59 }; 60 61 } // namespace gfx 62 63 #endif // UI_GL_GL_EGL_API_IMPLEMENTATION_H_ 64 65 66 67