diff options
author | bsalomon@google.com <bsalomon@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-23 15:15:36 +0000 |
---|---|---|
committer | bsalomon@google.com <bsalomon@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-23 15:15:36 +0000 |
commit | 0b8dbc30486cb2c491a7d5fff75c82f3c1b6cf1b (patch) | |
tree | 43679dfb06a3c37fe5a60f917e441aa118b355d1 /webkit/glue | |
parent | b68bf389d1ffa4539a3b486a6ee3e4d03990c166 (diff) | |
download | chromium_src-0b8dbc30486cb2c491a7d5fff75c82f3c1b6cf1b.zip chromium_src-0b8dbc30486cb2c491a7d5fff75c82f3c1b6cf1b.tar.gz chromium_src-0b8dbc30486cb2c491a7d5fff75c82f3c1b6cf1b.tar.bz2 |
Until this roll skia supported only a single GrGLInterace object shared by all GrContexts. Now GrGLInterface is a ref counted object and each GrContext can use a different one.
This flexibility be needed to use skia-gpu to draw UI elements concurrently with canvas or --enable-accelerated-drawing while in --single-process mode. The former will uses the in-proc WGC3D implementation and the latter uses the cmd-buf implementation.
These changes just make Chrome continue to work as it did before. A future change will remove the dependence on setting the "default" GrGLInterface and instead explicitly pass a GrGLInterface to each GrContext constructor that depends on which WGC3D implementation is in use.
Review URL: http://codereview.chromium.org/7691002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97862 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue')
-rw-r--r-- | webkit/glue/gl_bindings_skia_cmd_buffer.cc | 228 |
1 files changed, 101 insertions, 127 deletions
diff --git a/webkit/glue/gl_bindings_skia_cmd_buffer.cc b/webkit/glue/gl_bindings_skia_cmd_buffer.cc index 5192e34..654fb28 100644 --- a/webkit/glue/gl_bindings_skia_cmd_buffer.cc +++ b/webkit/glue/gl_bindings_skia_cmd_buffer.cc @@ -16,134 +16,108 @@ namespace webkit_glue { void BindSkiaToCommandBufferGL() { - static GrGLInterface cmd_buffer_interface = { - kES2_GrGLBinding, - - kProbe_GrGLCapability, // NPOTRenderTargetSupport - kProbe_GrGLCapability, // MinRenderTargetHeight - kProbe_GrGLCapability, // MinRenderTargetWidth - - glActiveTexture, - glAttachShader, - glBindAttribLocation, - glBindBuffer, - glBindTexture, - glBlendColor, - glBlendFunc, - glBufferData, - glBufferSubData, - glClear, - glClearColor, - glClearStencil, - NULL, // glClientActiveTexture - NULL, // glColor4ub - glColorMask, - NULL, // glColorPointer - glCompileShader, - glCompressedTexImage2D, - glCreateProgram, - glCreateShader, - glCullFace, - glDeleteBuffers, - glDeleteProgram, - glDeleteShader, - glDeleteTextures, - glDepthMask, - glDisable, - NULL, // glDisableClientState - glDisableVertexAttribArray, - glDrawArrays, - NULL, // glDrawBuffer - NULL, // glDrawBuffers - glDrawElements, - glEnable, - NULL, // glEnableClientState - glEnableVertexAttribArray, - glFrontFace, - glGenBuffers, - glGenTextures, - glGetBufferParameteriv, - glGetError, - glGetIntegerv, - glGetProgramInfoLog, - glGetProgramiv, - glGetShaderInfoLog, - glGetShaderiv, - glGetString, - NULL, // glGetTexLevelParameteriv - glGetUniformLocation, - glLineWidth, - glLinkProgram, - NULL, // glLoadMatrixf - NULL, // glMatrixMode - glPixelStorei, - NULL, // glPointSize - NULL, // glReadBuffer - glReadPixels, - glScissor, - NULL, // glShadeModel - glShaderSource, - glStencilFunc, - glStencilFuncSeparate, - glStencilMask, - glStencilMaskSeparate, - glStencilOp, - glStencilOpSeparate, - NULL, // glTexCoordPointer - NULL, // glTexEnvi - glTexImage2D, - glTexParameteri, - glTexSubImage2D, - glUniform1f, - glUniform1i, - glUniform1fv, - glUniform1iv, - glUniform2f, - glUniform2i, - glUniform2fv, - glUniform2iv, - glUniform3f, - glUniform3i, - glUniform3fv, - glUniform3iv, - glUniform4f, - glUniform4i, - glUniform4fv, - glUniform4iv, - glUniformMatrix2fv, - glUniformMatrix3fv, - glUniformMatrix4fv, - glUseProgram, - glVertexAttrib4fv, - glVertexAttribPointer, - NULL, // glVertexPointer - glViewport, - glBindFramebuffer, - glBindRenderbuffer, - glCheckFramebufferStatus, - glDeleteFramebuffers, - glDeleteRenderbuffers, - glFramebufferRenderbuffer, - glFramebufferTexture2D, - glGenFramebuffers, - glGenRenderbuffers, - glGetFramebufferAttachmentParameteriv, - glGetRenderbufferParameteriv, - glRenderbufferStorage, - glRenderbufferStorageMultisampleEXT, - glBlitFramebufferEXT, - NULL, // glResolveMultisampleFramebuffer - NULL, // glMapBuffer - NULL, // glUnmapBuffer - NULL, // glBindFragDataLocationIndexed - - GrGLInterface::kStaticInitEndGuard - }; - static bool host_StubGL_initialized = false; - if (!host_StubGL_initialized) { - GrGLSetGLInterface(&cmd_buffer_interface); - host_StubGL_initialized = true; + static SkAutoTUnref<GrGLInterface> cmd_buffer_interface; + if (NULL == cmd_buffer_interface.get()) { + GrGLInterface* interface = new GrGLInterface; + cmd_buffer_interface.reset(interface); + interface->fBindingsExported = kES2_GrGLBinding; + interface->fActiveTexture = glActiveTexture; + interface->fAttachShader = glAttachShader; + interface->fBindAttribLocation = glBindAttribLocation; + interface->fBindBuffer = glBindBuffer; + interface->fBindTexture = glBindTexture; + interface->fBlendColor = glBlendColor; + interface->fBlendFunc = glBlendFunc; + interface->fBufferData = glBufferData; + interface->fBufferSubData = glBufferSubData; + interface->fClear = glClear; + interface->fClearColor = glClearColor; + interface->fClearStencil = glClearStencil; + interface->fColorMask = glColorMask; + interface->fCompileShader = glCompileShader; + interface->fCompressedTexImage2D = glCompressedTexImage2D; + interface->fCreateProgram = glCreateProgram; + interface->fCreateShader = glCreateShader; + interface->fCullFace = glCullFace; + interface->fDeleteBuffers = glDeleteBuffers; + interface->fDeleteProgram = glDeleteProgram; + interface->fDeleteShader = glDeleteShader; + interface->fDeleteTextures = glDeleteTextures; + interface->fDepthMask = glDepthMask; + interface->fDisable = glDisable; + interface->fDisableVertexAttribArray = glDisableVertexAttribArray; + interface->fDrawArrays = glDrawArrays; + interface->fDrawElements = glDrawElements; + interface->fEnable = glEnable; + interface->fEnableVertexAttribArray = glEnableVertexAttribArray; + interface->fFrontFace = glFrontFace; + interface->fGenBuffers = glGenBuffers; + interface->fGenTextures = glGenTextures; + interface->fGetBufferParameteriv = glGetBufferParameteriv; + interface->fGetError = glGetError; + interface->fGetIntegerv = glGetIntegerv; + interface->fGetProgramInfoLog = glGetProgramInfoLog; + interface->fGetProgramiv = glGetProgramiv; + interface->fGetShaderInfoLog = glGetShaderInfoLog; + interface->fGetShaderiv = glGetShaderiv; + interface->fGetString = glGetString; + interface->fGetUniformLocation = glGetUniformLocation; + interface->fLineWidth = glLineWidth; + interface->fLinkProgram = glLinkProgram; + interface->fPixelStorei = glPixelStorei; + interface->fReadPixels = glReadPixels; + interface->fScissor = glScissor; + interface->fShaderSource = glShaderSource; + interface->fStencilFunc = glStencilFunc; + interface->fStencilFuncSeparate = glStencilFuncSeparate; + interface->fStencilMask = glStencilMask; + interface->fStencilMaskSeparate = glStencilMaskSeparate; + interface->fStencilOp = glStencilOp; + interface->fStencilOpSeparate = glStencilOpSeparate; + interface->fTexImage2D = glTexImage2D; + interface->fTexParameteri = glTexParameteri; + interface->fTexSubImage2D = glTexSubImage2D; + interface->fUniform1f = glUniform1f; + interface->fUniform1i = glUniform1i; + interface->fUniform1fv = glUniform1fv; + interface->fUniform1iv = glUniform1iv; + interface->fUniform2f = glUniform2f; + interface->fUniform2i = glUniform2i; + interface->fUniform2fv = glUniform2fv; + interface->fUniform2iv = glUniform2iv; + interface->fUniform3f = glUniform3f; + interface->fUniform3i = glUniform3i; + interface->fUniform3fv = glUniform3fv; + interface->fUniform3iv = glUniform3iv; + interface->fUniform4f = glUniform4f; + interface->fUniform4i = glUniform4i; + interface->fUniform4fv = glUniform4fv; + interface->fUniform4iv = glUniform4iv; + interface->fUniformMatrix2fv = glUniformMatrix2fv; + interface->fUniformMatrix3fv = glUniformMatrix3fv; + interface->fUniformMatrix4fv = glUniformMatrix4fv; + interface->fUseProgram = glUseProgram; + interface->fVertexAttrib4fv = glVertexAttrib4fv; + interface->fVertexAttribPointer = glVertexAttribPointer; + interface->fViewport = glViewport; + interface->fBindFramebuffer = glBindFramebuffer; + interface->fBindRenderbuffer = glBindRenderbuffer; + interface->fCheckFramebufferStatus = glCheckFramebufferStatus; + interface->fDeleteFramebuffers = glDeleteFramebuffers; + interface->fDeleteRenderbuffers = glDeleteRenderbuffers; + interface->fFramebufferRenderbuffer = glFramebufferRenderbuffer; + interface->fFramebufferTexture2D = glFramebufferTexture2D; + interface->fGenFramebuffers = glGenFramebuffers; + interface->fGenRenderbuffers = glGenRenderbuffers; + interface->fGetFramebufferAttachmentParameteriv = + glGetFramebufferAttachmentParameteriv; + interface->fGetRenderbufferParameteriv = glGetRenderbufferParameteriv; + interface->fRenderbufferStorage = glRenderbufferStorage; + interface->fRenderbufferStorageMultisample = + glRenderbufferStorageMultisampleEXT; + interface->fBlitFramebuffer = glBlitFramebufferEXT; } + GrGLSetDefaultGLInterface(cmd_buffer_interface.get()); } } // namespace webkit_glue |