summaryrefslogtreecommitdiffstats
path: root/ui/gl/gl_implementation.h
diff options
context:
space:
mode:
Diffstat (limited to 'ui/gl/gl_implementation.h')
-rw-r--r--ui/gl/gl_implementation.h86
1 files changed, 86 insertions, 0 deletions
diff --git a/ui/gl/gl_implementation.h b/ui/gl/gl_implementation.h
new file mode 100644
index 0000000..9ee1f2d
--- /dev/null
+++ b/ui/gl/gl_implementation.h
@@ -0,0 +1,86 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef UI_GL_GL_IMPLEMENTATION_H_
+#define UI_GL_GL_IMPLEMENTATION_H_
+#pragma once
+
+#include <string>
+#include <vector>
+
+#include "base/native_library.h"
+#include "build/build_config.h"
+#include "ui/gl/gl_export.h"
+#include "ui/gl/gl_switches.h"
+
+namespace gfx {
+
+class GLContext;
+
+// The GL implementation currently in use.
+enum GLImplementation {
+ kGLImplementationNone,
+ kGLImplementationDesktopGL,
+ kGLImplementationOSMesaGL,
+ kGLImplementationAppleGL,
+ kGLImplementationEGLGLES2,
+ kGLImplementationMockGL
+};
+
+void GetAllowedGLImplementations(std::vector<GLImplementation>* impls);
+
+#if defined(OS_WIN)
+typedef void* (WINAPI *GLGetProcAddressProc)(const char* name);
+#else
+typedef void* (*GLGetProcAddressProc)(const char* name);
+#endif
+
+// Initialize a particular GL implementation.
+GL_EXPORT bool InitializeGLBindings(GLImplementation implementation);
+
+// Initialize extension function bindings for a GL implementation.
+GL_EXPORT bool InitializeGLExtensionBindings(GLImplementation implementation,
+ GLContext* context);
+
+// Initialize Debug logging wrappers for GL bindings.
+void InitializeDebugGLBindings();
+
+void ClearGLBindings();
+
+// Set the current GL implementation.
+void SetGLImplementation(GLImplementation implementation);
+
+// Get the current GL implementation.
+GL_EXPORT GLImplementation GetGLImplementation();
+
+// Does the underlying GL support all features from Desktop GL 2.0 that were
+// removed from the ES 2.0 spec without requiring specific extension strings.
+GL_EXPORT bool HasDesktopGLFeatures();
+
+// Get the GL implementation with a given name.
+GLImplementation GetNamedGLImplementation(const std::string& name);
+
+// Get the name of a GL implementation.
+const char* GetGLImplementationName(GLImplementation implementation);
+
+// Add a native library to those searched for GL entry points.
+void AddGLNativeLibrary(base::NativeLibrary library);
+
+// Unloads all native libraries.
+void UnloadGLNativeLibraries();
+
+// Set an additional function that will be called to find GL entry points.
+void SetGLGetProcAddressProc(GLGetProcAddressProc proc);
+
+// Find a core (non-extension) entry point in the current GL implementation. On
+// EGL based implementations core entry points will not be queried through
+// GLGetProcAddressProc.
+void* GetGLCoreProcAddress(const char* name);
+
+// Find an entry point in the current GL implementation.
+void* GetGLProcAddress(const char* name);
+
+} // namespace gfx
+
+#endif // UI_GL_GL_IMPLEMENTATION_H_