14ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file is auto-generated from
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// gpu/command_buffer/build_gles2_cmd_buffer.py
7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// It's formatted by clang-format using chromium coding style:
8a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)//    clang-format -i -style=chromium filename
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// DO NOT EDIT!
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/shared_impl/ppb_opengles2_shared.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "gpu/command_buffer/client/gles2_implementation.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/shared_impl/ppb_graphics_3d_shared.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/thunk/enter.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ppapi {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)typedef thunk::EnterResource<thunk::PPB_Graphics3D_API> Enter3D;
234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)gpu::gles2::GLES2Implementation* ToGles2Impl(Enter3D* enter) {
254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  DCHECK(enter);
264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  DCHECK(enter->succeeded());
274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  return static_cast<PPB_Graphics3D_Shared*>(enter->object())->gles2_impl();
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ActiveTexture(PP_Resource context_id, GLenum texture) {
314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->ActiveTexture(texture);
344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AttachShader(PP_Resource context_id, GLuint program, GLuint shader) {
384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->AttachShader(program, shader);
414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void BindAttribLocation(PP_Resource context_id,
45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                        GLuint program,
46a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                        GLuint index,
47a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                        const char* name) {
484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->BindAttribLocation(program, index, name);
514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BindBuffer(PP_Resource context_id, GLenum target, GLuint buffer) {
554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->BindBuffer(target, buffer);
584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void BindFramebuffer(PP_Resource context_id,
62a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                     GLenum target,
63a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                     GLuint framebuffer) {
644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->BindFramebuffer(target, framebuffer);
674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
70a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void BindRenderbuffer(PP_Resource context_id,
71a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      GLenum target,
72a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      GLuint renderbuffer) {
734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->BindRenderbuffer(target, renderbuffer);
764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BindTexture(PP_Resource context_id, GLenum target, GLuint texture) {
804e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
814e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
824e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->BindTexture(target, texture);
834e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
86a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void BlendColor(PP_Resource context_id,
87a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLclampf red,
88a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLclampf green,
89a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLclampf blue,
90a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLclampf alpha) {
914e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
924e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->BlendColor(red, green, blue, alpha);
944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BlendEquation(PP_Resource context_id, GLenum mode) {
984e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
994e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
1004e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->BlendEquation(mode);
1014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
104a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void BlendEquationSeparate(PP_Resource context_id,
105a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                           GLenum modeRGB,
106a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                           GLenum modeAlpha) {
1074e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
1084e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
1094e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->BlendEquationSeparate(modeRGB, modeAlpha);
1104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BlendFunc(PP_Resource context_id, GLenum sfactor, GLenum dfactor) {
1144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
1154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
1164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->BlendFunc(sfactor, dfactor);
1174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
120a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void BlendFuncSeparate(PP_Resource context_id,
121a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLenum srcRGB,
122a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLenum dstRGB,
123a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLenum srcAlpha,
124a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLenum dstAlpha) {
1254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
1264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
1274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->BlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha);
1284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
131a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void BufferData(PP_Resource context_id,
132a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLenum target,
133a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLsizeiptr size,
134a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                const void* data,
135a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLenum usage) {
1364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
1374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
1384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->BufferData(target, size, data, usage);
1394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
142a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void BufferSubData(PP_Resource context_id,
143a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                   GLenum target,
144a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                   GLintptr offset,
145a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                   GLsizeiptr size,
146a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                   const void* data) {
1474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
1484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
1494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->BufferSubData(target, offset, size, data);
1504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GLenum CheckFramebufferStatus(PP_Resource context_id, GLenum target) {
1544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
1554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
1564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return ToGles2Impl(&enter)->CheckFramebufferStatus(target);
1574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  } else {
1584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return 0;
1594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void Clear(PP_Resource context_id, GLbitfield mask) {
1634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
1644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
1654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->Clear(mask);
1664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
169a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void ClearColor(PP_Resource context_id,
170a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLclampf red,
171a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLclampf green,
172a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLclampf blue,
173a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLclampf alpha) {
1744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
1754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
1764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->ClearColor(red, green, blue, alpha);
1774e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ClearDepthf(PP_Resource context_id, GLclampf depth) {
1814e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
1824e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
1834e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->ClearDepthf(depth);
1844e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ClearStencil(PP_Resource context_id, GLint s) {
1884e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
1894e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
1904e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->ClearStencil(s);
1914e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
194a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void ColorMask(PP_Resource context_id,
195a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               GLboolean red,
196a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               GLboolean green,
197a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               GLboolean blue,
198a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               GLboolean alpha) {
1994e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
2004e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
2014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->ColorMask(red, green, blue, alpha);
2024e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void CompileShader(PP_Resource context_id, GLuint shader) {
2064e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
2074e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
2084e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->CompileShader(shader);
2094e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
212a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void CompressedTexImage2D(PP_Resource context_id,
213a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                          GLenum target,
214a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                          GLint level,
215a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                          GLenum internalformat,
216a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                          GLsizei width,
217a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                          GLsizei height,
218a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                          GLint border,
219a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                          GLsizei imageSize,
220a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                          const void* data) {
2214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
2224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
223a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    ToGles2Impl(&enter)->CompressedTexImage2D(
224a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        target, level, internalformat, width, height, border, imageSize, data);
2254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
228a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void CompressedTexSubImage2D(PP_Resource context_id,
229a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                             GLenum target,
230a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                             GLint level,
231a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                             GLint xoffset,
232a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                             GLint yoffset,
233a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                             GLsizei width,
234a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                             GLsizei height,
235a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                             GLenum format,
236a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                             GLsizei imageSize,
237a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                             const void* data) {
2384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
2394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
240a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    ToGles2Impl(&enter)->CompressedTexSubImage2D(target,
241a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                                 level,
242a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                                 xoffset,
243a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                                 yoffset,
244a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                                 width,
245a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                                 height,
246a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                                 format,
247a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                                 imageSize,
248a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                                 data);
2494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
252a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void CopyTexImage2D(PP_Resource context_id,
253a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    GLenum target,
254a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    GLint level,
255a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    GLenum internalformat,
256a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    GLint x,
257a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    GLint y,
258a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    GLsizei width,
259a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    GLsizei height,
260a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    GLint border) {
2614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
2624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
263a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    ToGles2Impl(&enter)->CopyTexImage2D(
264a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        target, level, internalformat, x, y, width, height, border);
2654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
268a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void CopyTexSubImage2D(PP_Resource context_id,
269a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLenum target,
270a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLint level,
271a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLint xoffset,
272a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLint yoffset,
273a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLint x,
274a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLint y,
275a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLsizei width,
276a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLsizei height) {
2774e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
2784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
279a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    ToGles2Impl(&enter)->CopyTexSubImage2D(
280a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        target, level, xoffset, yoffset, x, y, width, height);
2814e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GLuint CreateProgram(PP_Resource context_id) {
2854e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
2864e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
2874e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return ToGles2Impl(&enter)->CreateProgram();
2884e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  } else {
2894e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return 0;
2904e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GLuint CreateShader(PP_Resource context_id, GLenum type) {
2944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
2954e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
2964e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return ToGles2Impl(&enter)->CreateShader(type);
2974e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  } else {
2984e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return 0;
2994e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void CullFace(PP_Resource context_id, GLenum mode) {
3034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
3044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
3054e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->CullFace(mode);
3064e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DeleteBuffers(PP_Resource context_id, GLsizei n, const GLuint* buffers) {
3104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
3114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
3124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->DeleteBuffers(n, buffers);
3134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
316a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void DeleteFramebuffers(PP_Resource context_id,
317a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                        GLsizei n,
318a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                        const GLuint* framebuffers) {
3194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
3204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
3214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->DeleteFramebuffers(n, framebuffers);
3224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DeleteProgram(PP_Resource context_id, GLuint program) {
3264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
3274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
3284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->DeleteProgram(program);
3294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
332a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void DeleteRenderbuffers(PP_Resource context_id,
333a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                         GLsizei n,
334a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                         const GLuint* renderbuffers) {
3354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
3364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
3374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->DeleteRenderbuffers(n, renderbuffers);
3384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DeleteShader(PP_Resource context_id, GLuint shader) {
3424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
3434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
3444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->DeleteShader(shader);
3454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
348a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void DeleteTextures(PP_Resource context_id, GLsizei n, const GLuint* textures) {
3494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
3504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
3514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->DeleteTextures(n, textures);
3524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DepthFunc(PP_Resource context_id, GLenum func) {
3564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
3574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
3584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->DepthFunc(func);
3594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DepthMask(PP_Resource context_id, GLboolean flag) {
3634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
3644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
3654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->DepthMask(flag);
3664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DepthRangef(PP_Resource context_id, GLclampf zNear, GLclampf zFar) {
3704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
3714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
3724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->DepthRangef(zNear, zFar);
3734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DetachShader(PP_Resource context_id, GLuint program, GLuint shader) {
3774e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
3784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
3794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->DetachShader(program, shader);
3804e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void Disable(PP_Resource context_id, GLenum cap) {
3844e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
3854e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
3864e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->Disable(cap);
3874e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DisableVertexAttribArray(PP_Resource context_id, GLuint index) {
3914e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
3924e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
3934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->DisableVertexAttribArray(index);
3944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
397a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void DrawArrays(PP_Resource context_id,
398a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLenum mode,
399a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLint first,
400a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLsizei count) {
4014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
4024e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
4034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->DrawArrays(mode, first, count);
4044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
407a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void DrawElements(PP_Resource context_id,
408a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  GLenum mode,
409a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  GLsizei count,
410a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  GLenum type,
411a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  const void* indices) {
4124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
4134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
4144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->DrawElements(mode, count, type, indices);
4154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void Enable(PP_Resource context_id, GLenum cap) {
4194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
4204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
4214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->Enable(cap);
4224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void EnableVertexAttribArray(PP_Resource context_id, GLuint index) {
4264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
4274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
4284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->EnableVertexAttribArray(index);
4294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void Finish(PP_Resource context_id) {
4334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
4344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
4354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->Finish();
4364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void Flush(PP_Resource context_id) {
4404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
4414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
4424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->Flush();
4434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
446a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void FramebufferRenderbuffer(PP_Resource context_id,
447a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                             GLenum target,
448a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                             GLenum attachment,
449a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                             GLenum renderbuffertarget,
450a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                             GLuint renderbuffer) {
4514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
4524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
453a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    ToGles2Impl(&enter)->FramebufferRenderbuffer(
454a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        target, attachment, renderbuffertarget, renderbuffer);
4554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
458a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void FramebufferTexture2D(PP_Resource context_id,
459a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                          GLenum target,
460a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                          GLenum attachment,
461a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                          GLenum textarget,
462a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                          GLuint texture,
463a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                          GLint level) {
4644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
4654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
466a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    ToGles2Impl(&enter)
467a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        ->FramebufferTexture2D(target, attachment, textarget, texture, level);
4684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FrontFace(PP_Resource context_id, GLenum mode) {
4724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
4734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
4744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->FrontFace(mode);
4754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void GenBuffers(PP_Resource context_id, GLsizei n, GLuint* buffers) {
4794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
4804e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
4814e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->GenBuffers(n, buffers);
4824e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void GenerateMipmap(PP_Resource context_id, GLenum target) {
4864e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
4874e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
4884e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->GenerateMipmap(target);
4894e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void GenFramebuffers(PP_Resource context_id, GLsizei n, GLuint* framebuffers) {
4934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
4944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
4954e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->GenFramebuffers(n, framebuffers);
4964e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
499a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void GenRenderbuffers(PP_Resource context_id,
500a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      GLsizei n,
501a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      GLuint* renderbuffers) {
5024e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
5034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
5044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->GenRenderbuffers(n, renderbuffers);
5054e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void GenTextures(PP_Resource context_id, GLsizei n, GLuint* textures) {
5094e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
5104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
5114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->GenTextures(n, textures);
5124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
515a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void GetActiveAttrib(PP_Resource context_id,
516a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                     GLuint program,
517a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                     GLuint index,
518a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                     GLsizei bufsize,
519a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                     GLsizei* length,
520a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                     GLint* size,
521a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                     GLenum* type,
522a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                     char* name) {
5234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
5244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
525a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    ToGles2Impl(&enter)
526a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        ->GetActiveAttrib(program, index, bufsize, length, size, type, name);
5274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
530a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void GetActiveUniform(PP_Resource context_id,
531a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      GLuint program,
532a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      GLuint index,
533a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      GLsizei bufsize,
534a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      GLsizei* length,
535a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      GLint* size,
536a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      GLenum* type,
537a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      char* name) {
5384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
5394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
540a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    ToGles2Impl(&enter)
541a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        ->GetActiveUniform(program, index, bufsize, length, size, type, name);
5424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void GetAttachedShaders(PP_Resource context_id,
546a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                        GLuint program,
547a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                        GLsizei maxcount,
548a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                        GLsizei* count,
549a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                        GLuint* shaders) {
5504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
5514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
5524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->GetAttachedShaders(program, maxcount, count, shaders);
5534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
556a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)GLint GetAttribLocation(PP_Resource context_id,
557a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                        GLuint program,
558a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                        const char* name) {
5594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
5604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
5614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return ToGles2Impl(&enter)->GetAttribLocation(program, name);
5624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  } else {
5634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return -1;
5644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void GetBooleanv(PP_Resource context_id, GLenum pname, GLboolean* params) {
5684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
5694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
5704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->GetBooleanv(pname, params);
5714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
574a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void GetBufferParameteriv(PP_Resource context_id,
575a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                          GLenum target,
576a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                          GLenum pname,
577a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                          GLint* params) {
5784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
5794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
5804e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->GetBufferParameteriv(target, pname, params);
5814e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GLenum GetError(PP_Resource context_id) {
5854e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
5864e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
5874e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return ToGles2Impl(&enter)->GetError();
5884e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  } else {
5894e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return 0;
5904e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void GetFloatv(PP_Resource context_id, GLenum pname, GLfloat* params) {
5944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
5954e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
5964e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->GetFloatv(pname, params);
5974e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
600a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void GetFramebufferAttachmentParameteriv(PP_Resource context_id,
601a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                         GLenum target,
602a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                         GLenum attachment,
603a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                         GLenum pname,
604a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                         GLint* params) {
6054e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
6064e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
607a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    ToGles2Impl(&enter)->GetFramebufferAttachmentParameteriv(
608a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        target, attachment, pname, params);
6094e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void GetIntegerv(PP_Resource context_id, GLenum pname, GLint* params) {
6134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
6144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
6154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->GetIntegerv(pname, params);
6164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
619a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void GetProgramiv(PP_Resource context_id,
620a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  GLuint program,
621a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  GLenum pname,
622a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  GLint* params) {
6234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
6244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
6254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->GetProgramiv(program, pname, params);
6264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
629a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void GetProgramInfoLog(PP_Resource context_id,
630a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLuint program,
631a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLsizei bufsize,
632a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLsizei* length,
633a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       char* infolog) {
6344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
6354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
6364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->GetProgramInfoLog(program, bufsize, length, infolog);
6374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
640a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void GetRenderbufferParameteriv(PP_Resource context_id,
641a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                GLenum target,
642a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                GLenum pname,
643a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                GLint* params) {
6444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
6454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
6464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->GetRenderbufferParameteriv(target, pname, params);
6474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
650a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void GetShaderiv(PP_Resource context_id,
651a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                 GLuint shader,
652a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                 GLenum pname,
653a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                 GLint* params) {
6544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
6554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
6564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->GetShaderiv(shader, pname, params);
6574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
660a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void GetShaderInfoLog(PP_Resource context_id,
661a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      GLuint shader,
662a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      GLsizei bufsize,
663a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      GLsizei* length,
664a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      char* infolog) {
6654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
6664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
6674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->GetShaderInfoLog(shader, bufsize, length, infolog);
6684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
671a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void GetShaderPrecisionFormat(PP_Resource context_id,
672a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                              GLenum shadertype,
673a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                              GLenum precisiontype,
674a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                              GLint* range,
675a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                              GLint* precision) {
6764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
6774e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
678a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    ToGles2Impl(&enter)
679a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        ->GetShaderPrecisionFormat(shadertype, precisiontype, range, precision);
6804e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
683a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void GetShaderSource(PP_Resource context_id,
684a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                     GLuint shader,
685a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                     GLsizei bufsize,
686a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                     GLsizei* length,
687a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                     char* source) {
6884e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
6894e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
6904e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->GetShaderSource(shader, bufsize, length, source);
6914e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const GLubyte* GetString(PP_Resource context_id, GLenum name) {
6954e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
6964e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
6974e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return ToGles2Impl(&enter)->GetString(name);
6984e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  } else {
6994e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return NULL;
7004e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
703a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void GetTexParameterfv(PP_Resource context_id,
704a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLenum target,
705a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLenum pname,
706a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLfloat* params) {
7074e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
7084e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
7094e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->GetTexParameterfv(target, pname, params);
7104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
713a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void GetTexParameteriv(PP_Resource context_id,
714a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLenum target,
715a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLenum pname,
716a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLint* params) {
7174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
7184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
7194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->GetTexParameteriv(target, pname, params);
7204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
723a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void GetUniformfv(PP_Resource context_id,
724a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  GLuint program,
725a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  GLint location,
726a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  GLfloat* params) {
7274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
7284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
7294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->GetUniformfv(program, location, params);
7304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
733a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void GetUniformiv(PP_Resource context_id,
734a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  GLuint program,
735a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  GLint location,
736a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  GLint* params) {
7374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
7384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
7394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->GetUniformiv(program, location, params);
7404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
743a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)GLint GetUniformLocation(PP_Resource context_id,
744a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                         GLuint program,
745a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                         const char* name) {
7464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
7474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
7484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return ToGles2Impl(&enter)->GetUniformLocation(program, name);
7494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  } else {
7504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return -1;
7514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
754a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void GetVertexAttribfv(PP_Resource context_id,
755a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLuint index,
756a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLenum pname,
757a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLfloat* params) {
7584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
7594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
7604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->GetVertexAttribfv(index, pname, params);
7614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
7625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
764a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void GetVertexAttribiv(PP_Resource context_id,
765a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLuint index,
766a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLenum pname,
767a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLint* params) {
7684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
7694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
7704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->GetVertexAttribiv(index, pname, params);
7714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
774a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void GetVertexAttribPointerv(PP_Resource context_id,
775a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                             GLuint index,
776a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                             GLenum pname,
777a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                             void** pointer) {
7784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
7794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
7804e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->GetVertexAttribPointerv(index, pname, pointer);
7814e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
7835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void Hint(PP_Resource context_id, GLenum target, GLenum mode) {
7854e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
7864e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
7874e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->Hint(target, mode);
7884e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
7905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GLboolean IsBuffer(PP_Resource context_id, GLuint buffer) {
7924e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
7934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
7944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return ToGles2Impl(&enter)->IsBuffer(buffer);
7954e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  } else {
7964e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return GL_FALSE;
7974e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GLboolean IsEnabled(PP_Resource context_id, GLenum cap) {
8014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
8024e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
8034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return ToGles2Impl(&enter)->IsEnabled(cap);
8044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  } else {
8054e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return GL_FALSE;
8064e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
8075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GLboolean IsFramebuffer(PP_Resource context_id, GLuint framebuffer) {
8104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
8114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
8124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return ToGles2Impl(&enter)->IsFramebuffer(framebuffer);
8134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  } else {
8144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return GL_FALSE;
8154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GLboolean IsProgram(PP_Resource context_id, GLuint program) {
8194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
8204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
8214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return ToGles2Impl(&enter)->IsProgram(program);
8224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  } else {
8234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return GL_FALSE;
8244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GLboolean IsRenderbuffer(PP_Resource context_id, GLuint renderbuffer) {
8284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
8294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
8304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return ToGles2Impl(&enter)->IsRenderbuffer(renderbuffer);
8314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  } else {
8324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return GL_FALSE;
8334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
8345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GLboolean IsShader(PP_Resource context_id, GLuint shader) {
8374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
8384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
8394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return ToGles2Impl(&enter)->IsShader(shader);
8404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  } else {
8414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return GL_FALSE;
8424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
8435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GLboolean IsTexture(PP_Resource context_id, GLuint texture) {
8464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
8474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
8484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return ToGles2Impl(&enter)->IsTexture(texture);
8494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  } else {
8504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return GL_FALSE;
8514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
8535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void LineWidth(PP_Resource context_id, GLfloat width) {
8554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
8564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
8574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->LineWidth(width);
8584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
8605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void LinkProgram(PP_Resource context_id, GLuint program) {
8624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
8634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
8644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->LinkProgram(program);
8654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
8675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void PixelStorei(PP_Resource context_id, GLenum pname, GLint param) {
8694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
8704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
8714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->PixelStorei(pname, param);
8724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
8745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void PolygonOffset(PP_Resource context_id, GLfloat factor, GLfloat units) {
8764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
8774e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
8784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->PolygonOffset(factor, units);
8794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
882a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void ReadPixels(PP_Resource context_id,
883a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLint x,
884a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLint y,
885a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLsizei width,
886a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLsizei height,
887a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLenum format,
888a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLenum type,
889a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                void* pixels) {
8904e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
8914e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
8924e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->ReadPixels(x, y, width, height, format, type, pixels);
8934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ReleaseShaderCompiler(PP_Resource context_id) {
8974e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
8984e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
8994e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->ReleaseShaderCompiler();
9004e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
9015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
903a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void RenderbufferStorage(PP_Resource context_id,
904a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                         GLenum target,
905a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                         GLenum internalformat,
906a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                         GLsizei width,
907a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                         GLsizei height) {
9084e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
9094e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
910a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    ToGles2Impl(&enter)
911a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        ->RenderbufferStorage(target, internalformat, width, height);
9124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
9135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SampleCoverage(PP_Resource context_id, GLclampf value, GLboolean invert) {
9164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
9174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
9184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->SampleCoverage(value, invert);
9194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
9215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
922a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void Scissor(PP_Resource context_id,
923a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)             GLint x,
924a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)             GLint y,
925a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)             GLsizei width,
926a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)             GLsizei height) {
9274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
9284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
9294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->Scissor(x, y, width, height);
9304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
9315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
933a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void ShaderBinary(PP_Resource context_id,
934a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  GLsizei n,
935a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  const GLuint* shaders,
936a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  GLenum binaryformat,
937a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  const void* binary,
938a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  GLsizei length) {
9394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
9404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
941a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    ToGles2Impl(&enter)->ShaderBinary(n, shaders, binaryformat, binary, length);
9424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
945a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void ShaderSource(PP_Resource context_id,
946a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  GLuint shader,
947a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  GLsizei count,
948a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  const char** str,
949a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  const GLint* length) {
9504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
9514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
9524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->ShaderSource(shader, count, str, length);
9534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
9545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
9555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void StencilFunc(PP_Resource context_id, GLenum func, GLint ref, GLuint mask) {
9574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
9584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
9594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->StencilFunc(func, ref, mask);
9604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
9615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
9625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
963a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void StencilFuncSeparate(PP_Resource context_id,
964a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                         GLenum face,
965a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                         GLenum func,
966a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                         GLint ref,
967a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                         GLuint mask) {
9684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
9694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
9704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->StencilFuncSeparate(face, func, ref, mask);
9714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
9725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
9735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void StencilMask(PP_Resource context_id, GLuint mask) {
9754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
9764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
9774e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->StencilMask(mask);
9784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
9795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
9805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void StencilMaskSeparate(PP_Resource context_id, GLenum face, GLuint mask) {
9824e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
9834e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
9844e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->StencilMaskSeparate(face, mask);
9854e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
9865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
9875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
988a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void StencilOp(PP_Resource context_id,
989a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               GLenum fail,
990a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               GLenum zfail,
991a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               GLenum zpass) {
9924e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
9934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
9944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->StencilOp(fail, zfail, zpass);
9954e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
9965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
9975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
998a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void StencilOpSeparate(PP_Resource context_id,
999a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLenum face,
1000a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLenum fail,
1001a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLenum zfail,
1002a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                       GLenum zpass) {
10034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
10044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
10054e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->StencilOpSeparate(face, fail, zfail, zpass);
10064e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
10075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
10085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1009a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void TexImage2D(PP_Resource context_id,
1010a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLenum target,
1011a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLint level,
1012a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLint internalformat,
1013a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLsizei width,
1014a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLsizei height,
1015a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLint border,
1016a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLenum format,
1017a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLenum type,
1018a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                const void* pixels) {
10194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
10204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
1021a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    ToGles2Impl(&enter)->TexImage2D(target,
1022a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                    level,
1023a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                    internalformat,
1024a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                    width,
1025a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                    height,
1026a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                    border,
1027a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                    format,
1028a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                    type,
1029a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                    pixels);
10304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
10315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
10325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1033a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void TexParameterf(PP_Resource context_id,
1034a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                   GLenum target,
1035a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                   GLenum pname,
1036a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                   GLfloat param) {
10374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
10384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
10394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->TexParameterf(target, pname, param);
10404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
10415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
10425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1043a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void TexParameterfv(PP_Resource context_id,
1044a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    GLenum target,
1045a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    GLenum pname,
1046a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    const GLfloat* params) {
10474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
10484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
10494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->TexParameterfv(target, pname, params);
10504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
10515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
10525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1053a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void TexParameteri(PP_Resource context_id,
1054a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                   GLenum target,
1055a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                   GLenum pname,
1056a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                   GLint param) {
10574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
10584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
10594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->TexParameteri(target, pname, param);
10604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
10615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
10625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1063a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void TexParameteriv(PP_Resource context_id,
1064a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    GLenum target,
1065a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    GLenum pname,
1066a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    const GLint* params) {
10674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
10684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
10694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->TexParameteriv(target, pname, params);
10704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
10715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
10725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1073a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void TexSubImage2D(PP_Resource context_id,
1074a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                   GLenum target,
1075a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                   GLint level,
1076a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                   GLint xoffset,
1077a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                   GLint yoffset,
1078a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                   GLsizei width,
1079a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                   GLsizei height,
1080a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                   GLenum format,
1081a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                   GLenum type,
1082a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                   const void* pixels) {
10834e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
10844e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
1085a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    ToGles2Impl(&enter)->TexSubImage2D(
1086a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        target, level, xoffset, yoffset, width, height, format, type, pixels);
10874e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
10885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
10895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void Uniform1f(PP_Resource context_id, GLint location, GLfloat x) {
10914e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
10924e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
10934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->Uniform1f(location, x);
10944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
10955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
10965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1097a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void Uniform1fv(PP_Resource context_id,
1098a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLint location,
1099a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLsizei count,
1100a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                const GLfloat* v) {
11014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
11024e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
11034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->Uniform1fv(location, count, v);
11044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
11055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
11065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void Uniform1i(PP_Resource context_id, GLint location, GLint x) {
11084e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
11094e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
11104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->Uniform1i(location, x);
11114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
11125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
11135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1114a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void Uniform1iv(PP_Resource context_id,
1115a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLint location,
1116a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLsizei count,
1117a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                const GLint* v) {
11184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
11194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
11204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->Uniform1iv(location, count, v);
11214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
11225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
11235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void Uniform2f(PP_Resource context_id, GLint location, GLfloat x, GLfloat y) {
11254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
11264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
11274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->Uniform2f(location, x, y);
11284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
11295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
11305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1131a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void Uniform2fv(PP_Resource context_id,
1132a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLint location,
1133a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLsizei count,
1134a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                const GLfloat* v) {
11354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
11364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
11374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->Uniform2fv(location, count, v);
11384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
11395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
11405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void Uniform2i(PP_Resource context_id, GLint location, GLint x, GLint y) {
11424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
11434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
11444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->Uniform2i(location, x, y);
11454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
11465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
11475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1148a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void Uniform2iv(PP_Resource context_id,
1149a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLint location,
1150a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLsizei count,
1151a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                const GLint* v) {
11524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
11534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
11544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->Uniform2iv(location, count, v);
11554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
11565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
11575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1158a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void Uniform3f(PP_Resource context_id,
1159a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               GLint location,
1160a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               GLfloat x,
1161a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               GLfloat y,
1162a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               GLfloat z) {
11634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
11644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
11654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->Uniform3f(location, x, y, z);
11664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
11675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
11685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1169a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void Uniform3fv(PP_Resource context_id,
1170a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLint location,
1171a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLsizei count,
1172a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                const GLfloat* v) {
11734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
11744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
11754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->Uniform3fv(location, count, v);
11764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
11775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
11785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1179a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void Uniform3i(PP_Resource context_id,
1180a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               GLint location,
1181a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               GLint x,
1182a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               GLint y,
1183a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               GLint z) {
11844e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
11854e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
11864e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->Uniform3i(location, x, y, z);
11874e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
11885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
11895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1190a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void Uniform3iv(PP_Resource context_id,
1191a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLint location,
1192a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLsizei count,
1193a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                const GLint* v) {
11944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
11954e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
11964e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->Uniform3iv(location, count, v);
11974e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
11985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
11995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1200a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void Uniform4f(PP_Resource context_id,
1201a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               GLint location,
1202a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               GLfloat x,
1203a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               GLfloat y,
1204a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               GLfloat z,
1205a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               GLfloat w) {
12064e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
12074e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
12084e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->Uniform4f(location, x, y, z, w);
12094e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
12105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
12115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1212a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void Uniform4fv(PP_Resource context_id,
1213a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLint location,
1214a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLsizei count,
1215a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                const GLfloat* v) {
12164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
12174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
12184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->Uniform4fv(location, count, v);
12194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
12205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
12215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1222a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void Uniform4i(PP_Resource context_id,
1223a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               GLint location,
1224a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               GLint x,
1225a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               GLint y,
1226a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               GLint z,
1227a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               GLint w) {
12284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
12294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
12304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->Uniform4i(location, x, y, z, w);
12314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
12325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
12335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1234a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void Uniform4iv(PP_Resource context_id,
1235a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLint location,
1236a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                GLsizei count,
1237a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                const GLint* v) {
12384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
12394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
12404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->Uniform4iv(location, count, v);
12414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
12425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
12435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1244a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void UniformMatrix2fv(PP_Resource context_id,
1245a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      GLint location,
1246a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      GLsizei count,
1247a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      GLboolean transpose,
1248a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      const GLfloat* value) {
12494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
12504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
12514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->UniformMatrix2fv(location, count, transpose, value);
12524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
12535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
12545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1255a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void UniformMatrix3fv(PP_Resource context_id,
1256a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      GLint location,
1257a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      GLsizei count,
1258a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      GLboolean transpose,
1259a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      const GLfloat* value) {
12604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
12614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
12624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->UniformMatrix3fv(location, count, transpose, value);
12634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
12645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
12655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1266a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void UniformMatrix4fv(PP_Resource context_id,
1267a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      GLint location,
1268a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      GLsizei count,
1269a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      GLboolean transpose,
1270a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      const GLfloat* value) {
12714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
12724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
12734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->UniformMatrix4fv(location, count, transpose, value);
12744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
12755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
12765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void UseProgram(PP_Resource context_id, GLuint program) {
12784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
12794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
12804e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->UseProgram(program);
12814e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
12825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
12835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ValidateProgram(PP_Resource context_id, GLuint program) {
12854e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
12864e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
12874e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->ValidateProgram(program);
12884e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
12895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
12905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void VertexAttrib1f(PP_Resource context_id, GLuint indx, GLfloat x) {
12924e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
12934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
12944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->VertexAttrib1f(indx, x);
12954e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
12965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
12975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1298a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void VertexAttrib1fv(PP_Resource context_id,
1299a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                     GLuint indx,
1300a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                     const GLfloat* values) {
13014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
13024e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
13034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->VertexAttrib1fv(indx, values);
13044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
13055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
13065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1307a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void VertexAttrib2f(PP_Resource context_id, GLuint indx, GLfloat x, GLfloat y) {
13084e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
13094e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
13104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->VertexAttrib2f(indx, x, y);
13114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
13125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
13135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1314a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void VertexAttrib2fv(PP_Resource context_id,
1315a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                     GLuint indx,
1316a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                     const GLfloat* values) {
13174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
13184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
13194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->VertexAttrib2fv(indx, values);
13204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
13215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
13225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1323a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void VertexAttrib3f(PP_Resource context_id,
1324a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    GLuint indx,
1325a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    GLfloat x,
1326a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    GLfloat y,
1327a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    GLfloat z) {
13284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
13294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
13304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->VertexAttrib3f(indx, x, y, z);
13314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
13325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
13335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1334a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void VertexAttrib3fv(PP_Resource context_id,
1335a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                     GLuint indx,
1336a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                     const GLfloat* values) {
13374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
13384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
13394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->VertexAttrib3fv(indx, values);
13404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
13415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
13425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1343a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void VertexAttrib4f(PP_Resource context_id,
1344a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    GLuint indx,
1345a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    GLfloat x,
1346a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    GLfloat y,
1347a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    GLfloat z,
1348a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    GLfloat w) {
13494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
13504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
13514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->VertexAttrib4f(indx, x, y, z, w);
13524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
13535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
13545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1355a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void VertexAttrib4fv(PP_Resource context_id,
1356a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                     GLuint indx,
1357a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                     const GLfloat* values) {
13584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
13594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
13604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->VertexAttrib4fv(indx, values);
13614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
13625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
13635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1364a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void VertexAttribPointer(PP_Resource context_id,
1365a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                         GLuint indx,
1366a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                         GLint size,
1367a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                         GLenum type,
1368a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                         GLboolean normalized,
1369a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                         GLsizei stride,
1370a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                         const void* ptr) {
13714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
13724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
1373a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    ToGles2Impl(&enter)
1374a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        ->VertexAttribPointer(indx, size, type, normalized, stride, ptr);
13754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
13765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
13775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1378a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void Viewport(PP_Resource context_id,
1379a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)              GLint x,
1380a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)              GLint y,
1381a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)              GLsizei width,
1382a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)              GLsizei height) {
13834e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
13844e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
13854e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->Viewport(x, y, width, height);
13864e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
13875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
13885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1389a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void BlitFramebufferEXT(PP_Resource context_id,
1390a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                        GLint srcX0,
1391a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                        GLint srcY0,
1392a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                        GLint srcX1,
1393a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                        GLint srcY1,
1394a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                        GLint dstX0,
1395a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                        GLint dstY0,
1396a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                        GLint dstX1,
1397a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                        GLint dstY1,
1398a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                        GLbitfield mask,
1399a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                        GLenum filter) {
14004e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
14014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
1402a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    ToGles2Impl(&enter)->BlitFramebufferCHROMIUM(
1403a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
14044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
14055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
14065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1407a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void RenderbufferStorageMultisampleEXT(PP_Resource context_id,
1408a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                       GLenum target,
1409a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                       GLsizei samples,
1410a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                       GLenum internalformat,
1411a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                       GLsizei width,
1412a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                       GLsizei height) {
14134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
14144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
1415a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    ToGles2Impl(&enter)->RenderbufferStorageMultisampleCHROMIUM(
1416a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        target, samples, internalformat, width, height);
14174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
14185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
14195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void GenQueriesEXT(PP_Resource context_id, GLsizei n, GLuint* queries) {
14214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
14224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
14234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->GenQueriesEXT(n, queries);
14244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
14255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
14265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1427a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void DeleteQueriesEXT(PP_Resource context_id,
1428a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      GLsizei n,
1429a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                      const GLuint* queries) {
14304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
14314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
14324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->DeleteQueriesEXT(n, queries);
14334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
14345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
14355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GLboolean IsQueryEXT(PP_Resource context_id, GLuint id) {
14374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
14384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
14394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return ToGles2Impl(&enter)->IsQueryEXT(id);
14404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  } else {
14414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return GL_FALSE;
14424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
14435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
14445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BeginQueryEXT(PP_Resource context_id, GLenum target, GLuint id) {
14464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
14474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
14484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->BeginQueryEXT(target, id);
14494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
14505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
14515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void EndQueryEXT(PP_Resource context_id, GLenum target) {
14534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
14544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
14554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->EndQueryEXT(target);
14564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
14575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
14585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1459a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void GetQueryivEXT(PP_Resource context_id,
1460a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                   GLenum target,
1461a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                   GLenum pname,
1462a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                   GLint* params) {
14634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
14644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
14654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->GetQueryivEXT(target, pname, params);
14664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
14675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
14685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1469a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void GetQueryObjectuivEXT(PP_Resource context_id,
1470a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                          GLuint id,
1471a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                          GLenum pname,
1472a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                          GLuint* params) {
14734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
14744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
14754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->GetQueryObjectuivEXT(id, pname, params);
14764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
14775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
14785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1479116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid GenVertexArraysOES(PP_Resource context_id, GLsizei n, GLuint* arrays) {
1480116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  Enter3D enter(context_id, true);
1481116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  if (enter.succeeded()) {
1482116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    ToGles2Impl(&enter)->GenVertexArraysOES(n, arrays);
1483116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  }
1484116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
1485116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1486116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid DeleteVertexArraysOES(PP_Resource context_id,
1487116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                           GLsizei n,
1488116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                           const GLuint* arrays) {
1489116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  Enter3D enter(context_id, true);
1490116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  if (enter.succeeded()) {
1491116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    ToGles2Impl(&enter)->DeleteVertexArraysOES(n, arrays);
1492116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  }
1493116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
1494116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1495116680a4aac90f2aa7413d9095a592090648e557Ben MurdochGLboolean IsVertexArrayOES(PP_Resource context_id, GLuint array) {
1496116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  Enter3D enter(context_id, true);
1497116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  if (enter.succeeded()) {
1498116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    return ToGles2Impl(&enter)->IsVertexArrayOES(array);
1499116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  } else {
1500116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    return GL_FALSE;
1501116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  }
1502116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
1503116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1504116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid BindVertexArrayOES(PP_Resource context_id, GLuint array) {
1505116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  Enter3D enter(context_id, true);
1506116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  if (enter.succeeded()) {
1507116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    ToGles2Impl(&enter)->BindVertexArrayOES(array);
1508116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  }
1509116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
1510116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
15115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GLboolean EnableFeatureCHROMIUM(PP_Resource context_id, const char* feature) {
15124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
15134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
15144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return ToGles2Impl(&enter)->EnableFeatureCHROMIUM(feature);
15154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  } else {
15164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return GL_FALSE;
15174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
15185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
15195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1520a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void* MapBufferSubDataCHROMIUM(PP_Resource context_id,
1521a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                               GLuint target,
1522a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                               GLintptr offset,
1523a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                               GLsizeiptr size,
1524a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                               GLenum access) {
15254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
15264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
1527a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    return ToGles2Impl(&enter)
1528a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        ->MapBufferSubDataCHROMIUM(target, offset, size, access);
15294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  } else {
15304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return NULL;
15314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
15325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
15335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void UnmapBufferSubDataCHROMIUM(PP_Resource context_id, const void* mem) {
15354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
15364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
15374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->UnmapBufferSubDataCHROMIUM(mem);
15384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
15395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
15405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1541a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void* MapTexSubImage2DCHROMIUM(PP_Resource context_id,
1542a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                               GLenum target,
1543a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                               GLint level,
1544a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                               GLint xoffset,
1545a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                               GLint yoffset,
1546a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                               GLsizei width,
1547a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                               GLsizei height,
1548a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                               GLenum format,
1549a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                               GLenum type,
1550a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                               GLenum access) {
15514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
15524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
1553a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    return ToGles2Impl(&enter)->MapTexSubImage2DCHROMIUM(
1554a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        target, level, xoffset, yoffset, width, height, format, type, access);
15554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  } else {
15564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return NULL;
15574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
15585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
15595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void UnmapTexSubImage2DCHROMIUM(PP_Resource context_id, const void* mem) {
15614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
15624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
15634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->UnmapTexSubImage2DCHROMIUM(mem);
15644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
15655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
15665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1567a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void DrawArraysInstancedANGLE(PP_Resource context_id,
1568a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                              GLenum mode,
1569a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                              GLint first,
1570a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                              GLsizei count,
1571a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                              GLsizei primcount) {
15724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
15734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
1574a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    ToGles2Impl(&enter)
1575a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        ->DrawArraysInstancedANGLE(mode, first, count, primcount);
15764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
15775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
15785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1579a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void DrawElementsInstancedANGLE(PP_Resource context_id,
1580a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                GLenum mode,
1581a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                GLsizei count,
1582a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                GLenum type,
1583a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                const void* indices,
1584a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                GLsizei primcount) {
15854e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
15864e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
1587a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    ToGles2Impl(&enter)
1588a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        ->DrawElementsInstancedANGLE(mode, count, type, indices, primcount);
15894e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
15905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
15915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1592a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void VertexAttribDivisorANGLE(PP_Resource context_id,
1593a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                              GLuint index,
1594a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                              GLuint divisor) {
15954e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Enter3D enter(context_id, true);
15964e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (enter.succeeded()) {
15974e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ToGles2Impl(&enter)->VertexAttribDivisorANGLE(index, divisor);
15984e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
15995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
16005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1601a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void DrawBuffersEXT(PP_Resource context_id, GLsizei count, const GLenum* bufs) {
1602a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  Enter3D enter(context_id, true);
1603a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  if (enter.succeeded()) {
1604a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    ToGles2Impl(&enter)->DrawBuffersEXT(count, bufs);
1605a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  }
1606a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
1607a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
16085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
16095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const PPB_OpenGLES2* PPB_OpenGLES2_Shared::GetInterface() {
16105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static const struct PPB_OpenGLES2 ppb_opengles2 = {
1611cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &ActiveTexture,                       &AttachShader,
1612cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &BindAttribLocation,                  &BindBuffer,
1613cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &BindFramebuffer,                     &BindRenderbuffer,
1614cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &BindTexture,                         &BlendColor,
1615cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &BlendEquation,                       &BlendEquationSeparate,
1616cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &BlendFunc,                           &BlendFuncSeparate,
1617cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &BufferData,                          &BufferSubData,
1618cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &CheckFramebufferStatus,              &Clear,
1619cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &ClearColor,                          &ClearDepthf,
1620cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &ClearStencil,                        &ColorMask,
1621cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &CompileShader,                       &CompressedTexImage2D,
1622cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &CompressedTexSubImage2D,             &CopyTexImage2D,
1623cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &CopyTexSubImage2D,                   &CreateProgram,
1624cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &CreateShader,                        &CullFace,
1625cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &DeleteBuffers,                       &DeleteFramebuffers,
1626cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &DeleteProgram,                       &DeleteRenderbuffers,
1627cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &DeleteShader,                        &DeleteTextures,
1628cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &DepthFunc,                           &DepthMask,
1629cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &DepthRangef,                         &DetachShader,
1630cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &Disable,                             &DisableVertexAttribArray,
1631cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &DrawArrays,                          &DrawElements,
1632cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &Enable,                              &EnableVertexAttribArray,
1633cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &Finish,                              &Flush,
1634cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &FramebufferRenderbuffer,             &FramebufferTexture2D,
1635cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &FrontFace,                           &GenBuffers,
1636cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &GenerateMipmap,                      &GenFramebuffers,
1637cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &GenRenderbuffers,                    &GenTextures,
1638cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &GetActiveAttrib,                     &GetActiveUniform,
1639cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &GetAttachedShaders,                  &GetAttribLocation,
1640cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &GetBooleanv,                         &GetBufferParameteriv,
1641cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &GetError,                            &GetFloatv,
1642cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &GetFramebufferAttachmentParameteriv, &GetIntegerv,
1643cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &GetProgramiv,                        &GetProgramInfoLog,
1644cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &GetRenderbufferParameteriv,          &GetShaderiv,
1645cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &GetShaderInfoLog,                    &GetShaderPrecisionFormat,
1646cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &GetShaderSource,                     &GetString,
1647cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &GetTexParameterfv,                   &GetTexParameteriv,
1648cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &GetUniformfv,                        &GetUniformiv,
1649cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &GetUniformLocation,                  &GetVertexAttribfv,
1650cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &GetVertexAttribiv,                   &GetVertexAttribPointerv,
1651cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &Hint,                                &IsBuffer,
1652cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &IsEnabled,                           &IsFramebuffer,
1653cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &IsProgram,                           &IsRenderbuffer,
1654cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &IsShader,                            &IsTexture,
1655cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &LineWidth,                           &LinkProgram,
1656cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &PixelStorei,                         &PolygonOffset,
1657cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &ReadPixels,                          &ReleaseShaderCompiler,
1658cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &RenderbufferStorage,                 &SampleCoverage,
1659cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &Scissor,                             &ShaderBinary,
1660cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &ShaderSource,                        &StencilFunc,
1661cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &StencilFuncSeparate,                 &StencilMask,
1662cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &StencilMaskSeparate,                 &StencilOp,
1663cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &StencilOpSeparate,                   &TexImage2D,
1664cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &TexParameterf,                       &TexParameterfv,
1665cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &TexParameteri,                       &TexParameteriv,
1666cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &TexSubImage2D,                       &Uniform1f,
1667cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &Uniform1fv,                          &Uniform1i,
1668cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &Uniform1iv,                          &Uniform2f,
1669cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &Uniform2fv,                          &Uniform2i,
1670cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &Uniform2iv,                          &Uniform3f,
1671cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &Uniform3fv,                          &Uniform3i,
1672cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &Uniform3iv,                          &Uniform4f,
1673cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &Uniform4fv,                          &Uniform4i,
1674cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &Uniform4iv,                          &UniformMatrix2fv,
1675cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &UniformMatrix3fv,                    &UniformMatrix4fv,
1676cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &UseProgram,                          &ValidateProgram,
1677cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &VertexAttrib1f,                      &VertexAttrib1fv,
1678cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &VertexAttrib2f,                      &VertexAttrib2fv,
1679cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &VertexAttrib3f,                      &VertexAttrib3fv,
1680cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &VertexAttrib4f,                      &VertexAttrib4fv,
1681cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &VertexAttribPointer,                 &Viewport};
16825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return &ppb_opengles2;
16835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1684a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)const PPB_OpenGLES2InstancedArrays*
1685a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)PPB_OpenGLES2_Shared::GetInstancedArraysInterface() {
16865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static const struct PPB_OpenGLES2InstancedArrays ppb_opengles2 = {
1687cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &DrawArraysInstancedANGLE, &DrawElementsInstancedANGLE,
1688a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      &VertexAttribDivisorANGLE};
16895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return &ppb_opengles2;
16905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1691a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)const PPB_OpenGLES2FramebufferBlit*
1692a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)PPB_OpenGLES2_Shared::GetFramebufferBlitInterface() {
16935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static const struct PPB_OpenGLES2FramebufferBlit ppb_opengles2 = {
1694a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      &BlitFramebufferEXT};
16955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return &ppb_opengles2;
16965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1697a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)const PPB_OpenGLES2FramebufferMultisample*
1698a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)PPB_OpenGLES2_Shared::GetFramebufferMultisampleInterface() {
16995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static const struct PPB_OpenGLES2FramebufferMultisample ppb_opengles2 = {
1700a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      &RenderbufferStorageMultisampleEXT};
17015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return &ppb_opengles2;
17025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1703a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)const PPB_OpenGLES2ChromiumEnableFeature*
1704a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)PPB_OpenGLES2_Shared::GetChromiumEnableFeatureInterface() {
17055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static const struct PPB_OpenGLES2ChromiumEnableFeature ppb_opengles2 = {
1706a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      &EnableFeatureCHROMIUM};
17075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return &ppb_opengles2;
17085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1709a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)const PPB_OpenGLES2ChromiumMapSub*
1710a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)PPB_OpenGLES2_Shared::GetChromiumMapSubInterface() {
17115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static const struct PPB_OpenGLES2ChromiumMapSub ppb_opengles2 = {
1712cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &MapBufferSubDataCHROMIUM, &UnmapBufferSubDataCHROMIUM,
1713cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &MapTexSubImage2DCHROMIUM, &UnmapTexSubImage2DCHROMIUM};
17145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return &ppb_opengles2;
17155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
17165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const PPB_OpenGLES2Query* PPB_OpenGLES2_Shared::GetQueryInterface() {
17175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static const struct PPB_OpenGLES2Query ppb_opengles2 = {
1718cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &GenQueriesEXT, &DeleteQueriesEXT, &IsQueryEXT,          &BeginQueryEXT,
1719cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      &EndQueryEXT,   &GetQueryivEXT,    &GetQueryObjectuivEXT};
1720a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  return &ppb_opengles2;
1721a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
1722116680a4aac90f2aa7413d9095a592090648e557Ben Murdochconst PPB_OpenGLES2VertexArrayObject*
1723116680a4aac90f2aa7413d9095a592090648e557Ben MurdochPPB_OpenGLES2_Shared::GetVertexArrayObjectInterface() {
1724116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  static const struct PPB_OpenGLES2VertexArrayObject ppb_opengles2 = {
1725116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      &GenVertexArraysOES, &DeleteVertexArraysOES, &IsVertexArrayOES,
1726116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      &BindVertexArrayOES};
1727116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  return &ppb_opengles2;
1728116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
1729a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)const PPB_OpenGLES2DrawBuffers_Dev*
1730a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)PPB_OpenGLES2_Shared::GetDrawBuffersInterface() {
1731a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  static const struct PPB_OpenGLES2DrawBuffers_Dev ppb_opengles2 = {
1732a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      &DrawBuffersEXT};
17335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return &ppb_opengles2;
17345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
17355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ppapi
1736