OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 |
| 6 #include "app/gfx/gl/gl_bindings_skia.h" |
| 7 |
| 8 #include "app/gfx/gl/gl_bindings.h" |
| 9 #include "app/gfx/gl/gl_implementation.h" |
| 10 #include "base/logging.h" |
| 11 |
| 12 // Skia is built against the headers in gpu\GLES. These functions |
| 13 // are exported without any call-type modifiers. |
| 14 #define GR_GL_FUNCTION_TYPE |
| 15 |
| 16 // The GrGLInterface header pulls in the default GL headers. Disable pulling |
| 17 // in the default platform headers to prevent conflicts with the GL api points |
| 18 // included via gl_bindings.h |
| 19 #define GR_GL_NO_PLATFORM_INCLUDES 1 |
| 20 #include "third_party/skia/gpu/include/GrGLInterface.h" |
| 21 #undef GR_GL_NO_PLATFORM_INCLUDES |
| 22 |
| 23 namespace { |
| 24 |
| 25 extern "C" { |
| 26 |
| 27 // The following stub functions are required because the glXXX routines exported |
| 28 // via gl_bindings.h use call-type GL_BINDING_CALL, which on Windows is stdcall. |
| 29 // Skia has been built against the GLES headers, so the interfaces in |
| 30 // GrGLInterface are __cdecl. |
| 31 |
| 32 GLvoid StubGLActiveTexture(GLenum texture) { |
| 33 glActiveTexture(texture); |
| 34 } |
| 35 |
| 36 GLvoid StubGLAttachShader(GLuint program, GLuint shader) { |
| 37 glAttachShader(program, shader); |
| 38 } |
| 39 |
| 40 GLvoid StubGLBindAttribLocation(GLuint program, GLuint index, |
| 41 const char* name) { |
| 42 glBindAttribLocation(program, index, name); |
| 43 } |
| 44 |
| 45 GLvoid StubGLBindBuffer(GLenum target, GLuint buffer) { |
| 46 glBindBuffer(target, buffer); |
| 47 } |
| 48 |
| 49 GLvoid StubGLBindFramebuffer(GLenum target, GLuint framebuffer) { |
| 50 glBindFramebufferEXT(target, framebuffer); |
| 51 } |
| 52 |
| 53 GLvoid StubGLBindRenderbuffer(GLenum target, GLuint renderbuffer) { |
| 54 glBindRenderbufferEXT(target, renderbuffer); |
| 55 } |
| 56 |
| 57 GLvoid StubGLBindTexture(GLenum target, GLuint texture) { |
| 58 glBindTexture(target, texture); |
| 59 } |
| 60 |
| 61 GLvoid StubGLBlendColor(GLclampf red, GLclampf green, GLclampf blue, |
| 62 GLclampf alpha) { |
| 63 glBlendColor(red, green, blue, alpha); |
| 64 } |
| 65 |
| 66 GLvoid StubGLBlendFunc(GLenum sfactor, GLenum dfactor) { |
| 67 glBlendFunc(sfactor, dfactor); |
| 68 } |
| 69 |
| 70 GLvoid StubGLBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, |
| 71 GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, |
| 72 GLbitfield mask, GLenum filter) { |
| 73 glBlitFramebufferEXT(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, |
| 74 mask, filter); |
| 75 } |
| 76 |
| 77 GLvoid StubGLBufferData(GLenum target, GLsizei size, const void* data, |
| 78 GLenum usage) { |
| 79 glBufferData(target, size, data, usage); |
| 80 } |
| 81 |
| 82 GLvoid StubGLBufferSubData(GLenum target, GLint offset, GLsizei size, |
| 83 const void* data) { |
| 84 glBufferSubData(target, offset, size, data); |
| 85 } |
| 86 |
| 87 GLenum StubGLCheckFramebufferStatus(GLenum target) { |
| 88 return glCheckFramebufferStatusEXT(target); |
| 89 } |
| 90 |
| 91 GLvoid StubGLClear(GLbitfield mask) { |
| 92 glClear(mask); |
| 93 } |
| 94 |
| 95 GLvoid StubGLClearColor(GLclampf red, GLclampf green, GLclampf blue, |
| 96 GLclampf alpha) { |
| 97 glClearColor(red, green, blue, alpha); |
| 98 } |
| 99 |
| 100 GLvoid StubGLClearStencil(GLint s) { |
| 101 glClearStencil(s); |
| 102 } |
| 103 |
| 104 GLvoid StubGLColorMask(GLboolean red, GLboolean green, GLboolean blue, |
| 105 GLboolean alpha) { |
| 106 glColorMask(red, green, blue, alpha); |
| 107 } |
| 108 |
| 109 GLvoid StubGLCompileShader(GLuint shader) { |
| 110 glCompileShader(shader); |
| 111 } |
| 112 |
| 113 GLvoid StubGLCompressedTexImage2D(GLenum target, GLint level, |
| 114 GLenum internalformat, GLsizei width, |
| 115 GLsizei height, GLint border, |
| 116 GLsizei imageSize, const void* data) { |
| 117 glCompressedTexImage2D(target, level, internalformat, width, height, border, |
| 118 imageSize, data); |
| 119 } |
| 120 |
| 121 GLuint StubGLCreateProgram(void) { |
| 122 return glCreateProgram(); |
| 123 } |
| 124 |
| 125 GLuint StubGLCreateShader(GLenum type) { |
| 126 return glCreateShader(type); |
| 127 } |
| 128 |
| 129 GLvoid StubGLCullFace(GLenum mode) { |
| 130 glCullFace(mode); |
| 131 } |
| 132 |
| 133 GLvoid StubGLDeleteBuffers(GLsizei n, const GLuint* buffers) { |
| 134 glDeleteBuffersARB(n, buffers); |
| 135 } |
| 136 |
| 137 GLvoid StubGLDeleteFramebuffers(GLsizei n, const GLuint* framebuffers) { |
| 138 glDeleteFramebuffersEXT(n, framebuffers); |
| 139 } |
| 140 |
| 141 GLvoid StubGLDeleteProgram(GLuint program) { |
| 142 glDeleteProgram(program); |
| 143 } |
| 144 |
| 145 GLvoid StubGLDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers) { |
| 146 glDeleteRenderbuffersEXT(n, renderbuffers); |
| 147 } |
| 148 |
| 149 GLvoid StubGLDeleteShader(GLuint shader) { |
| 150 glDeleteShader(shader); |
| 151 } |
| 152 |
| 153 GLvoid StubGLDeleteTextures(GLsizei n, const GLuint* textures) { |
| 154 glDeleteTextures(n, textures); |
| 155 } |
| 156 |
| 157 GLvoid StubGLDepthMask(GLboolean flag) { |
| 158 glDepthMask(flag); |
| 159 } |
| 160 |
| 161 GLvoid StubGLDisable(GLenum cap) { |
| 162 glDisable(cap); |
| 163 } |
| 164 |
| 165 GLvoid StubGLDisableVertexAttribArray(GLuint index) { |
| 166 glDisableVertexAttribArray(index); |
| 167 } |
| 168 |
| 169 GLvoid StubGLDrawArrays(GLenum mode, GLint first, GLsizei count) { |
| 170 glDrawArrays(mode, first, count); |
| 171 } |
| 172 |
| 173 GLvoid StubGLDrawElements(GLenum mode, GLsizei count, GLenum type, |
| 174 const void* indices) { |
| 175 glDrawElements(mode, count, type, indices); |
| 176 } |
| 177 |
| 178 GLvoid StubGLEnable(GLenum cap) { |
| 179 glEnable(cap); |
| 180 } |
| 181 |
| 182 GLvoid StubGLEnableVertexAttribArray(GLuint index) { |
| 183 glEnableVertexAttribArray(index); |
| 184 } |
| 185 |
| 186 GLvoid StubGLFramebufferRenderbuffer(GLenum target, GLenum attachment, |
| 187 GLenum renderbuffertarget, |
| 188 GLuint renderbuffer) { |
| 189 glFramebufferRenderbufferEXT(target, attachment, renderbuffertarget, |
| 190 renderbuffer); |
| 191 } |
| 192 |
| 193 GLvoid StubGLFramebufferTexture2D(GLenum target, GLenum attachment, |
| 194 GLenum textarget, GLuint texture, |
| 195 GLint level) { |
| 196 glFramebufferTexture2DEXT(target, attachment, textarget, texture, level); |
| 197 } |
| 198 |
| 199 GLvoid StubGLFrontFace(GLenum mode) { |
| 200 glFrontFace(mode); |
| 201 } |
| 202 |
| 203 GLvoid StubGLGenBuffers(GLsizei n, GLuint* buffers) { |
| 204 glGenBuffersARB(n, buffers); |
| 205 } |
| 206 |
| 207 GLvoid StubGLGenFramebuffers(GLsizei n, GLuint* framebuffers) { |
| 208 glGenFramebuffersEXT(n, framebuffers); |
| 209 } |
| 210 |
| 211 GLvoid StubGLGenRenderbuffers(GLsizei n, GLuint* renderbuffers) { |
| 212 glGenRenderbuffersEXT(n, renderbuffers); |
| 213 } |
| 214 |
| 215 GLvoid StubGLGenTextures(GLsizei n, GLuint* textures) { |
| 216 glGenTextures(n, textures); |
| 217 } |
| 218 |
| 219 GLvoid StubGLGetBufferParameteriv(GLenum target, GLenum pname, GLint* params) { |
| 220 glGetBufferParameteriv(target, pname, params); |
| 221 } |
| 222 |
| 223 GLenum StubGLGetError() { |
| 224 return glGetError(); |
| 225 } |
| 226 |
| 227 GLvoid StubGLGetIntegerv(GLenum pname, GLint* params) { |
| 228 glGetIntegerv(pname, params); |
| 229 } |
| 230 |
| 231 GLvoid StubGLGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, |
| 232 char* infolog) { |
| 233 glGetProgramInfoLog(program, bufsize, length, infolog); |
| 234 } |
| 235 |
| 236 GLvoid StubGLGetProgramiv(GLuint program, GLenum pname, GLint* params) { |
| 237 glGetProgramiv(program, pname, params); |
| 238 } |
| 239 |
| 240 GLvoid StubGLGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, |
| 241 char* infolog) { |
| 242 glGetShaderInfoLog(shader, bufsize, length, infolog); |
| 243 } |
| 244 |
| 245 GLvoid StubGLGetShaderiv(GLuint shader, GLenum pname, GLint* params) { |
| 246 glGetShaderiv(shader, pname, params); |
| 247 } |
| 248 |
| 249 const GLubyte* StubGLGetString(GLenum name) { |
| 250 return glGetString(name); |
| 251 } |
| 252 |
| 253 GLint StubGLGetUniformLocation(GLuint program, const char* name) { |
| 254 return glGetUniformLocation(program, name); |
| 255 } |
| 256 |
| 257 GLvoid StubGLLineWidth(GLfloat width) { |
| 258 glLineWidth(width); |
| 259 } |
| 260 |
| 261 GLvoid StubGLLinkProgram(GLuint program) { |
| 262 glLinkProgram(program); |
| 263 } |
| 264 |
| 265 void* StubGLMapBuffer(GLenum target, GLenum access) { |
| 266 return glMapBuffer(target, access); |
| 267 } |
| 268 |
| 269 GLvoid StubGLPixelStorei(GLenum pname, GLint param) { |
| 270 glPixelStorei(pname, param); |
| 271 } |
| 272 |
| 273 GLvoid StubGLReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, |
| 274 GLenum format, GLenum type, void* pixels) { |
| 275 glReadPixels(x, y, width, height, format, type, pixels); |
| 276 } |
| 277 |
| 278 GLvoid StubGLRenderBufferStorage(GLenum target, GLenum internalformat, |
| 279 GLsizei width, GLsizei height) { |
| 280 glRenderbufferStorageEXT(target, internalformat, width, height); |
| 281 } |
| 282 |
| 283 GLvoid StubGLRenderbufferStorageMultisample(GLenum target, GLsizei samples, |
| 284 GLenum internalformat, |
| 285 GLsizei width, GLsizei height) { |
| 286 glRenderbufferStorageMultisampleEXT(target, samples, internalformat, width, |
| 287 height); |
| 288 } |
| 289 |
| 290 GLvoid StubGLScissor(GLint x, GLint y, GLsizei width, GLsizei height) { |
| 291 glScissor(x, y, width, height); |
| 292 } |
| 293 |
| 294 GLvoid StubGLShaderSource(GLuint shader, GLsizei count, const char** str, |
| 295 const GLint* length) { |
| 296 glShaderSource(shader, count, str, length); |
| 297 } |
| 298 |
| 299 GLvoid StubGLStencilFunc(GLenum func, GLint ref, GLuint mask) { |
| 300 glStencilFunc(func, ref, mask); |
| 301 } |
| 302 |
| 303 GLvoid StubGLStencilFuncSeparate(GLenum face, GLenum func, GLint ref, |
| 304 GLuint mask) { |
| 305 glStencilFuncSeparate(face, func, ref, mask); |
| 306 } |
| 307 |
| 308 GLvoid StubGLStencilMask(GLuint mask) { |
| 309 glStencilMask(mask); |
| 310 } |
| 311 |
| 312 GLvoid StubGLStencilMaskSeparate(GLenum face, GLuint mask) { |
| 313 glStencilMaskSeparate(face, mask); |
| 314 } |
| 315 |
| 316 GLvoid StubGLStencilOp(GLenum fail, GLenum zfail, GLenum zpass) { |
| 317 glStencilOp(fail, zfail, zpass); |
| 318 } |
| 319 |
| 320 GLvoid StubGLStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, |
| 321 GLenum zpass) { |
| 322 glStencilOpSeparate(face, fail, zfail, zpass); |
| 323 } |
| 324 |
| 325 GLvoid StubGLTexImage2D(GLenum target, GLint level, GLint internalformat, |
| 326 GLsizei width, GLsizei height, GLint border, |
| 327 GLenum format, GLenum type, const void* pixels) { |
| 328 glTexImage2D(target, level, internalformat, width, height, border, format, |
| 329 type, pixels); |
| 330 } |
| 331 |
| 332 GLvoid StubGLTexParameteri(GLenum target, GLenum pname, GLint param) { |
| 333 glTexParameteri(target, pname, param); |
| 334 } |
| 335 |
| 336 GLvoid StubGLTexSubImage2D(GLenum target, GLint level, GLint xoffset, |
| 337 GLint yoffset, GLsizei width, GLsizei height, |
| 338 GLenum format, GLenum type, const void* pixels) { |
| 339 glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, |
| 340 pixels); |
| 341 } |
| 342 |
| 343 GLvoid StubGLUniform1fv(GLint location, GLsizei count, const GLfloat* v) { |
| 344 glUniform1fv(location, count, v); |
| 345 } |
| 346 |
| 347 GLvoid StubGLUniform1i(GLint location, GLint x) { |
| 348 glUniform1i(location, x); |
| 349 } |
| 350 |
| 351 GLvoid StubGLUniform4fv(GLint location, GLsizei count, const GLfloat* v) { |
| 352 glUniform4fv(location, count, v); |
| 353 } |
| 354 |
| 355 GLvoid StubGLUniformMatrix3fv(GLint location, GLsizei count, |
| 356 GLboolean transpose, const GLfloat* value) { |
| 357 glUniformMatrix3fv(location, count, transpose, value); |
| 358 } |
| 359 |
| 360 GLboolean StubGLUnmapBuffer(GLenum target) { |
| 361 return glUnmapBuffer(target); |
| 362 } |
| 363 |
| 364 GLvoid StubGLUseProgram(GLuint program) { |
| 365 glUseProgram(program); |
| 366 } |
| 367 |
| 368 GLvoid StubGLVertexAttrib4fv(GLuint indx, const GLfloat* values) { |
| 369 glVertexAttrib4fv(indx, values); |
| 370 } |
| 371 |
| 372 GLvoid StubGLVertexAttribPointer(GLuint indx, GLint size, GLenum type, |
| 373 GLboolean normalized, GLsizei stride, |
| 374 const void* ptr) { |
| 375 glVertexAttribPointer(indx, size, type, normalized, stride, ptr); |
| 376 } |
| 377 |
| 378 GLvoid StubGLViewport(GLint x, GLint y, GLsizei width, GLsizei height) { |
| 379 glViewport(x, y, width, height); |
| 380 } |
| 381 |
| 382 } // extern "C" |
| 383 |
| 384 // Populate |gl_interface| with pointers to the GL implementation used by |
| 385 // Chrome. |
| 386 void InitializeGrGLInterface(GrGLInterface* gl_interface) { |
| 387 |
| 388 // Propagate the type of GL bindings exported back to skia. |
| 389 switch (gfx::GetGLImplementation()) { |
| 390 case gfx::kGLImplementationNone: |
| 391 NOTREACHED(); |
| 392 break; |
| 393 case gfx::kGLImplementationDesktopGL: |
| 394 gl_interface->fBindingsExported = kDesktop_GrGLBinding; |
| 395 break; |
| 396 case gfx::kGLImplementationOSMesaGL: |
| 397 gl_interface->fBindingsExported = kDesktop_GrGLBinding; |
| 398 break; |
| 399 case gfx::kGLImplementationEGLGLES2: |
| 400 gl_interface->fBindingsExported = kES2_GrGLBinding; |
| 401 break; |
| 402 case gfx::kGLImplementationMockGL: |
| 403 NOTREACHED(); |
| 404 break; |
| 405 } |
| 406 |
| 407 gl_interface->fClientActiveTexture = NULL; |
| 408 gl_interface->fColor4ub = NULL; |
| 409 gl_interface->fColorPointer = NULL; |
| 410 gl_interface->fDisableClientState = NULL; |
| 411 gl_interface->fEnableClientState = NULL; |
| 412 gl_interface->fLoadMatrixf = NULL; |
| 413 gl_interface->fMatrixMode = NULL; |
| 414 gl_interface->fPointSize = NULL; |
| 415 gl_interface->fShadeModel = NULL; |
| 416 gl_interface->fTexCoordPointer = NULL; |
| 417 gl_interface->fTexEnvi = NULL; |
| 418 gl_interface->fVertexPointer = NULL; |
| 419 |
| 420 gl_interface->fFramebufferTexture2DMultisample = NULL; |
| 421 gl_interface->fResolveMultisampleFramebuffer = NULL; |
| 422 gl_interface->fActiveTexture = StubGLActiveTexture; |
| 423 gl_interface->fAttachShader = StubGLAttachShader; |
| 424 gl_interface->fBindAttribLocation = StubGLBindAttribLocation; |
| 425 gl_interface->fBindBuffer = StubGLBindBuffer; |
| 426 gl_interface->fBindTexture = StubGLBindTexture; |
| 427 gl_interface->fBlendColor = StubGLBlendColor; |
| 428 gl_interface->fBlendFunc = StubGLBlendFunc; |
| 429 gl_interface->fBufferData = StubGLBufferData; |
| 430 gl_interface->fBufferSubData = StubGLBufferSubData; |
| 431 gl_interface->fClear = StubGLClear; |
| 432 gl_interface->fClearColor = StubGLClearColor; |
| 433 gl_interface->fClearStencil = StubGLClearStencil; |
| 434 gl_interface->fColorMask = StubGLColorMask; |
| 435 gl_interface->fCompileShader = StubGLCompileShader; |
| 436 gl_interface->fCompressedTexImage2D = StubGLCompressedTexImage2D; |
| 437 gl_interface->fCreateProgram = StubGLCreateProgram; |
| 438 gl_interface->fCreateShader = StubGLCreateShader; |
| 439 gl_interface->fCullFace = StubGLCullFace; |
| 440 gl_interface->fDeleteBuffers = StubGLDeleteBuffers; |
| 441 gl_interface->fDeleteProgram = StubGLDeleteProgram; |
| 442 gl_interface->fDeleteShader = StubGLDeleteShader; |
| 443 gl_interface->fDeleteTextures = StubGLDeleteTextures; |
| 444 gl_interface->fDepthMask = StubGLDepthMask; |
| 445 gl_interface->fDisable = StubGLDisable; |
| 446 gl_interface->fDisableVertexAttribArray = StubGLDisableVertexAttribArray; |
| 447 gl_interface->fDrawArrays = StubGLDrawArrays; |
| 448 gl_interface->fDrawElements = StubGLDrawElements; |
| 449 gl_interface->fEnable = StubGLEnable; |
| 450 gl_interface->fEnableVertexAttribArray = StubGLEnableVertexAttribArray; |
| 451 gl_interface->fFrontFace = StubGLFrontFace; |
| 452 gl_interface->fGenBuffers = StubGLGenBuffers; |
| 453 gl_interface->fGenTextures = StubGLGenTextures; |
| 454 gl_interface->fGetBufferParameteriv = StubGLGetBufferParameteriv; |
| 455 gl_interface->fGetError = StubGLGetError; |
| 456 gl_interface->fGetIntegerv = StubGLGetIntegerv; |
| 457 gl_interface->fGetProgramInfoLog = StubGLGetProgramInfoLog; |
| 458 gl_interface->fGetProgramiv = StubGLGetProgramiv; |
| 459 gl_interface->fGetShaderInfoLog = StubGLGetShaderInfoLog; |
| 460 gl_interface->fGetShaderiv = StubGLGetShaderiv; |
| 461 gl_interface->fGetString = StubGLGetString; |
| 462 gl_interface->fGetUniformLocation = StubGLGetUniformLocation; |
| 463 gl_interface->fLineWidth = StubGLLineWidth; |
| 464 gl_interface->fLinkProgram = StubGLLinkProgram; |
| 465 gl_interface->fPixelStorei = StubGLPixelStorei; |
| 466 gl_interface->fReadPixels = StubGLReadPixels; |
| 467 gl_interface->fScissor = StubGLScissor; |
| 468 gl_interface->fShaderSource = StubGLShaderSource; |
| 469 gl_interface->fStencilFunc = StubGLStencilFunc; |
| 470 gl_interface->fStencilFuncSeparate = StubGLStencilFuncSeparate; |
| 471 gl_interface->fStencilMask = StubGLStencilMask; |
| 472 gl_interface->fStencilMaskSeparate = StubGLStencilMaskSeparate; |
| 473 gl_interface->fStencilOp = StubGLStencilOp; |
| 474 gl_interface->fStencilOpSeparate = StubGLStencilOpSeparate; |
| 475 gl_interface->fTexImage2D = StubGLTexImage2D; |
| 476 gl_interface->fTexParameteri = StubGLTexParameteri; |
| 477 gl_interface->fTexSubImage2D = StubGLTexSubImage2D; |
| 478 gl_interface->fUniform1fv = StubGLUniform1fv; |
| 479 gl_interface->fUniform1i = StubGLUniform1i; |
| 480 gl_interface->fUniform4fv = StubGLUniform4fv; |
| 481 gl_interface->fUniformMatrix3fv = StubGLUniformMatrix3fv; |
| 482 gl_interface->fUseProgram = StubGLUseProgram; |
| 483 gl_interface->fVertexAttrib4fv = StubGLVertexAttrib4fv; |
| 484 gl_interface->fVertexAttribPointer = StubGLVertexAttribPointer; |
| 485 gl_interface->fViewport = StubGLViewport; |
| 486 gl_interface->fBindFramebuffer = StubGLBindFramebuffer; |
| 487 gl_interface->fBindRenderbuffer = StubGLBindRenderbuffer; |
| 488 gl_interface->fCheckFramebufferStatus = StubGLCheckFramebufferStatus; |
| 489 gl_interface->fDeleteFramebuffers = StubGLDeleteFramebuffers; |
| 490 gl_interface->fDeleteRenderbuffers = StubGLDeleteRenderbuffers; |
| 491 gl_interface->fFramebufferRenderbuffer = StubGLFramebufferRenderbuffer; |
| 492 gl_interface->fFramebufferTexture2D = StubGLFramebufferTexture2D; |
| 493 gl_interface->fGenFramebuffers = StubGLGenFramebuffers; |
| 494 gl_interface->fGenRenderbuffers = StubGLGenRenderbuffers; |
| 495 gl_interface->fRenderbufferStorage = StubGLRenderBufferStorage; |
| 496 gl_interface->fRenderbufferStorageMultisample = |
| 497 StubGLRenderbufferStorageMultisample; |
| 498 gl_interface->fBlitFramebuffer = StubGLBlitFramebuffer; |
| 499 gl_interface->fMapBuffer = StubGLMapBuffer; |
| 500 gl_interface->fUnmapBuffer = StubGLUnmapBuffer; |
| 501 } |
| 502 |
| 503 } // namespace |
| 504 |
| 505 namespace gfx { |
| 506 |
| 507 void BindSkiaToHostGL() { |
| 508 static GrGLInterface host_gl_interface; |
| 509 static bool host_StubGL_initialized = false; |
| 510 if (!host_StubGL_initialized) { |
| 511 InitializeGrGLInterface(&host_gl_interface); |
| 512 GrGLSetGLInterface(&host_gl_interface); |
| 513 host_StubGL_initialized = true; |
| 514 } |
| 515 } |
| 516 |
| 517 } // namespace gfx |
OLD | NEW |