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_glx_api_implementation.h"
6#include "ui/gl/gl_implementation.h"
7
8namespace gfx {
9
10RealGLXApi* g_real_glx;
11
12void InitializeStaticGLBindingsGLX() {
13  g_driver_glx.InitializeStaticBindings();
14  if (!g_real_glx) {
15    g_real_glx = new RealGLXApi();
16  }
17  g_real_glx->Initialize(&g_driver_glx);
18  g_current_glx_context = g_real_glx;
19}
20
21void InitializeDynamicGLBindingsGLX(GLContext* context) {
22  g_driver_glx.InitializeDynamicBindings(context);
23}
24
25void InitializeDebugGLBindingsGLX() {
26  g_driver_glx.InitializeDebugBindings();
27}
28
29void ClearGLBindingsGLX() {
30  if (g_real_glx) {
31    delete g_real_glx;
32    g_real_glx = NULL;
33  }
34  g_current_glx_context = NULL;
35  g_driver_glx.ClearBindings();
36}
37
38GLXApi::GLXApi() {
39}
40
41GLXApi::~GLXApi() {
42}
43
44GLXApiBase::GLXApiBase()
45    : driver_(NULL) {
46}
47
48GLXApiBase::~GLXApiBase() {
49}
50
51void GLXApiBase::InitializeBase(DriverGLX* driver) {
52  driver_ = driver;
53}
54
55RealGLXApi::RealGLXApi() {
56}
57
58RealGLXApi::~RealGLXApi() {
59}
60
61void RealGLXApi::Initialize(DriverGLX* driver) {
62  InitializeBase(driver);
63}
64
65TraceGLXApi::~TraceGLXApi() {
66}
67
68bool GetGLWindowSystemBindingInfoGLX(GLWindowSystemBindingInfo* info) {
69  Display* display = glXGetCurrentDisplay();
70  const int kDefaultScreen = 0;
71  const char* vendor =
72      glXQueryServerString(display, kDefaultScreen, GLX_VENDOR);
73  const char* version =
74      glXQueryServerString(display, kDefaultScreen, GLX_VERSION);
75  const char* extensions =
76      glXQueryServerString(display, kDefaultScreen, GLX_EXTENSIONS);
77  *info = GLWindowSystemBindingInfo();
78  if (vendor)
79    info->vendor = vendor;
80  if (version)
81    info->version = version;
82  if (extensions)
83    info->extensions = extensions;
84  info->direct_rendering = !!glXIsDirect(display, glXGetCurrentContext());
85  return true;
86}
87
88}  // namespace gfx
89
90
91