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 13typedef void* EGLContext; 14typedef void* EGLDisplay; 15typedef void* EGLConfig; 16 17namespace gfx { 18 19class GLSurface; 20 21// Encapsulates an EGL OpenGL ES context. 22class 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