// Copyright 2019 The Cobalt Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Module Overview: Starboard GLES API
//
// The GLES API provides an interface with accompanying type declarations and
// defines that together provide a single consistent method of GLES usage across
// platforms.
//
// This API is designed to abstract the differences between GLES implementations
// and versions on different systems, and to remove the requirement for any
// other code to directly pull in and use these system libraries.
//
// # GLES Version
//
// This API has the ability to support GLES 3.0, however platforms are not
// required to support anything beyond GLES 2.0. The caller is responsible for
// ensuring that the functions from GLES 3.0 they are calling from the interface
// are valid.

#ifndef STARBOARD_GLES_H_
#define STARBOARD_GLES_H_

#include "starboard/configuration.h"
#include "starboard/export.h"
#include "starboard/log.h"
#include "starboard/types.h"

#if SB_API_VERSION >= 11

#ifdef __cplusplus
extern "C" {
#endif

// The following type definitions were adapted from the types declared in
// https://www.khronos.org/registry/OpenGL/api/GLES2/gl2.h.
typedef uint8_t  SbGlBoolean;
typedef uint32_t SbGlBitfield;
typedef char     SbGlChar;
typedef float    SbGlClampf;
typedef uint32_t SbGlEnum;
typedef int32_t  SbGlFixed;
typedef float    SbGlFloat;
typedef int8_t   SbGlInt8;
typedef int16_t  SbGlInt16;
typedef int32_t  SbGlInt32;
typedef int64_t  SbGlInt64;
typedef int32_t  SbGlSizei;
typedef struct __GLsync* SbGlSync;
typedef uint8_t  SbGlUInt8;
typedef uint16_t SbGlUInt16;
typedef uint32_t SbGlUInt32;
typedef uint64_t SbGlUInt64;
typedef void     SbGlVoid;

// Some compilers will transform the intptr_t to an int transparently behind the
// scenes, which is not equivalent to a long int, or long long int, as far as
// the compiler is concerned. We check the Starboard configuration and set the
// types to those exact types used by OpenGL ES 2.0
// (https://www.khronos.org/registry/OpenGL/api/GLES2/gl2ext.h).
#if (SB_SIZE_OF(POINTER) == 8) && (SB_SIZE_OF(LONG) == 4)
typedef long long int SbGlIntPtr;  // NOLINT
typedef long long int SbGlSizeiPtr;  // NOLINT
#else   // (SB_SIZE_OF(POINTER) != 8) || (SB_SIZE_OF(LONG) != 4)
typedef long int SbGlIntPtr;  // NOLINT
typedef long int SbGlSizeiPtr;  // NOLINT
#endif  // (SB_SIZE_OF(POINTER) == 8) && (SB_SIZE_OF(LONG) == 4)

typedef struct SbGlesInterface {
  // The following prototypes were adapted from the prototypes declared in
  // https://www.khronos.org/registry/OpenGL/api/GLES2/gl2.h.
  void (*glActiveTexture)(SbGlEnum texture);
  void (*glAttachShader)(SbGlUInt32 program, SbGlUInt32 shader);
  void (*glBindAttribLocation)(SbGlUInt32 program,
                               SbGlUInt32 index,
                               const SbGlChar* name);
  void (*glBindBuffer)(SbGlEnum target, SbGlUInt32 buffer);
  void (*glBindFramebuffer)(SbGlEnum target, SbGlUInt32 framebuffer);
  void (*glBindRenderbuffer)(SbGlEnum target, SbGlUInt32 renderbuffer);
  void (*glBindTexture)(SbGlEnum target, SbGlUInt32 texture);
  void (*glBlendColor)(SbGlFloat red,
                       SbGlFloat green,
                       SbGlFloat blue,
                       SbGlFloat alpha);
  void (*glBlendEquation)(SbGlEnum mode);
  void (*glBlendEquationSeparate)(SbGlEnum modeRGB, SbGlEnum modeAlpha);
  void (*glBlendFunc)(SbGlEnum sfactor, SbGlEnum dfactor);
  void (*glBlendFuncSeparate)(SbGlEnum sfactorRGB,
                              SbGlEnum dfactorRGB,
                              SbGlEnum sfactorAlpha,
                              SbGlEnum dfactorAlpha);
  void (*glBufferData)(SbGlEnum target,
                       SbGlSizeiPtr size,
                       const void* data,
                       SbGlEnum usage);
  void (*glBufferSubData)(SbGlEnum target,
                          SbGlIntPtr offset,
                          SbGlSizeiPtr size,
                          const void* data);
  SbGlEnum (*glCheckFramebufferStatus)(SbGlEnum target);
  void (*glClear)(SbGlBitfield mask);
  void (*glClearColor)(SbGlFloat red,
                       SbGlFloat green,
                       SbGlFloat blue,
                       SbGlFloat alpha);
  void (*glClearDepthf)(SbGlFloat d);
  void (*glClearStencil)(SbGlInt32 s);
  void (*glColorMask)(SbGlBoolean red,
                      SbGlBoolean green,
                      SbGlBoolean blue,
                      SbGlBoolean alpha);
  void (*glCompileShader)(SbGlUInt32 shader);
  void (*glCompressedTexImage2D)(SbGlEnum target,
                                 SbGlInt32 level,
                                 SbGlEnum internalformat,
                                 SbGlSizei width,
                                 SbGlSizei height,
                                 SbGlInt32 border,
                                 SbGlSizei imageSize,
                                 const void* data);
  void (*glCompressedTexSubImage2D)(SbGlEnum target,
                                    SbGlInt32 level,
                                    SbGlInt32 xoffset,
                                    SbGlInt32 yoffset,
                                    SbGlSizei width,
                                    SbGlSizei height,
                                    SbGlEnum format,
                                    SbGlSizei imageSize,
                                    const void* data);
  void (*glCopyTexImage2D)(SbGlEnum target,
                           SbGlInt32 level,
                           SbGlEnum internalformat,
                           SbGlInt32 x,
                           SbGlInt32 y,
                           SbGlSizei width,
                           SbGlSizei height,
                           SbGlInt32 border);
  void (*glCopyTexSubImage2D)(SbGlEnum target,
                              SbGlInt32 level,
                              SbGlInt32 xoffset,
                              SbGlInt32 yoffset,
                              SbGlInt32 x,
                              SbGlInt32 y,
                              SbGlSizei width,
                              SbGlSizei height);
  SbGlUInt32 (*glCreateProgram)(void);
  SbGlUInt32 (*glCreateShader)(SbGlEnum type);
  void (*glCullFace)(SbGlEnum mode);
  void (*glDeleteBuffers)(SbGlSizei n, const SbGlUInt32* buffers);
  void (*glDeleteFramebuffers)(SbGlSizei n, const SbGlUInt32* framebuffers);
  void (*glDeleteProgram)(SbGlUInt32 program);
  void (*glDeleteRenderbuffers)(SbGlSizei n, const SbGlUInt32* renderbuffers);
  void (*glDeleteShader)(SbGlUInt32 shader);
  void (*glDeleteTextures)(SbGlSizei n, const SbGlUInt32* textures);
  void (*glDepthFunc)(SbGlEnum func);
  void (*glDepthMask)(SbGlBoolean flag);
  void (*glDepthRangef)(SbGlFloat n, SbGlFloat f);
  void (*glDetachShader)(SbGlUInt32 program, SbGlUInt32 shader);
  void (*glDisable)(SbGlEnum cap);
  void (*glDisableVertexAttribArray)(SbGlUInt32 index);
  void (*glDrawArrays)(SbGlEnum mode, SbGlInt32 first, SbGlSizei count);
  void (*glDrawElements)(SbGlEnum mode,
                         SbGlSizei count,
                         SbGlEnum type,
                         const void* indices);
  void (*glEnable)(SbGlEnum cap);
  void (*glEnableVertexAttribArray)(SbGlUInt32 index);
  void (*glFinish)(void);
  void (*glFlush)(void);
  void (*glFramebufferRenderbuffer)(SbGlEnum target,
                                    SbGlEnum attachment,
                                    SbGlEnum renderbuffertarget,
                                    SbGlUInt32 renderbuffer);
  void (*glFramebufferTexture2D)(SbGlEnum target,
                                 SbGlEnum attachment,
                                 SbGlEnum textarget,
                                 SbGlUInt32 texture,
                                 SbGlInt32 level);
  void (*glFrontFace)(SbGlEnum mode);
  void (*glGenBuffers)(SbGlSizei n, SbGlUInt32* buffers);
  void (*glGenerateMipmap)(SbGlEnum target);
  void (*glGenFramebuffers)(SbGlSizei n, SbGlUInt32* framebuffers);
  void (*glGenRenderbuffers)(SbGlSizei n, SbGlUInt32* renderbuffers);
  void (*glGenTextures)(SbGlSizei n, SbGlUInt32* textures);
  void (*glGetActiveAttrib)(SbGlUInt32 program,
                            SbGlUInt32 index,
                            SbGlSizei bufSize,
                            SbGlSizei* length,
                            SbGlInt32* size,
                            SbGlEnum* type,
                            SbGlChar* name);
  void (*glGetActiveUniform)(SbGlUInt32 program,
                             SbGlUInt32 index,
                             SbGlSizei bufSize,
                             SbGlSizei* length,
                             SbGlInt32* size,
                             SbGlEnum* type,
                             SbGlChar* name);
  void (*glGetAttachedShaders)(SbGlUInt32 program,
                               SbGlSizei maxCount,
                               SbGlSizei* count,
                               SbGlUInt32* shaders);
  SbGlInt32 (*glGetAttribLocation)(SbGlUInt32 program, const SbGlChar* name);
  void (*glGetBooleanv)(SbGlEnum pname, SbGlBoolean* data);
  void (*glGetBufferParameteriv)(SbGlEnum target,
                                 SbGlEnum pname,
                                 SbGlInt32* params);
  SbGlEnum (*glGetError)(void);
  void (*glGetFloatv)(SbGlEnum pname, SbGlFloat* data);
  void (*glGetFramebufferAttachmentParameteriv)(SbGlEnum target,
                                                SbGlEnum attachment,
                                                SbGlEnum pname,
                                                SbGlInt32* params);
  void (*glGetIntegerv)(SbGlEnum pname, SbGlInt32* data);
  void (*glGetProgramiv)(SbGlUInt32 program, SbGlEnum pname, SbGlInt32* params);
  void (*glGetProgramInfoLog)(SbGlUInt32 program,
                              SbGlSizei bufSize,
                              SbGlSizei* length,
                              SbGlChar* infoLog);
  void (*glGetRenderbufferParameteriv)(SbGlEnum target,
                                       SbGlEnum pname,
                                       SbGlInt32* params);
  void (*glGetShaderiv)(SbGlUInt32 shader, SbGlEnum pname, SbGlInt32* params);
  void (*glGetShaderInfoLog)(SbGlUInt32 shader,
                             SbGlSizei bufSize,
                             SbGlSizei* length,
                             SbGlChar* infoLog);
  void (*glGetShaderPrecisionFormat)(SbGlEnum shadertype,
                                     SbGlEnum precisiontype,
                                     SbGlInt32* range,
                                     SbGlInt32* precision);
  void (*glGetShaderSource)(SbGlUInt32 shader,
                            SbGlSizei bufSize,
                            SbGlSizei* length,
                            SbGlChar* source);
  const SbGlUInt8* (*glGetString)(SbGlEnum name);
  void (*glGetTexParameterfv)(SbGlEnum target,
                              SbGlEnum pname,
                              SbGlFloat* params);
  void (*glGetTexParameteriv)(SbGlEnum target,
                              SbGlEnum pname,
                              SbGlInt32* params);
  void (*glGetUniformfv)(SbGlUInt32 program,
                         SbGlInt32 location,
                         SbGlFloat* params);
  void (*glGetUniformiv)(SbGlUInt32 program,
                         SbGlInt32 location,
                         SbGlInt32* params);
  SbGlInt32 (*glGetUniformLocation)(SbGlUInt32 program, const SbGlChar* name);
  void (*glGetVertexAttribfv)(SbGlUInt32 index,
                              SbGlEnum pname,
                              SbGlFloat* params);
  void (*glGetVertexAttribiv)(SbGlUInt32 index,
                              SbGlEnum pname,
                              SbGlInt32* params);
  void (*glGetVertexAttribPointerv)(SbGlUInt32 index,
                                    SbGlEnum pname,
                                    void** pointer);
  void (*glHint)(SbGlEnum target, SbGlEnum mode);
  SbGlBoolean (*glIsBuffer)(SbGlUInt32 buffer);
  SbGlBoolean (*glIsEnabled)(SbGlEnum cap);
  SbGlBoolean (*glIsFramebuffer)(SbGlUInt32 framebuffer);
  SbGlBoolean (*glIsProgram)(SbGlUInt32 program);
  SbGlBoolean (*glIsRenderbuffer)(SbGlUInt32 renderbuffer);
  SbGlBoolean (*glIsShader)(SbGlUInt32 shader);
  SbGlBoolean (*glIsTexture)(SbGlUInt32 texture);
  void (*glLineWidth)(SbGlFloat width);
  void (*glLinkProgram)(SbGlUInt32 program);
  void (*glPixelStorei)(SbGlEnum pname, SbGlInt32 param);
  void (*glPolygonOffset)(SbGlFloat factor, SbGlFloat units);
  void (*glReadPixels)(SbGlInt32 x,
                       SbGlInt32 y,
                       SbGlSizei width,
                       SbGlSizei height,
                       SbGlEnum format,
                       SbGlEnum type,
                       void* pixels);
  void (*glReleaseShaderCompiler)(void);
  void (*glRenderbufferStorage)(SbGlEnum target,
                                SbGlEnum internalformat,
                                SbGlSizei width,
                                SbGlSizei height);
  void (*glSampleCoverage)(SbGlFloat value, SbGlBoolean invert);
  void (*glScissor)(SbGlInt32 x,
                    SbGlInt32 y,
                    SbGlSizei width,
                    SbGlSizei height);
  void (*glShaderBinary)(SbGlSizei count,
                         const SbGlUInt32* shaders,
                         SbGlEnum binaryformat,
                         const void* binary,
                         SbGlSizei length);
  void (*glShaderSource)(SbGlUInt32 shader,
                         SbGlSizei count,
                         const SbGlChar* const* string,  // NOLINT
                         const SbGlInt32* length);
  void (*glStencilFunc)(SbGlEnum func, SbGlInt32 ref, SbGlUInt32 mask);
  void (*glStencilFuncSeparate)(SbGlEnum face,
                                SbGlEnum func,
                                SbGlInt32 ref,
                                SbGlUInt32 mask);
  void (*glStencilMask)(SbGlUInt32 mask);
  void (*glStencilMaskSeparate)(SbGlEnum face, SbGlUInt32 mask);
  void (*glStencilOp)(SbGlEnum fail, SbGlEnum zfail, SbGlEnum zpass);
  void (*glStencilOpSeparate)(SbGlEnum face,
                              SbGlEnum sfail,
                              SbGlEnum dpfail,
                              SbGlEnum dppass);
  void (*glTexImage2D)(SbGlEnum target,
                       SbGlInt32 level,
                       SbGlInt32 internalformat,
                       SbGlSizei width,
                       SbGlSizei height,
                       SbGlInt32 border,
                       SbGlEnum format,
                       SbGlEnum type,
                       const void* pixels);
  void (*glTexParameterf)(SbGlEnum target, SbGlEnum pname, SbGlFloat param);
  void (*glTexParameterfv)(SbGlEnum target,
                           SbGlEnum pname,
                           const SbGlFloat* params);
  void (*glTexParameteri)(SbGlEnum target, SbGlEnum pname, SbGlInt32 param);
  void (*glTexParameteriv)(SbGlEnum target,
                           SbGlEnum pname,
                           const SbGlInt32* params);
  void (*glTexSubImage2D)(SbGlEnum target,
                          SbGlInt32 level,
                          SbGlInt32 xoffset,
                          SbGlInt32 yoffset,
                          SbGlSizei width,
                          SbGlSizei height,
                          SbGlEnum format,
                          SbGlEnum type,
                          const void* pixels);
  void (*glUniform1f)(SbGlInt32 location, SbGlFloat v0);
  void (*glUniform1fv)(SbGlInt32 location,
                       SbGlSizei count,
                       const SbGlFloat* value);
  void (*glUniform1i)(SbGlInt32 location, SbGlInt32 v0);
  void (*glUniform1iv)(SbGlInt32 location,
                       SbGlSizei count,
                       const SbGlInt32* value);
  void (*glUniform2f)(SbGlInt32 location, SbGlFloat v0, SbGlFloat v1);
  void (*glUniform2fv)(SbGlInt32 location,
                       SbGlSizei count,
                       const SbGlFloat* value);
  void (*glUniform2i)(SbGlInt32 location, SbGlInt32 v0, SbGlInt32 v1);
  void (*glUniform2iv)(SbGlInt32 location,
                       SbGlSizei count,
                       const SbGlInt32* value);
  void (*glUniform3f)(SbGlInt32 location,
                      SbGlFloat v0,
                      SbGlFloat v1,
                      SbGlFloat v2);
  void (*glUniform3fv)(SbGlInt32 location,
                       SbGlSizei count,
                       const SbGlFloat* value);
  void (*glUniform3i)(SbGlInt32 location,
                      SbGlInt32 v0,
                      SbGlInt32 v1,
                      SbGlInt32 v2);
  void (*glUniform3iv)(SbGlInt32 location,
                       SbGlSizei count,
                       const SbGlInt32* value);
  void (*glUniform4f)(SbGlInt32 location,
                      SbGlFloat v0,
                      SbGlFloat v1,
                      SbGlFloat v2,
                      SbGlFloat v3);
  void (*glUniform4fv)(SbGlInt32 location,
                       SbGlSizei count,
                       const SbGlFloat* value);
  void (*glUniform4i)(SbGlInt32 location,
                      SbGlInt32 v0,
                      SbGlInt32 v1,
                      SbGlInt32 v2,
                      SbGlInt32 v3);
  void (*glUniform4iv)(SbGlInt32 location,
                       SbGlSizei count,
                       const SbGlInt32* value);
  void (*glUniformMatrix2fv)(SbGlInt32 location,
                             SbGlSizei count,
                             SbGlBoolean transpose,
                             const SbGlFloat* value);
  void (*glUniformMatrix3fv)(SbGlInt32 location,
                             SbGlSizei count,
                             SbGlBoolean transpose,
                             const SbGlFloat* value);
  void (*glUniformMatrix4fv)(SbGlInt32 location,
                             SbGlSizei count,
                             SbGlBoolean transpose,
                             const SbGlFloat* value);
  void (*glUseProgram)(SbGlUInt32 program);
  void (*glValidateProgram)(SbGlUInt32 program);
  void (*glVertexAttrib1f)(SbGlUInt32 index, SbGlFloat x);
  void (*glVertexAttrib1fv)(SbGlUInt32 index, const SbGlFloat* v);
  void (*glVertexAttrib2f)(SbGlUInt32 index, SbGlFloat x, SbGlFloat y);
  void (*glVertexAttrib2fv)(SbGlUInt32 index, const SbGlFloat* v);
  void (*glVertexAttrib3f)(SbGlUInt32 index,
                           SbGlFloat x,
                           SbGlFloat y,
                           SbGlFloat z);
  void (*glVertexAttrib3fv)(SbGlUInt32 index, const SbGlFloat* v);
  void (*glVertexAttrib4f)(SbGlUInt32 index,
                           SbGlFloat x,
                           SbGlFloat y,
                           SbGlFloat z,
                           SbGlFloat w);
  void (*glVertexAttrib4fv)(SbGlUInt32 index, const SbGlFloat* v);
  void (*glVertexAttribPointer)(SbGlUInt32 index,
                                SbGlInt32 size,
                                SbGlEnum type,
                                SbGlBoolean normalized,
                                SbGlSizei stride,
                                const void* pointer);
  void (*glViewport)(SbGlInt32 x,
                     SbGlInt32 y,
                     SbGlSizei width,
                     SbGlSizei height);

  // The following prototypes were adapted from the prototypes declared in
  // https://www.khronos.org/registry/OpenGL/api/GLES3/gl3.h.
  void (*glReadBuffer)(SbGlEnum src);
  void (*glDrawRangeElements)(SbGlEnum mode,
                              SbGlUInt32 start,
                              SbGlUInt32 end,
                              SbGlSizei count,
                              SbGlEnum type,
                              const void* indices);
  void (*glTexImage3D)(SbGlEnum target,
                       SbGlInt32 level,
                       SbGlInt32 internalformat,
                       SbGlSizei width,
                       SbGlSizei height,
                       SbGlSizei depth,
                       SbGlInt32 border,
                       SbGlEnum format,
                       SbGlEnum type,
                       const void* pixels);
  void (*glTexSubImage3D)(SbGlEnum target,
                          SbGlInt32 level,
                          SbGlInt32 xoffset,
                          SbGlInt32 yoffset,
                          SbGlInt32 zoffset,
                          SbGlSizei width,
                          SbGlSizei height,
                          SbGlSizei depth,
                          SbGlEnum format,
                          SbGlEnum type,
                          const void* pixels);
  void (*glCopyTexSubImage3D)(SbGlEnum target,
                              SbGlInt32 level,
                              SbGlInt32 xoffset,
                              SbGlInt32 yoffset,
                              SbGlInt32 zoffset,
                              SbGlInt32 x,
                              SbGlInt32 y,
                              SbGlSizei width,
                              SbGlSizei height);
  void (*glCompressedTexImage3D)(SbGlEnum target,
                                 SbGlInt32 level,
                                 SbGlEnum internalformat,
                                 SbGlSizei width,
                                 SbGlSizei height,
                                 SbGlSizei depth,
                                 SbGlInt32 border,
                                 SbGlSizei imageSize,
                                 const void* data);
  void (*glCompressedTexSubImage3D)(SbGlEnum target,
                                    SbGlInt32 level,
                                    SbGlInt32 xoffset,
                                    SbGlInt32 yoffset,
                                    SbGlInt32 zoffset,
                                    SbGlSizei width,
                                    SbGlSizei height,
                                    SbGlSizei depth,
                                    SbGlEnum format,
                                    SbGlSizei imageSize,
                                    const void* data);
  void (*glGenQueries)(SbGlSizei n, SbGlUInt32* ids);
  void (*glDeleteQueries)(SbGlSizei n, const SbGlUInt32* ids);
  SbGlBoolean (*glIsQuery)(SbGlUInt32 id);
  void (*glBeginQuery)(SbGlEnum target, SbGlUInt32 id);
  void (*glEndQuery)(SbGlEnum target);
  void (*glGetQueryiv)(SbGlEnum target, SbGlEnum pname, SbGlInt32* params);
  void (*glGetQueryObjectuiv)(SbGlUInt32 id,
                              SbGlEnum pname,
                              SbGlUInt32* params);
  SbGlBoolean (*glUnmapBuffer)(SbGlEnum target);
  void (*glGetBufferPointerv)(SbGlEnum target, SbGlEnum pname, void** params);
  void (*glDrawBuffers)(SbGlSizei n, const SbGlEnum* bufs);
  void (*glUniformMatrix2x3fv)(SbGlInt32 location,
                               SbGlSizei count,
                               SbGlBoolean transpose,
                               const SbGlFloat* value);
  void (*glUniformMatrix3x2fv)(SbGlInt32 location,
                               SbGlSizei count,
                               SbGlBoolean transpose,
                               const SbGlFloat* value);
  void (*glUniformMatrix2x4fv)(SbGlInt32 location,
                               SbGlSizei count,
                               SbGlBoolean transpose,
                               const SbGlFloat* value);
  void (*glUniformMatrix4x2fv)(SbGlInt32 location,
                               SbGlSizei count,
                               SbGlBoolean transpose,
                               const SbGlFloat* value);
  void (*glUniformMatrix3x4fv)(SbGlInt32 location,
                               SbGlSizei count,
                               SbGlBoolean transpose,
                               const SbGlFloat* value);
  void (*glUniformMatrix4x3fv)(SbGlInt32 location,
                               SbGlSizei count,
                               SbGlBoolean transpose,
                               const SbGlFloat* value);
  void (*glBlitFramebuffer)(SbGlInt32 srcX0,
                            SbGlInt32 srcY0,
                            SbGlInt32 srcX1,
                            SbGlInt32 srcY1,
                            SbGlInt32 dstX0,
                            SbGlInt32 dstY0,
                            SbGlInt32 dstX1,
                            SbGlInt32 dstY1,
                            SbGlBitfield mask,
                            SbGlEnum filter);
  void (*glRenderbufferStorageMultisample)(SbGlEnum target,
                                           SbGlSizei samples,
                                           SbGlEnum internalformat,
                                           SbGlSizei width,
                                           SbGlSizei height);
  void (*glFramebufferTextureLayer)(SbGlEnum target,
                                    SbGlEnum attachment,
                                    SbGlUInt32 texture,
                                    SbGlInt32 level,
                                    SbGlInt32 layer);
  void* (*glMapBufferRange)(SbGlEnum target,
                            SbGlIntPtr offset,
                            SbGlSizeiPtr length,
                            SbGlBitfield access);
  void (*glFlushMappedBufferRange)(SbGlEnum target,
                                   SbGlIntPtr offset,
                                   SbGlSizeiPtr length);
  void (*glBindVertexArray)(SbGlUInt32 array);
  void (*glDeleteVertexArrays)(SbGlSizei n, const SbGlUInt32* arrays);
  void (*glGenVertexArrays)(SbGlSizei n, SbGlUInt32* arrays);
  SbGlBoolean (*glIsVertexArray)(SbGlUInt32 array);
  void (*glGetIntegeri_v)(SbGlEnum target, SbGlUInt32 index, SbGlInt32* data);
  void (*glBeginTransformFeedback)(SbGlEnum primitiveMode);
  void (*glEndTransformFeedback)(void);
  void (*glBindBufferRange)(SbGlEnum target,
                            SbGlUInt32 index,
                            SbGlUInt32 buffer,
                            SbGlIntPtr offset,
                            SbGlSizeiPtr size);
  void (*glBindBufferBase)(SbGlEnum target,
                           SbGlUInt32 index,
                           SbGlUInt32 buffer);
  void (*glTransformFeedbackVaryings)(SbGlUInt32 program,
                                      SbGlSizei count,
                                      const SbGlChar* const* varyings,
                                      SbGlEnum bufferMode);
  void (*glGetTransformFeedbackVarying)(SbGlUInt32 program,
                                        SbGlUInt32 index,
                                        SbGlSizei bufSize,
                                        SbGlSizei* length,
                                        SbGlSizei* size,
                                        SbGlEnum* type,
                                        SbGlChar* name);
  void (*glVertexAttribIPointer)(SbGlUInt32 index,
                                 SbGlInt32 size,
                                 SbGlEnum type,
                                 SbGlSizei stride,
                                 const void* pointer);
  void (*glGetVertexAttribIiv)(SbGlUInt32 index,
                               SbGlEnum pname,
                               SbGlInt32* params);
  void (*glGetVertexAttribIuiv)(SbGlUInt32 index,
                                SbGlEnum pname,
                                SbGlUInt32* params);
  void (*glVertexAttribI4i)(SbGlUInt32 index,
                            SbGlInt32 x,
                            SbGlInt32 y,
                            SbGlInt32 z,
                            SbGlInt32 w);
  void (*glVertexAttribI4ui)(SbGlUInt32 index,
                             SbGlUInt32 x,
                             SbGlUInt32 y,
                             SbGlUInt32 z,
                             SbGlUInt32 w);
  void (*glVertexAttribI4iv)(SbGlUInt32 index, const SbGlInt32* v);
  void (*glVertexAttribI4uiv)(SbGlUInt32 index, const SbGlUInt32* v);
  void (*glGetUniformuiv)(SbGlUInt32 program,
                          SbGlInt32 location,
                          SbGlUInt32* params);
  SbGlInt32 (*glGetFragDataLocation)(SbGlUInt32 program, const SbGlChar* name);
  void (*glUniform1ui)(SbGlInt32 location, SbGlUInt32 v0);
  void (*glUniform2ui)(SbGlInt32 location, SbGlUInt32 v0, SbGlUInt32 v1);
  void (*glUniform3ui)(SbGlInt32 location,
                       SbGlUInt32 v0,
                       SbGlUInt32 v1,
                       SbGlUInt32 v2);
  void (*glUniform4ui)(SbGlInt32 location,
                       SbGlUInt32 v0,
                       SbGlUInt32 v1,
                       SbGlUInt32 v2,
                       SbGlUInt32 v3);
  void (*glUniform1uiv)(SbGlInt32 location,
                        SbGlSizei count,
                        const SbGlUInt32* value);
  void (*glUniform2uiv)(SbGlInt32 location,
                        SbGlSizei count,
                        const SbGlUInt32* value);
  void (*glUniform3uiv)(SbGlInt32 location,
                        SbGlSizei count,
                        const SbGlUInt32* value);
  void (*glUniform4uiv)(SbGlInt32 location,
                        SbGlSizei count,
                        const SbGlUInt32* value);
  void (*glClearBufferiv)(SbGlEnum buffer,
                          SbGlInt32 drawbuffer,
                          const SbGlInt32* value);
  void (*glClearBufferuiv)(SbGlEnum buffer,
                           SbGlInt32 drawbuffer,
                           const SbGlUInt32* value);
  void (*glClearBufferfv)(SbGlEnum buffer,
                          SbGlInt32 drawbuffer,
                          const SbGlFloat* value);
  void (*glClearBufferfi)(SbGlEnum buffer,
                          SbGlInt32 drawbuffer,
                          SbGlFloat depth,
                          SbGlInt32 stencil);
  const SbGlUInt8* (*glGetStringi)(SbGlEnum name, SbGlUInt32 index);
  void (*glCopyBufferSubData)(SbGlEnum readTarget,
                              SbGlEnum writeTarget,
                              SbGlIntPtr readOffset,
                              SbGlIntPtr writeOffset,
                              SbGlSizeiPtr size);
  void (*glGetUniformIndices)(SbGlUInt32 program,
                              SbGlSizei uniformCount,
                              const SbGlChar* const* uniformNames,
                              SbGlUInt32* uniformIndices);
  void (*glGetActiveUniformsiv)(SbGlUInt32 program,
                                SbGlSizei uniformCount,
                                const SbGlUInt32* uniformIndices,
                                SbGlEnum pname,
                                SbGlInt32* params);
  SbGlUInt32 (*glGetUniformBlockIndex)(SbGlUInt32 program,
                                       const SbGlChar* uniformBlockName);
  void (*glGetActiveUniformBlockiv)(SbGlUInt32 program,
                                    SbGlUInt32 uniformBlockIndex,
                                    SbGlEnum pname,
                                    SbGlInt32* params);
  void (*glGetActiveUniformBlockName)(SbGlUInt32 program,
                                      SbGlUInt32 uniformBlockIndex,
                                      SbGlSizei bufSize,
                                      SbGlSizei* length,
                                      SbGlChar* uniformBlockName);
  void (*glUniformBlockBinding)(SbGlUInt32 program,
                                SbGlUInt32 uniformBlockIndex,
                                SbGlUInt32 uniformBlockBinding);
  void (*glDrawArraysInstanced)(SbGlEnum mode,
                                SbGlInt32 first,
                                SbGlSizei count,
                                SbGlSizei instancecount);
  void (*glDrawElementsInstanced)(SbGlEnum mode,
                                  SbGlSizei count,
                                  SbGlEnum type,
                                  const void* indices,
                                  SbGlSizei instancecount);
  SbGlSync (*glFenceSync)(SbGlEnum condition, SbGlBitfield flags);
  SbGlBoolean (*glIsSync)(SbGlSync sync);
  void (*glDeleteSync)(SbGlSync sync);
  SbGlEnum (*glClientWaitSync)(SbGlSync sync,
                               SbGlBitfield flags,
                               SbGlUInt64 timeout);
  void (*glWaitSync)(SbGlSync sync, SbGlBitfield flags, SbGlUInt64 timeout);
  void (*glGetInteger64v)(SbGlEnum pname, SbGlInt64* data);
  void (*glGetSynciv)(SbGlSync sync,
                      SbGlEnum pname,
                      SbGlSizei bufSize,
                      SbGlSizei* length,
                      SbGlInt32* values);
  void (*glGetInteger64i_v)(SbGlEnum target, SbGlUInt32 index, SbGlInt64* data);
  void (*glGetBufferParameteri64v)(SbGlEnum target,
                                   SbGlEnum pname,
                                   SbGlInt64* params);
  void (*glGenSamplers)(SbGlSizei count, SbGlUInt32* samplers);
  void (*glDeleteSamplers)(SbGlSizei count, const SbGlUInt32* samplers);
  SbGlBoolean (*glIsSampler)(SbGlUInt32 sampler);
  void (*glBindSampler)(SbGlUInt32 unit, SbGlUInt32 sampler);
  void (*glSamplerParameteri)(SbGlUInt32 sampler,
                              SbGlEnum pname,
                              SbGlInt32 param);
  void (*glSamplerParameteriv)(SbGlUInt32 sampler,
                               SbGlEnum pname,
                               const SbGlInt32* param);
  void (*glSamplerParameterf)(SbGlUInt32 sampler,
                              SbGlEnum pname,
                              SbGlFloat param);
  void (*glSamplerParameterfv)(SbGlUInt32 sampler,
                               SbGlEnum pname,
                               const SbGlFloat* param);
  void (*glGetSamplerParameteriv)(SbGlUInt32 sampler,
                                  SbGlEnum pname,
                                  SbGlInt32* params);
  void (*glGetSamplerParameterfv)(SbGlUInt32 sampler,
                                  SbGlEnum pname,
                                  SbGlFloat* params);
  void (*glVertexAttribDivisor)(SbGlUInt32 index, SbGlUInt32 divisor);
  void (*glBindTransformFeedback)(SbGlEnum target, SbGlUInt32 id);
  void (*glDeleteTransformFeedbacks)(SbGlSizei n, const SbGlUInt32* ids);
  void (*glGenTransformFeedbacks)(SbGlSizei n, SbGlUInt32* ids);
  SbGlBoolean (*glIsTransformFeedback)(SbGlUInt32 id);
  void (*glPauseTransformFeedback)(void);
  void (*glResumeTransformFeedback)(void);
  void (*glGetProgramBinary)(SbGlUInt32 program,
                             SbGlSizei bufSize,
                             SbGlSizei* length,
                             SbGlEnum* binaryFormat,
                             void* binary);
  void (*glProgramBinary)(SbGlUInt32 program,
                          SbGlEnum binaryFormat,
                          const void* binary,
                          SbGlSizei length);
  void (*glProgramParameteri)(SbGlUInt32 program,
                              SbGlEnum pname,
                              SbGlInt32 value);
  void (*glInvalidateFramebuffer)(SbGlEnum target,
                                  SbGlSizei numAttachments,
                                  const SbGlEnum* attachments);
  void (*glInvalidateSubFramebuffer)(SbGlEnum target,
                                     SbGlSizei numAttachments,
                                     const SbGlEnum* attachments,
                                     SbGlInt32 x,
                                     SbGlInt32 y,
                                     SbGlSizei width,
                                     SbGlSizei height);
  void (*glTexStorage2D)(SbGlEnum target,
                         SbGlSizei levels,
                         SbGlEnum internalformat,
                         SbGlSizei width,
                         SbGlSizei height);
  void (*glTexStorage3D)(SbGlEnum target,
                         SbGlSizei levels,
                         SbGlEnum internalformat,
                         SbGlSizei width,
                         SbGlSizei height,
                         SbGlSizei depth);
  void (*glGetInternalformativ)(SbGlEnum target,
                                SbGlEnum internalformat,
                                SbGlEnum pname,
                                SbGlSizei bufSize,
                                SbGlInt32* params);
} SbGlesInterface;

SB_EXPORT const SbGlesInterface* SbGetGlesInterface();

// Previously defined in
// https://www.khronos.org/registry/OpenGL/api/GLES2/gl2.h
#define SB_GL_DEPTH_BUFFER_BIT 0x00000100
#define SB_GL_STENCIL_BUFFER_BIT 0x00000400
#define SB_GL_COLOR_BUFFER_BIT 0x00004000

#define SB_GL_FALSE 0
#define SB_GL_TRUE 1

#define SB_GL_POINTS 0x0000
#define SB_GL_LINES 0x0001
#define SB_GL_LINE_LOOP 0x0002
#define SB_GL_LINE_STRIP 0x0003
#define SB_GL_TRIANGLES 0x0004
#define SB_GL_TRIANGLE_STRIP 0x0005
#define SB_GL_TRIANGLE_FAN 0x0006
#define SB_GL_ZERO 0
#define SB_GL_ONE 1
#define SB_GL_SRC_COLOR 0x0300
#define SB_GL_ONE_MINUS_SRC_COLOR 0x0301
#define SB_GL_SRC_ALPHA 0x0302
#define SB_GL_ONE_MINUS_SRC_ALPHA 0x0303
#define SB_GL_DST_ALPHA 0x0304
#define SB_GL_ONE_MINUS_DST_ALPHA 0x0305
#define SB_GL_DST_COLOR 0x0306
#define SB_GL_ONE_MINUS_DST_COLOR 0x0307
#define SB_GL_SRC_ALPHA_SATURATE 0x0308
#define SB_GL_FUNC_ADD 0x8006
#define SB_GL_BLEND_EQUATION 0x8009
#define SB_GL_BLEND_EQUATION_RGB 0x8009
#define SB_GL_BLEND_EQUATION_ALPHA 0x883D
#define SB_GL_FUNC_SUBTRACT 0x800A
#define SB_GL_FUNC_REVERSE_SUBTRACT 0x800B
#define SB_GL_BLEND_DST_RGB 0x80C8
#define SB_GL_BLEND_SRC_RGB 0x80C9
#define SB_GL_BLEND_DST_ALPHA 0x80CA
#define SB_GL_BLEND_SRC_ALPHA 0x80CB
#define SB_GL_CONSTANT_COLOR 0x8001
#define SB_GL_ONE_MINUS_CONSTANT_COLOR 0x8002
#define SB_GL_CONSTANT_ALPHA 0x8003
#define SB_GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
#define SB_GL_BLEND_COLOR 0x8005
#define SB_GL_ARRAY_BUFFER 0x8892
#define SB_GL_ELEMENT_ARRAY_BUFFER 0x8893
#define SB_GL_ARRAY_BUFFER_BINDING 0x8894
#define SB_GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895
#define SB_GL_STREAM_DRAW 0x88E0
#define SB_GL_STATIC_DRAW 0x88E4
#define SB_GL_DYNAMIC_DRAW 0x88E8
#define SB_GL_BUFFER_SIZE 0x8764
#define SB_GL_BUFFER_USAGE 0x8765
#define SB_GL_CURRENT_VERTEX_ATTRIB 0x8626
#define SB_GL_FRONT 0x0404
#define SB_GL_BACK 0x0405
#define SB_GL_FRONT_AND_BACK 0x0408
#define SB_GL_TEXTURE_2D 0x0DE1
#define SB_GL_CULL_FACE 0x0B44
#define SB_GL_BLEND 0x0BE2
#define SB_GL_DITHER 0x0BD0
#define SB_GL_STENCIL_TEST 0x0B90
#define SB_GL_DEPTH_TEST 0x0B71
#define SB_GL_SCISSOR_TEST 0x0C11
#define SB_GL_POLYGON_OFFSET_FILL 0x8037
#define SB_GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E
#define SB_GL_SAMPLE_COVERAGE 0x80A0
#define SB_GL_NO_ERROR 0
#define SB_GL_INVALID_ENUM 0x0500
#define SB_GL_INVALID_VALUE 0x0501
#define SB_GL_INVALID_OPERATION 0x0502
#define SB_GL_OUT_OF_MEMORY 0x0505
#define SB_GL_CW 0x0900
#define SB_GL_CCW 0x0901
#define SB_GL_LINE_WIDTH 0x0B21
#define SB_GL_ALIASED_POINT_SIZE_RANGE 0x846D
#define SB_GL_ALIASED_LINE_WIDTH_RANGE 0x846E
#define SB_GL_CULL_FACE_MODE 0x0B45
#define SB_GL_FRONT_FACE 0x0B46
#define SB_GL_DEPTH_RANGE 0x0B70
#define SB_GL_DEPTH_WRITEMASK 0x0B72
#define SB_GL_DEPTH_CLEAR_VALUE 0x0B73
#define SB_GL_DEPTH_FUNC 0x0B74
#define SB_GL_STENCIL_CLEAR_VALUE 0x0B91
#define SB_GL_STENCIL_FUNC 0x0B92
#define SB_GL_STENCIL_FAIL 0x0B94
#define SB_GL_STENCIL_PASS_DEPTH_FAIL 0x0B95
#define SB_GL_STENCIL_PASS_DEPTH_PASS 0x0B96
#define SB_GL_STENCIL_REF 0x0B97
#define SB_GL_STENCIL_VALUE_MASK 0x0B93
#define SB_GL_STENCIL_WRITEMASK 0x0B98
#define SB_GL_STENCIL_BACK_FUNC 0x8800
#define SB_GL_STENCIL_BACK_FAIL 0x8801
#define SB_GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802
#define SB_GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803
#define SB_GL_STENCIL_BACK_REF 0x8CA3
#define SB_GL_STENCIL_BACK_VALUE_MASK 0x8CA4
#define SB_GL_STENCIL_BACK_WRITEMASK 0x8CA5
#define SB_GL_VIEWPORT 0x0BA2
#define SB_GL_SCISSOR_BOX 0x0C10
#define SB_GL_COLOR_CLEAR_VALUE 0x0C22
#define SB_GL_COLOR_WRITEMASK 0x0C23
#define SB_GL_UNPACK_ALIGNMENT 0x0CF5
#define SB_GL_PACK_ALIGNMENT 0x0D05
#define SB_GL_MAX_TEXTURE_SIZE 0x0D33
#define SB_GL_MAX_VIEWPORT_DIMS 0x0D3A
#define SB_GL_SUBPIXEL_BITS 0x0D50
#define SB_GL_RED_BITS 0x0D52
#define SB_GL_GREEN_BITS 0x0D53
#define SB_GL_BLUE_BITS 0x0D54
#define SB_GL_ALPHA_BITS 0x0D55
#define SB_GL_DEPTH_BITS 0x0D56
#define SB_GL_STENCIL_BITS 0x0D57
#define SB_GL_POLYGON_OFFSET_UNITS 0x2A00
#define SB_GL_POLYGON_OFFSET_FACTOR 0x8038
#define SB_GL_TEXTURE_BINDING_2D 0x8069
#define SB_GL_SAMPLE_BUFFERS 0x80A8
#define SB_GL_SAMPLES 0x80A9
#define SB_GL_SAMPLE_COVERAGE_VALUE 0x80AA
#define SB_GL_SAMPLE_COVERAGE_INVERT 0x80AB
#define SB_GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
#define SB_GL_COMPRESSED_TEXTURE_FORMATS 0x86A3
#define SB_GL_DONT_CARE 0x1100
#define SB_GL_FASTEST 0x1101
#define SB_GL_NICEST 0x1102
#define SB_GL_GENERATE_MIPMAP_HINT 0x8192
#define SB_GL_BYTE 0x1400
#define SB_GL_UNSIGNED_BYTE 0x1401
#define SB_GL_SHORT 0x1402
#define SB_GL_UNSIGNED_SHORT 0x1403
#define SB_GL_INT 0x1404
#define SB_GL_UNSIGNED_INT 0x1405
#define SB_GL_FLOAT 0x1406
#define SB_GL_FIXED 0x140C
#define SB_GL_DEPTH_COMPONENT 0x1902
#define SB_GL_ALPHA 0x1906
#define SB_GL_RGB 0x1907
#define SB_GL_RGBA 0x1908
#define SB_GL_LUMINANCE 0x1909
#define SB_GL_LUMINANCE_ALPHA 0x190A
#define SB_GL_UNSIGNED_SHORT_4_4_4_4 0x8033
#define SB_GL_UNSIGNED_SHORT_5_5_5_1 0x8034
#define SB_GL_UNSIGNED_SHORT_5_6_5 0x8363
#define SB_GL_FRAGMENT_SHADER 0x8B30
#define SB_GL_VERTEX_SHADER 0x8B31
#define SB_GL_MAX_VERTEX_ATTRIBS 0x8869
#define SB_GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB
#define SB_GL_MAX_VARYING_VECTORS 0x8DFC
#define SB_GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
#define SB_GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C
#define SB_GL_MAX_TEXTURE_IMAGE_UNITS 0x8872
#define SB_GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD
#define SB_GL_SHADER_TYPE 0x8B4F
#define SB_GL_DELETE_STATUS 0x8B80
#define SB_GL_LINK_STATUS 0x8B82
#define SB_GL_VALIDATE_STATUS 0x8B83
#define SB_GL_ATTACHED_SHADERS 0x8B85
#define SB_GL_ACTIVE_UNIFORMS 0x8B86
#define SB_GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87
#define SB_GL_ACTIVE_ATTRIBUTES 0x8B89
#define SB_GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A
#define SB_GL_SHADING_LANGUAGE_VERSION 0x8B8C
#define SB_GL_CURRENT_PROGRAM 0x8B8D
#define SB_GL_NEVER 0x0200
#define SB_GL_LESS 0x0201
#define SB_GL_EQUAL 0x0202
#define SB_GL_LEQUAL 0x0203
#define SB_GL_GREATER 0x0204
#define SB_GL_NOTEQUAL 0x0205
#define SB_GL_GEQUAL 0x0206
#define SB_GL_ALWAYS 0x0207
#define SB_GL_KEEP 0x1E00
#define SB_GL_REPLACE 0x1E01
#define SB_GL_INCR 0x1E02
#define SB_GL_DECR 0x1E03
#define SB_GL_INVERT 0x150A
#define SB_GL_INCR_WRAP 0x8507
#define SB_GL_DECR_WRAP 0x8508
#define SB_GL_VENDOR 0x1F00
#define SB_GL_RENDERER 0x1F01
#define SB_GL_VERSION 0x1F02
#define SB_GL_EXTENSIONS 0x1F03
#define SB_GL_NEAREST 0x2600
#define SB_GL_LINEAR 0x2601
#define SB_GL_NEAREST_MIPMAP_NEAREST 0x2700
#define SB_GL_LINEAR_MIPMAP_NEAREST 0x2701
#define SB_GL_NEAREST_MIPMAP_LINEAR 0x2702
#define SB_GL_LINEAR_MIPMAP_LINEAR 0x2703
#define SB_GL_TEXTURE_MAG_FILTER 0x2800
#define SB_GL_TEXTURE_MIN_FILTER 0x2801
#define SB_GL_TEXTURE_WRAP_S 0x2802
#define SB_GL_TEXTURE_WRAP_T 0x2803
#define SB_GL_TEXTURE 0x1702
#define SB_GL_TEXTURE_CUBE_MAP 0x8513
#define SB_GL_TEXTURE_BINDING_CUBE_MAP 0x8514
#define SB_GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515
#define SB_GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516
#define SB_GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517
#define SB_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518
#define SB_GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519
#define SB_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A
#define SB_GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C
#define SB_GL_TEXTURE0 0x84C0
#define SB_GL_TEXTURE1 0x84C1
#define SB_GL_TEXTURE2 0x84C2
#define SB_GL_TEXTURE3 0x84C3
#define SB_GL_TEXTURE4 0x84C4
#define SB_GL_TEXTURE5 0x84C5
#define SB_GL_TEXTURE6 0x84C6
#define SB_GL_TEXTURE7 0x84C7
#define SB_GL_TEXTURE8 0x84C8
#define SB_GL_TEXTURE9 0x84C9
#define SB_GL_TEXTURE10 0x84CA
#define SB_GL_TEXTURE11 0x84CB
#define SB_GL_TEXTURE12 0x84CC
#define SB_GL_TEXTURE13 0x84CD
#define SB_GL_TEXTURE14 0x84CE
#define SB_GL_TEXTURE15 0x84CF
#define SB_GL_TEXTURE16 0x84D0
#define SB_GL_TEXTURE17 0x84D1
#define SB_GL_TEXTURE18 0x84D2
#define SB_GL_TEXTURE19 0x84D3
#define SB_GL_TEXTURE20 0x84D4
#define SB_GL_TEXTURE21 0x84D5
#define SB_GL_TEXTURE22 0x84D6
#define SB_GL_TEXTURE23 0x84D7
#define SB_GL_TEXTURE24 0x84D8
#define SB_GL_TEXTURE25 0x84D9
#define SB_GL_TEXTURE26 0x84DA
#define SB_GL_TEXTURE27 0x84DB
#define SB_GL_TEXTURE28 0x84DC
#define SB_GL_TEXTURE29 0x84DD
#define SB_GL_TEXTURE30 0x84DE
#define SB_GL_TEXTURE31 0x84DF
#define SB_GL_ACTIVE_TEXTURE 0x84E0
#define SB_GL_REPEAT 0x2901
#define SB_GL_CLAMP_TO_EDGE 0x812F
#define SB_GL_MIRRORED_REPEAT 0x8370
#define SB_GL_FLOAT_VEC2 0x8B50
#define SB_GL_FLOAT_VEC3 0x8B51
#define SB_GL_FLOAT_VEC4 0x8B52
#define SB_GL_INT_VEC2 0x8B53
#define SB_GL_INT_VEC3 0x8B54
#define SB_GL_INT_VEC4 0x8B55
#define SB_GL_BOOL 0x8B56
#define SB_GL_BOOL_VEC2 0x8B57
#define SB_GL_BOOL_VEC3 0x8B58
#define SB_GL_BOOL_VEC4 0x8B59
#define SB_GL_FLOAT_MAT2 0x8B5A
#define SB_GL_FLOAT_MAT3 0x8B5B
#define SB_GL_FLOAT_MAT4 0x8B5C
#define SB_GL_SAMPLER_2D 0x8B5E
#define SB_GL_SAMPLER_CUBE 0x8B60
#define SB_GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622
#define SB_GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623
#define SB_GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624
#define SB_GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625
#define SB_GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A
#define SB_GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645
#define SB_GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
#define SB_GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A
#define SB_GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
#define SB_GL_COMPILE_STATUS 0x8B81
#define SB_GL_INFO_LOG_LENGTH 0x8B84
#define SB_GL_SHADER_SOURCE_LENGTH 0x8B88
#define SB_GL_SHADER_COMPILER 0x8DFA
#define SB_GL_SHADER_BINARY_FORMATS 0x8DF8
#define SB_GL_NUM_SHADER_BINARY_FORMATS 0x8DF9
#define SB_GL_LOW_FLOAT 0x8DF0
#define SB_GL_MEDIUM_FLOAT 0x8DF1
#define SB_GL_HIGH_FLOAT 0x8DF2
#define SB_GL_LOW_INT 0x8DF3
#define SB_GL_MEDIUM_INT 0x8DF4
#define SB_GL_HIGH_INT 0x8DF5
#define SB_GL_FRAMEBUFFER 0x8D40
#define SB_GL_RENDERBUFFER 0x8D41
#define SB_GL_RGBA4 0x8056
#define SB_GL_RGB5_A1 0x8057
#define SB_GL_RGB565 0x8D62
#define SB_GL_DEPTH_COMPONENT16 0x81A5
#define SB_GL_STENCIL_INDEX8 0x8D48
#define SB_GL_RENDERBUFFER_WIDTH 0x8D42
#define SB_GL_RENDERBUFFER_HEIGHT 0x8D43
#define SB_GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44
#define SB_GL_RENDERBUFFER_RED_SIZE 0x8D50
#define SB_GL_RENDERBUFFER_GREEN_SIZE 0x8D51
#define SB_GL_RENDERBUFFER_BLUE_SIZE 0x8D52
#define SB_GL_RENDERBUFFER_ALPHA_SIZE 0x8D53
#define SB_GL_RENDERBUFFER_DEPTH_SIZE 0x8D54
#define SB_GL_RENDERBUFFER_STENCIL_SIZE 0x8D55
#define SB_GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0
#define SB_GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1
#define SB_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2
#define SB_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3
#define SB_GL_COLOR_ATTACHMENT0 0x8CE0
#define SB_GL_DEPTH_ATTACHMENT 0x8D00
#define SB_GL_STENCIL_ATTACHMENT 0x8D20
#define SB_GL_NONE 0
#define SB_GL_FRAMEBUFFER_COMPLETE 0x8CD5
#define SB_GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
#define SB_GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
#define SB_GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9
#define SB_GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD
#define SB_GL_FRAMEBUFFER_BINDING 0x8CA6
#define SB_GL_RENDERBUFFER_BINDING 0x8CA7
#define SB_GL_MAX_RENDERBUFFER_SIZE 0x84E8
#define SB_GL_INVALID_FRAMEBUFFER_OPERATION 0x0506

// Previously defined in
// https://www.khronos.org/registry/OpenGL/api/GLES3/gl3.h.
#define SB_GL_READ_BUFFER 0x0C02
#define SB_GL_UNPACK_ROW_LENGTH 0x0CF2
#define SB_GL_UNPACK_SKIP_ROWS 0x0CF3
#define SB_GL_UNPACK_SKIP_PIXELS 0x0CF4
#define SB_GL_PACK_ROW_LENGTH 0x0D02
#define SB_GL_PACK_SKIP_ROWS 0x0D03
#define SB_GL_PACK_SKIP_PIXELS 0x0D04
#define SB_GL_COLOR 0x1800
#define SB_GL_DEPTH 0x1801
#define SB_GL_STENCIL 0x1802
#define SB_GL_RED 0x1903
#define SB_GL_RGB8 0x8051
#define SB_GL_RGBA8 0x8058
#define SB_GL_RGB10_A2 0x8059
#define SB_GL_TEXTURE_BINDING_3D 0x806A
#define SB_GL_UNPACK_SKIP_IMAGES 0x806D
#define SB_GL_UNPACK_IMAGE_HEIGHT 0x806E
#define SB_GL_TEXTURE_3D 0x806F
#define SB_GL_TEXTURE_WRAP_R 0x8072
#define SB_GL_MAX_3D_TEXTURE_SIZE 0x8073
#define SB_GL_UNSIGNED_INT_2_10_10_10_REV 0x8368
#define SB_GL_MAX_ELEMENTS_VERTICES 0x80E8
#define SB_GL_MAX_ELEMENTS_INDICES 0x80E9
#define SB_GL_TEXTURE_MIN_LOD 0x813A
#define SB_GL_TEXTURE_MAX_LOD 0x813B
#define SB_GL_TEXTURE_BASE_LEVEL 0x813C
#define SB_GL_TEXTURE_MAX_LEVEL 0x813D
#define SB_GL_MIN 0x8007
#define SB_GL_MAX 0x8008
#define SB_GL_DEPTH_COMPONENT24 0x81A6
#define SB_GL_MAX_TEXTURE_LOD_BIAS 0x84FD
#define SB_GL_TEXTURE_COMPARE_MODE 0x884C
#define SB_GL_TEXTURE_COMPARE_FUNC 0x884D
#define SB_GL_CURRENT_QUERY 0x8865
#define SB_GL_QUERY_RESULT 0x8866
#define SB_GL_QUERY_RESULT_AVAILABLE 0x8867
#define SB_GL_BUFFER_MAPPED 0x88BC
#define SB_GL_BUFFER_MAP_POINTER 0x88BD
#define SB_GL_STREAM_READ 0x88E1
#define SB_GL_STREAM_COPY 0x88E2
#define SB_GL_STATIC_READ 0x88E5
#define SB_GL_STATIC_COPY 0x88E6
#define SB_GL_DYNAMIC_READ 0x88E9
#define SB_GL_DYNAMIC_COPY 0x88EA
#define SB_GL_MAX_DRAW_BUFFERS 0x8824
#define SB_GL_DRAW_BUFFER0 0x8825
#define SB_GL_DRAW_BUFFER1 0x8826
#define SB_GL_DRAW_BUFFER2 0x8827
#define SB_GL_DRAW_BUFFER3 0x8828
#define SB_GL_DRAW_BUFFER4 0x8829
#define SB_GL_DRAW_BUFFER5 0x882A
#define SB_GL_DRAW_BUFFER6 0x882B
#define SB_GL_DRAW_BUFFER7 0x882C
#define SB_GL_DRAW_BUFFER8 0x882D
#define SB_GL_DRAW_BUFFER9 0x882E
#define SB_GL_DRAW_BUFFER10 0x882F
#define SB_GL_DRAW_BUFFER11 0x8830
#define SB_GL_DRAW_BUFFER12 0x8831
#define SB_GL_DRAW_BUFFER13 0x8832
#define SB_GL_DRAW_BUFFER14 0x8833
#define SB_GL_DRAW_BUFFER15 0x8834
#define SB_GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49
#define SB_GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A
#define SB_GL_SAMPLER_3D 0x8B5F
#define SB_GL_SAMPLER_2D_SHADOW 0x8B62
#define SB_GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B
#define SB_GL_PIXEL_PACK_BUFFER 0x88EB
#define SB_GL_PIXEL_UNPACK_BUFFER 0x88EC
#define SB_GL_PIXEL_PACK_BUFFER_BINDING 0x88ED
#define SB_GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF
#define SB_GL_FLOAT_MAT2x3 0x8B65
#define SB_GL_FLOAT_MAT2x4 0x8B66
#define SB_GL_FLOAT_MAT3x2 0x8B67
#define SB_GL_FLOAT_MAT3x4 0x8B68
#define SB_GL_FLOAT_MAT4x2 0x8B69
#define SB_GL_FLOAT_MAT4x3 0x8B6A
#define SB_GL_SRGB 0x8C40
#define SB_GL_SRGB8 0x8C41
#define SB_GL_SRGB8_ALPHA8 0x8C43
#define SB_GL_COMPARE_REF_TO_TEXTURE 0x884E
#define SB_GL_MAJOR_VERSION 0x821B
#define SB_GL_MINOR_VERSION 0x821C
#define SB_GL_NUM_EXTENSIONS 0x821D
#define SB_GL_RGBA32F 0x8814
#define SB_GL_RGB32F 0x8815
#define SB_GL_RGBA16F 0x881A
#define SB_GL_RGB16F 0x881B
#define SB_GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD
#define SB_GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF
#define SB_GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904
#define SB_GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905
#define SB_GL_MAX_VARYING_COMPONENTS 0x8B4B
#define SB_GL_TEXTURE_2D_ARRAY 0x8C1A
#define SB_GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D
#define SB_GL_R11F_G11F_B10F 0x8C3A
#define SB_GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B
#define SB_GL_RGB9_E5 0x8C3D
#define SB_GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E
#define SB_GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76
#define SB_GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F
#define SB_GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80
#define SB_GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83
#define SB_GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84
#define SB_GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85
#define SB_GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88
#define SB_GL_RASTERIZER_DISCARD 0x8C89
#define SB_GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A
#define SB_GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B
#define SB_GL_INTERLEAVED_ATTRIBS 0x8C8C
#define SB_GL_SEPARATE_ATTRIBS 0x8C8D
#define SB_GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E
#define SB_GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F
#define SB_GL_RGBA32UI 0x8D70
#define SB_GL_RGB32UI 0x8D71
#define SB_GL_RGBA16UI 0x8D76
#define SB_GL_RGB16UI 0x8D77
#define SB_GL_RGBA8UI 0x8D7C
#define SB_GL_RGB8UI 0x8D7D
#define SB_GL_RGBA32I 0x8D82
#define SB_GL_RGB32I 0x8D83
#define SB_GL_RGBA16I 0x8D88
#define SB_GL_RGB16I 0x8D89
#define SB_GL_RGBA8I 0x8D8E
#define SB_GL_RGB8I 0x8D8F
#define SB_GL_RED_INTEGER 0x8D94
#define SB_GL_RGB_INTEGER 0x8D98
#define SB_GL_RGBA_INTEGER 0x8D99
#define SB_GL_SAMPLER_2D_ARRAY 0x8DC1
#define SB_GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4
#define SB_GL_SAMPLER_CUBE_SHADOW 0x8DC5
#define SB_GL_UNSIGNED_INT_VEC2 0x8DC6
#define SB_GL_UNSIGNED_INT_VEC3 0x8DC7
#define SB_GL_UNSIGNED_INT_VEC4 0x8DC8
#define SB_GL_INT_SAMPLER_2D 0x8DCA
#define SB_GL_INT_SAMPLER_3D 0x8DCB
#define SB_GL_INT_SAMPLER_CUBE 0x8DCC
#define SB_GL_INT_SAMPLER_2D_ARRAY 0x8DCF
#define SB_GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2
#define SB_GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3
#define SB_GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4
#define SB_GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7
#define SB_GL_BUFFER_ACCESS_FLAGS 0x911F
#define SB_GL_BUFFER_MAP_LENGTH 0x9120
#define SB_GL_BUFFER_MAP_OFFSET 0x9121
#define SB_GL_DEPTH_COMPONENT32F 0x8CAC
#define SB_GL_DEPTH32F_STENCIL8 0x8CAD
#define SB_GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD
#define SB_GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210
#define SB_GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211
#define SB_GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212
#define SB_GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213
#define SB_GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214
#define SB_GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215
#define SB_GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216
#define SB_GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217
#define SB_GL_FRAMEBUFFER_DEFAULT 0x8218
#define SB_GL_FRAMEBUFFER_UNDEFINED 0x8219
#define SB_GL_DEPTH_STENCIL_ATTACHMENT 0x821A
#define SB_GL_DEPTH_STENCIL 0x84F9
#define SB_GL_UNSIGNED_INT_24_8 0x84FA
#define SB_GL_DEPTH24_STENCIL8 0x88F0
#define SB_GL_UNSIGNED_NORMALIZED 0x8C17
#define SB_GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6
#define SB_GL_READ_FRAMEBUFFER 0x8CA8
#define SB_GL_DRAW_FRAMEBUFFER 0x8CA9
#define SB_GL_READ_FRAMEBUFFER_BINDING 0x8CAA
#define SB_GL_RENDERBUFFER_SAMPLES 0x8CAB
#define SB_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4
#define SB_GL_MAX_COLOR_ATTACHMENTS 0x8CDF
#define SB_GL_COLOR_ATTACHMENT1 0x8CE1
#define SB_GL_COLOR_ATTACHMENT2 0x8CE2
#define SB_GL_COLOR_ATTACHMENT3 0x8CE3
#define SB_GL_COLOR_ATTACHMENT4 0x8CE4
#define SB_GL_COLOR_ATTACHMENT5 0x8CE5
#define SB_GL_COLOR_ATTACHMENT6 0x8CE6
#define SB_GL_COLOR_ATTACHMENT7 0x8CE7
#define SB_GL_COLOR_ATTACHMENT8 0x8CE8
#define SB_GL_COLOR_ATTACHMENT9 0x8CE9
#define SB_GL_COLOR_ATTACHMENT10 0x8CEA
#define SB_GL_COLOR_ATTACHMENT11 0x8CEB
#define SB_GL_COLOR_ATTACHMENT12 0x8CEC
#define SB_GL_COLOR_ATTACHMENT13 0x8CED
#define SB_GL_COLOR_ATTACHMENT14 0x8CEE
#define SB_GL_COLOR_ATTACHMENT15 0x8CEF
#define SB_GL_COLOR_ATTACHMENT16 0x8CF0
#define SB_GL_COLOR_ATTACHMENT17 0x8CF1
#define SB_GL_COLOR_ATTACHMENT18 0x8CF2
#define SB_GL_COLOR_ATTACHMENT19 0x8CF3
#define SB_GL_COLOR_ATTACHMENT20 0x8CF4
#define SB_GL_COLOR_ATTACHMENT21 0x8CF5
#define SB_GL_COLOR_ATTACHMENT22 0x8CF6
#define SB_GL_COLOR_ATTACHMENT23 0x8CF7
#define SB_GL_COLOR_ATTACHMENT24 0x8CF8
#define SB_GL_COLOR_ATTACHMENT25 0x8CF9
#define SB_GL_COLOR_ATTACHMENT26 0x8CFA
#define SB_GL_COLOR_ATTACHMENT27 0x8CFB
#define SB_GL_COLOR_ATTACHMENT28 0x8CFC
#define SB_GL_COLOR_ATTACHMENT29 0x8CFD
#define SB_GL_COLOR_ATTACHMENT30 0x8CFE
#define SB_GL_COLOR_ATTACHMENT31 0x8CFF
#define SB_GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56
#define SB_GL_MAX_SAMPLES 0x8D57
#define SB_GL_HALF_FLOAT 0x140B
#define SB_GL_MAP_READ_BIT 0x0001
#define SB_GL_MAP_WRITE_BIT 0x0002
#define SB_GL_MAP_INVALIDATE_RANGE_BIT 0x0004
#define SB_GL_MAP_INVALIDATE_BUFFER_BIT 0x0008
#define SB_GL_MAP_FLUSH_EXPLICIT_BIT 0x0010
#define SB_GL_MAP_UNSYNCHRONIZED_BIT 0x0020
#define SB_GL_RG 0x8227
#define SB_GL_RG_INTEGER 0x8228
#define SB_GL_R8 0x8229
#define SB_GL_RG8 0x822B
#define SB_GL_R16F 0x822D
#define SB_GL_R32F 0x822E
#define SB_GL_RG16F 0x822F
#define SB_GL_RG32F 0x8230
#define SB_GL_R8I 0x8231
#define SB_GL_R8UI 0x8232
#define SB_GL_R16I 0x8233
#define SB_GL_R16UI 0x8234
#define SB_GL_R32I 0x8235
#define SB_GL_R32UI 0x8236
#define SB_GL_RG8I 0x8237
#define SB_GL_RG8UI 0x8238
#define SB_GL_RG16I 0x8239
#define SB_GL_RG16UI 0x823A
#define SB_GL_RG32I 0x823B
#define SB_GL_RG32UI 0x823C
#define SB_GL_VERTEX_ARRAY_BINDING 0x85B5
#define SB_GL_R8_SNORM 0x8F94
#define SB_GL_RG8_SNORM 0x8F95
#define SB_GL_RGB8_SNORM 0x8F96
#define SB_GL_RGBA8_SNORM 0x8F97
#define SB_GL_SIGNED_NORMALIZED 0x8F9C
#define SB_GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69
#define SB_GL_COPY_READ_BUFFER 0x8F36
#define SB_GL_COPY_WRITE_BUFFER 0x8F37
#define SB_GL_COPY_READ_BUFFER_BINDING 0x8F36
#define SB_GL_COPY_WRITE_BUFFER_BINDING 0x8F37
#define SB_GL_UNIFORM_BUFFER 0x8A11
#define SB_GL_UNIFORM_BUFFER_BINDING 0x8A28
#define SB_GL_UNIFORM_BUFFER_START 0x8A29
#define SB_GL_UNIFORM_BUFFER_SIZE 0x8A2A
#define SB_GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B
#define SB_GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D
#define SB_GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E
#define SB_GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F
#define SB_GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30
#define SB_GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31
#define SB_GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33
#define SB_GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34
#define SB_GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35
#define SB_GL_ACTIVE_UNIFORM_BLOCKS 0x8A36
#define SB_GL_UNIFORM_TYPE 0x8A37
#define SB_GL_UNIFORM_SIZE 0x8A38
#define SB_GL_UNIFORM_NAME_LENGTH 0x8A39
#define SB_GL_UNIFORM_BLOCK_INDEX 0x8A3A
#define SB_GL_UNIFORM_OFFSET 0x8A3B
#define SB_GL_UNIFORM_ARRAY_STRIDE 0x8A3C
#define SB_GL_UNIFORM_MATRIX_STRIDE 0x8A3D
#define SB_GL_UNIFORM_IS_ROW_MAJOR 0x8A3E
#define SB_GL_UNIFORM_BLOCK_BINDING 0x8A3F
#define SB_GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40
#define SB_GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41
#define SB_GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42
#define SB_GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43
#define SB_GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44
#define SB_GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46
#define SB_GL_INVALID_INDEX 0xFFFFFFFFu
#define SB_GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122
#define SB_GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125
#define SB_GL_MAX_SERVER_WAIT_TIMEOUT 0x9111
#define SB_GL_OBJECT_TYPE 0x9112
#define SB_GL_SYNC_CONDITION 0x9113
#define SB_GL_SYNC_STATUS 0x9114
#define SB_GL_SYNC_FLAGS 0x9115
#define SB_GL_SYNC_FENCE 0x9116
#define SB_GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117
#define SB_GL_UNSIGNALED 0x9118
#define SB_GL_SIGNALED 0x9119
#define SB_GL_ALREADY_SIGNALED 0x911A
#define SB_GL_TIMEOUT_EXPIRED 0x911B
#define SB_GL_CONDITION_SATISFIED 0x911C
#define SB_GL_WAIT_FAILED 0x911D
#define SB_GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001
#define SB_GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull
#define SB_GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE
#define SB_GL_ANY_SAMPLES_PASSED 0x8C2F
#define SB_GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A
#define SB_GL_SAMPLER_BINDING 0x8919
#define SB_GL_RGB10_A2UI 0x906F
#define SB_GL_TEXTURE_SWIZZLE_R 0x8E42
#define SB_GL_TEXTURE_SWIZZLE_G 0x8E43
#define SB_GL_TEXTURE_SWIZZLE_B 0x8E44
#define SB_GL_TEXTURE_SWIZZLE_A 0x8E45
#define SB_GL_GREEN 0x1904
#define SB_GL_BLUE 0x1905
#define SB_GL_INT_2_10_10_10_REV 0x8D9F
#define SB_GL_TRANSFORM_FEEDBACK 0x8E22
#define SB_GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23
#define SB_GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24
#define SB_GL_TRANSFORM_FEEDBACK_BINDING 0x8E25
#define SB_GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257
#define SB_GL_PROGRAM_BINARY_LENGTH 0x8741
#define SB_GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE
#define SB_GL_PROGRAM_BINARY_FORMATS 0x87FF
#define SB_GL_COMPRESSED_R11_EAC 0x9270
#define SB_GL_COMPRESSED_SIGNED_R11_EAC 0x9271
#define SB_GL_COMPRESSED_RG11_EAC 0x9272
#define SB_GL_COMPRESSED_SIGNED_RG11_EAC 0x9273
#define SB_GL_COMPRESSED_RGB8_ETC2 0x9274
#define SB_GL_COMPRESSED_SRGB8_ETC2 0x9275
#define SB_GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276
#define SB_GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277
#define SB_GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278
#define SB_GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279
#define SB_GL_TEXTURE_IMMUTABLE_FORMAT 0x912F
#define SB_GL_MAX_ELEMENT_INDEX 0x8D6B
#define SB_GL_NUM_SAMPLE_COUNTS 0x9380
#define SB_GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF

#ifdef __cplusplus
}  // extern "C"
#endif

#endif  // SB_API_VERSION >= 11

#endif  // STARBOARD_GLES_H_
