summaryrefslogtreecommitdiffstats
path: root/gpu
diff options
context:
space:
mode:
authorbsalomon <bsalomon@google.com>2016-03-21 14:21:12 -0700
committerCommit bot <commit-bot@chromium.org>2016-03-21 21:22:22 +0000
commit4b02c26d9d1b2b1a22d9257bded03f0d03a7a898 (patch)
treea93f8e34b2434a0964e71a237f2b95785018e8a8 /gpu
parent6108f2e839b14fea7583b501d7e3e1addfc6af8a (diff)
downloadchromium_src-4b02c26d9d1b2b1a22d9257bded03f0d03a7a898.zip
chromium_src-4b02c26d9d1b2b1a22d9257bded03f0d03a7a898.tar.gz
chromium_src-4b02c26d9d1b2b1a22d9257bded03f0d03a7a898.tar.bz2
Bind GrContext to GLES2Interface rather than C GLES interface
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel BUG=442811 Review URL: https://codereview.chromium.org/1671283002 Cr-Commit-Position: refs/heads/master@{#382393}
Diffstat (limited to 'gpu')
-rw-r--r--gpu/skia_bindings/BUILD.gn2
-rw-r--r--gpu/skia_bindings/gl_bindings_skia_cmd_buffer.cc389
-rw-r--r--gpu/skia_bindings/gl_bindings_skia_cmd_buffer.h12
-rw-r--r--gpu/skia_bindings/skia_bindings.gyp2
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': [