Index: ui/gl/gl_gl_api_implementation.h |
diff --git a/ui/gl/gl_gl_api_implementation.h b/ui/gl/gl_gl_api_implementation.h |
index 806f4535a4cd0dc05d7dd9727b52101847986441..ba66b85ddf639241beb3916df95e0cae6acc2418 100644 |
--- a/ui/gl/gl_gl_api_implementation.h |
+++ b/ui/gl/gl_gl_api_implementation.h |
@@ -5,6 +5,7 @@ |
#ifndef UI_GL_GL_GL_API_IMPLEMENTATION_H_ |
#define UI_GL_GL_GL_API_IMPLEMENTATION_H_ |
+#include <memory> |
#include <vector> |
#include "base/compiler_specific.h" |
@@ -17,24 +18,18 @@ class CommandLine; |
namespace gl { |
-class GLContext; |
struct GLVersionInfo; |
GL_EXPORT void InitializeStaticGLBindingsGL(); |
-void InitializeDynamicGLBindingsGL(GLContext* context); |
-GL_EXPORT void InitializeDebugGLBindingsGL(); |
-void InitializeNullDrawGLBindingsGL(); |
-// TODO(danakj): Remove this when all test suites are using null-draw. |
-bool HasInitializedNullDrawGLBindingsGL(); |
-bool SetNullDrawGLBindingsEnabledGL(bool enabled); |
GL_EXPORT void ClearBindingsGL(); |
-void SetGLToRealGLApi(); |
-void SetGLToStubGLApi(); |
-void SetGLApi(GLApi* api); |
-void SetGLApiToNoContext(); |
-GLApi* GetCurrentGLApi(); |
-GL_EXPORT void SetStubGLApi(GLApi* api); |
-const GLVersionInfo* GetGLVersionInfo(); |
+ |
+GL_EXPORT void InitializeDebugGLBindingsGL(); |
+bool GetDebugGLBindingsInitializedGL(); |
+ |
+bool SetNullDrawGLBindingsEnabled(bool enabled); |
+bool GetNullDrawBindingsEnabled(); |
+ |
+void SetCurrentGL(CurrentGL* current); |
class GL_EXPORT GLApiBase : public GLApi { |
public: |
@@ -64,7 +59,61 @@ class GL_EXPORT RealGLApi : public GLApiBase { |
const GLubyte* glGetStringFn(GLenum name) override; |
const GLubyte* glGetStringiFn(GLenum name, GLuint index) override; |
+ void glTexImage2DFn(GLenum target, |
+ GLint level, |
+ GLint internalformat, |
+ GLsizei width, |
+ GLsizei height, |
+ GLint border, |
+ GLenum format, |
+ GLenum type, |
+ const void* pixels) override; |
+ |
+ void glTexSubImage2DFn(GLenum target, |
+ GLint level, |
+ GLint xoffset, |
+ GLint yoffset, |
+ GLsizei width, |
+ GLsizei height, |
+ GLenum format, |
+ GLenum type, |
+ const void* pixels) override; |
+ |
+ void glTexStorage2DEXTFn(GLenum target, |
+ GLsizei levels, |
+ GLenum internalformat, |
+ GLsizei width, |
+ GLsizei height) override; |
+ |
+ void glRenderbufferStorageEXTFn(GLenum target, |
+ GLenum internalformat, |
+ GLsizei width, |
+ GLsizei height) override; |
+ |
+ void glRenderbufferStorageMultisampleEXTFn(GLenum target, |
+ GLsizei samples, |
+ GLenum internalformat, |
+ GLsizei width, |
+ GLsizei height) override; |
+ |
+ void glRenderbufferStorageMultisampleFn(GLenum target, |
+ GLsizei samples, |
+ GLenum internalformat, |
+ GLsizei width, |
+ GLsizei height) override; |
+ |
+ void glClearFn(GLbitfield mask) override; |
+ void glDrawArraysFn(GLenum mode, GLint first, GLsizei count) override; |
+ void glDrawElementsFn(GLenum mode, |
+ GLsizei count, |
+ GLenum type, |
+ const void* indices) override; |
+ |
+ void glClearDepthFn(GLclampd depth) override; |
+ void glDepthRangeFn(GLclampd z_near, GLclampd z_far) override; |
+ |
void InitializeFilteredExtensions(); |
+ void set_version(std::unique_ptr<GLVersionInfo> version); |
private: |
// Filtered GL_EXTENSIONS we return to glGetString(i) calls. |
@@ -72,6 +121,8 @@ class GL_EXPORT RealGLApi : public GLApiBase { |
std::vector<std::string> filtered_exts_; |
std::string filtered_exts_str_; |
+ std::unique_ptr<GLVersionInfo> version_; |
+ |
#if DCHECK_IS_ON() |
bool filtered_exts_initialized_; |
#endif |
@@ -92,6 +143,21 @@ class TraceGLApi : public GLApi { |
GLApi* gl_api_; |
}; |
+// Logs debug information for every GL call. |
+class DebugGLApi : public GLApi { |
+ public: |
+ DebugGLApi(GLApi* gl_api); |
+ ~DebugGLApi() override; |
+ |
+ // Include the auto-generated part of this class. We split this because |
+ // it means we can easily edit the non-auto generated parts right here in |
+ // this file instead of having to edit some template or the code generator. |
+ #include "gl_bindings_api_autogen_gl.h" |
+ |
+ private: |
+ GLApi* gl_api_; |
+}; |
+ |
// Catches incorrect usage when GL calls are made without a current context. |
class NoContextGLApi : public GLApi { |
public: |