From 5ae0b28229648b8b5d26624a45f3fffca4e545fd Mon Sep 17 00:00:00 2001 From: "backer@chromium.org" Date: Mon, 28 Mar 2011 19:24:49 +0000 Subject: 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 --- ui/gfx/gl/gl_implementation.h | 74 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 ui/gfx/gl/gl_implementation.h (limited to 'ui/gfx/gl/gl_implementation.h') 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 + +#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_ -- cgit v1.1