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_GLX_API_IMPLEMENTATION_H_ 6 #define UI_GL_GLX_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 InitializeGLBindingsGLX(); 18 void InitializeGLExtensionBindingsGLX(GLContext* context); 19 void InitializeDebugGLBindingsGLX(); 20 void ClearGLBindingsGLX(); 21 bool GetGLWindowSystemBindingInfoGLX(GLWindowSystemBindingInfo* info); 22 23 class GL_EXPORT GLXApiBase : public GLXApi { 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_glx.h" 29 30 protected: 31 GLXApiBase(); 32 virtual ~GLXApiBase(); 33 void InitializeBase(DriverGLX* driver); 34 35 DriverGLX* driver_; 36 }; 37 38 class GL_EXPORT RealGLXApi : public GLXApiBase { 39 public: 40 RealGLXApi(); 41 virtual ~RealGLXApi(); 42 void Initialize(DriverGLX* driver); 43 }; 44 45 // Inserts a TRACE for every GLX call. 46 class GL_EXPORT TraceGLXApi : public GLXApi { 47 public: TraceGLXApi(GLXApi * glx_api)48 TraceGLXApi(GLXApi* glx_api) : glx_api_(glx_api) { } 49 virtual ~TraceGLXApi(); 50 51 // Include the auto-generated part of this class. We split this because 52 // it means we can easily edit the non-auto generated parts right here in 53 // this file instead of having to edit some template or the code generator. 54 #include "gl_bindings_api_autogen_glx.h" 55 56 private: 57 GLXApi* glx_api_; 58 }; 59 60 } // namespace gfx 61 62 #endif // UI_GL_GLX_API_IMPLEMENTATION_H_ 63 64 65 66