summaryrefslogtreecommitdiffstats
path: root/ui/gfx/gl/gl_implementation.h
diff options
context:
space:
mode:
authorbacker@chromium.org <backer@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-28 19:24:49 +0000
committerbacker@chromium.org <backer@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-28 19:24:49 +0000
commit5ae0b28229648b8b5d26624a45f3fffca4e545fd (patch)
treea97b457285d90a49521a360e7cad015fbd7e2474 /ui/gfx/gl/gl_implementation.h
parent2f4aec1e3e10cac458f44747d650c2336e220554 (diff)
downloadchromium_src-5ae0b28229648b8b5d26624a45f3fffca4e545fd.zip
chromium_src-5ae0b28229648b8b5d26624a45f3fffca4e545fd.tar.gz
chromium_src-5ae0b28229648b8b5d26624a45f3fffca4e545fd.tar.bz2
Refactor: Move app/gfx/gl ==> ui/gfx/gl
This is the final patch in the sequence. Note that gl.gyp is introduced because dependency checking on the Mac is done on a per file (rather than per target) basis. BUG=none TEST=trybots Review URL: http://codereview.chromium.org/6722026 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79599 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/gfx/gl/gl_implementation.h')
-rw-r--r--ui/gfx/gl/gl_implementation.h74
1 files changed, 74 insertions, 0 deletions
diff --git a/ui/gfx/gl/gl_implementation.h b/ui/gfx/gl/gl_implementation.h
new file mode 100644
index 0000000..f357b31
--- /dev/null
+++ b/ui/gfx/gl/gl_implementation.h
@@ -0,0 +1,74 @@
+// Copyright (c) 2011 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_GFX_GL_GL_IMPLEMENTATION_H_
+#define UI_GFX_GL_GL_IMPLEMENTATION_H_
+#pragma once
+
+#include <string>
+
+#include "base/native_library.h"
+#include "build/build_config.h"
+
+namespace gfx {
+
+// The GL implementation currently in use.
+enum GLImplementation {
+ kGLImplementationNone,
+ kGLImplementationDesktopGL,
+ kGLImplementationOSMesaGL,
+ kGLImplementationEGLGLES2,
+ kGLImplementationMockGL
+};
+
+// The GL implementation names that can be passed to --use-gl.
+extern const char kGLImplementationDesktopName[];
+extern const char kGLImplementationOSMesaName[];
+extern const char kGLImplementationEGLName[];
+extern const char kGLImplementationMockName[];
+
+#if defined(OS_WIN)
+typedef void* (WINAPI *GLGetProcAddressProc)(const char* name);
+#else
+typedef void* (*GLGetProcAddressProc)(const char* name);
+#endif
+
+// Initialize a particular GL implementation.
+bool InitializeGLBindings(GLImplementation implementation);
+
+// Initialize Debug logging wrappers for GL bindings.
+void InitializeDebugGLBindings();
+
+// Set the current GL implementation.
+void SetGLImplementation(GLImplementation implementation);
+
+// Get the current GL implementation.
+GLImplementation GetGLImplementation();
+
+// Get the GL implementation with a given name.
+GLImplementation GetNamedGLImplementation(const std::wstring& name);
+
+// Get the name of a GL implementation.
+const char* GetGLImplementationName(GLImplementation implementation);
+
+// Initialize the preferred GL binding from the given list. The preferred GL
+// bindings depend on command line switches passed by the user and which GL
+// implementation is the default on a given platform.
+bool InitializeRequestedGLBindings(
+ const GLImplementation* allowed_implementations_begin,
+ const GLImplementation* allowed_implementations_end,
+ GLImplementation default_implementation);
+
+// Add a native library to those searched for GL entry points.
+void AddGLNativeLibrary(base::NativeLibrary library);
+
+// Set an additional function that will be called to find GL entry points.
+void SetGLGetProcAddressProc(GLGetProcAddressProc proc);
+
+// Find an entry point in the current GL implementation.
+void* GetGLProcAddress(const char* name);
+
+} // namespace gfx
+
+#endif // UI_GFX_GL_GL_IMPLEMENTATION_H_