#ifndef UI_GL_GL_IMPLEMENTATION_H_
#define UI_GL_GL_IMPLEMENTATION_H_
#include <memory>
#include <optional>
#include <string>
#include <vector>
#include "base/files/file_path.h"
#include "base/native_library.h"
#include "build/build_config.h"
#include "ui/gfx/extension_set.h"
#include "ui/gl/angle_implementation.h"
#include "ui/gl/buildflags.h"
#include "ui/gl/gl_export.h"
#include "ui/gl/gl_switches.h"
namespace base {
class CommandLine;
}
namespace gl {
class GLApi;
enum GLImplementation { … };
struct GL_EXPORT GLImplementationParts { … };
struct GL_EXPORT GLWindowSystemBindingInfo { … };
GLFunctionPointerType;
#if BUILDFLAG(IS_WIN)
typedef GLFunctionPointerType(WINAPI* GLGetProcAddressProc)(const char* name);
#define STDCALL …
#else
GLGetProcAddressProc;
#define STDCALL
#endif
GL_EXPORT void SetNullDrawGLBindings(bool enabled);
GL_EXPORT bool HasInitializedNullDrawGLBindings();
GL_EXPORT std::string FilterGLExtensionList(
const char* extension_list,
const std::vector<std::string>& disabled_extensions);
class GL_EXPORT DisableNullDrawGLBindings { … };
GL_EXPORT void SetGLImplementationParts(
const GLImplementationParts& implementation);
GL_EXPORT const GLImplementationParts& GetGLImplementationParts();
GL_EXPORT void SetGLImplementation(GLImplementation implementation);
GL_EXPORT GLImplementation GetGLImplementation();
GL_EXPORT void SetANGLEImplementation(ANGLEImplementation implementation);
GL_EXPORT ANGLEImplementation GetANGLEImplementation();
GL_EXPORT GLImplementationParts GetSoftwareGLImplementation();
GL_EXPORT void SetSoftwareGLCommandLineSwitches(
base::CommandLine* command_line);
GL_EXPORT void SetSoftwareWebGLCommandLineSwitches(
base::CommandLine* command_line);
GL_EXPORT std::optional<GLImplementationParts>
GetRequestedGLImplementationFromCommandLine(
const base::CommandLine* command_line);
GL_EXPORT bool IsSoftwareGLImplementation(GLImplementationParts implementation);
GL_EXPORT GLImplementationParts
GetNamedGLImplementation(const std::string& gl_name,
const std::string& angle_name);
GL_EXPORT const char* GetGLImplementationGLName(
GLImplementationParts implementation);
GL_EXPORT const char* GetGLImplementationANGLEName(
GLImplementationParts implementation);
GL_EXPORT void AddGLNativeLibrary(base::NativeLibrary library);
GL_EXPORT void UnloadGLNativeLibraries(bool due_to_fallback);
GL_EXPORT void SetGLGetProcAddressProc(GLGetProcAddressProc proc);
STDCALL GL_EXPORT GLFunctionPointerType GetGLProcAddress(const char* name);
GL_EXPORT std::string GetGLExtensionsFromCurrentContext();
GL_EXPORT std::string GetGLExtensionsFromCurrentContext(GLApi* api);
GL_EXPORT gfx::ExtensionSet GetRequestableGLExtensionsFromCurrentContext();
GL_EXPORT gfx::ExtensionSet GetRequestableGLExtensionsFromCurrentContext(
GLApi* api);
GL_EXPORT base::NativeLibrary LoadLibraryAndPrintError(
const base::FilePath::CharType* filename);
GL_EXPORT base::NativeLibrary LoadLibraryAndPrintError(
const base::FilePath& filename);
#if BUILDFLAG(USE_OPENGL_APITRACE)
GL_EXPORT void TerminateFrame();
#endif
}
#endif