diff options
author | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-12 21:17:27 +0000 |
---|---|---|
committer | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-12 21:17:27 +0000 |
commit | c9e2cbbbcad5f0ae5b9c5ccaf6a36a8a4a61e0e7 (patch) | |
tree | e33d97dc2edae8702ddb6a17ba0d89a506412693 /ui/gl/gl_implementation.h | |
parent | fc25fd35147b2d5e74d5450e8586592c6a10813d (diff) | |
download | chromium_src-c9e2cbbbcad5f0ae5b9c5ccaf6a36a8a4a61e0e7.zip chromium_src-c9e2cbbbcad5f0ae5b9c5ccaf6a36a8a4a61e0e7.tar.gz chromium_src-c9e2cbbbcad5f0ae5b9c5ccaf6a36a8a4a61e0e7.tar.bz2 |
ui: Move gl/ directory out of gfx/, up to ui/.
BUG=104040
R=ben@chromium.org
TBR=tony@chromium.org
Review URL: https://chromiumcodereview.appspot.com/10392068
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@136777 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/gl/gl_implementation.h')
-rw-r--r-- | ui/gl/gl_implementation.h | 86 |
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_ |