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_CONTEXT_EGL_H_ 6 #define UI_GL_GL_CONTEXT_EGL_H_ 7 8 #include <string> 9 10 #include "base/compiler_specific.h" 11 #include "ui/gl/gl_context.h" 12 13 typedef void* EGLContext; 14 typedef void* EGLDisplay; 15 typedef void* EGLConfig; 16 17 namespace gfx { 18 19 class GLSurface; 20 21 // Encapsulates an EGL OpenGL ES context. 22 class GLContextEGL : public GLContextReal { 23 public: 24 explicit GLContextEGL(GLShareGroup* share_group); 25 26 // Implement GLContext. 27 virtual bool Initialize( 28 GLSurface* compatible_surface, GpuPreference gpu_preference) OVERRIDE; 29 virtual void Destroy() OVERRIDE; 30 virtual bool MakeCurrent(GLSurface* surface) OVERRIDE; 31 virtual void ReleaseCurrent(GLSurface* surface) OVERRIDE; 32 virtual bool IsCurrent(GLSurface* surface) OVERRIDE; 33 virtual void* GetHandle() OVERRIDE; 34 virtual void SetSwapInterval(int interval) OVERRIDE; 35 virtual std::string GetExtensions() OVERRIDE; 36 virtual bool WasAllocatedUsingRobustnessExtension() OVERRIDE; 37 virtual bool GetTotalGpuMemory(size_t* bytes) OVERRIDE; 38 virtual void SetUnbindFboOnMakeCurrent() OVERRIDE; 39 40 protected: 41 virtual ~GLContextEGL(); 42 43 private: 44 EGLContext context_; 45 EGLDisplay display_; 46 EGLConfig config_; 47 bool unbind_fbo_on_makecurrent_; 48 49 DISALLOW_COPY_AND_ASSIGN(GLContextEGL); 50 }; 51 52 } // namespace gfx 53 54 #endif // UI_GL_GL_CONTEXT_EGL_H_ 55