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#include "ui/gl/gl_egl_api_implementation.h"
6#include "ui/gl/gl_implementation.h"
7
8namespace gfx {
9
10RealEGLApi* g_real_egl;
11
12void InitializeStaticGLBindingsEGL() {
13  g_driver_egl.InitializeStaticBindings();
14  if (!g_real_egl) {
15    g_real_egl = new RealEGLApi();
16  }
17  g_real_egl->Initialize(&g_driver_egl);
18  g_current_egl_context = g_real_egl;
19}
20
21void InitializeDynamicGLBindingsEGL(GLContext* context) {
22  g_driver_egl.InitializeDynamicBindings(context);
23}
24
25void InitializeDebugGLBindingsEGL() {
26  g_driver_egl.InitializeDebugBindings();
27}
28
29void ClearGLBindingsEGL() {
30  if (g_real_egl) {
31    delete g_real_egl;
32    g_real_egl = NULL;
33  }
34  g_current_egl_context = NULL;
35  g_driver_egl.ClearBindings();
36}
37
38EGLApi::EGLApi() {
39}
40
41EGLApi::~EGLApi() {
42}
43
44EGLApiBase::EGLApiBase()
45    : driver_(NULL) {
46}
47
48EGLApiBase::~EGLApiBase() {
49}
50
51void EGLApiBase::InitializeBase(DriverEGL* driver) {
52  driver_ = driver;
53}
54
55RealEGLApi::RealEGLApi() {
56}
57
58RealEGLApi::~RealEGLApi() {
59}
60
61void RealEGLApi::Initialize(DriverEGL* driver) {
62  InitializeBase(driver);
63}
64
65TraceEGLApi::~TraceEGLApi() {
66}
67
68bool GetGLWindowSystemBindingInfoEGL(GLWindowSystemBindingInfo* info) {
69  EGLDisplay display = eglGetCurrentDisplay();
70  const char* vendor = eglQueryString(display, EGL_VENDOR);
71  const char* version = eglQueryString(display, EGL_VERSION);
72  const char* extensions = eglQueryString(display, EGL_EXTENSIONS);
73  *info = GLWindowSystemBindingInfo();
74  if (vendor)
75    info->vendor = vendor;
76  if (version)
77    info->version = version;
78  if (extensions)
79    info->extensions = extensions;
80  return true;
81}
82
83}  // namespace gfx
84
85
86