Home | History | Annotate | Download | only in gpu
      1 // Copyright 2014 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 // This file is auto-generated from
      6 // gpu/command_buffer/build_gles2_cmd_buffer.py
      7 // It's formatted by clang-format using chromium coding style:
      8 //    clang-format -i -style=chromium filename
      9 // DO NOT EDIT!
     10 
     11 #include "mojo/gpu/mojo_gles2_impl_autogen.h"
     12 
     13 #include "base/logging.h"
     14 #include "mojo/public/c/gles2/chromium_extension.h"
     15 #include "mojo/public/c/gles2/gles2.h"
     16 
     17 namespace mojo {
     18 
     19 void MojoGLES2Impl::ActiveTexture(GLenum texture) {
     20   MojoGLES2MakeCurrent(context_);
     21   glActiveTexture(texture);
     22 }
     23 void MojoGLES2Impl::AttachShader(GLuint program, GLuint shader) {
     24   MojoGLES2MakeCurrent(context_);
     25   glAttachShader(program, shader);
     26 }
     27 void MojoGLES2Impl::BindAttribLocation(GLuint program,
     28                                        GLuint index,
     29                                        const char* name) {
     30   MojoGLES2MakeCurrent(context_);
     31   glBindAttribLocation(program, index, name);
     32 }
     33 void MojoGLES2Impl::BindBuffer(GLenum target, GLuint buffer) {
     34   MojoGLES2MakeCurrent(context_);
     35   glBindBuffer(target, buffer);
     36 }
     37 void MojoGLES2Impl::BindBufferBase(GLenum target, GLuint index, GLuint buffer) {
     38   NOTREACHED() << "Unimplemented BindBufferBase.";
     39 }
     40 void MojoGLES2Impl::BindBufferRange(GLenum target,
     41                                     GLuint index,
     42                                     GLuint buffer,
     43                                     GLintptr offset,
     44                                     GLsizeiptr size) {
     45   NOTREACHED() << "Unimplemented BindBufferRange.";
     46 }
     47 void MojoGLES2Impl::BindFramebuffer(GLenum target, GLuint framebuffer) {
     48   MojoGLES2MakeCurrent(context_);
     49   glBindFramebuffer(target, framebuffer);
     50 }
     51 void MojoGLES2Impl::BindRenderbuffer(GLenum target, GLuint renderbuffer) {
     52   MojoGLES2MakeCurrent(context_);
     53   glBindRenderbuffer(target, renderbuffer);
     54 }
     55 void MojoGLES2Impl::BindSampler(GLuint unit, GLuint sampler) {
     56   NOTREACHED() << "Unimplemented BindSampler.";
     57 }
     58 void MojoGLES2Impl::BindTexture(GLenum target, GLuint texture) {
     59   MojoGLES2MakeCurrent(context_);
     60   glBindTexture(target, texture);
     61 }
     62 void MojoGLES2Impl::BindTransformFeedback(GLenum target,
     63                                           GLuint transformfeedback) {
     64   NOTREACHED() << "Unimplemented BindTransformFeedback.";
     65 }
     66 void MojoGLES2Impl::BlendColor(GLclampf red,
     67                                GLclampf green,
     68                                GLclampf blue,
     69                                GLclampf alpha) {
     70   MojoGLES2MakeCurrent(context_);
     71   glBlendColor(red, green, blue, alpha);
     72 }
     73 void MojoGLES2Impl::BlendEquation(GLenum mode) {
     74   MojoGLES2MakeCurrent(context_);
     75   glBlendEquation(mode);
     76 }
     77 void MojoGLES2Impl::BlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) {
     78   MojoGLES2MakeCurrent(context_);
     79   glBlendEquationSeparate(modeRGB, modeAlpha);
     80 }
     81 void MojoGLES2Impl::BlendFunc(GLenum sfactor, GLenum dfactor) {
     82   MojoGLES2MakeCurrent(context_);
     83   glBlendFunc(sfactor, dfactor);
     84 }
     85 void MojoGLES2Impl::BlendFuncSeparate(GLenum srcRGB,
     86                                       GLenum dstRGB,
     87                                       GLenum srcAlpha,
     88                                       GLenum dstAlpha) {
     89   MojoGLES2MakeCurrent(context_);
     90   glBlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha);
     91 }
     92 void MojoGLES2Impl::BufferData(GLenum target,
     93                                GLsizeiptr size,
     94                                const void* data,
     95                                GLenum usage) {
     96   MojoGLES2MakeCurrent(context_);
     97   glBufferData(target, size, data, usage);
     98 }
     99 void MojoGLES2Impl::BufferSubData(GLenum target,
    100                                   GLintptr offset,
    101                                   GLsizeiptr size,
    102                                   const void* data) {
    103   MojoGLES2MakeCurrent(context_);
    104   glBufferSubData(target, offset, size, data);
    105 }
    106 GLenum MojoGLES2Impl::CheckFramebufferStatus(GLenum target) {
    107   MojoGLES2MakeCurrent(context_);
    108   return glCheckFramebufferStatus(target);
    109 }
    110 void MojoGLES2Impl::Clear(GLbitfield mask) {
    111   MojoGLES2MakeCurrent(context_);
    112   glClear(mask);
    113 }
    114 void MojoGLES2Impl::ClearBufferfi(GLenum buffer,
    115                                   GLint drawbuffers,
    116                                   GLfloat depth,
    117                                   GLint stencil) {
    118   NOTREACHED() << "Unimplemented ClearBufferfi.";
    119 }
    120 void MojoGLES2Impl::ClearBufferfv(GLenum buffer,
    121                                   GLint drawbuffers,
    122                                   const GLfloat* value) {
    123   NOTREACHED() << "Unimplemented ClearBufferfv.";
    124 }
    125 void MojoGLES2Impl::ClearBufferiv(GLenum buffer,
    126                                   GLint drawbuffers,
    127                                   const GLint* value) {
    128   NOTREACHED() << "Unimplemented ClearBufferiv.";
    129 }
    130 void MojoGLES2Impl::ClearBufferuiv(GLenum buffer,
    131                                    GLint drawbuffers,
    132                                    const GLuint* value) {
    133   NOTREACHED() << "Unimplemented ClearBufferuiv.";
    134 }
    135 void MojoGLES2Impl::ClearColor(GLclampf red,
    136                                GLclampf green,
    137                                GLclampf blue,
    138                                GLclampf alpha) {
    139   MojoGLES2MakeCurrent(context_);
    140   glClearColor(red, green, blue, alpha);
    141 }
    142 void MojoGLES2Impl::ClearDepthf(GLclampf depth) {
    143   MojoGLES2MakeCurrent(context_);
    144   glClearDepthf(depth);
    145 }
    146 void MojoGLES2Impl::ClearStencil(GLint s) {
    147   MojoGLES2MakeCurrent(context_);
    148   glClearStencil(s);
    149 }
    150 GLenum MojoGLES2Impl::ClientWaitSync(GLsync sync,
    151                                      GLbitfield flags,
    152                                      GLuint64 timeout) {
    153   NOTREACHED() << "Unimplemented ClientWaitSync.";
    154   return 0;
    155 }
    156 void MojoGLES2Impl::ColorMask(GLboolean red,
    157                               GLboolean green,
    158                               GLboolean blue,
    159                               GLboolean alpha) {
    160   MojoGLES2MakeCurrent(context_);
    161   glColorMask(red, green, blue, alpha);
    162 }
    163 void MojoGLES2Impl::CompileShader(GLuint shader) {
    164   MojoGLES2MakeCurrent(context_);
    165   glCompileShader(shader);
    166 }
    167 void MojoGLES2Impl::CompressedTexImage2D(GLenum target,
    168                                          GLint level,
    169                                          GLenum internalformat,
    170                                          GLsizei width,
    171                                          GLsizei height,
    172                                          GLint border,
    173                                          GLsizei imageSize,
    174                                          const void* data) {
    175   MojoGLES2MakeCurrent(context_);
    176   glCompressedTexImage2D(target, level, internalformat, width, height, border,
    177                          imageSize, data);
    178 }
    179 void MojoGLES2Impl::CompressedTexSubImage2D(GLenum target,
    180                                             GLint level,
    181                                             GLint xoffset,
    182                                             GLint yoffset,
    183                                             GLsizei width,
    184                                             GLsizei height,
    185                                             GLenum format,
    186                                             GLsizei imageSize,
    187                                             const void* data) {
    188   MojoGLES2MakeCurrent(context_);
    189   glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height,
    190                             format, imageSize, data);
    191 }
    192 void MojoGLES2Impl::CompressedTexImage3D(GLenum target,
    193                                          GLint level,
    194                                          GLenum internalformat,
    195                                          GLsizei width,
    196                                          GLsizei height,
    197                                          GLsizei depth,
    198                                          GLint border,
    199                                          GLsizei imageSize,
    200                                          const void* data) {
    201   NOTREACHED() << "Unimplemented CompressedTexImage3D.";
    202 }
    203 void MojoGLES2Impl::CompressedTexSubImage3D(GLenum target,
    204                                             GLint level,
    205                                             GLint xoffset,
    206                                             GLint yoffset,
    207                                             GLint zoffset,
    208                                             GLsizei width,
    209                                             GLsizei height,
    210                                             GLsizei depth,
    211                                             GLenum format,
    212                                             GLsizei imageSize,
    213                                             const void* data) {
    214   NOTREACHED() << "Unimplemented CompressedTexSubImage3D.";
    215 }
    216 void MojoGLES2Impl::CopyBufferSubData(GLenum readtarget,
    217                                       GLenum writetarget,
    218                                       GLintptr readoffset,
    219                                       GLintptr writeoffset,
    220                                       GLsizeiptr size) {
    221   NOTREACHED() << "Unimplemented CopyBufferSubData.";
    222 }
    223 void MojoGLES2Impl::CopyTexImage2D(GLenum target,
    224                                    GLint level,
    225                                    GLenum internalformat,
    226                                    GLint x,
    227                                    GLint y,
    228                                    GLsizei width,
    229                                    GLsizei height,
    230                                    GLint border) {
    231   MojoGLES2MakeCurrent(context_);
    232   glCopyTexImage2D(target, level, internalformat, x, y, width, height, border);
    233 }
    234 void MojoGLES2Impl::CopyTexSubImage2D(GLenum target,
    235                                       GLint level,
    236                                       GLint xoffset,
    237                                       GLint yoffset,
    238                                       GLint x,
    239                                       GLint y,
    240                                       GLsizei width,
    241                                       GLsizei height) {
    242   MojoGLES2MakeCurrent(context_);
    243   glCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);
    244 }
    245 void MojoGLES2Impl::CopyTexSubImage3D(GLenum target,
    246                                       GLint level,
    247                                       GLint xoffset,
    248                                       GLint yoffset,
    249                                       GLint zoffset,
    250                                       GLint x,
    251                                       GLint y,
    252                                       GLsizei width,
    253                                       GLsizei height) {
    254   NOTREACHED() << "Unimplemented CopyTexSubImage3D.";
    255 }
    256 GLuint MojoGLES2Impl::CreateProgram() {
    257   MojoGLES2MakeCurrent(context_);
    258   return glCreateProgram();
    259 }
    260 GLuint MojoGLES2Impl::CreateShader(GLenum type) {
    261   MojoGLES2MakeCurrent(context_);
    262   return glCreateShader(type);
    263 }
    264 void MojoGLES2Impl::CullFace(GLenum mode) {
    265   MojoGLES2MakeCurrent(context_);
    266   glCullFace(mode);
    267 }
    268 void MojoGLES2Impl::DeleteBuffers(GLsizei n, const GLuint* buffers) {
    269   MojoGLES2MakeCurrent(context_);
    270   glDeleteBuffers(n, buffers);
    271 }
    272 void MojoGLES2Impl::DeleteFramebuffers(GLsizei n, const GLuint* framebuffers) {
    273   MojoGLES2MakeCurrent(context_);
    274   glDeleteFramebuffers(n, framebuffers);
    275 }
    276 void MojoGLES2Impl::DeleteProgram(GLuint program) {
    277   MojoGLES2MakeCurrent(context_);
    278   glDeleteProgram(program);
    279 }
    280 void MojoGLES2Impl::DeleteRenderbuffers(GLsizei n,
    281                                         const GLuint* renderbuffers) {
    282   MojoGLES2MakeCurrent(context_);
    283   glDeleteRenderbuffers(n, renderbuffers);
    284 }
    285 void MojoGLES2Impl::DeleteSamplers(GLsizei n, const GLuint* samplers) {
    286   NOTREACHED() << "Unimplemented DeleteSamplers.";
    287 }
    288 void MojoGLES2Impl::DeleteSync(GLsync sync) {
    289   NOTREACHED() << "Unimplemented DeleteSync.";
    290 }
    291 void MojoGLES2Impl::DeleteShader(GLuint shader) {
    292   MojoGLES2MakeCurrent(context_);
    293   glDeleteShader(shader);
    294 }
    295 void MojoGLES2Impl::DeleteTextures(GLsizei n, const GLuint* textures) {
    296   MojoGLES2MakeCurrent(context_);
    297   glDeleteTextures(n, textures);
    298 }
    299 void MojoGLES2Impl::DeleteTransformFeedbacks(GLsizei n, const GLuint* ids) {
    300   NOTREACHED() << "Unimplemented DeleteTransformFeedbacks.";
    301 }
    302 void MojoGLES2Impl::DepthFunc(GLenum func) {
    303   MojoGLES2MakeCurrent(context_);
    304   glDepthFunc(func);
    305 }
    306 void MojoGLES2Impl::DepthMask(GLboolean flag) {
    307   MojoGLES2MakeCurrent(context_);
    308   glDepthMask(flag);
    309 }
    310 void MojoGLES2Impl::DepthRangef(GLclampf zNear, GLclampf zFar) {
    311   MojoGLES2MakeCurrent(context_);
    312   glDepthRangef(zNear, zFar);
    313 }
    314 void MojoGLES2Impl::DetachShader(GLuint program, GLuint shader) {
    315   MojoGLES2MakeCurrent(context_);
    316   glDetachShader(program, shader);
    317 }
    318 void MojoGLES2Impl::Disable(GLenum cap) {
    319   MojoGLES2MakeCurrent(context_);
    320   glDisable(cap);
    321 }
    322 void MojoGLES2Impl::DisableVertexAttribArray(GLuint index) {
    323   MojoGLES2MakeCurrent(context_);
    324   glDisableVertexAttribArray(index);
    325 }
    326 void MojoGLES2Impl::DrawArrays(GLenum mode, GLint first, GLsizei count) {
    327   MojoGLES2MakeCurrent(context_);
    328   glDrawArrays(mode, first, count);
    329 }
    330 void MojoGLES2Impl::DrawElements(GLenum mode,
    331                                  GLsizei count,
    332                                  GLenum type,
    333                                  const void* indices) {
    334   MojoGLES2MakeCurrent(context_);
    335   glDrawElements(mode, count, type, indices);
    336 }
    337 void MojoGLES2Impl::DrawRangeElements(GLenum mode,
    338                                       GLuint start,
    339                                       GLuint end,
    340                                       GLsizei count,
    341                                       GLenum type,
    342                                       const void* indices) {
    343   NOTREACHED() << "Unimplemented DrawRangeElements.";
    344 }
    345 void MojoGLES2Impl::Enable(GLenum cap) {
    346   MojoGLES2MakeCurrent(context_);
    347   glEnable(cap);
    348 }
    349 void MojoGLES2Impl::EnableVertexAttribArray(GLuint index) {
    350   MojoGLES2MakeCurrent(context_);
    351   glEnableVertexAttribArray(index);
    352 }
    353 GLsync MojoGLES2Impl::FenceSync(GLenum condition, GLbitfield flags) {
    354   NOTREACHED() << "Unimplemented FenceSync.";
    355   return 0;
    356 }
    357 void MojoGLES2Impl::Finish() {
    358   MojoGLES2MakeCurrent(context_);
    359   glFinish();
    360 }
    361 void MojoGLES2Impl::Flush() {
    362   MojoGLES2MakeCurrent(context_);
    363   glFlush();
    364 }
    365 void MojoGLES2Impl::FramebufferRenderbuffer(GLenum target,
    366                                             GLenum attachment,
    367                                             GLenum renderbuffertarget,
    368                                             GLuint renderbuffer) {
    369   MojoGLES2MakeCurrent(context_);
    370   glFramebufferRenderbuffer(target, attachment, renderbuffertarget,
    371                             renderbuffer);
    372 }
    373 void MojoGLES2Impl::FramebufferTexture2D(GLenum target,
    374                                          GLenum attachment,
    375                                          GLenum textarget,
    376                                          GLuint texture,
    377                                          GLint level) {
    378   MojoGLES2MakeCurrent(context_);
    379   glFramebufferTexture2D(target, attachment, textarget, texture, level);
    380 }
    381 void MojoGLES2Impl::FramebufferTextureLayer(GLenum target,
    382                                             GLenum attachment,
    383                                             GLuint texture,
    384                                             GLint level,
    385                                             GLint layer) {
    386   NOTREACHED() << "Unimplemented FramebufferTextureLayer.";
    387 }
    388 void MojoGLES2Impl::FrontFace(GLenum mode) {
    389   MojoGLES2MakeCurrent(context_);
    390   glFrontFace(mode);
    391 }
    392 void MojoGLES2Impl::GenBuffers(GLsizei n, GLuint* buffers) {
    393   MojoGLES2MakeCurrent(context_);
    394   glGenBuffers(n, buffers);
    395 }
    396 void MojoGLES2Impl::GenerateMipmap(GLenum target) {
    397   MojoGLES2MakeCurrent(context_);
    398   glGenerateMipmap(target);
    399 }
    400 void MojoGLES2Impl::GenFramebuffers(GLsizei n, GLuint* framebuffers) {
    401   MojoGLES2MakeCurrent(context_);
    402   glGenFramebuffers(n, framebuffers);
    403 }
    404 void MojoGLES2Impl::GenRenderbuffers(GLsizei n, GLuint* renderbuffers) {
    405   MojoGLES2MakeCurrent(context_);
    406   glGenRenderbuffers(n, renderbuffers);
    407 }
    408 void MojoGLES2Impl::GenSamplers(GLsizei n, GLuint* samplers) {
    409   NOTREACHED() << "Unimplemented GenSamplers.";
    410 }
    411 void MojoGLES2Impl::GenTextures(GLsizei n, GLuint* textures) {
    412   MojoGLES2MakeCurrent(context_);
    413   glGenTextures(n, textures);
    414 }
    415 void MojoGLES2Impl::GenTransformFeedbacks(GLsizei n, GLuint* ids) {
    416   NOTREACHED() << "Unimplemented GenTransformFeedbacks.";
    417 }
    418 void MojoGLES2Impl::GetActiveAttrib(GLuint program,
    419                                     GLuint index,
    420                                     GLsizei bufsize,
    421                                     GLsizei* length,
    422                                     GLint* size,
    423                                     GLenum* type,
    424                                     char* name) {
    425   MojoGLES2MakeCurrent(context_);
    426   glGetActiveAttrib(program, index, bufsize, length, size, type, name);
    427 }
    428 void MojoGLES2Impl::GetActiveUniform(GLuint program,
    429                                      GLuint index,
    430                                      GLsizei bufsize,
    431                                      GLsizei* length,
    432                                      GLint* size,
    433                                      GLenum* type,
    434                                      char* name) {
    435   MojoGLES2MakeCurrent(context_);
    436   glGetActiveUniform(program, index, bufsize, length, size, type, name);
    437 }
    438 void MojoGLES2Impl::GetActiveUniformBlockiv(GLuint program,
    439                                             GLuint index,
    440                                             GLenum pname,
    441                                             GLint* params) {
    442   NOTREACHED() << "Unimplemented GetActiveUniformBlockiv.";
    443 }
    444 void MojoGLES2Impl::GetActiveUniformBlockName(GLuint program,
    445                                               GLuint index,
    446                                               GLsizei bufsize,
    447                                               GLsizei* length,
    448                                               char* name) {
    449   NOTREACHED() << "Unimplemented GetActiveUniformBlockName.";
    450 }
    451 void MojoGLES2Impl::GetActiveUniformsiv(GLuint program,
    452                                         GLsizei count,
    453                                         const GLuint* indices,
    454                                         GLenum pname,
    455                                         GLint* params) {
    456   NOTREACHED() << "Unimplemented GetActiveUniformsiv.";
    457 }
    458 void MojoGLES2Impl::GetAttachedShaders(GLuint program,
    459                                        GLsizei maxcount,
    460                                        GLsizei* count,
    461                                        GLuint* shaders) {
    462   MojoGLES2MakeCurrent(context_);
    463   glGetAttachedShaders(program, maxcount, count, shaders);
    464 }
    465 GLint MojoGLES2Impl::GetAttribLocation(GLuint program, const char* name) {
    466   MojoGLES2MakeCurrent(context_);
    467   return glGetAttribLocation(program, name);
    468 }
    469 void MojoGLES2Impl::GetBooleanv(GLenum pname, GLboolean* params) {
    470   MojoGLES2MakeCurrent(context_);
    471   glGetBooleanv(pname, params);
    472 }
    473 void MojoGLES2Impl::GetBufferParameteri64v(GLenum target,
    474                                            GLenum pname,
    475                                            GLint64* params) {
    476   NOTREACHED() << "Unimplemented GetBufferParameteri64v.";
    477 }
    478 void MojoGLES2Impl::GetBufferParameteriv(GLenum target,
    479                                          GLenum pname,
    480                                          GLint* params) {
    481   MojoGLES2MakeCurrent(context_);
    482   glGetBufferParameteriv(target, pname, params);
    483 }
    484 GLenum MojoGLES2Impl::GetError() {
    485   MojoGLES2MakeCurrent(context_);
    486   return glGetError();
    487 }
    488 void MojoGLES2Impl::GetFloatv(GLenum pname, GLfloat* params) {
    489   MojoGLES2MakeCurrent(context_);
    490   glGetFloatv(pname, params);
    491 }
    492 GLint MojoGLES2Impl::GetFragDataLocation(GLuint program, const char* name) {
    493   NOTREACHED() << "Unimplemented GetFragDataLocation.";
    494   return 0;
    495 }
    496 void MojoGLES2Impl::GetFramebufferAttachmentParameteriv(GLenum target,
    497                                                         GLenum attachment,
    498                                                         GLenum pname,
    499                                                         GLint* params) {
    500   MojoGLES2MakeCurrent(context_);
    501   glGetFramebufferAttachmentParameteriv(target, attachment, pname, params);
    502 }
    503 void MojoGLES2Impl::GetInteger64v(GLenum pname, GLint64* params) {
    504   NOTREACHED() << "Unimplemented GetInteger64v.";
    505 }
    506 void MojoGLES2Impl::GetIntegeri_v(GLenum pname, GLuint index, GLint* data) {
    507   NOTREACHED() << "Unimplemented GetIntegeri_v.";
    508 }
    509 void MojoGLES2Impl::GetInteger64i_v(GLenum pname, GLuint index, GLint64* data) {
    510   NOTREACHED() << "Unimplemented GetInteger64i_v.";
    511 }
    512 void MojoGLES2Impl::GetIntegerv(GLenum pname, GLint* params) {
    513   MojoGLES2MakeCurrent(context_);
    514   glGetIntegerv(pname, params);
    515 }
    516 void MojoGLES2Impl::GetInternalformativ(GLenum target,
    517                                         GLenum format,
    518                                         GLenum pname,
    519                                         GLsizei bufSize,
    520                                         GLint* params) {
    521   NOTREACHED() << "Unimplemented GetInternalformativ.";
    522 }
    523 void MojoGLES2Impl::GetProgramiv(GLuint program, GLenum pname, GLint* params) {
    524   MojoGLES2MakeCurrent(context_);
    525   glGetProgramiv(program, pname, params);
    526 }
    527 void MojoGLES2Impl::GetProgramInfoLog(GLuint program,
    528                                       GLsizei bufsize,
    529                                       GLsizei* length,
    530                                       char* infolog) {
    531   MojoGLES2MakeCurrent(context_);
    532   glGetProgramInfoLog(program, bufsize, length, infolog);
    533 }
    534 void MojoGLES2Impl::GetRenderbufferParameteriv(GLenum target,
    535                                                GLenum pname,
    536                                                GLint* params) {
    537   MojoGLES2MakeCurrent(context_);
    538   glGetRenderbufferParameteriv(target, pname, params);
    539 }
    540 void MojoGLES2Impl::GetSamplerParameterfv(GLuint sampler,
    541                                           GLenum pname,
    542                                           GLfloat* params) {
    543   NOTREACHED() << "Unimplemented GetSamplerParameterfv.";
    544 }
    545 void MojoGLES2Impl::GetSamplerParameteriv(GLuint sampler,
    546                                           GLenum pname,
    547                                           GLint* params) {
    548   NOTREACHED() << "Unimplemented GetSamplerParameteriv.";
    549 }
    550 void MojoGLES2Impl::GetShaderiv(GLuint shader, GLenum pname, GLint* params) {
    551   MojoGLES2MakeCurrent(context_);
    552   glGetShaderiv(shader, pname, params);
    553 }
    554 void MojoGLES2Impl::GetShaderInfoLog(GLuint shader,
    555                                      GLsizei bufsize,
    556                                      GLsizei* length,
    557                                      char* infolog) {
    558   MojoGLES2MakeCurrent(context_);
    559   glGetShaderInfoLog(shader, bufsize, length, infolog);
    560 }
    561 void MojoGLES2Impl::GetShaderPrecisionFormat(GLenum shadertype,
    562                                              GLenum precisiontype,
    563                                              GLint* range,
    564                                              GLint* precision) {
    565   MojoGLES2MakeCurrent(context_);
    566   glGetShaderPrecisionFormat(shadertype, precisiontype, range, precision);
    567 }
    568 void MojoGLES2Impl::GetShaderSource(GLuint shader,
    569                                     GLsizei bufsize,
    570                                     GLsizei* length,
    571                                     char* source) {
    572   MojoGLES2MakeCurrent(context_);
    573   glGetShaderSource(shader, bufsize, length, source);
    574 }
    575 const GLubyte* MojoGLES2Impl::GetString(GLenum name) {
    576   MojoGLES2MakeCurrent(context_);
    577   return glGetString(name);
    578 }
    579 const GLubyte* MojoGLES2Impl::GetStringi(GLenum name, GLuint index) {
    580   NOTREACHED() << "Unimplemented GetStringi.";
    581   return 0;
    582 }
    583 void MojoGLES2Impl::GetSynciv(GLsync sync,
    584                               GLenum pname,
    585                               GLsizei bufsize,
    586                               GLsizei* length,
    587                               GLint* values) {
    588   NOTREACHED() << "Unimplemented GetSynciv.";
    589 }
    590 void MojoGLES2Impl::GetTexParameterfv(GLenum target,
    591                                       GLenum pname,
    592                                       GLfloat* params) {
    593   MojoGLES2MakeCurrent(context_);
    594   glGetTexParameterfv(target, pname, params);
    595 }
    596 void MojoGLES2Impl::GetTexParameteriv(GLenum target,
    597                                       GLenum pname,
    598                                       GLint* params) {
    599   MojoGLES2MakeCurrent(context_);
    600   glGetTexParameteriv(target, pname, params);
    601 }
    602 void MojoGLES2Impl::GetTransformFeedbackVarying(GLuint program,
    603                                                 GLuint index,
    604                                                 GLsizei bufsize,
    605                                                 GLsizei* length,
    606                                                 GLsizei* size,
    607                                                 GLenum* type,
    608                                                 char* name) {
    609   NOTREACHED() << "Unimplemented GetTransformFeedbackVarying.";
    610 }
    611 GLuint MojoGLES2Impl::GetUniformBlockIndex(GLuint program, const char* name) {
    612   NOTREACHED() << "Unimplemented GetUniformBlockIndex.";
    613   return 0;
    614 }
    615 void MojoGLES2Impl::GetUniformfv(GLuint program,
    616                                  GLint location,
    617                                  GLfloat* params) {
    618   MojoGLES2MakeCurrent(context_);
    619   glGetUniformfv(program, location, params);
    620 }
    621 void MojoGLES2Impl::GetUniformiv(GLuint program,
    622                                  GLint location,
    623                                  GLint* params) {
    624   MojoGLES2MakeCurrent(context_);
    625   glGetUniformiv(program, location, params);
    626 }
    627 void MojoGLES2Impl::GetUniformuiv(GLuint program,
    628                                   GLint location,
    629                                   GLuint* params) {
    630   NOTREACHED() << "Unimplemented GetUniformuiv.";
    631 }
    632 void MojoGLES2Impl::GetUniformIndices(GLuint program,
    633                                       GLsizei count,
    634                                       const char* const* names,
    635                                       GLuint* indices) {
    636   NOTREACHED() << "Unimplemented GetUniformIndices.";
    637 }
    638 GLint MojoGLES2Impl::GetUniformLocation(GLuint program, const char* name) {
    639   MojoGLES2MakeCurrent(context_);
    640   return glGetUniformLocation(program, name);
    641 }
    642 void MojoGLES2Impl::GetVertexAttribfv(GLuint index,
    643                                       GLenum pname,
    644                                       GLfloat* params) {
    645   MojoGLES2MakeCurrent(context_);
    646   glGetVertexAttribfv(index, pname, params);
    647 }
    648 void MojoGLES2Impl::GetVertexAttribiv(GLuint index,
    649                                       GLenum pname,
    650                                       GLint* params) {
    651   MojoGLES2MakeCurrent(context_);
    652   glGetVertexAttribiv(index, pname, params);
    653 }
    654 void MojoGLES2Impl::GetVertexAttribIiv(GLuint index,
    655                                        GLenum pname,
    656                                        GLint* params) {
    657   NOTREACHED() << "Unimplemented GetVertexAttribIiv.";
    658 }
    659 void MojoGLES2Impl::GetVertexAttribIuiv(GLuint index,
    660                                         GLenum pname,
    661                                         GLuint* params) {
    662   NOTREACHED() << "Unimplemented GetVertexAttribIuiv.";
    663 }
    664 void MojoGLES2Impl::GetVertexAttribPointerv(GLuint index,
    665                                             GLenum pname,
    666                                             void** pointer) {
    667   MojoGLES2MakeCurrent(context_);
    668   glGetVertexAttribPointerv(index, pname, pointer);
    669 }
    670 void MojoGLES2Impl::Hint(GLenum target, GLenum mode) {
    671   MojoGLES2MakeCurrent(context_);
    672   glHint(target, mode);
    673 }
    674 void MojoGLES2Impl::InvalidateFramebuffer(GLenum target,
    675                                           GLsizei count,
    676                                           const GLenum* attachments) {
    677   NOTREACHED() << "Unimplemented InvalidateFramebuffer.";
    678 }
    679 void MojoGLES2Impl::InvalidateSubFramebuffer(GLenum target,
    680                                              GLsizei count,
    681                                              const GLenum* attachments,
    682                                              GLint x,
    683                                              GLint y,
    684                                              GLsizei width,
    685                                              GLsizei height) {
    686   NOTREACHED() << "Unimplemented InvalidateSubFramebuffer.";
    687 }
    688 GLboolean MojoGLES2Impl::IsBuffer(GLuint buffer) {
    689   MojoGLES2MakeCurrent(context_);
    690   return glIsBuffer(buffer);
    691 }
    692 GLboolean MojoGLES2Impl::IsEnabled(GLenum cap) {
    693   MojoGLES2MakeCurrent(context_);
    694   return glIsEnabled(cap);
    695 }
    696 GLboolean MojoGLES2Impl::IsFramebuffer(GLuint framebuffer) {
    697   MojoGLES2MakeCurrent(context_);
    698   return glIsFramebuffer(framebuffer);
    699 }
    700 GLboolean MojoGLES2Impl::IsProgram(GLuint program) {
    701   MojoGLES2MakeCurrent(context_);
    702   return glIsProgram(program);
    703 }
    704 GLboolean MojoGLES2Impl::IsRenderbuffer(GLuint renderbuffer) {
    705   MojoGLES2MakeCurrent(context_);
    706   return glIsRenderbuffer(renderbuffer);
    707 }
    708 GLboolean MojoGLES2Impl::IsSampler(GLuint sampler) {
    709   NOTREACHED() << "Unimplemented IsSampler.";
    710   return 0;
    711 }
    712 GLboolean MojoGLES2Impl::IsShader(GLuint shader) {
    713   MojoGLES2MakeCurrent(context_);
    714   return glIsShader(shader);
    715 }
    716 GLboolean MojoGLES2Impl::IsSync(GLsync sync) {
    717   NOTREACHED() << "Unimplemented IsSync.";
    718   return 0;
    719 }
    720 GLboolean MojoGLES2Impl::IsTexture(GLuint texture) {
    721   MojoGLES2MakeCurrent(context_);
    722   return glIsTexture(texture);
    723 }
    724 GLboolean MojoGLES2Impl::IsTransformFeedback(GLuint transformfeedback) {
    725   NOTREACHED() << "Unimplemented IsTransformFeedback.";
    726   return 0;
    727 }
    728 void MojoGLES2Impl::LineWidth(GLfloat width) {
    729   MojoGLES2MakeCurrent(context_);
    730   glLineWidth(width);
    731 }
    732 void MojoGLES2Impl::LinkProgram(GLuint program) {
    733   MojoGLES2MakeCurrent(context_);
    734   glLinkProgram(program);
    735 }
    736 void MojoGLES2Impl::PauseTransformFeedback() {
    737   NOTREACHED() << "Unimplemented PauseTransformFeedback.";
    738 }
    739 void MojoGLES2Impl::PixelStorei(GLenum pname, GLint param) {
    740   MojoGLES2MakeCurrent(context_);
    741   glPixelStorei(pname, param);
    742 }
    743 void MojoGLES2Impl::PolygonOffset(GLfloat factor, GLfloat units) {
    744   MojoGLES2MakeCurrent(context_);
    745   glPolygonOffset(factor, units);
    746 }
    747 void MojoGLES2Impl::ReadBuffer(GLenum src) {
    748   NOTREACHED() << "Unimplemented ReadBuffer.";
    749 }
    750 void MojoGLES2Impl::ReadPixels(GLint x,
    751                                GLint y,
    752                                GLsizei width,
    753                                GLsizei height,
    754                                GLenum format,
    755                                GLenum type,
    756                                void* pixels) {
    757   MojoGLES2MakeCurrent(context_);
    758   glReadPixels(x, y, width, height, format, type, pixels);
    759 }
    760 void MojoGLES2Impl::ReleaseShaderCompiler() {
    761   MojoGLES2MakeCurrent(context_);
    762   glReleaseShaderCompiler();
    763 }
    764 void MojoGLES2Impl::RenderbufferStorage(GLenum target,
    765                                         GLenum internalformat,
    766                                         GLsizei width,
    767                                         GLsizei height) {
    768   MojoGLES2MakeCurrent(context_);
    769   glRenderbufferStorage(target, internalformat, width, height);
    770 }
    771 void MojoGLES2Impl::ResumeTransformFeedback() {
    772   NOTREACHED() << "Unimplemented ResumeTransformFeedback.";
    773 }
    774 void MojoGLES2Impl::SampleCoverage(GLclampf value, GLboolean invert) {
    775   MojoGLES2MakeCurrent(context_);
    776   glSampleCoverage(value, invert);
    777 }
    778 void MojoGLES2Impl::SamplerParameterf(GLuint sampler,
    779                                       GLenum pname,
    780                                       GLfloat param) {
    781   NOTREACHED() << "Unimplemented SamplerParameterf.";
    782 }
    783 void MojoGLES2Impl::SamplerParameterfv(GLuint sampler,
    784                                        GLenum pname,
    785                                        const GLfloat* params) {
    786   NOTREACHED() << "Unimplemented SamplerParameterfv.";
    787 }
    788 void MojoGLES2Impl::SamplerParameteri(GLuint sampler,
    789                                       GLenum pname,
    790                                       GLint param) {
    791   NOTREACHED() << "Unimplemented SamplerParameteri.";
    792 }
    793 void MojoGLES2Impl::SamplerParameteriv(GLuint sampler,
    794                                        GLenum pname,
    795                                        const GLint* params) {
    796   NOTREACHED() << "Unimplemented SamplerParameteriv.";
    797 }
    798 void MojoGLES2Impl::Scissor(GLint x, GLint y, GLsizei width, GLsizei height) {
    799   MojoGLES2MakeCurrent(context_);
    800   glScissor(x, y, width, height);
    801 }
    802 void MojoGLES2Impl::ShaderBinary(GLsizei n,
    803                                  const GLuint* shaders,
    804                                  GLenum binaryformat,
    805                                  const void* binary,
    806                                  GLsizei length) {
    807   MojoGLES2MakeCurrent(context_);
    808   glShaderBinary(n, shaders, binaryformat, binary, length);
    809 }
    810 void MojoGLES2Impl::ShaderSource(GLuint shader,
    811                                  GLsizei count,
    812                                  const GLchar* const* str,
    813                                  const GLint* length) {
    814   MojoGLES2MakeCurrent(context_);
    815   glShaderSource(shader, count, str, length);
    816 }
    817 void MojoGLES2Impl::ShallowFinishCHROMIUM() {
    818   MojoGLES2MakeCurrent(context_);
    819   glShallowFinishCHROMIUM();
    820 }
    821 void MojoGLES2Impl::ShallowFlushCHROMIUM() {
    822   MojoGLES2MakeCurrent(context_);
    823   glShallowFlushCHROMIUM();
    824 }
    825 void MojoGLES2Impl::OrderingBarrierCHROMIUM() {
    826   MojoGLES2MakeCurrent(context_);
    827   glOrderingBarrierCHROMIUM();
    828 }
    829 void MojoGLES2Impl::StencilFunc(GLenum func, GLint ref, GLuint mask) {
    830   MojoGLES2MakeCurrent(context_);
    831   glStencilFunc(func, ref, mask);
    832 }
    833 void MojoGLES2Impl::StencilFuncSeparate(GLenum face,
    834                                         GLenum func,
    835                                         GLint ref,
    836                                         GLuint mask) {
    837   MojoGLES2MakeCurrent(context_);
    838   glStencilFuncSeparate(face, func, ref, mask);
    839 }
    840 void MojoGLES2Impl::StencilMask(GLuint mask) {
    841   MojoGLES2MakeCurrent(context_);
    842   glStencilMask(mask);
    843 }
    844 void MojoGLES2Impl::StencilMaskSeparate(GLenum face, GLuint mask) {
    845   MojoGLES2MakeCurrent(context_);
    846   glStencilMaskSeparate(face, mask);
    847 }
    848 void MojoGLES2Impl::StencilOp(GLenum fail, GLenum zfail, GLenum zpass) {
    849   MojoGLES2MakeCurrent(context_);
    850   glStencilOp(fail, zfail, zpass);
    851 }
    852 void MojoGLES2Impl::StencilOpSeparate(GLenum face,
    853                                       GLenum fail,
    854                                       GLenum zfail,
    855                                       GLenum zpass) {
    856   MojoGLES2MakeCurrent(context_);
    857   glStencilOpSeparate(face, fail, zfail, zpass);
    858 }
    859 void MojoGLES2Impl::TexImage2D(GLenum target,
    860                                GLint level,
    861                                GLint internalformat,
    862                                GLsizei width,
    863                                GLsizei height,
    864                                GLint border,
    865                                GLenum format,
    866                                GLenum type,
    867                                const void* pixels) {
    868   MojoGLES2MakeCurrent(context_);
    869   glTexImage2D(target, level, internalformat, width, height, border, format,
    870                type, pixels);
    871 }
    872 void MojoGLES2Impl::TexImage3D(GLenum target,
    873                                GLint level,
    874                                GLint internalformat,
    875                                GLsizei width,
    876                                GLsizei height,
    877                                GLsizei depth,
    878                                GLint border,
    879                                GLenum format,
    880                                GLenum type,
    881                                const void* pixels) {
    882   NOTREACHED() << "Unimplemented TexImage3D.";
    883 }
    884 void MojoGLES2Impl::TexParameterf(GLenum target, GLenum pname, GLfloat param) {
    885   MojoGLES2MakeCurrent(context_);
    886   glTexParameterf(target, pname, param);
    887 }
    888 void MojoGLES2Impl::TexParameterfv(GLenum target,
    889                                    GLenum pname,
    890                                    const GLfloat* params) {
    891   MojoGLES2MakeCurrent(context_);
    892   glTexParameterfv(target, pname, params);
    893 }
    894 void MojoGLES2Impl::TexParameteri(GLenum target, GLenum pname, GLint param) {
    895   MojoGLES2MakeCurrent(context_);
    896   glTexParameteri(target, pname, param);
    897 }
    898 void MojoGLES2Impl::TexParameteriv(GLenum target,
    899                                    GLenum pname,
    900                                    const GLint* params) {
    901   MojoGLES2MakeCurrent(context_);
    902   glTexParameteriv(target, pname, params);
    903 }
    904 void MojoGLES2Impl::TexStorage3D(GLenum target,
    905                                  GLsizei levels,
    906                                  GLenum internalFormat,
    907                                  GLsizei width,
    908                                  GLsizei height,
    909                                  GLsizei depth) {
    910   NOTREACHED() << "Unimplemented TexStorage3D.";
    911 }
    912 void MojoGLES2Impl::TexSubImage2D(GLenum target,
    913                                   GLint level,
    914                                   GLint xoffset,
    915                                   GLint yoffset,
    916                                   GLsizei width,
    917                                   GLsizei height,
    918                                   GLenum format,
    919                                   GLenum type,
    920                                   const void* pixels) {
    921   MojoGLES2MakeCurrent(context_);
    922   glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type,
    923                   pixels);
    924 }
    925 void MojoGLES2Impl::TexSubImage3D(GLenum target,
    926                                   GLint level,
    927                                   GLint xoffset,
    928                                   GLint yoffset,
    929                                   GLint zoffset,
    930                                   GLsizei width,
    931                                   GLsizei height,
    932                                   GLsizei depth,
    933                                   GLenum format,
    934                                   GLenum type,
    935                                   const void* pixels) {
    936   NOTREACHED() << "Unimplemented TexSubImage3D.";
    937 }
    938 void MojoGLES2Impl::TransformFeedbackVaryings(GLuint program,
    939                                               GLsizei count,
    940                                               const char* const* varyings,
    941                                               GLenum buffermode) {
    942   NOTREACHED() << "Unimplemented TransformFeedbackVaryings.";
    943 }
    944 void MojoGLES2Impl::Uniform1f(GLint location, GLfloat x) {
    945   MojoGLES2MakeCurrent(context_);
    946   glUniform1f(location, x);
    947 }
    948 void MojoGLES2Impl::Uniform1fv(GLint location,
    949                                GLsizei count,
    950                                const GLfloat* v) {
    951   MojoGLES2MakeCurrent(context_);
    952   glUniform1fv(location, count, v);
    953 }
    954 void MojoGLES2Impl::Uniform1i(GLint location, GLint x) {
    955   MojoGLES2MakeCurrent(context_);
    956   glUniform1i(location, x);
    957 }
    958 void MojoGLES2Impl::Uniform1iv(GLint location, GLsizei count, const GLint* v) {
    959   MojoGLES2MakeCurrent(context_);
    960   glUniform1iv(location, count, v);
    961 }
    962 void MojoGLES2Impl::Uniform1ui(GLint location, GLuint x) {
    963   NOTREACHED() << "Unimplemented Uniform1ui.";
    964 }
    965 void MojoGLES2Impl::Uniform1uiv(GLint location,
    966                                 GLsizei count,
    967                                 const GLuint* v) {
    968   NOTREACHED() << "Unimplemented Uniform1uiv.";
    969 }
    970 void MojoGLES2Impl::Uniform2f(GLint location, GLfloat x, GLfloat y) {
    971   MojoGLES2MakeCurrent(context_);
    972   glUniform2f(location, x, y);
    973 }
    974 void MojoGLES2Impl::Uniform2fv(GLint location,
    975                                GLsizei count,
    976                                const GLfloat* v) {
    977   MojoGLES2MakeCurrent(context_);
    978   glUniform2fv(location, count, v);
    979 }
    980 void MojoGLES2Impl::Uniform2i(GLint location, GLint x, GLint y) {
    981   MojoGLES2MakeCurrent(context_);
    982   glUniform2i(location, x, y);
    983 }
    984 void MojoGLES2Impl::Uniform2iv(GLint location, GLsizei count, const GLint* v) {
    985   MojoGLES2MakeCurrent(context_);
    986   glUniform2iv(location, count, v);
    987 }
    988 void MojoGLES2Impl::Uniform2ui(GLint location, GLuint x, GLuint y) {
    989   NOTREACHED() << "Unimplemented Uniform2ui.";
    990 }
    991 void MojoGLES2Impl::Uniform2uiv(GLint location,
    992                                 GLsizei count,
    993                                 const GLuint* v) {
    994   NOTREACHED() << "Unimplemented Uniform2uiv.";
    995 }
    996 void MojoGLES2Impl::Uniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z) {
    997   MojoGLES2MakeCurrent(context_);
    998   glUniform3f(location, x, y, z);
    999 }
   1000 void MojoGLES2Impl::Uniform3fv(GLint location,
   1001                                GLsizei count,
   1002                                const GLfloat* v) {
   1003   MojoGLES2MakeCurrent(context_);
   1004   glUniform3fv(location, count, v);
   1005 }
   1006 void MojoGLES2Impl::Uniform3i(GLint location, GLint x, GLint y, GLint z) {
   1007   MojoGLES2MakeCurrent(context_);
   1008   glUniform3i(location, x, y, z);
   1009 }
   1010 void MojoGLES2Impl::Uniform3iv(GLint location, GLsizei count, const GLint* v) {
   1011   MojoGLES2MakeCurrent(context_);
   1012   glUniform3iv(location, count, v);
   1013 }
   1014 void MojoGLES2Impl::Uniform3ui(GLint location, GLuint x, GLuint y, GLuint z) {
   1015   NOTREACHED() << "Unimplemented Uniform3ui.";
   1016 }
   1017 void MojoGLES2Impl::Uniform3uiv(GLint location,
   1018                                 GLsizei count,
   1019                                 const GLuint* v) {
   1020   NOTREACHED() << "Unimplemented Uniform3uiv.";
   1021 }
   1022 void MojoGLES2Impl::Uniform4f(GLint location,
   1023                               GLfloat x,
   1024                               GLfloat y,
   1025                               GLfloat z,
   1026                               GLfloat w) {
   1027   MojoGLES2MakeCurrent(context_);
   1028   glUniform4f(location, x, y, z, w);
   1029 }
   1030 void MojoGLES2Impl::Uniform4fv(GLint location,
   1031                                GLsizei count,
   1032                                const GLfloat* v) {
   1033   MojoGLES2MakeCurrent(context_);
   1034   glUniform4fv(location, count, v);
   1035 }
   1036 void MojoGLES2Impl::Uniform4i(GLint location,
   1037                               GLint x,
   1038                               GLint y,
   1039                               GLint z,
   1040                               GLint w) {
   1041   MojoGLES2MakeCurrent(context_);
   1042   glUniform4i(location, x, y, z, w);
   1043 }
   1044 void MojoGLES2Impl::Uniform4iv(GLint location, GLsizei count, const GLint* v) {
   1045   MojoGLES2MakeCurrent(context_);
   1046   glUniform4iv(location, count, v);
   1047 }
   1048 void MojoGLES2Impl::Uniform4ui(GLint location,
   1049                                GLuint x,
   1050                                GLuint y,
   1051                                GLuint z,
   1052                                GLuint w) {
   1053   NOTREACHED() << "Unimplemented Uniform4ui.";
   1054 }
   1055 void MojoGLES2Impl::Uniform4uiv(GLint location,
   1056                                 GLsizei count,
   1057                                 const GLuint* v) {
   1058   NOTREACHED() << "Unimplemented Uniform4uiv.";
   1059 }
   1060 void MojoGLES2Impl::UniformBlockBinding(GLuint program,
   1061                                         GLuint index,
   1062                                         GLuint binding) {
   1063   NOTREACHED() << "Unimplemented UniformBlockBinding.";
   1064 }
   1065 void MojoGLES2Impl::UniformMatrix2fv(GLint location,
   1066                                      GLsizei count,
   1067                                      GLboolean transpose,
   1068                                      const GLfloat* value) {
   1069   MojoGLES2MakeCurrent(context_);
   1070   glUniformMatrix2fv(location, count, transpose, value);
   1071 }
   1072 void MojoGLES2Impl::UniformMatrix2x3fv(GLint location,
   1073                                        GLsizei count,
   1074                                        GLboolean transpose,
   1075                                        const GLfloat* value) {
   1076   NOTREACHED() << "Unimplemented UniformMatrix2x3fv.";
   1077 }
   1078 void MojoGLES2Impl::UniformMatrix2x4fv(GLint location,
   1079                                        GLsizei count,
   1080                                        GLboolean transpose,
   1081                                        const GLfloat* value) {
   1082   NOTREACHED() << "Unimplemented UniformMatrix2x4fv.";
   1083 }
   1084 void MojoGLES2Impl::UniformMatrix3fv(GLint location,
   1085                                      GLsizei count,
   1086                                      GLboolean transpose,
   1087                                      const GLfloat* value) {
   1088   MojoGLES2MakeCurrent(context_);
   1089   glUniformMatrix3fv(location, count, transpose, value);
   1090 }
   1091 void MojoGLES2Impl::UniformMatrix3x2fv(GLint location,
   1092                                        GLsizei count,
   1093                                        GLboolean transpose,
   1094                                        const GLfloat* value) {
   1095   NOTREACHED() << "Unimplemented UniformMatrix3x2fv.";
   1096 }
   1097 void MojoGLES2Impl::UniformMatrix3x4fv(GLint location,
   1098                                        GLsizei count,
   1099                                        GLboolean transpose,
   1100                                        const GLfloat* value) {
   1101   NOTREACHED() << "Unimplemented UniformMatrix3x4fv.";
   1102 }
   1103 void MojoGLES2Impl::UniformMatrix4fv(GLint location,
   1104                                      GLsizei count,
   1105                                      GLboolean transpose,
   1106                                      const GLfloat* value) {
   1107   MojoGLES2MakeCurrent(context_);
   1108   glUniformMatrix4fv(location, count, transpose, value);
   1109 }
   1110 void MojoGLES2Impl::UniformMatrix4x2fv(GLint location,
   1111                                        GLsizei count,
   1112                                        GLboolean transpose,
   1113                                        const GLfloat* value) {
   1114   NOTREACHED() << "Unimplemented UniformMatrix4x2fv.";
   1115 }
   1116 void MojoGLES2Impl::UniformMatrix4x3fv(GLint location,
   1117                                        GLsizei count,
   1118                                        GLboolean transpose,
   1119                                        const GLfloat* value) {
   1120   NOTREACHED() << "Unimplemented UniformMatrix4x3fv.";
   1121 }
   1122 void MojoGLES2Impl::UseProgram(GLuint program) {
   1123   MojoGLES2MakeCurrent(context_);
   1124   glUseProgram(program);
   1125 }
   1126 void MojoGLES2Impl::ValidateProgram(GLuint program) {
   1127   MojoGLES2MakeCurrent(context_);
   1128   glValidateProgram(program);
   1129 }
   1130 void MojoGLES2Impl::VertexAttrib1f(GLuint indx, GLfloat x) {
   1131   MojoGLES2MakeCurrent(context_);
   1132   glVertexAttrib1f(indx, x);
   1133 }
   1134 void MojoGLES2Impl::VertexAttrib1fv(GLuint indx, const GLfloat* values) {
   1135   MojoGLES2MakeCurrent(context_);
   1136   glVertexAttrib1fv(indx, values);
   1137 }
   1138 void MojoGLES2Impl::VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y) {
   1139   MojoGLES2MakeCurrent(context_);
   1140   glVertexAttrib2f(indx, x, y);
   1141 }
   1142 void MojoGLES2Impl::VertexAttrib2fv(GLuint indx, const GLfloat* values) {
   1143   MojoGLES2MakeCurrent(context_);
   1144   glVertexAttrib2fv(indx, values);
   1145 }
   1146 void MojoGLES2Impl::VertexAttrib3f(GLuint indx,
   1147                                    GLfloat x,
   1148                                    GLfloat y,
   1149                                    GLfloat z) {
   1150   MojoGLES2MakeCurrent(context_);
   1151   glVertexAttrib3f(indx, x, y, z);
   1152 }
   1153 void MojoGLES2Impl::VertexAttrib3fv(GLuint indx, const GLfloat* values) {
   1154   MojoGLES2MakeCurrent(context_);
   1155   glVertexAttrib3fv(indx, values);
   1156 }
   1157 void MojoGLES2Impl::VertexAttrib4f(GLuint indx,
   1158                                    GLfloat x,
   1159                                    GLfloat y,
   1160                                    GLfloat z,
   1161                                    GLfloat w) {
   1162   MojoGLES2MakeCurrent(context_);
   1163   glVertexAttrib4f(indx, x, y, z, w);
   1164 }
   1165 void MojoGLES2Impl::VertexAttrib4fv(GLuint indx, const GLfloat* values) {
   1166   MojoGLES2MakeCurrent(context_);
   1167   glVertexAttrib4fv(indx, values);
   1168 }
   1169 void MojoGLES2Impl::VertexAttribI4i(GLuint indx,
   1170                                     GLint x,
   1171                                     GLint y,
   1172                                     GLint z,
   1173                                     GLint w) {
   1174   NOTREACHED() << "Unimplemented VertexAttribI4i.";
   1175 }
   1176 void MojoGLES2Impl::VertexAttribI4iv(GLuint indx, const GLint* values) {
   1177   NOTREACHED() << "Unimplemented VertexAttribI4iv.";
   1178 }
   1179 void MojoGLES2Impl::VertexAttribI4ui(GLuint indx,
   1180                                      GLuint x,
   1181                                      GLuint y,
   1182                                      GLuint z,
   1183                                      GLuint w) {
   1184   NOTREACHED() << "Unimplemented VertexAttribI4ui.";
   1185 }
   1186 void MojoGLES2Impl::VertexAttribI4uiv(GLuint indx, const GLuint* values) {
   1187   NOTREACHED() << "Unimplemented VertexAttribI4uiv.";
   1188 }
   1189 void MojoGLES2Impl::VertexAttribIPointer(GLuint indx,
   1190                                          GLint size,
   1191                                          GLenum type,
   1192                                          GLsizei stride,
   1193                                          const void* ptr) {
   1194   NOTREACHED() << "Unimplemented VertexAttribIPointer.";
   1195 }
   1196 void MojoGLES2Impl::VertexAttribPointer(GLuint indx,
   1197                                         GLint size,
   1198                                         GLenum type,
   1199                                         GLboolean normalized,
   1200                                         GLsizei stride,
   1201                                         const void* ptr) {
   1202   MojoGLES2MakeCurrent(context_);
   1203   glVertexAttribPointer(indx, size, type, normalized, stride, ptr);
   1204 }
   1205 void MojoGLES2Impl::Viewport(GLint x, GLint y, GLsizei width, GLsizei height) {
   1206   MojoGLES2MakeCurrent(context_);
   1207   glViewport(x, y, width, height);
   1208 }
   1209 void MojoGLES2Impl::WaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) {
   1210   NOTREACHED() << "Unimplemented WaitSync.";
   1211 }
   1212 void MojoGLES2Impl::BlitFramebufferCHROMIUM(GLint srcX0,
   1213                                             GLint srcY0,
   1214                                             GLint srcX1,
   1215                                             GLint srcY1,
   1216                                             GLint dstX0,
   1217                                             GLint dstY0,
   1218                                             GLint dstX1,
   1219                                             GLint dstY1,
   1220                                             GLbitfield mask,
   1221                                             GLenum filter) {
   1222   MojoGLES2MakeCurrent(context_);
   1223   glBlitFramebufferCHROMIUM(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1,
   1224                             dstY1, mask, filter);
   1225 }
   1226 void MojoGLES2Impl::RenderbufferStorageMultisampleCHROMIUM(
   1227     GLenum target,
   1228     GLsizei samples,
   1229     GLenum internalformat,
   1230     GLsizei width,
   1231     GLsizei height) {
   1232   MojoGLES2MakeCurrent(context_);
   1233   glRenderbufferStorageMultisampleCHROMIUM(target, samples, internalformat,
   1234                                            width, height);
   1235 }
   1236 void MojoGLES2Impl::RenderbufferStorageMultisampleEXT(GLenum target,
   1237                                                       GLsizei samples,
   1238                                                       GLenum internalformat,
   1239                                                       GLsizei width,
   1240                                                       GLsizei height) {
   1241   MojoGLES2MakeCurrent(context_);
   1242   glRenderbufferStorageMultisampleEXT(target, samples, internalformat, width,
   1243                                       height);
   1244 }
   1245 void MojoGLES2Impl::FramebufferTexture2DMultisampleEXT(GLenum target,
   1246                                                        GLenum attachment,
   1247                                                        GLenum textarget,
   1248                                                        GLuint texture,
   1249                                                        GLint level,
   1250                                                        GLsizei samples) {
   1251   MojoGLES2MakeCurrent(context_);
   1252   glFramebufferTexture2DMultisampleEXT(target, attachment, textarget, texture,
   1253                                        level, samples);
   1254 }
   1255 void MojoGLES2Impl::TexStorage2DEXT(GLenum target,
   1256                                     GLsizei levels,
   1257                                     GLenum internalFormat,
   1258                                     GLsizei width,
   1259                                     GLsizei height) {
   1260   MojoGLES2MakeCurrent(context_);
   1261   glTexStorage2DEXT(target, levels, internalFormat, width, height);
   1262 }
   1263 void MojoGLES2Impl::GenQueriesEXT(GLsizei n, GLuint* queries) {
   1264   MojoGLES2MakeCurrent(context_);
   1265   glGenQueriesEXT(n, queries);
   1266 }
   1267 void MojoGLES2Impl::DeleteQueriesEXT(GLsizei n, const GLuint* queries) {
   1268   MojoGLES2MakeCurrent(context_);
   1269   glDeleteQueriesEXT(n, queries);
   1270 }
   1271 void MojoGLES2Impl::QueryCounterEXT(GLuint id, GLenum target) {
   1272   MojoGLES2MakeCurrent(context_);
   1273   glQueryCounterEXT(id, target);
   1274 }
   1275 GLboolean MojoGLES2Impl::IsQueryEXT(GLuint id) {
   1276   MojoGLES2MakeCurrent(context_);
   1277   return glIsQueryEXT(id);
   1278 }
   1279 void MojoGLES2Impl::BeginQueryEXT(GLenum target, GLuint id) {
   1280   MojoGLES2MakeCurrent(context_);
   1281   glBeginQueryEXT(target, id);
   1282 }
   1283 void MojoGLES2Impl::BeginTransformFeedback(GLenum primitivemode) {
   1284   NOTREACHED() << "Unimplemented BeginTransformFeedback.";
   1285 }
   1286 void MojoGLES2Impl::EndQueryEXT(GLenum target) {
   1287   MojoGLES2MakeCurrent(context_);
   1288   glEndQueryEXT(target);
   1289 }
   1290 void MojoGLES2Impl::EndTransformFeedback() {
   1291   NOTREACHED() << "Unimplemented EndTransformFeedback.";
   1292 }
   1293 void MojoGLES2Impl::GetQueryivEXT(GLenum target, GLenum pname, GLint* params) {
   1294   MojoGLES2MakeCurrent(context_);
   1295   glGetQueryivEXT(target, pname, params);
   1296 }
   1297 void MojoGLES2Impl::GetQueryObjectivEXT(GLuint id,
   1298                                         GLenum pname,
   1299                                         GLint* params) {
   1300   MojoGLES2MakeCurrent(context_);
   1301   glGetQueryObjectivEXT(id, pname, params);
   1302 }
   1303 void MojoGLES2Impl::GetQueryObjectuivEXT(GLuint id,
   1304                                          GLenum pname,
   1305                                          GLuint* params) {
   1306   MojoGLES2MakeCurrent(context_);
   1307   glGetQueryObjectuivEXT(id, pname, params);
   1308 }
   1309 void MojoGLES2Impl::GetQueryObjecti64vEXT(GLuint id,
   1310                                           GLenum pname,
   1311                                           GLint64* params) {
   1312   MojoGLES2MakeCurrent(context_);
   1313   glGetQueryObjecti64vEXT(id, pname, params);
   1314 }
   1315 void MojoGLES2Impl::GetQueryObjectui64vEXT(GLuint id,
   1316                                            GLenum pname,
   1317                                            GLuint64* params) {
   1318   MojoGLES2MakeCurrent(context_);
   1319   glGetQueryObjectui64vEXT(id, pname, params);
   1320 }
   1321 void MojoGLES2Impl::SetDisjointValueSyncCHROMIUM() {
   1322   MojoGLES2MakeCurrent(context_);
   1323   glSetDisjointValueSyncCHROMIUM();
   1324 }
   1325 void MojoGLES2Impl::InsertEventMarkerEXT(GLsizei length, const GLchar* marker) {
   1326   MojoGLES2MakeCurrent(context_);
   1327   glInsertEventMarkerEXT(length, marker);
   1328 }
   1329 void MojoGLES2Impl::PushGroupMarkerEXT(GLsizei length, const GLchar* marker) {
   1330   MojoGLES2MakeCurrent(context_);
   1331   glPushGroupMarkerEXT(length, marker);
   1332 }
   1333 void MojoGLES2Impl::PopGroupMarkerEXT() {
   1334   MojoGLES2MakeCurrent(context_);
   1335   glPopGroupMarkerEXT();
   1336 }
   1337 void MojoGLES2Impl::GenVertexArraysOES(GLsizei n, GLuint* arrays) {
   1338   MojoGLES2MakeCurrent(context_);
   1339   glGenVertexArraysOES(n, arrays);
   1340 }
   1341 void MojoGLES2Impl::DeleteVertexArraysOES(GLsizei n, const GLuint* arrays) {
   1342   MojoGLES2MakeCurrent(context_);
   1343   glDeleteVertexArraysOES(n, arrays);
   1344 }
   1345 GLboolean MojoGLES2Impl::IsVertexArrayOES(GLuint array) {
   1346   MojoGLES2MakeCurrent(context_);
   1347   return glIsVertexArrayOES(array);
   1348 }
   1349 void MojoGLES2Impl::BindVertexArrayOES(GLuint array) {
   1350   MojoGLES2MakeCurrent(context_);
   1351   glBindVertexArrayOES(array);
   1352 }
   1353 void MojoGLES2Impl::SwapBuffers() {
   1354   MojoGLES2MakeCurrent(context_);
   1355   glSwapBuffers();
   1356 }
   1357 GLuint MojoGLES2Impl::GetMaxValueInBufferCHROMIUM(GLuint buffer_id,
   1358                                                   GLsizei count,
   1359                                                   GLenum type,
   1360                                                   GLuint offset) {
   1361   MojoGLES2MakeCurrent(context_);
   1362   return glGetMaxValueInBufferCHROMIUM(buffer_id, count, type, offset);
   1363 }
   1364 GLboolean MojoGLES2Impl::EnableFeatureCHROMIUM(const char* feature) {
   1365   MojoGLES2MakeCurrent(context_);
   1366   return glEnableFeatureCHROMIUM(feature);
   1367 }
   1368 void* MojoGLES2Impl::MapBufferCHROMIUM(GLuint target, GLenum access) {
   1369   MojoGLES2MakeCurrent(context_);
   1370   return glMapBufferCHROMIUM(target, access);
   1371 }
   1372 GLboolean MojoGLES2Impl::UnmapBufferCHROMIUM(GLuint target) {
   1373   MojoGLES2MakeCurrent(context_);
   1374   return glUnmapBufferCHROMIUM(target);
   1375 }
   1376 void* MojoGLES2Impl::MapBufferSubDataCHROMIUM(GLuint target,
   1377                                               GLintptr offset,
   1378                                               GLsizeiptr size,
   1379                                               GLenum access) {
   1380   MojoGLES2MakeCurrent(context_);
   1381   return glMapBufferSubDataCHROMIUM(target, offset, size, access);
   1382 }
   1383 void MojoGLES2Impl::UnmapBufferSubDataCHROMIUM(const void* mem) {
   1384   MojoGLES2MakeCurrent(context_);
   1385   glUnmapBufferSubDataCHROMIUM(mem);
   1386 }
   1387 void* MojoGLES2Impl::MapBufferRange(GLenum target,
   1388                                     GLintptr offset,
   1389                                     GLsizeiptr size,
   1390                                     GLbitfield access) {
   1391   NOTREACHED() << "Unimplemented MapBufferRange.";
   1392   return 0;
   1393 }
   1394 GLboolean MojoGLES2Impl::UnmapBuffer(GLenum target) {
   1395   NOTREACHED() << "Unimplemented UnmapBuffer.";
   1396   return 0;
   1397 }
   1398 void* MojoGLES2Impl::MapTexSubImage2DCHROMIUM(GLenum target,
   1399                                               GLint level,
   1400                                               GLint xoffset,
   1401                                               GLint yoffset,
   1402                                               GLsizei width,
   1403                                               GLsizei height,
   1404                                               GLenum format,
   1405                                               GLenum type,
   1406                                               GLenum access) {
   1407   MojoGLES2MakeCurrent(context_);
   1408   return glMapTexSubImage2DCHROMIUM(target, level, xoffset, yoffset, width,
   1409                                     height, format, type, access);
   1410 }
   1411 void MojoGLES2Impl::UnmapTexSubImage2DCHROMIUM(const void* mem) {
   1412   MojoGLES2MakeCurrent(context_);
   1413   glUnmapTexSubImage2DCHROMIUM(mem);
   1414 }
   1415 void MojoGLES2Impl::ResizeCHROMIUM(GLuint width,
   1416                                    GLuint height,
   1417                                    GLfloat scale_factor,
   1418                                    GLboolean alpha) {
   1419   MojoGLES2MakeCurrent(context_);
   1420   glResizeCHROMIUM(width, height, scale_factor, alpha);
   1421 }
   1422 const GLchar* MojoGLES2Impl::GetRequestableExtensionsCHROMIUM() {
   1423   MojoGLES2MakeCurrent(context_);
   1424   return glGetRequestableExtensionsCHROMIUM();
   1425 }
   1426 void MojoGLES2Impl::RequestExtensionCHROMIUM(const char* extension) {
   1427   MojoGLES2MakeCurrent(context_);
   1428   glRequestExtensionCHROMIUM(extension);
   1429 }
   1430 void MojoGLES2Impl::GetProgramInfoCHROMIUM(GLuint program,
   1431                                            GLsizei bufsize,
   1432                                            GLsizei* size,
   1433                                            void* info) {
   1434   MojoGLES2MakeCurrent(context_);
   1435   glGetProgramInfoCHROMIUM(program, bufsize, size, info);
   1436 }
   1437 void MojoGLES2Impl::GetUniformBlocksCHROMIUM(GLuint program,
   1438                                              GLsizei bufsize,
   1439                                              GLsizei* size,
   1440                                              void* info) {
   1441   NOTREACHED() << "Unimplemented GetUniformBlocksCHROMIUM.";
   1442 }
   1443 void MojoGLES2Impl::GetTransformFeedbackVaryingsCHROMIUM(GLuint program,
   1444                                                          GLsizei bufsize,
   1445                                                          GLsizei* size,
   1446                                                          void* info) {
   1447   NOTREACHED() << "Unimplemented GetTransformFeedbackVaryingsCHROMIUM.";
   1448 }
   1449 void MojoGLES2Impl::GetUniformsES3CHROMIUM(GLuint program,
   1450                                            GLsizei bufsize,
   1451                                            GLsizei* size,
   1452                                            void* info) {
   1453   NOTREACHED() << "Unimplemented GetUniformsES3CHROMIUM.";
   1454 }
   1455 GLuint MojoGLES2Impl::CreateImageCHROMIUM(ClientBuffer buffer,
   1456                                           GLsizei width,
   1457                                           GLsizei height,
   1458                                           GLenum internalformat) {
   1459   MojoGLES2MakeCurrent(context_);
   1460   return glCreateImageCHROMIUM(buffer, width, height, internalformat);
   1461 }
   1462 void MojoGLES2Impl::DestroyImageCHROMIUM(GLuint image_id) {
   1463   MojoGLES2MakeCurrent(context_);
   1464   glDestroyImageCHROMIUM(image_id);
   1465 }
   1466 GLuint MojoGLES2Impl::CreateGpuMemoryBufferImageCHROMIUM(GLsizei width,
   1467                                                          GLsizei height,
   1468                                                          GLenum internalformat,
   1469                                                          GLenum usage) {
   1470   MojoGLES2MakeCurrent(context_);
   1471   return glCreateGpuMemoryBufferImageCHROMIUM(width, height, internalformat,
   1472                                               usage);
   1473 }
   1474 void MojoGLES2Impl::GetTranslatedShaderSourceANGLE(GLuint shader,
   1475                                                    GLsizei bufsize,
   1476                                                    GLsizei* length,
   1477                                                    char* source) {
   1478   MojoGLES2MakeCurrent(context_);
   1479   glGetTranslatedShaderSourceANGLE(shader, bufsize, length, source);
   1480 }
   1481 void MojoGLES2Impl::PostSubBufferCHROMIUM(GLint x,
   1482                                           GLint y,
   1483                                           GLint width,
   1484                                           GLint height) {
   1485   MojoGLES2MakeCurrent(context_);
   1486   glPostSubBufferCHROMIUM(x, y, width, height);
   1487 }
   1488 void MojoGLES2Impl::CopyTextureCHROMIUM(GLenum source_id,
   1489                                         GLenum dest_id,
   1490                                         GLint internalformat,
   1491                                         GLenum dest_type,
   1492                                         GLboolean unpack_flip_y,
   1493                                         GLboolean unpack_premultiply_alpha,
   1494                                         GLboolean unpack_unmultiply_alpha) {
   1495   MojoGLES2MakeCurrent(context_);
   1496   glCopyTextureCHROMIUM(source_id, dest_id, internalformat, dest_type,
   1497                         unpack_flip_y, unpack_premultiply_alpha,
   1498                         unpack_unmultiply_alpha);
   1499 }
   1500 void MojoGLES2Impl::CopySubTextureCHROMIUM(GLenum source_id,
   1501                                            GLenum dest_id,
   1502                                            GLint xoffset,
   1503                                            GLint yoffset,
   1504                                            GLint x,
   1505                                            GLint y,
   1506                                            GLsizei width,
   1507                                            GLsizei height,
   1508                                            GLboolean unpack_flip_y,
   1509                                            GLboolean unpack_premultiply_alpha,
   1510                                            GLboolean unpack_unmultiply_alpha) {
   1511   MojoGLES2MakeCurrent(context_);
   1512   glCopySubTextureCHROMIUM(source_id, dest_id, xoffset, yoffset, x, y, width,
   1513                            height, unpack_flip_y, unpack_premultiply_alpha,
   1514                            unpack_unmultiply_alpha);
   1515 }
   1516 void MojoGLES2Impl::CompressedCopyTextureCHROMIUM(GLenum source_id,
   1517                                                   GLenum dest_id) {
   1518   MojoGLES2MakeCurrent(context_);
   1519   glCompressedCopyTextureCHROMIUM(source_id, dest_id);
   1520 }
   1521 void MojoGLES2Impl::DrawArraysInstancedANGLE(GLenum mode,
   1522                                              GLint first,
   1523                                              GLsizei count,
   1524                                              GLsizei primcount) {
   1525   MojoGLES2MakeCurrent(context_);
   1526   glDrawArraysInstancedANGLE(mode, first, count, primcount);
   1527 }
   1528 void MojoGLES2Impl::DrawElementsInstancedANGLE(GLenum mode,
   1529                                                GLsizei count,
   1530                                                GLenum type,
   1531                                                const void* indices,
   1532                                                GLsizei primcount) {
   1533   MojoGLES2MakeCurrent(context_);
   1534   glDrawElementsInstancedANGLE(mode, count, type, indices, primcount);
   1535 }
   1536 void MojoGLES2Impl::VertexAttribDivisorANGLE(GLuint index, GLuint divisor) {
   1537   MojoGLES2MakeCurrent(context_);
   1538   glVertexAttribDivisorANGLE(index, divisor);
   1539 }
   1540 void MojoGLES2Impl::GenMailboxCHROMIUM(GLbyte* mailbox) {
   1541   MojoGLES2MakeCurrent(context_);
   1542   glGenMailboxCHROMIUM(mailbox);
   1543 }
   1544 void MojoGLES2Impl::ProduceTextureCHROMIUM(GLenum target,
   1545                                            const GLbyte* mailbox) {
   1546   MojoGLES2MakeCurrent(context_);
   1547   glProduceTextureCHROMIUM(target, mailbox);
   1548 }
   1549 void MojoGLES2Impl::ProduceTextureDirectCHROMIUM(GLuint texture,
   1550                                                  GLenum target,
   1551                                                  const GLbyte* mailbox) {
   1552   MojoGLES2MakeCurrent(context_);
   1553   glProduceTextureDirectCHROMIUM(texture, target, mailbox);
   1554 }
   1555 void MojoGLES2Impl::ConsumeTextureCHROMIUM(GLenum target,
   1556                                            const GLbyte* mailbox) {
   1557   MojoGLES2MakeCurrent(context_);
   1558   glConsumeTextureCHROMIUM(target, mailbox);
   1559 }
   1560 GLuint MojoGLES2Impl::CreateAndConsumeTextureCHROMIUM(GLenum target,
   1561                                                       const GLbyte* mailbox) {
   1562   MojoGLES2MakeCurrent(context_);
   1563   return glCreateAndConsumeTextureCHROMIUM(target, mailbox);
   1564 }
   1565 void MojoGLES2Impl::BindUniformLocationCHROMIUM(GLuint program,
   1566                                                 GLint location,
   1567                                                 const char* name) {
   1568   MojoGLES2MakeCurrent(context_);
   1569   glBindUniformLocationCHROMIUM(program, location, name);
   1570 }
   1571 void MojoGLES2Impl::BindTexImage2DCHROMIUM(GLenum target, GLint imageId) {
   1572   MojoGLES2MakeCurrent(context_);
   1573   glBindTexImage2DCHROMIUM(target, imageId);
   1574 }
   1575 void MojoGLES2Impl::ReleaseTexImage2DCHROMIUM(GLenum target, GLint imageId) {
   1576   MojoGLES2MakeCurrent(context_);
   1577   glReleaseTexImage2DCHROMIUM(target, imageId);
   1578 }
   1579 void MojoGLES2Impl::TraceBeginCHROMIUM(const char* category_name,
   1580                                        const char* trace_name) {
   1581   MojoGLES2MakeCurrent(context_);
   1582   glTraceBeginCHROMIUM(category_name, trace_name);
   1583 }
   1584 void MojoGLES2Impl::TraceEndCHROMIUM() {
   1585   MojoGLES2MakeCurrent(context_);
   1586   glTraceEndCHROMIUM();
   1587 }
   1588 void MojoGLES2Impl::DiscardFramebufferEXT(GLenum target,
   1589                                           GLsizei count,
   1590                                           const GLenum* attachments) {
   1591   MojoGLES2MakeCurrent(context_);
   1592   glDiscardFramebufferEXT(target, count, attachments);
   1593 }
   1594 void MojoGLES2Impl::LoseContextCHROMIUM(GLenum current, GLenum other) {
   1595   MojoGLES2MakeCurrent(context_);
   1596   glLoseContextCHROMIUM(current, other);
   1597 }
   1598 GLuint64 MojoGLES2Impl::InsertFenceSyncCHROMIUM() {
   1599   MojoGLES2MakeCurrent(context_);
   1600   return glInsertFenceSyncCHROMIUM();
   1601 }
   1602 void MojoGLES2Impl::GenSyncTokenCHROMIUM(GLuint64 fence_sync,
   1603                                          GLbyte* sync_token) {
   1604   MojoGLES2MakeCurrent(context_);
   1605   glGenSyncTokenCHROMIUM(fence_sync, sync_token);
   1606 }
   1607 void MojoGLES2Impl::GenUnverifiedSyncTokenCHROMIUM(GLuint64 fence_sync,
   1608                                                    GLbyte* sync_token) {
   1609   MojoGLES2MakeCurrent(context_);
   1610   glGenUnverifiedSyncTokenCHROMIUM(fence_sync, sync_token);
   1611 }
   1612 void MojoGLES2Impl::VerifySyncTokensCHROMIUM(GLbyte** sync_tokens,
   1613                                              GLsizei count) {
   1614   MojoGLES2MakeCurrent(context_);
   1615   glVerifySyncTokensCHROMIUM(sync_tokens, count);
   1616 }
   1617 void MojoGLES2Impl::WaitSyncTokenCHROMIUM(const GLbyte* sync_token) {
   1618   MojoGLES2MakeCurrent(context_);
   1619   glWaitSyncTokenCHROMIUM(sync_token);
   1620 }
   1621 void MojoGLES2Impl::DrawBuffersEXT(GLsizei count, const GLenum* bufs) {
   1622   MojoGLES2MakeCurrent(context_);
   1623   glDrawBuffersEXT(count, bufs);
   1624 }
   1625 void MojoGLES2Impl::DiscardBackbufferCHROMIUM() {
   1626   MojoGLES2MakeCurrent(context_);
   1627   glDiscardBackbufferCHROMIUM();
   1628 }
   1629 void MojoGLES2Impl::ScheduleOverlayPlaneCHROMIUM(GLint plane_z_order,
   1630                                                  GLenum plane_transform,
   1631                                                  GLuint overlay_texture_id,
   1632                                                  GLint bounds_x,
   1633                                                  GLint bounds_y,
   1634                                                  GLint bounds_width,
   1635                                                  GLint bounds_height,
   1636                                                  GLfloat uv_x,
   1637                                                  GLfloat uv_y,
   1638                                                  GLfloat uv_width,
   1639                                                  GLfloat uv_height) {
   1640   MojoGLES2MakeCurrent(context_);
   1641   glScheduleOverlayPlaneCHROMIUM(
   1642       plane_z_order, plane_transform, overlay_texture_id, bounds_x, bounds_y,
   1643       bounds_width, bounds_height, uv_x, uv_y, uv_width, uv_height);
   1644 }
   1645 void MojoGLES2Impl::ScheduleCALayerCHROMIUM(GLuint contents_texture_id,
   1646                                             const GLfloat* contents_rect,
   1647                                             GLfloat opacity,
   1648                                             GLuint background_color,
   1649                                             GLuint edge_aa_mask,
   1650                                             const GLfloat* bounds_rect,
   1651                                             GLboolean is_clipped,
   1652                                             const GLfloat* clip_rect,
   1653                                             GLint sorting_context_id,
   1654                                             const GLfloat* transform,
   1655                                             GLuint filter) {
   1656   MojoGLES2MakeCurrent(context_);
   1657   glScheduleCALayerCHROMIUM(contents_texture_id, contents_rect, opacity,
   1658                             background_color, edge_aa_mask, bounds_rect,
   1659                             is_clipped, clip_rect, sorting_context_id,
   1660                             transform, filter);
   1661 }
   1662 void MojoGLES2Impl::CommitOverlayPlanesCHROMIUM() {
   1663   MojoGLES2MakeCurrent(context_);
   1664   glCommitOverlayPlanesCHROMIUM();
   1665 }
   1666 void MojoGLES2Impl::SwapInterval(GLint interval) {
   1667   MojoGLES2MakeCurrent(context_);
   1668   glSwapInterval(interval);
   1669 }
   1670 void MojoGLES2Impl::FlushDriverCachesCHROMIUM() {
   1671   MojoGLES2MakeCurrent(context_);
   1672   glFlushDriverCachesCHROMIUM();
   1673 }
   1674 GLuint MojoGLES2Impl::GetLastFlushIdCHROMIUM() {
   1675   MojoGLES2MakeCurrent(context_);
   1676   return glGetLastFlushIdCHROMIUM();
   1677 }
   1678 void MojoGLES2Impl::MatrixLoadfCHROMIUM(GLenum matrixMode, const GLfloat* m) {
   1679   MojoGLES2MakeCurrent(context_);
   1680   glMatrixLoadfCHROMIUM(matrixMode, m);
   1681 }
   1682 void MojoGLES2Impl::MatrixLoadIdentityCHROMIUM(GLenum matrixMode) {
   1683   MojoGLES2MakeCurrent(context_);
   1684   glMatrixLoadIdentityCHROMIUM(matrixMode);
   1685 }
   1686 GLuint MojoGLES2Impl::GenPathsCHROMIUM(GLsizei range) {
   1687   MojoGLES2MakeCurrent(context_);
   1688   return glGenPathsCHROMIUM(range);
   1689 }
   1690 void MojoGLES2Impl::DeletePathsCHROMIUM(GLuint path, GLsizei range) {
   1691   MojoGLES2MakeCurrent(context_);
   1692   glDeletePathsCHROMIUM(path, range);
   1693 }
   1694 GLboolean MojoGLES2Impl::IsPathCHROMIUM(GLuint path) {
   1695   MojoGLES2MakeCurrent(context_);
   1696   return glIsPathCHROMIUM(path);
   1697 }
   1698 void MojoGLES2Impl::PathCommandsCHROMIUM(GLuint path,
   1699                                          GLsizei numCommands,
   1700                                          const GLubyte* commands,
   1701                                          GLsizei numCoords,
   1702                                          GLenum coordType,
   1703                                          const GLvoid* coords) {
   1704   MojoGLES2MakeCurrent(context_);
   1705   glPathCommandsCHROMIUM(path, numCommands, commands, numCoords, coordType,
   1706                          coords);
   1707 }
   1708 void MojoGLES2Impl::PathParameterfCHROMIUM(GLuint path,
   1709                                            GLenum pname,
   1710                                            GLfloat value) {
   1711   MojoGLES2MakeCurrent(context_);
   1712   glPathParameterfCHROMIUM(path, pname, value);
   1713 }
   1714 void MojoGLES2Impl::PathParameteriCHROMIUM(GLuint path,
   1715                                            GLenum pname,
   1716                                            GLint value) {
   1717   MojoGLES2MakeCurrent(context_);
   1718   glPathParameteriCHROMIUM(path, pname, value);
   1719 }
   1720 void MojoGLES2Impl::PathStencilFuncCHROMIUM(GLenum func,
   1721                                             GLint ref,
   1722                                             GLuint mask) {
   1723   MojoGLES2MakeCurrent(context_);
   1724   glPathStencilFuncCHROMIUM(func, ref, mask);
   1725 }
   1726 void MojoGLES2Impl::StencilFillPathCHROMIUM(GLuint path,
   1727                                             GLenum fillMode,
   1728                                             GLuint mask) {
   1729   MojoGLES2MakeCurrent(context_);
   1730   glStencilFillPathCHROMIUM(path, fillMode, mask);
   1731 }
   1732 void MojoGLES2Impl::StencilStrokePathCHROMIUM(GLuint path,
   1733                                               GLint reference,
   1734                                               GLuint mask) {
   1735   MojoGLES2MakeCurrent(context_);
   1736   glStencilStrokePathCHROMIUM(path, reference, mask);
   1737 }
   1738 void MojoGLES2Impl::CoverFillPathCHROMIUM(GLuint path, GLenum coverMode) {
   1739   MojoGLES2MakeCurrent(context_);
   1740   glCoverFillPathCHROMIUM(path, coverMode);
   1741 }
   1742 void MojoGLES2Impl::CoverStrokePathCHROMIUM(GLuint path, GLenum coverMode) {
   1743   MojoGLES2MakeCurrent(context_);
   1744   glCoverStrokePathCHROMIUM(path, coverMode);
   1745 }
   1746 void MojoGLES2Impl::StencilThenCoverFillPathCHROMIUM(GLuint path,
   1747                                                      GLenum fillMode,
   1748                                                      GLuint mask,
   1749                                                      GLenum coverMode) {
   1750   MojoGLES2MakeCurrent(context_);
   1751   glStencilThenCoverFillPathCHROMIUM(path, fillMode, mask, coverMode);
   1752 }
   1753 void MojoGLES2Impl::StencilThenCoverStrokePathCHROMIUM(GLuint path,
   1754                                                        GLint reference,
   1755                                                        GLuint mask,
   1756                                                        GLenum coverMode) {
   1757   MojoGLES2MakeCurrent(context_);
   1758   glStencilThenCoverStrokePathCHROMIUM(path, reference, mask, coverMode);
   1759 }
   1760 void MojoGLES2Impl::StencilFillPathInstancedCHROMIUM(
   1761     GLsizei numPaths,
   1762     GLenum pathNameType,
   1763     const GLvoid* paths,
   1764     GLuint pathBase,
   1765     GLenum fillMode,
   1766     GLuint mask,
   1767     GLenum transformType,
   1768     const GLfloat* transformValues) {
   1769   MojoGLES2MakeCurrent(context_);
   1770   glStencilFillPathInstancedCHROMIUM(numPaths, pathNameType, paths, pathBase,
   1771                                      fillMode, mask, transformType,
   1772                                      transformValues);
   1773 }
   1774 void MojoGLES2Impl::StencilStrokePathInstancedCHROMIUM(
   1775     GLsizei numPaths,
   1776     GLenum pathNameType,
   1777     const GLvoid* paths,
   1778     GLuint pathBase,
   1779     GLint reference,
   1780     GLuint mask,
   1781     GLenum transformType,
   1782     const GLfloat* transformValues) {
   1783   MojoGLES2MakeCurrent(context_);
   1784   glStencilStrokePathInstancedCHROMIUM(numPaths, pathNameType, paths, pathBase,
   1785                                        reference, mask, transformType,
   1786                                        transformValues);
   1787 }
   1788 void MojoGLES2Impl::CoverFillPathInstancedCHROMIUM(
   1789     GLsizei numPaths,
   1790     GLenum pathNameType,
   1791     const GLvoid* paths,
   1792     GLuint pathBase,
   1793     GLenum coverMode,
   1794     GLenum transformType,
   1795     const GLfloat* transformValues) {
   1796   MojoGLES2MakeCurrent(context_);
   1797   glCoverFillPathInstancedCHROMIUM(numPaths, pathNameType, paths, pathBase,
   1798                                    coverMode, transformType, transformValues);
   1799 }
   1800 void MojoGLES2Impl::CoverStrokePathInstancedCHROMIUM(
   1801     GLsizei numPaths,
   1802     GLenum pathNameType,
   1803     const GLvoid* paths,
   1804     GLuint pathBase,
   1805     GLenum coverMode,
   1806     GLenum transformType,
   1807     const GLfloat* transformValues) {
   1808   MojoGLES2MakeCurrent(context_);
   1809   glCoverStrokePathInstancedCHROMIUM(numPaths, pathNameType, paths, pathBase,
   1810                                      coverMode, transformType, transformValues);
   1811 }
   1812 void MojoGLES2Impl::StencilThenCoverFillPathInstancedCHROMIUM(
   1813     GLsizei numPaths,
   1814     GLenum pathNameType,
   1815     const GLvoid* paths,
   1816     GLuint pathBase,
   1817     GLenum fillMode,
   1818     GLuint mask,
   1819     GLenum coverMode,
   1820     GLenum transformType,
   1821     const GLfloat* transformValues) {
   1822   MojoGLES2MakeCurrent(context_);
   1823   glStencilThenCoverFillPathInstancedCHROMIUM(
   1824       numPaths, pathNameType, paths, pathBase, fillMode, mask, coverMode,
   1825       transformType, transformValues);
   1826 }
   1827 void MojoGLES2Impl::StencilThenCoverStrokePathInstancedCHROMIUM(
   1828     GLsizei numPaths,
   1829     GLenum pathNameType,
   1830     const GLvoid* paths,
   1831     GLuint pathBase,
   1832     GLint reference,
   1833     GLuint mask,
   1834     GLenum coverMode,
   1835     GLenum transformType,
   1836     const GLfloat* transformValues) {
   1837   MojoGLES2MakeCurrent(context_);
   1838   glStencilThenCoverStrokePathInstancedCHROMIUM(
   1839       numPaths, pathNameType, paths, pathBase, reference, mask, coverMode,
   1840       transformType, transformValues);
   1841 }
   1842 void MojoGLES2Impl::BindFragmentInputLocationCHROMIUM(GLuint program,
   1843                                                       GLint location,
   1844                                                       const char* name) {
   1845   MojoGLES2MakeCurrent(context_);
   1846   glBindFragmentInputLocationCHROMIUM(program, location, name);
   1847 }
   1848 void MojoGLES2Impl::ProgramPathFragmentInputGenCHROMIUM(GLuint program,
   1849                                                         GLint location,
   1850                                                         GLenum genMode,
   1851                                                         GLint components,
   1852                                                         const GLfloat* coeffs) {
   1853   MojoGLES2MakeCurrent(context_);
   1854   glProgramPathFragmentInputGenCHROMIUM(program, location, genMode, components,
   1855                                         coeffs);
   1856 }
   1857 void MojoGLES2Impl::CoverageModulationCHROMIUM(GLenum components) {
   1858   MojoGLES2MakeCurrent(context_);
   1859   glCoverageModulationCHROMIUM(components);
   1860 }
   1861 GLenum MojoGLES2Impl::GetGraphicsResetStatusKHR() {
   1862   MojoGLES2MakeCurrent(context_);
   1863   return glGetGraphicsResetStatusKHR();
   1864 }
   1865 void MojoGLES2Impl::BlendBarrierKHR() {
   1866   MojoGLES2MakeCurrent(context_);
   1867   glBlendBarrierKHR();
   1868 }
   1869 void MojoGLES2Impl::ApplyScreenSpaceAntialiasingCHROMIUM() {
   1870   MojoGLES2MakeCurrent(context_);
   1871   glApplyScreenSpaceAntialiasingCHROMIUM();
   1872 }
   1873 void MojoGLES2Impl::BindFragDataLocationIndexedEXT(GLuint program,
   1874                                                    GLuint colorNumber,
   1875                                                    GLuint index,
   1876                                                    const char* name) {
   1877   MojoGLES2MakeCurrent(context_);
   1878   glBindFragDataLocationIndexedEXT(program, colorNumber, index, name);
   1879 }
   1880 void MojoGLES2Impl::BindFragDataLocationEXT(GLuint program,
   1881                                             GLuint colorNumber,
   1882                                             const char* name) {
   1883   MojoGLES2MakeCurrent(context_);
   1884   glBindFragDataLocationEXT(program, colorNumber, name);
   1885 }
   1886 GLint MojoGLES2Impl::GetFragDataIndexEXT(GLuint program, const char* name) {
   1887   MojoGLES2MakeCurrent(context_);
   1888   return glGetFragDataIndexEXT(program, name);
   1889 }
   1890 void MojoGLES2Impl::UniformMatrix4fvStreamTextureMatrixCHROMIUM(
   1891     GLint location,
   1892     GLboolean transpose,
   1893     const GLfloat* default_value) {
   1894   MojoGLES2MakeCurrent(context_);
   1895   glUniformMatrix4fvStreamTextureMatrixCHROMIUM(location, transpose,
   1896                                                 default_value);
   1897 }
   1898 
   1899 }  // namespace mojo
   1900