Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1512)

Unified Diff: ui/gl/gl_gl_api_implementation.cc

Issue 165723010: Move NullDraw GL bindings and allow them to be disabled temporarily. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: glnulldraw: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/gl/gl_gl_api_implementation.h ('k') | ui/gl/gl_implementation.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gl/gl_gl_api_implementation.cc
diff --git a/ui/gl/gl_gl_api_implementation.cc b/ui/gl/gl_gl_api_implementation.cc
index fe98fba36624db6e8c75ce6b72b86899cd48ed04..2b7a5907e1e853a5556ccb7ecfe59710d478a604 100644
--- a/ui/gl/gl_gl_api_implementation.cc
+++ b/ui/gl/gl_gl_api_implementation.cc
@@ -202,6 +202,51 @@ void DriverGL::InitializeCustomDynamicBindings(GLContext* context) {
CustomRenderbufferStorageMultisampleEXT);
}
+static void GL_BINDING_CALL NullDrawClearFn(GLbitfield mask) {
+ if (!g_driver_gl.null_draw_bindings_enabled)
+ g_driver_gl.orig_fn.glClearFn(mask);
+}
+
+static void GL_BINDING_CALL
+NullDrawDrawArraysFn(GLenum mode, GLint first, GLsizei count) {
+ if (!g_driver_gl.null_draw_bindings_enabled)
+ g_driver_gl.orig_fn.glDrawArraysFn(mode, first, count);
+}
+
+static void GL_BINDING_CALL NullDrawDrawElementsFn(GLenum mode,
+ GLsizei count,
+ GLenum type,
+ const void* indices) {
+ if (!g_driver_gl.null_draw_bindings_enabled)
+ g_driver_gl.orig_fn.glDrawElementsFn(mode, count, type, indices);
+}
+
+void DriverGL::InitializeNullDrawBindings() {
+ DCHECK(orig_fn.glClearFn == NULL);
+ orig_fn.glClearFn = fn.glClearFn;
+ fn.glClearFn = NullDrawClearFn;
+
+ DCHECK(orig_fn.glDrawArraysFn == NULL);
+ orig_fn.glDrawArraysFn = fn.glDrawArraysFn;
+ fn.glDrawArraysFn = NullDrawDrawArraysFn;
+
+ DCHECK(orig_fn.glDrawElementsFn == NULL);
+ orig_fn.glDrawElementsFn = fn.glDrawElementsFn;
+ fn.glDrawElementsFn = NullDrawDrawElementsFn;
+
+ null_draw_bindings_enabled = true;
+}
+
+bool DriverGL::SetNullDrawBindingsEnabled(bool enabled) {
+ DCHECK(orig_fn.glClearFn != NULL);
+ DCHECK(orig_fn.glDrawArraysFn != NULL);
+ DCHECK(orig_fn.glDrawElementsFn != NULL);
+
+ bool before = null_draw_bindings_enabled;
+ null_draw_bindings_enabled = enabled;
+ return before;
+}
+
void InitializeStaticGLBindingsGL() {
g_current_gl_context_tls = new base::ThreadLocalPointer<GLApi>;
g_driver_gl.InitializeStaticBindings();
@@ -245,6 +290,10 @@ void InitializeNullDrawGLBindingsGL() {
g_driver_gl.InitializeNullDrawBindings();
}
+bool SetNullDrawGLBindingsEnabledGL(bool enabled) {
+ return g_driver_gl.SetNullDrawBindingsEnabled(enabled);
+}
+
void ClearGLBindingsGL() {
if (g_real_gl) {
delete g_real_gl;
« no previous file with comments | « ui/gl/gl_gl_api_implementation.h ('k') | ui/gl/gl_implementation.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698