diff options
Diffstat (limited to 'gpu')
-rw-r--r-- | gpu/skia_bindings/BUILD.gn | 2 | ||||
-rw-r--r-- | gpu/skia_bindings/gl_bindings_skia_cmd_buffer.cc | 389 | ||||
-rw-r--r-- | gpu/skia_bindings/gl_bindings_skia_cmd_buffer.h | 12 | ||||
-rw-r--r-- | gpu/skia_bindings/skia_bindings.gyp | 2 |
4 files changed, 240 insertions, 165 deletions
diff --git a/gpu/skia_bindings/BUILD.gn b/gpu/skia_bindings/BUILD.gn index 5bd9ba2..3205a4a 100644 --- a/gpu/skia_bindings/BUILD.gn +++ b/gpu/skia_bindings/BUILD.gn @@ -9,7 +9,7 @@ source_set("skia_bindings") { ] deps = [ "//base", - "//gpu/command_buffer/client:gles2_c_lib", + "//gpu/command_buffer/client:gles2_interface", "//skia", ] } diff --git a/gpu/skia_bindings/gl_bindings_skia_cmd_buffer.cc b/gpu/skia_bindings/gl_bindings_skia_cmd_buffer.cc index e0ff4df..7f96b3b 100644 --- a/gpu/skia_bindings/gl_bindings_skia_cmd_buffer.cc +++ b/gpu/skia_bindings/gl_bindings_skia_cmd_buffer.cc @@ -4,179 +4,248 @@ #include "gpu/skia_bindings/gl_bindings_skia_cmd_buffer.h" -#ifndef GL_GLEXT_PROTOTYPES -#define GL_GLEXT_PROTOTYPES -#endif -#include "base/logging.h" -#include "gpu/GLES2/gl2extchromium.h" -#include "third_party/khronos/GLES2/gl2.h" -#include "third_party/khronos/GLES2/gl2ext.h" +#include "gpu/command_buffer/client/gles2_interface.h" #include "third_party/skia/include/gpu/gl/GrGLInterface.h" +using gpu::gles2::GLES2Interface; + +namespace { +template <typename R, typename... Args> +std::function<R(Args...)> gles_bind(R (GLES2Interface::*func)(Args...), + GLES2Interface* gles2Interface) { + return [func, gles2Interface](Args... args) { + return (gles2Interface->*func)(args...); + }; +} +} // namespace + namespace skia_bindings { -void InitCommandBufferSkiaGLBinding(GrGLInterface* interface) { +void InitGLES2InterfaceBindings(GrGLInterface* interface, + GLES2Interface* impl) { interface->fStandard = kGLES_GrGLStandard; - interface->fExtensions.init(kGLES_GrGLStandard, - glGetString, - nullptr, - glGetIntegerv); + interface->fExtensions.init( + kGLES_GrGLStandard, gles_bind(&GLES2Interface::GetString, impl), nullptr, + gles_bind(&GLES2Interface::GetIntegerv, impl)); GrGLInterface::Functions* functions = &interface->fFunctions; - functions->fActiveTexture = glActiveTexture; - functions->fAttachShader = glAttachShader; - functions->fBindAttribLocation = glBindAttribLocation; - functions->fBindBuffer = glBindBuffer; - functions->fBindTexture = glBindTexture; - functions->fBindVertexArray = glBindVertexArrayOES; - functions->fBlendBarrier = glBlendBarrierKHR; - functions->fBlendColor = glBlendColor; - functions->fBlendEquation = glBlendEquation; - functions->fBlendFunc = glBlendFunc; - functions->fBufferData = glBufferData; - functions->fBufferSubData = glBufferSubData; - functions->fClear = glClear; - functions->fClearColor = glClearColor; - functions->fClearStencil = glClearStencil; - functions->fColorMask = glColorMask; - functions->fCompileShader = glCompileShader; - functions->fCompressedTexImage2D = glCompressedTexImage2D; - functions->fCopyTexSubImage2D = glCopyTexSubImage2D; - functions->fCreateProgram = glCreateProgram; - functions->fCreateShader = glCreateShader; - functions->fCullFace = glCullFace; - functions->fDeleteBuffers = glDeleteBuffers; - functions->fDeleteProgram = glDeleteProgram; - functions->fDeleteShader = glDeleteShader; - functions->fDeleteTextures = glDeleteTextures; - functions->fDeleteVertexArrays = glDeleteVertexArraysOES; - functions->fDepthMask = glDepthMask; - functions->fDisable = glDisable; - functions->fDisableVertexAttribArray = glDisableVertexAttribArray; - functions->fDiscardFramebuffer = glDiscardFramebufferEXT; - functions->fDrawArrays = glDrawArrays; - functions->fDrawElements = glDrawElements; - functions->fEnable = glEnable; - functions->fEnableVertexAttribArray = glEnableVertexAttribArray; - functions->fFinish = glFinish; - functions->fFlush = glFlush; - functions->fFrontFace = glFrontFace; - functions->fGenBuffers = glGenBuffers; - functions->fGenTextures = glGenTextures; - functions->fGenVertexArrays = glGenVertexArraysOES; - functions->fGetBufferParameteriv = glGetBufferParameteriv; - functions->fGetError = glGetError; - functions->fGetIntegerv = glGetIntegerv; - functions->fGetProgramInfoLog = glGetProgramInfoLog; - functions->fGetProgramiv = glGetProgramiv; - functions->fGetShaderInfoLog = glGetShaderInfoLog; - functions->fGetShaderiv = glGetShaderiv; - functions->fGetShaderPrecisionFormat = glGetShaderPrecisionFormat; - functions->fGetString = glGetString; - functions->fGetUniformLocation = glGetUniformLocation; - functions->fInsertEventMarker = glInsertEventMarkerEXT; - functions->fLineWidth = glLineWidth; - functions->fLinkProgram = glLinkProgram; - functions->fMapBufferSubData = glMapBufferSubDataCHROMIUM; - functions->fMapTexSubImage2D = glMapTexSubImage2DCHROMIUM; - functions->fPixelStorei = glPixelStorei; - functions->fPopGroupMarker = glPopGroupMarkerEXT; - functions->fPushGroupMarker = glPushGroupMarkerEXT; - functions->fReadPixels = glReadPixels; - functions->fScissor = glScissor; - functions->fShaderSource = glShaderSource; - functions->fStencilFunc = glStencilFunc; - functions->fStencilFuncSeparate = glStencilFuncSeparate; - functions->fStencilMask = glStencilMask; - functions->fStencilMaskSeparate = glStencilMaskSeparate; - functions->fStencilOp = glStencilOp; - functions->fStencilOpSeparate = glStencilOpSeparate; - functions->fTexImage2D = glTexImage2D; - functions->fTexParameteri = glTexParameteri; - functions->fTexParameteriv = glTexParameteriv; - functions->fTexStorage2D = glTexStorage2DEXT; - functions->fTexSubImage2D = glTexSubImage2D; - functions->fUniform1f = glUniform1f; - functions->fUniform1i = glUniform1i; - functions->fUniform1fv = glUniform1fv; - functions->fUniform1iv = glUniform1iv; - functions->fUniform2f = glUniform2f; - functions->fUniform2i = glUniform2i; - functions->fUniform2fv = glUniform2fv; - functions->fUniform2iv = glUniform2iv; - functions->fUniform3f = glUniform3f; - functions->fUniform3i = glUniform3i; - functions->fUniform3fv = glUniform3fv; - functions->fUniform3iv = glUniform3iv; - functions->fUniform4f = glUniform4f; - functions->fUniform4i = glUniform4i; - functions->fUniform4fv = glUniform4fv; - functions->fUniform4iv = glUniform4iv; - functions->fUniformMatrix2fv = glUniformMatrix2fv; - functions->fUniformMatrix3fv = glUniformMatrix3fv; - functions->fUniformMatrix4fv = glUniformMatrix4fv; - functions->fUnmapBufferSubData = glUnmapBufferSubDataCHROMIUM; - functions->fUnmapTexSubImage2D = glUnmapTexSubImage2DCHROMIUM; - functions->fUseProgram = glUseProgram; - functions->fVertexAttrib1f = glVertexAttrib1f; - functions->fVertexAttrib2fv = glVertexAttrib2fv; - functions->fVertexAttrib3fv = glVertexAttrib3fv; - functions->fVertexAttrib4fv = glVertexAttrib4fv; - functions->fVertexAttribPointer = glVertexAttribPointer; - functions->fViewport = glViewport; - functions->fBindFramebuffer = glBindFramebuffer; - functions->fBindRenderbuffer = glBindRenderbuffer; - functions->fCheckFramebufferStatus = glCheckFramebufferStatus; - functions->fDeleteFramebuffers = glDeleteFramebuffers; - functions->fDeleteRenderbuffers = glDeleteRenderbuffers; - functions->fFramebufferRenderbuffer = glFramebufferRenderbuffer; - functions->fFramebufferTexture2D = glFramebufferTexture2D; + functions->fActiveTexture = gles_bind(&GLES2Interface::ActiveTexture, impl); + functions->fAttachShader = gles_bind(&GLES2Interface::AttachShader, impl); + functions->fBindAttribLocation = + gles_bind(&GLES2Interface::BindAttribLocation, impl); + functions->fBindBuffer = gles_bind(&GLES2Interface::BindBuffer, impl); + functions->fBindTexture = gles_bind(&GLES2Interface::BindTexture, impl); + functions->fBindVertexArray = + gles_bind(&GLES2Interface::BindVertexArrayOES, impl); + functions->fBlendBarrier = gles_bind(&GLES2Interface::BlendBarrierKHR, impl); + functions->fBlendColor = gles_bind(&GLES2Interface::BlendColor, impl); + functions->fBlendEquation = gles_bind(&GLES2Interface::BlendEquation, impl); + functions->fBlendFunc = gles_bind(&GLES2Interface::BlendFunc, impl); + functions->fBufferData = gles_bind(&GLES2Interface::BufferData, impl); + functions->fBufferSubData = gles_bind(&GLES2Interface::BufferSubData, impl); + functions->fClear = gles_bind(&GLES2Interface::Clear, impl); + functions->fClearColor = gles_bind(&GLES2Interface::ClearColor, impl); + functions->fClearStencil = gles_bind(&GLES2Interface::ClearStencil, impl); + functions->fColorMask = gles_bind(&GLES2Interface::ColorMask, impl); + functions->fCompileShader = gles_bind(&GLES2Interface::CompileShader, impl); + functions->fCompressedTexImage2D = + gles_bind(&GLES2Interface::CompressedTexImage2D, impl); + functions->fCopyTexSubImage2D = + gles_bind(&GLES2Interface::CopyTexSubImage2D, impl); + functions->fCreateProgram = gles_bind(&GLES2Interface::CreateProgram, impl); + functions->fCreateShader = gles_bind(&GLES2Interface::CreateShader, impl); + functions->fCullFace = gles_bind(&GLES2Interface::CullFace, impl); + functions->fDeleteBuffers = gles_bind(&GLES2Interface::DeleteBuffers, impl); + functions->fDeleteProgram = gles_bind(&GLES2Interface::DeleteProgram, impl); + functions->fDeleteShader = gles_bind(&GLES2Interface::DeleteShader, impl); + functions->fDeleteTextures = gles_bind(&GLES2Interface::DeleteTextures, impl); + functions->fDeleteVertexArrays = + gles_bind(&GLES2Interface::DeleteVertexArraysOES, impl); + functions->fDepthMask = gles_bind(&GLES2Interface::DepthMask, impl); + functions->fDisable = gles_bind(&GLES2Interface::Disable, impl); + functions->fDisableVertexAttribArray = + gles_bind(&GLES2Interface::DisableVertexAttribArray, impl); + functions->fDiscardFramebuffer = + gles_bind(&GLES2Interface::DiscardFramebufferEXT, impl); + functions->fDrawArrays = gles_bind(&GLES2Interface::DrawArrays, impl); + functions->fDrawElements = gles_bind(&GLES2Interface::DrawElements, impl); + functions->fEnable = gles_bind(&GLES2Interface::Enable, impl); + functions->fEnableVertexAttribArray = + gles_bind(&GLES2Interface::EnableVertexAttribArray, impl); + functions->fFinish = gles_bind(&GLES2Interface::Finish, impl); + functions->fFlush = gles_bind(&GLES2Interface::Flush, impl); + functions->fFrontFace = gles_bind(&GLES2Interface::FrontFace, impl); + functions->fGenBuffers = gles_bind(&GLES2Interface::GenBuffers, impl); + functions->fGenTextures = gles_bind(&GLES2Interface::GenTextures, impl); + functions->fGenVertexArrays = + gles_bind(&GLES2Interface::GenVertexArraysOES, impl); + functions->fGetBufferParameteriv = + gles_bind(&GLES2Interface::GetBufferParameteriv, impl); + functions->fGetError = gles_bind(&GLES2Interface::GetError, impl); + functions->fGetIntegerv = gles_bind(&GLES2Interface::GetIntegerv, impl); + functions->fGetProgramInfoLog = + gles_bind(&GLES2Interface::GetProgramInfoLog, impl); + functions->fGetProgramiv = gles_bind(&GLES2Interface::GetProgramiv, impl); + functions->fGetShaderInfoLog = + gles_bind(&GLES2Interface::GetShaderInfoLog, impl); + functions->fGetShaderiv = gles_bind(&GLES2Interface::GetShaderiv, impl); + functions->fGetShaderPrecisionFormat = + gles_bind(&GLES2Interface::GetShaderPrecisionFormat, impl); + functions->fGetString = gles_bind(&GLES2Interface::GetString, impl); + functions->fGetUniformLocation = + gles_bind(&GLES2Interface::GetUniformLocation, impl); + functions->fInsertEventMarker = + gles_bind(&GLES2Interface::InsertEventMarkerEXT, impl); + functions->fLineWidth = gles_bind(&GLES2Interface::LineWidth, impl); + functions->fLinkProgram = gles_bind(&GLES2Interface::LinkProgram, impl); + functions->fMapBufferSubData = + gles_bind(&GLES2Interface::MapBufferSubDataCHROMIUM, impl); + functions->fMapTexSubImage2D = + gles_bind(&GLES2Interface::MapTexSubImage2DCHROMIUM, impl); + functions->fPixelStorei = gles_bind(&GLES2Interface::PixelStorei, impl); + functions->fPopGroupMarker = + gles_bind(&GLES2Interface::PopGroupMarkerEXT, impl); + functions->fPushGroupMarker = + gles_bind(&GLES2Interface::PushGroupMarkerEXT, impl); + functions->fReadPixels = gles_bind(&GLES2Interface::ReadPixels, impl); + functions->fScissor = gles_bind(&GLES2Interface::Scissor, impl); + functions->fShaderSource = gles_bind(&GLES2Interface::ShaderSource, impl); + functions->fStencilFunc = gles_bind(&GLES2Interface::StencilFunc, impl); + functions->fStencilFuncSeparate = + gles_bind(&GLES2Interface::StencilFuncSeparate, impl); + functions->fStencilMask = gles_bind(&GLES2Interface::StencilMask, impl); + functions->fStencilMaskSeparate = + gles_bind(&GLES2Interface::StencilMaskSeparate, impl); + functions->fStencilOp = gles_bind(&GLES2Interface::StencilOp, impl); + functions->fStencilOpSeparate = + gles_bind(&GLES2Interface::StencilOpSeparate, impl); + functions->fTexImage2D = gles_bind(&GLES2Interface::TexImage2D, impl); + functions->fTexParameteri = gles_bind(&GLES2Interface::TexParameteri, impl); + functions->fTexParameteriv = gles_bind(&GLES2Interface::TexParameteriv, impl); + functions->fTexStorage2D = gles_bind(&GLES2Interface::TexStorage2DEXT, impl); + functions->fTexSubImage2D = gles_bind(&GLES2Interface::TexSubImage2D, impl); + functions->fUniform1f = gles_bind(&GLES2Interface::Uniform1f, impl); + functions->fUniform1i = gles_bind(&GLES2Interface::Uniform1i, impl); + functions->fUniform1fv = gles_bind(&GLES2Interface::Uniform1fv, impl); + functions->fUniform1iv = gles_bind(&GLES2Interface::Uniform1iv, impl); + functions->fUniform2f = gles_bind(&GLES2Interface::Uniform2f, impl); + functions->fUniform2i = gles_bind(&GLES2Interface::Uniform2i, impl); + functions->fUniform2fv = gles_bind(&GLES2Interface::Uniform2fv, impl); + functions->fUniform2iv = gles_bind(&GLES2Interface::Uniform2iv, impl); + functions->fUniform3f = gles_bind(&GLES2Interface::Uniform3f, impl); + functions->fUniform3i = gles_bind(&GLES2Interface::Uniform3i, impl); + functions->fUniform3fv = gles_bind(&GLES2Interface::Uniform3fv, impl); + functions->fUniform3iv = gles_bind(&GLES2Interface::Uniform3iv, impl); + functions->fUniform4f = gles_bind(&GLES2Interface::Uniform4f, impl); + functions->fUniform4i = gles_bind(&GLES2Interface::Uniform4i, impl); + functions->fUniform4fv = gles_bind(&GLES2Interface::Uniform4fv, impl); + functions->fUniform4iv = gles_bind(&GLES2Interface::Uniform4iv, impl); + functions->fUniformMatrix2fv = + gles_bind(&GLES2Interface::UniformMatrix2fv, impl); + functions->fUniformMatrix3fv = + gles_bind(&GLES2Interface::UniformMatrix3fv, impl); + functions->fUniformMatrix4fv = + gles_bind(&GLES2Interface::UniformMatrix4fv, impl); + functions->fUnmapBufferSubData = + gles_bind(&GLES2Interface::UnmapBufferSubDataCHROMIUM, impl); + functions->fUnmapTexSubImage2D = + gles_bind(&GLES2Interface::UnmapTexSubImage2DCHROMIUM, impl); + functions->fUseProgram = gles_bind(&GLES2Interface::UseProgram, impl); + functions->fVertexAttrib1f = gles_bind(&GLES2Interface::VertexAttrib1f, impl); + functions->fVertexAttrib2fv = + gles_bind(&GLES2Interface::VertexAttrib2fv, impl); + functions->fVertexAttrib3fv = + gles_bind(&GLES2Interface::VertexAttrib3fv, impl); + functions->fVertexAttrib4fv = + gles_bind(&GLES2Interface::VertexAttrib4fv, impl); + functions->fVertexAttribPointer = + gles_bind(&GLES2Interface::VertexAttribPointer, impl); + functions->fViewport = gles_bind(&GLES2Interface::Viewport, impl); + functions->fBindFramebuffer = + gles_bind(&GLES2Interface::BindFramebuffer, impl); + functions->fBindRenderbuffer = + gles_bind(&GLES2Interface::BindRenderbuffer, impl); + functions->fCheckFramebufferStatus = + gles_bind(&GLES2Interface::CheckFramebufferStatus, impl); + functions->fDeleteFramebuffers = + gles_bind(&GLES2Interface::DeleteFramebuffers, impl); + functions->fDeleteRenderbuffers = + gles_bind(&GLES2Interface::DeleteRenderbuffers, impl); + functions->fFramebufferRenderbuffer = + gles_bind(&GLES2Interface::FramebufferRenderbuffer, impl); + functions->fFramebufferTexture2D = + gles_bind(&GLES2Interface::FramebufferTexture2D, impl); functions->fFramebufferTexture2DMultisample = - glFramebufferTexture2DMultisampleEXT; - functions->fGenFramebuffers = glGenFramebuffers; - functions->fGenRenderbuffers = glGenRenderbuffers; + gles_bind(&GLES2Interface::FramebufferTexture2DMultisampleEXT, impl); + functions->fGenFramebuffers = + gles_bind(&GLES2Interface::GenFramebuffers, impl); + functions->fGenRenderbuffers = + gles_bind(&GLES2Interface::GenRenderbuffers, impl); functions->fGetFramebufferAttachmentParameteriv = - glGetFramebufferAttachmentParameteriv; - functions->fGetRenderbufferParameteriv = glGetRenderbufferParameteriv; - functions->fRenderbufferStorage = glRenderbufferStorage; + gles_bind(&GLES2Interface::GetFramebufferAttachmentParameteriv, impl); + functions->fGetRenderbufferParameteriv = + gles_bind(&GLES2Interface::GetRenderbufferParameteriv, impl); + functions->fRenderbufferStorage = + gles_bind(&GLES2Interface::RenderbufferStorage, impl); functions->fRenderbufferStorageMultisample = - glRenderbufferStorageMultisampleCHROMIUM; + gles_bind(&GLES2Interface::RenderbufferStorageMultisampleCHROMIUM, impl); functions->fRenderbufferStorageMultisampleES2EXT = - glRenderbufferStorageMultisampleEXT; - functions->fBindFragDataLocation = glBindFragDataLocationEXT; - functions->fBindFragDataLocationIndexed = glBindFragDataLocationIndexedEXT; - functions->fBindUniformLocation = glBindUniformLocationCHROMIUM; - functions->fBlitFramebuffer = glBlitFramebufferCHROMIUM; - functions->fGenerateMipmap = glGenerateMipmap; - functions->fMatrixLoadf = glMatrixLoadfCHROMIUM; - functions->fMatrixLoadIdentity = glMatrixLoadIdentityCHROMIUM; - functions->fPathCommands = glPathCommandsCHROMIUM; - functions->fPathParameteri = glPathParameteriCHROMIUM; - functions->fPathParameterf = glPathParameterfCHROMIUM; - functions->fGenPaths = glGenPathsCHROMIUM; - functions->fIsPath = glIsPathCHROMIUM; - functions->fDeletePaths = glDeletePathsCHROMIUM; - functions->fPathStencilFunc = glPathStencilFuncCHROMIUM; - functions->fStencilFillPath = glStencilFillPathCHROMIUM; - functions->fStencilStrokePath = glStencilStrokePathCHROMIUM; - functions->fCoverFillPath = glCoverFillPathCHROMIUM; - functions->fCoverStrokePath = glCoverStrokePathCHROMIUM; - functions->fStencilThenCoverFillPath = glStencilThenCoverFillPathCHROMIUM; + gles_bind(&GLES2Interface::RenderbufferStorageMultisampleEXT, impl); + functions->fBindFragDataLocation = + gles_bind(&GLES2Interface::BindFragDataLocationEXT, impl); + functions->fBindFragDataLocationIndexed = + gles_bind(&GLES2Interface::BindFragDataLocationIndexedEXT, impl); + functions->fBindUniformLocation = + gles_bind(&GLES2Interface::BindUniformLocationCHROMIUM, impl); + functions->fBlitFramebuffer = + gles_bind(&GLES2Interface::BlitFramebufferCHROMIUM, impl); + functions->fGenerateMipmap = gles_bind(&GLES2Interface::GenerateMipmap, impl); + functions->fMatrixLoadf = + gles_bind(&GLES2Interface::MatrixLoadfCHROMIUM, impl); + functions->fMatrixLoadIdentity = + gles_bind(&GLES2Interface::MatrixLoadIdentityCHROMIUM, impl); + functions->fPathCommands = + gles_bind(&GLES2Interface::PathCommandsCHROMIUM, impl); + functions->fPathParameteri = + gles_bind(&GLES2Interface::PathParameteriCHROMIUM, impl); + functions->fPathParameterf = + gles_bind(&GLES2Interface::PathParameterfCHROMIUM, impl); + functions->fGenPaths = gles_bind(&GLES2Interface::GenPathsCHROMIUM, impl); + functions->fIsPath = gles_bind(&GLES2Interface::IsPathCHROMIUM, impl); + functions->fDeletePaths = + gles_bind(&GLES2Interface::DeletePathsCHROMIUM, impl); + functions->fPathStencilFunc = + gles_bind(&GLES2Interface::PathStencilFuncCHROMIUM, impl); + functions->fStencilFillPath = + gles_bind(&GLES2Interface::StencilFillPathCHROMIUM, impl); + functions->fStencilStrokePath = + gles_bind(&GLES2Interface::StencilStrokePathCHROMIUM, impl); + functions->fCoverFillPath = + gles_bind(&GLES2Interface::CoverFillPathCHROMIUM, impl); + functions->fCoverStrokePath = + gles_bind(&GLES2Interface::CoverStrokePathCHROMIUM, impl); + functions->fStencilThenCoverFillPath = + gles_bind(&GLES2Interface::StencilThenCoverFillPathCHROMIUM, impl); functions->fStencilThenCoverStrokePath = - glStencilThenCoverStrokePathCHROMIUM; - functions->fStencilFillPathInstanced = glStencilFillPathInstancedCHROMIUM; + gles_bind(&GLES2Interface::StencilThenCoverStrokePathCHROMIUM, impl); + functions->fStencilFillPathInstanced = + gles_bind(&GLES2Interface::StencilFillPathInstancedCHROMIUM, impl); functions->fStencilStrokePathInstanced = - glStencilStrokePathInstancedCHROMIUM; - functions->fCoverFillPathInstanced = glCoverFillPathInstancedCHROMIUM; - functions->fCoverStrokePathInstanced = glCoverStrokePathInstancedCHROMIUM; - functions->fStencilThenCoverFillPathInstanced = - glStencilThenCoverFillPathInstancedCHROMIUM; - functions->fStencilThenCoverStrokePathInstanced = - glStencilThenCoverStrokePathInstancedCHROMIUM; + gles_bind(&GLES2Interface::StencilStrokePathInstancedCHROMIUM, impl); + functions->fCoverFillPathInstanced = + gles_bind(&GLES2Interface::CoverFillPathInstancedCHROMIUM, impl); + functions->fCoverStrokePathInstanced = + gles_bind(&GLES2Interface::CoverStrokePathInstancedCHROMIUM, impl); + functions->fStencilThenCoverFillPathInstanced = gles_bind( + &GLES2Interface::StencilThenCoverFillPathInstancedCHROMIUM, impl); + functions->fStencilThenCoverStrokePathInstanced = gles_bind( + &GLES2Interface::StencilThenCoverStrokePathInstancedCHROMIUM, impl); functions->fProgramPathFragmentInputGen = - glProgramPathFragmentInputGenCHROMIUM; - functions->fBindFragmentInputLocation = glBindFragmentInputLocationCHROMIUM; - functions->fCoverageModulation = glCoverageModulationCHROMIUM; + gles_bind(&GLES2Interface::ProgramPathFragmentInputGenCHROMIUM, impl); + functions->fBindFragmentInputLocation = + gles_bind(&GLES2Interface::BindFragmentInputLocationCHROMIUM, impl); + functions->fCoverageModulation = + gles_bind(&GLES2Interface::CoverageModulationCHROMIUM, impl); } -} // namespace skia +} // namespace skia_bindings diff --git a/gpu/skia_bindings/gl_bindings_skia_cmd_buffer.h b/gpu/skia_bindings/gl_bindings_skia_cmd_buffer.h index e9504d7..8b8760d 100644 --- a/gpu/skia_bindings/gl_bindings_skia_cmd_buffer.h +++ b/gpu/skia_bindings/gl_bindings_skia_cmd_buffer.h @@ -9,12 +9,18 @@ struct GrGLInterface; +namespace gpu { +namespace gles2 { +class GLES2Interface; +} // namespace gles2 +} // namespace gpu + namespace skia_bindings { // The GPU back-end for skia requires pointers to GL functions. This function -// initializes bindings for skia-gpu to the cmd buffers GL. -void InitCommandBufferSkiaGLBinding(GrGLInterface*); +// initializes bindings for skia-gpu to a GLES2Interface object. +void InitGLES2InterfaceBindings(GrGLInterface*, gpu::gles2::GLES2Interface*); -} // namespace skia +} // namespace skia_bindings #endif // GPU_SKIA_BINDINGS_GL_BINDINGS_SKIA_CMD_BUFFER_H_ diff --git a/gpu/skia_bindings/skia_bindings.gyp b/gpu/skia_bindings/skia_bindings.gyp index 3e844c4..7c3cf6a 100644 --- a/gpu/skia_bindings/skia_bindings.gyp +++ b/gpu/skia_bindings/skia_bindings.gyp @@ -12,7 +12,7 @@ 'target_name': 'gpu_skia_bindings', 'type': 'static_library', 'dependencies': [ - '../gpu.gyp:gles2_c_lib', + '../gpu.gyp:gles2_implementation', '../../skia/skia.gyp:skia', ], 'sources': [ |