blob: 3dac4b28c1b42f9f79ab27e105e8dc331f148640 [file] [log] [blame]
// 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.
#ifndef COBALT_RENDERER_EGL_AND_GLES_H_
#define COBALT_RENDERER_EGL_AND_GLES_H_
#include "base/logging.h"
#include "starboard/common/log.h"
#include "starboard/configuration.h"
// Defining COBALT_EGL_AND_GLES_LOGGING enables a greater amount of logging and
// error reporting with EGL and GLES calls throughout Cobalt. Each invoked
// function will be logged, and when checks are failed the EGL or GLES error
// code will be outputted.
#undef COBALT_EGL_AND_GLES_LOGGING
#if SB_API_VERSION >= 11
#include "starboard/egl.h"
#include "starboard/gles.h"
#define EGL_CALL_PREFIX ::cobalt::renderer::CobaltGetEglInterface().
#define GL_CALL_PREFIX ::cobalt::renderer::CobaltGetGlesInterface().
#else // SB_API_VERSION < 11
#include <EGL/egl.h>
#include <EGL/eglext.h>
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
#if defined(GLES3_SUPPORTED)
#include <GLES3/gl3.h>
#endif // defined(GLES3_SUPPORTED)
#define EGL_CALL_PREFIX
#define GL_CALL_PREFIX
#endif // SB_API_VERSION >= 11
#if defined(COBALT_EGL_AND_GLES_LOGGING)
#define EGL_DCHECK_MAYBE_LOG(x) SB_LOG(INFO) << #x;
#define GL_DCHECK_MAYBE_LOG(x) SB_LOG(INFO) << #x;
#else // !defined(COBALT_EGL_AND_GLES_LOGGING)
#define EGL_DCHECK_MAYBE_LOG(x)
#define GL_DCHECK_MAYBE_LOG(x)
#endif // defined(COBALT_EGL_AND_GLES_LOGGING)
#define EGL_DCHECK(x) \
do { \
EGL_DCHECK_MAYBE_LOG(x); \
const int32_t COBALT_EGL_ERRNO = (EGL_CALL_PREFIX eglGetError()); \
SB_DCHECK(COBALT_EGL_ERRNO == EGL_SUCCESS) \
<< #x << " exited with code: " << COBALT_EGL_ERRNO; \
} while (false)
#define GL_DCHECK(x) \
do { \
GL_DCHECK_MAYBE_LOG(x); \
const int32_t COBALT_GL_ERRNO = (GL_CALL_PREFIX glGetError()); \
SB_DCHECK(COBALT_GL_ERRNO == GL_NO_ERROR) \
<< #x << " exited with code: " << COBALT_GL_ERRNO; \
} while (false)
#if SB_API_VERSION >= 11
namespace cobalt {
namespace renderer {
inline const SbEglInterface& CobaltGetEglInterface() {
static const SbEglInterface* egl_interface = SbGetEglInterface();
return *egl_interface;
}
inline const SbGlesInterface& CobaltGetGlesInterface() {
static const SbGlesInterface* gles_interface = SbGetGlesInterface();
return *gles_interface;
}
} // namespace renderer
} // namespace cobalt
#endif // SB_API_VERSION >= 11
// The following *_CALL, *_CALL_SIMPLE macros provide a mechanism to
// transparently use the Starboard OpenGL ES and EGL interfaces if available,
// while also providing error-checking. The *_CALL macros should be used when
// the return value of the function to invoke is not desired, otherwise use
// *_CALL_SIMPLE to propagate the returned value. For example:
//
// eglMakeCurrent(...) becomes EGL_CALL(eglMakeCurrent(...)).
// ... = eglGetError() becomes ... = EGL_CALL_SIMPLE(eglGetError()).
#define EGL_CALL(x) \
do { \
EGL_CALL_PREFIX x; \
EGL_DCHECK(x); \
} while (false)
#define GL_CALL(x) \
do { \
GL_CALL_PREFIX x; \
GL_DCHECK(x); \
} while (false)
#if defined(COBALT_EGL_AND_GLES_LOGGING)
#define EGL_CALL_SIMPLE(x) \
([&]() { \
SB_LOG(INFO) << #x; \
return EGL_CALL_PREFIX x; \
}())
#define GL_CALL_SIMPLE(x) \
([&]() { \
SB_LOG(INFO) << #x; \
return GL_CALL_PREFIX x; \
}())
#else // !defined(COBALT_EGL_AND_GLES_LOGGING)
#define EGL_CALL_SIMPLE(x) (EGL_CALL_PREFIX x)
#define GL_CALL_SIMPLE(x) (GL_CALL_PREFIX x)
#endif // defined(COBALT_EGL_AND_GLES_LOGGING)
#if SB_API_VERSION >= 11
// EGL TYPES
#define EGLint SbEglInt32
#define EGLNativeDisplayType SbEglNativeDisplayType
#define EGLNativePixmapType SbEglNativePixmapType
#define EGLNativeWindowType SbEglNativeWindowType
#define __eglMustCastToProperFunctionPointerType \
SbEglCastsToProperFunctionPointerType
#define EGLAttrib SbEglAttrib
#define EGLBoolean SbEglBoolean
#define EGLClientBuffer SbEglClientBuffer
#define EGLConfig SbEglConfig
#define EGLContext SbEglContext
#define EGLDisplay SbEglDisplay
#define EGLenum SbEglEnum
#define EGLImage SbEglImage
#define EGLSurface SbEglSurface
#define EGLSync SbEglSync
#define EGLTime SbEglTime
// GL TYPES
#define GLboolean SbGlBoolean
#define GLbitfield SbGlBitfield
#define GLchar SbGlChar
#define GLclampf SbGlClampf
#define GLenum SbGlEnum
#define GLfixed SbGlFixed
#define GLfloat SbGlFloat
#define GLbyte SbGlByte
#define GLshort SbGlInt16
#define GLfixed SbGlFixed
#define GLint SbGlInt32
#define GLint64 SbGlInt64
#define GLintptr SbGlIntPtr
#define GLsizei SbGlSizei
#define GLsizeiptr SbGlSizeiPtr
#define GLsync SbGlSync
#define GLubyte SbGlUInt8
#define GLushort SbGlUInt16
#define GLuint SbGlUInt32
#define GLuint64 SbGlUInt64
#define GLvoid SbGlVoid
#define GLhalf SbGlUInt16
// EGL_VERSION_1_0
#define EGL_ALPHA_SIZE SB_EGL_ALPHA_SIZE
#define EGL_BAD_ACCESS SB_EGL_BAD_ACCESS
#define EGL_BAD_ALLOC SB_EGL_BAD_ALLOC
#define EGL_BAD_ATTRIBUTE SB_EGL_BAD_ATTRIBUTE
#define EGL_BAD_CONFIG SB_EGL_BAD_CONFIG
#define EGL_BAD_CONTEXT SB_EGL_BAD_CONTEXT
#define EGL_BAD_CURRENT_SURFACE SB_EGL_BAD_CURRENT_SURFACE
#define EGL_BAD_DISPLAY SB_EGL_BAD_DISPLAY
#define EGL_BAD_MATCH SB_EGL_BAD_MATCH
#define EGL_BAD_NATIVE_PIXMAP SB_EGL_BAD_NATIVE_PIXMAP
#define EGL_BAD_NATIVE_WINDOW SB_EGL_BAD_NATIVE_WINDOW
#define EGL_BAD_PARAMETER SB_EGL_BAD_PARAMETER
#define EGL_BAD_SURFACE SB_EGL_BAD_SURFACE
#define EGL_BLUE_SIZE SB_EGL_BLUE_SIZE
#define EGL_BUFFER_SIZE SB_EGL_BUFFER_SIZE
#define EGL_CONFIG_CAVEAT SB_EGL_CONFIG_CAVEAT
#define EGL_CONFIG_ID SB_EGL_CONFIG_ID
#define EGL_CORE_NATIVE_ENGINE SB_EGL_CORE_NATIVE_ENGINE
#define EGL_DEPTH_SIZE SB_EGL_DEPTH_SIZE
#define EGL_DONT_CARE SB_EGL_DONT_CARE
#define EGL_DRAW SB_EGL_DRAW
#define EGL_EXTENSIONS SB_EGL_EXTENSIONS
#define EGL_FALSE SB_EGL_FALSE
#define EGL_GREEN_SIZE SB_EGL_GREEN_SIZE
#define EGL_HEIGHT SB_EGL_HEIGHT
#define EGL_LARGEST_PBUFFER SB_EGL_LARGEST_PBUFFER
#define EGL_LEVEL SB_EGL_LEVEL
#define EGL_MAX_PBUFFER_HEIGHT SB_EGL_MAX_PBUFFER_HEIGHT
#define EGL_MAX_PBUFFER_PIXELS SB_EGL_MAX_PBUFFER_PIXELS
#define EGL_MAX_PBUFFER_WIDTH SB_EGL_MAX_PBUFFER_WIDTH
#define EGL_NATIVE_RENDERABLE SB_EGL_NATIVE_RENDERABLE
#define EGL_NATIVE_VISUAL_ID SB_EGL_NATIVE_VISUAL_ID
#define EGL_NATIVE_VISUAL_TYPE SB_EGL_NATIVE_VISUAL_TYPE
#define EGL_NONE SB_EGL_NONE
#define EGL_NON_CONFORMANT_CONFIG SB_EGL_NON_CONFORMANT_CONFIG
#define EGL_NOT_INITIALIZED SB_EGL_NOT_INITIALIZED
#define EGL_NO_CONTEXT SB_EGL_NO_CONTEXT
#define EGL_NO_DISPLAY SB_EGL_NO_DISPLAY
#define EGL_NO_SURFACE SB_EGL_NO_SURFACE
#define EGL_PBUFFER_BIT SB_EGL_PBUFFER_BIT
#define EGL_PIXMAP_BIT SB_EGL_PIXMAP_BIT
#define EGL_READ SB_EGL_READ
#define EGL_RED_SIZE SB_EGL_RED_SIZE
#define EGL_SAMPLES SB_EGL_SAMPLES
#define EGL_SAMPLE_BUFFERS SB_EGL_SAMPLE_BUFFERS
#define EGL_SLOW_CONFIG SB_EGL_SLOW_CONFIG
#define EGL_STENCIL_SIZE SB_EGL_STENCIL_SIZE
#define EGL_SUCCESS SB_EGL_SUCCESS
#define EGL_SURFACE_TYPE SB_EGL_SURFACE_TYPE
#define EGL_TRANSPARENT_BLUE_VALUE SB_EGL_TRANSPARENT_BLUE_VALUE
#define EGL_TRANSPARENT_GREEN_VALUE SB_EGL_TRANSPARENT_GREEN_VALUE
#define EGL_TRANSPARENT_RED_VALUE SB_EGL_TRANSPARENT_RED_VALUE
#define EGL_TRANSPARENT_RGB SB_EGL_TRANSPARENT_RGB
#define EGL_TRANSPARENT_TYPE SB_EGL_TRANSPARENT_TYPE
#define EGL_TRUE SB_EGL_TRUE
#define EGL_VENDOR SB_EGL_VENDOR
#define EGL_VERSION SB_EGL_VERSION
#define EGL_WIDTH SB_EGL_WIDTH
#define EGL_WINDOW_BIT SB_EGL_WINDOW_BIT
// EGL_VERSION_1_1
#define EGL_BACK_BUFFER SB_EGL_BACK_BUFFER
#define EGL_BIND_TO_TEXTURE_RGB SB_EGL_BIND_TO_TEXTURE_RGB
#define EGL_BIND_TO_TEXTURE_RGBA SB_EGL_BIND_TO_TEXTURE_RGBA
#define EGL_CONTEXT_LOST SB_EGL_CONTEXT_LOST
#define EGL_MIN_SWAP_INTERVAL SB_EGL_MIN_SWAP_INTERVAL
#define EGL_MAX_SWAP_INTERVAL SB_EGL_MAX_SWAP_INTERVAL
#define EGL_MIPMAP_TEXTURE SB_EGL_MIPMAP_TEXTURE
#define EGL_MIPMAP_LEVEL SB_EGL_MIPMAP_LEVEL
#define EGL_NO_TEXTURE SB_EGL_NO_TEXTURE
#define EGL_TEXTURE_2D SB_EGL_TEXTURE_2D
#define EGL_TEXTURE_FORMAT SB_EGL_TEXTURE_FORMAT
#define EGL_TEXTURE_RGB SB_EGL_TEXTURE_RGB
#define EGL_TEXTURE_RGBA SB_EGL_TEXTURE_RGBA
#define EGL_TEXTURE_TARGET SB_EGL_TEXTURE_TARGET
// EGL_VERSION_1_2
#define EGL_ALPHA_FORMAT SB_EGL_ALPHA_FORMAT
#define EGL_ALPHA_FORMAT_NONPRE SB_EGL_ALPHA_FORMAT_NONPRE
#define EGL_ALPHA_FORMAT_PRE SB_EGL_ALPHA_FORMAT_PRE
#define EGL_ALPHA_MASK_SIZE SB_EGL_ALPHA_MASK_SIZE
#define EGL_BUFFER_PRESERVED SB_EGL_BUFFER_PRESERVED
#define EGL_BUFFER_DESTROYED SB_EGL_BUFFER_DESTROYED
#define EGL_CLIENT_APIS SB_EGL_CLIENT_APIS
#define EGL_COLORSPACE SB_EGL_COLORSPACE
#define EGL_COLORSPACE_sRGB SB_EGL_COLORSPACE_sRGB
#define EGL_COLORSPACE_LINEAR SB_EGL_COLORSPACE_LINEAR
#define EGL_COLOR_BUFFER_TYPE SB_EGL_COLOR_BUFFER_TYPE
#define EGL_CONTEXT_CLIENT_TYPE SB_EGL_CONTEXT_CLIENT_TYPE
#define EGL_DISPLAY_SCALING SB_EGL_DISPLAY_SCALING
#define EGL_HORIZONTAL_RESOLUTION SB_EGL_HORIZONTAL_RESOLUTION
#define EGL_LUMINANCE_BUFFER SB_EGL_LUMINANCE_BUFFER
#define EGL_LUMINANCE_SIZE SB_EGL_LUMINANCE_SIZE
#define EGL_OPENGL_ES_BIT SB_EGL_OPENGL_ES_BIT
#define EGL_OPENVG_BIT SB_EGL_OPENVG_BIT
#define EGL_OPENGL_ES_API SB_EGL_OPENGL_ES_API
#define EGL_OPENVG_API SB_EGL_OPENVG_API
#define EGL_OPENVG_IMAGE SB_EGL_OPENVG_IMAGE
#define EGL_PIXEL_ASPECT_RATIO SB_EGL_PIXEL_ASPECT_RATIO
#define EGL_RENDERABLE_TYPE SB_EGL_RENDERABLE_TYPE
#define EGL_RENDER_BUFFER SB_EGL_RENDER_BUFFER
#define EGL_RGB_BUFFER SB_EGL_RGB_BUFFER
#define EGL_SINGLE_BUFFER SB_EGL_SINGLE_BUFFER
#define EGL_SWAP_BEHAVIOR SB_EGL_SWAP_BEHAVIOR
#define EGL_UNKNOWN SB_EGL_UNKNOWN
#define EGL_VERTICAL_RESOLUTION SB_EGL_VERTICAL_RESOLUTION
// EGL_VERSION_1_3
#define EGL_CONFORMANT SB_EGL_CONFORMANT
#define EGL_CONTEXT_CLIENT_VERSION SB_EGL_CONTEXT_CLIENT_VERSION
#define EGL_MATCH_NATIVE_PIXMAP SB_EGL_MATCH_NATIVE_PIXMAP
#define EGL_OPENGL_ES2_BIT SB_EGL_OPENGL_ES2_BIT
#define EGL_VG_ALPHA_FORMAT SB_EGL_VG_ALPHA_FORMAT
#define EGL_VG_ALPHA_FORMAT_NONPRE SB_EGL_VG_ALPHA_FORMAT_NONPRE
#define EGL_VG_ALPHA_FORMAT_PRE SB_EGL_VG_ALPHA_FORMAT_PRE
#define EGL_VG_ALPHA_FORMAT_PRE_BIT SB_EGL_VG_ALPHA_FORMAT_PRE_BIT
#define EGL_VG_COLORSPACE SB_EGL_VG_COLORSPACE
#define EGL_VG_COLORSPACE_sRGB SB_EGL_VG_COLORSPACE_sRGB
#define EGL_VG_COLORSPACE_LINEAR SB_EGL_VG_COLORSPACE_LINEAR
#define EGL_VG_COLORSPACE_LINEAR_BIT SB_EGL_VG_COLORSPACE_LINEAR_BIT
// EGL_VERSION_1_4
#define EGL_DEFAULT_DISPLAY SB_EGL_DEFAULT_DISPLAY
#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT SB_EGL_MULTISAMPLE_RESOLVE_BOX_BIT
#define EGL_MULTISAMPLE_RESOLVE SB_EGL_MULTISAMPLE_RESOLVE
#define EGL_MULTISAMPLE_RESOLVE_DEFAULT SB_EGL_MULTISAMPLE_RESOLVE_DEFAULT
#define EGL_MULTISAMPLE_RESOLVE_BOX SB_EGL_MULTISAMPLE_RESOLVE_BOX
#define EGL_OPENGL_API SB_EGL_OPENGL_API
#define EGL_OPENGL_BIT SB_EGL_OPENGL_BIT
#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT SB_EGL_SWAP_BEHAVIOR_PRESERVED_BIT
// EGL_VERSION_1_5
#define EGL_CONTEXT_MAJOR_VERSION SB_EGL_CONTEXT_MAJOR_VERSION
#define EGL_CONTEXT_MINOR_VERSION SB_EGL_CONTEXT_MINOR_VERSION
#define EGL_CONTEXT_OPENGL_PROFILE_MASK SB_EGL_CONTEXT_OPENGL_PROFILE_MASK
#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY \
SB_EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY
#define EGL_NO_RESET_NOTIFICATION SB_EGL_NO_RESET_NOTIFICATION
#define EGL_LOSE_CONTEXT_ON_RESET SB_EGL_LOSE_CONTEXT_ON_RESET
#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT \
SB_EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT
#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT \
SB_EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT
#define EGL_CONTEXT_OPENGL_DEBUG SB_EGL_CONTEXT_OPENGL_DEBUG
#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE \
SB_EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE
#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS SB_EGL_CONTEXT_OPENGL_ROBUST_ACCESS
#define EGL_OPENGL_ES3_BIT SB_EGL_OPENGL_ES3_BIT
#define EGL_CL_EVENT_HANDLE SB_EGL_CL_EVENT_HANDLE
#define EGL_SYNC_CL_EVENT SB_EGL_SYNC_CL_EVENT
#define EGL_SYNC_CL_EVENT_COMPLETE SB_EGL_SYNC_CL_EVENT_COMPLETE
#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE SB_EGL_SYNC_PRIOR_COMMANDS_COMPLETE
#define EGL_SYNC_TYPE SB_EGL_SYNC_TYPE
#define EGL_SYNC_STATUS SB_EGL_SYNC_STATUS
#define EGL_SYNC_CONDITION SB_EGL_SYNC_CONDITION
#define EGL_SIGNALED SB_EGL_SIGNALED
#define EGL_UNSIGNALED SB_EGL_UNSIGNALED
#define EGL_SYNC_FLUSH_COMMANDS_BIT SB_EGL_SYNC_FLUSH_COMMANDS_BIT
#define EGL_FOREVER SB_EGL_FOREVER
#define EGL_TIMEOUT_EXPIRED SB_EGL_TIMEOUT_EXPIRED
#define EGL_CONDITION_SATISFIED SB_EGL_CONDITION_SATISFIED
#define EGL_NO_SYNC SB_EGL_NO_SYNC
#define EGL_SYNC_FENCE SB_EGL_SYNC_FENCE
#define EGL_GL_COLORSPACE SB_EGL_GL_COLORSPACE
#define EGL_GL_COLORSPACE_SRGB SB_EGL_GL_COLORSPACE_SRGB
#define EGL_GL_COLORSPACE_LINEAR SB_EGL_GL_COLORSPACE_LINEAR
#define EGL_GL_RENDERBUFFER SB_EGL_GL_RENDERBUFFER
#define EGL_GL_TEXTURE_2D SB_EGL_GL_TEXTURE_2D
#define EGL_GL_TEXTURE_LEVEL SB_EGL_GL_TEXTURE_LEVEL
#define EGL_GL_TEXTURE_3D SB_EGL_GL_TEXTURE_3D
#define EGL_GL_TEXTURE_ZOFFSET SB_EGL_GL_TEXTURE_ZOFFSET
#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X SB_EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X
#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X SB_EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X
#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y SB_EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y
#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y SB_EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y
#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z SB_EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z
#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z SB_EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z
#define EGL_IMAGE_PRESERVED SB_EGL_IMAGE_PRESERVED
#define EGL_NO_IMAGE SB_EGL_NO_IMAGE
#define GL_DEPTH_BUFFER_BIT SB_GL_DEPTH_BUFFER_BIT
#define GL_STENCIL_BUFFER_BIT SB_GL_STENCIL_BUFFER_BIT
#define GL_COLOR_BUFFER_BIT SB_GL_COLOR_BUFFER_BIT
#define GL_FALSE SB_GL_FALSE
#define GL_TRUE SB_GL_TRUE
#define GL_POINTS SB_GL_POINTS
#define GL_LINES SB_GL_LINES
#define GL_LINE_LOOP SB_GL_LINE_LOOP
#define GL_LINE_STRIP SB_GL_LINE_STRIP
#define GL_TRIANGLES SB_GL_TRIANGLES
#define GL_TRIANGLE_STRIP SB_GL_TRIANGLE_STRIP
#define GL_TRIANGLE_FAN SB_GL_TRIANGLE_FAN
#define GL_ZERO SB_GL_ZERO
#define GL_ONE SB_GL_ONE
#define GL_SRC_COLOR SB_GL_SRC_COLOR
#define GL_ONE_MINUS_SRC_COLOR SB_GL_ONE_MINUS_SRC_COLOR
#define GL_SRC_ALPHA SB_GL_SRC_ALPHA
#define GL_ONE_MINUS_SRC_ALPHA SB_GL_ONE_MINUS_SRC_ALPHA
#define GL_DST_ALPHA SB_GL_DST_ALPHA
#define GL_ONE_MINUS_DST_ALPHA SB_GL_ONE_MINUS_DST_ALPHA
#define GL_DST_COLOR SB_GL_DST_COLOR
#define GL_ONE_MINUS_DST_COLOR SB_GL_ONE_MINUS_DST_COLOR
#define GL_SRC_ALPHA_SATURATE SB_GL_SRC_ALPHA_SATURATE
#define GL_FUNC_ADD SB_GL_FUNC_ADD
#define GL_BLEND_EQUATION SB_GL_BLEND_EQUATION
#define GL_BLEND_EQUATION_RGB SB_GL_BLEND_EQUATION_RGB
#define GL_BLEND_EQUATION_ALPHA SB_GL_BLEND_EQUATION_ALPHA
#define GL_FUNC_SUBTRACT SB_GL_FUNC_SUBTRACT
#define GL_FUNC_REVERSE_SUBTRACT SB_GL_FUNC_REVERSE_SUBTRACT
#define GL_BLEND_DST_RGB SB_GL_BLEND_DST_RGB
#define GL_BLEND_SRC_RGB SB_GL_BLEND_SRC_RGB
#define GL_BLEND_DST_ALPHA SB_GL_BLEND_DST_ALPHA
#define GL_BLEND_SRC_ALPHA SB_GL_BLEND_SRC_ALPHA
#define GL_CONSTANT_COLOR SB_GL_CONSTANT_COLOR
#define GL_ONE_MINUS_CONSTANT_COLOR SB_GL_ONE_MINUS_CONSTANT_COLOR
#define GL_CONSTANT_ALPHA SB_GL_CONSTANT_ALPHA
#define GL_ONE_MINUS_CONSTANT_ALPHA SB_GL_ONE_MINUS_CONSTANT_ALPHA
#define GL_BLEND_COLOR SB_GL_BLEND_COLOR
#define GL_ARRAY_BUFFER SB_GL_ARRAY_BUFFER
#define GL_ELEMENT_ARRAY_BUFFER SB_GL_ELEMENT_ARRAY_BUFFER
#define GL_ARRAY_BUFFER_BINDING SB_GL_ARRAY_BUFFER_BINDING
#define GL_ELEMENT_ARRAY_BUFFER_BINDING SB_GL_ELEMENT_ARRAY_BUFFER_BINDING
#define GL_STREAM_DRAW SB_GL_STREAM_DRAW
#define GL_STATIC_DRAW SB_GL_STATIC_DRAW
#define GL_DYNAMIC_DRAW SB_GL_DYNAMIC_DRAW
#define GL_BUFFER_SIZE SB_GL_BUFFER_SIZE
#define GL_BUFFER_USAGE SB_GL_BUFFER_USAGE
#define GL_CURRENT_VERTEX_ATTRIB SB_GL_CURRENT_VERTEX_ATTRIB
#define GL_FRONT SB_GL_FRONT
#define GL_BACK SB_GL_BACK
#define GL_FRONT_AND_BACK SB_GL_FRONT_AND_BACK
#define GL_TEXTURE_2D SB_GL_TEXTURE_2D
#define GL_CULL_FACE SB_GL_CULL_FACE
#define GL_BLEND SB_GL_BLEND
#define GL_DITHER SB_GL_DITHER
#define GL_STENCIL_TEST SB_GL_STENCIL_TEST
#define GL_DEPTH_TEST SB_GL_DEPTH_TEST
#define GL_SCISSOR_TEST SB_GL_SCISSOR_TEST
#define GL_POLYGON_OFFSET_FILL SB_GL_POLYGON_OFFSET_FILL
#define GL_SAMPLE_ALPHA_TO_COVERAGE SB_GL_SAMPLE_ALPHA_TO_COVERAGE
#define GL_SAMPLE_COVERAGE SB_GL_SAMPLE_COVERAGE
#define GL_NO_ERROR SB_GL_NO_ERROR
#define GL_INVALID_ENUM SB_GL_INVALID_ENUM
#define GL_INVALID_VALUE SB_GL_INVALID_VALUE
#define GL_INVALID_OPERATION SB_GL_INVALID_OPERATION
#define GL_OUT_OF_MEMORY SB_GL_OUT_OF_MEMORY
#define GL_CW SB_GL_CW
#define GL_CCW SB_GL_CCW
#define GL_LINE_WIDTH SB_GL_LINE_WIDTH
#define GL_ALIASED_POINT_SIZE_RANGE SB_GL_ALIASED_POINT_SIZE_RANGE
#define GL_ALIASED_LINE_WIDTH_RANGE SB_GL_ALIASED_LINE_WIDTH_RANGE
#define GL_CULL_FACE_MODE SB_GL_CULL_FACE_MODE
#define GL_FRONT_FACE SB_GL_FRONT_FACE
#define GL_DEPTH_RANGE SB_GL_DEPTH_RANGE
#define GL_DEPTH_WRITEMASK SB_GL_DEPTH_WRITEMASK
#define GL_DEPTH_CLEAR_VALUE SB_GL_DEPTH_CLEAR_VALUE
#define GL_DEPTH_FUNC SB_GL_DEPTH_FUNC
#define GL_STENCIL_CLEAR_VALUE SB_GL_STENCIL_CLEAR_VALUE
#define GL_STENCIL_FUNC SB_GL_STENCIL_FUNC
#define GL_STENCIL_FAIL SB_GL_STENCIL_FAIL
#define GL_STENCIL_PASS_DEPTH_FAIL SB_GL_STENCIL_PASS_DEPTH_FAIL
#define GL_STENCIL_PASS_DEPTH_PASS SB_GL_STENCIL_PASS_DEPTH_PASS
#define GL_STENCIL_REF SB_GL_STENCIL_REF
#define GL_STENCIL_VALUE_MASK SB_GL_STENCIL_VALUE_MASK
#define GL_STENCIL_WRITEMASK SB_GL_STENCIL_WRITEMASK
#define GL_STENCIL_BACK_FUNC SB_GL_STENCIL_BACK_FUNC
#define GL_STENCIL_BACK_FAIL SB_GL_STENCIL_BACK_FAIL
#define GL_STENCIL_BACK_PASS_DEPTH_FAIL SB_GL_STENCIL_BACK_PASS_DEPTH_FAIL
#define GL_STENCIL_BACK_PASS_DEPTH_PASS SB_GL_STENCIL_BACK_PASS_DEPTH_PASS
#define GL_STENCIL_BACK_REF SB_GL_STENCIL_BACK_REF
#define GL_STENCIL_BACK_VALUE_MASK SB_GL_STENCIL_BACK_VALUE_MASK
#define GL_STENCIL_BACK_WRITEMASK SB_GL_STENCIL_BACK_WRITEMASK
#define GL_VIEWPORT SB_GL_VIEWPORT
#define GL_SCISSOR_BOX SB_GL_SCISSOR_BOX
#define GL_COLOR_CLEAR_VALUE SB_GL_COLOR_CLEAR_VALUE
#define GL_COLOR_WRITEMASK SB_GL_COLOR_WRITEMASK
#define GL_UNPACK_ALIGNMENT SB_GL_UNPACK_ALIGNMENT
#define GL_PACK_ALIGNMENT SB_GL_PACK_ALIGNMENT
#define GL_MAX_TEXTURE_SIZE SB_GL_MAX_TEXTURE_SIZE
#define GL_MAX_VIEWPORT_DIMS SB_GL_MAX_VIEWPORT_DIMS
#define GL_SUBPIXEL_BITS SB_GL_SUBPIXEL_BITS
#define GL_RED_BITS SB_GL_RED_BITS
#define GL_GREEN_BITS SB_GL_GREEN_BITS
#define GL_BLUE_BITS SB_GL_BLUE_BITS
#define GL_ALPHA_BITS SB_GL_ALPHA_BITS
#define GL_DEPTH_BITS SB_GL_DEPTH_BITS
#define GL_STENCIL_BITS SB_GL_STENCIL_BITS
#define GL_POLYGON_OFFSET_UNITS SB_GL_POLYGON_OFFSET_UNITS
#define GL_POLYGON_OFFSET_FACTOR SB_GL_POLYGON_OFFSET_FACTOR
#define GL_TEXTURE_BINDING_2D SB_GL_TEXTURE_BINDING_2D
#define GL_SAMPLE_BUFFERS SB_GL_SAMPLE_BUFFERS
#define GL_SAMPLES SB_GL_SAMPLES
#define GL_SAMPLE_COVERAGE_VALUE SB_GL_SAMPLE_COVERAGE_VALUE
#define GL_SAMPLE_COVERAGE_INVERT SB_GL_SAMPLE_COVERAGE_INVERT
#define GL_NUM_COMPRESSED_TEXTURE_FORMATS SB_GL_NUM_COMPRESSED_TEXTURE_FORMATS
#define GL_COMPRESSED_TEXTURE_FORMATS SB_GL_COMPRESSED_TEXTURE_FORMATS
#define GL_DONT_CARE SB_GL_DONT_CARE
#define GL_FASTEST SB_GL_FASTEST
#define GL_NICEST SB_GL_NICEST
#define GL_GENERATE_MIPMAP_HINT SB_GL_GENERATE_MIPMAP_HINT
#define GL_BYTE SB_GL_BYTE
#define GL_UNSIGNED_BYTE SB_GL_UNSIGNED_BYTE
#define GL_SHORT SB_GL_SHORT
#define GL_UNSIGNED_SHORT SB_GL_UNSIGNED_SHORT
#define GL_INT SB_GL_INT
#define GL_UNSIGNED_INT SB_GL_UNSIGNED_INT
#define GL_FLOAT SB_GL_FLOAT
#define GL_FIXED SB_GL_FIXED
#define GL_DEPTH_COMPONENT SB_GL_DEPTH_COMPONENT
#define GL_ALPHA SB_GL_ALPHA
#define GL_RGB SB_GL_RGB
#define GL_RGBA SB_GL_RGBA
#define GL_LUMINANCE SB_GL_LUMINANCE
#define GL_LUMINANCE_ALPHA SB_GL_LUMINANCE_ALPHA
#define GL_UNSIGNED_SHORT_4_4_4_4 SB_GL_UNSIGNED_SHORT_4_4_4_4
#define GL_UNSIGNED_SHORT_5_5_5_1 SB_GL_UNSIGNED_SHORT_5_5_5_1
#define GL_UNSIGNED_SHORT_5_6_5 SB_GL_UNSIGNED_SHORT_5_6_5
#define GL_FRAGMENT_SHADER SB_GL_FRAGMENT_SHADER
#define GL_VERTEX_SHADER SB_GL_VERTEX_SHADER
#define GL_MAX_VERTEX_ATTRIBS SB_GL_MAX_VERTEX_ATTRIBS
#define GL_MAX_VERTEX_UNIFORM_VECTORS SB_GL_MAX_VERTEX_UNIFORM_VECTORS
#define GL_MAX_VARYING_VECTORS SB_GL_MAX_VARYING_VECTORS
#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS \
SB_GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS
#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS SB_GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS
#define GL_MAX_TEXTURE_IMAGE_UNITS SB_GL_MAX_TEXTURE_IMAGE_UNITS
#define GL_MAX_FRAGMENT_UNIFORM_VECTORS SB_GL_MAX_FRAGMENT_UNIFORM_VECTORS
#define GL_SHADER_TYPE SB_GL_SHADER_TYPE
#define GL_DELETE_STATUS SB_GL_DELETE_STATUS
#define GL_LINK_STATUS SB_GL_LINK_STATUS
#define GL_VALIDATE_STATUS SB_GL_VALIDATE_STATUS
#define GL_ATTACHED_SHADERS SB_GL_ATTACHED_SHADERS
#define GL_ACTIVE_UNIFORMS SB_GL_ACTIVE_UNIFORMS
#define GL_ACTIVE_UNIFORM_MAX_LENGTH SB_GL_ACTIVE_UNIFORM_MAX_LENGTH
#define GL_ACTIVE_ATTRIBUTES SB_GL_ACTIVE_ATTRIBUTES
#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH SB_GL_ACTIVE_ATTRIBUTE_MAX_LENGTH
#define GL_SHADING_LANGUAGE_VERSION SB_GL_SHADING_LANGUAGE_VERSION
#define GL_CURRENT_PROGRAM SB_GL_CURRENT_PROGRAM
#define GL_NEVER SB_GL_NEVER
#define GL_LESS SB_GL_LESS
#define GL_EQUAL SB_GL_EQUAL
#define GL_LEQUAL SB_GL_LEQUAL
#define GL_GREATER SB_GL_GREATER
#define GL_NOTEQUAL SB_GL_NOTEQUAL
#define GL_GEQUAL SB_GL_GEQUAL
#define GL_ALWAYS SB_GL_ALWAYS
#define GL_KEEP SB_GL_KEEP
#define GL_REPLACE SB_GL_REPLACE
#define GL_INCR SB_GL_INCR
#define GL_DECR SB_GL_DECR
#define GL_INVERT SB_GL_INVERT
#define GL_INCR_WRAP SB_GL_INCR_WRAP
#define GL_DECR_WRAP SB_GL_DECR_WRAP
#define GL_VENDOR SB_GL_VENDOR
#define GL_RENDERER SB_GL_RENDERER
#define GL_VERSION SB_GL_VERSION
#define GL_EXTENSIONS SB_GL_EXTENSIONS
#define GL_NEAREST SB_GL_NEAREST
#define GL_LINEAR SB_GL_LINEAR
#define GL_NEAREST_MIPMAP_NEAREST SB_GL_NEAREST_MIPMAP_NEAREST
#define GL_LINEAR_MIPMAP_NEAREST SB_GL_LINEAR_MIPMAP_NEAREST
#define GL_NEAREST_MIPMAP_LINEAR SB_GL_NEAREST_MIPMAP_LINEAR
#define GL_LINEAR_MIPMAP_LINEAR SB_GL_LINEAR_MIPMAP_LINEAR
#define GL_TEXTURE_MAG_FILTER SB_GL_TEXTURE_MAG_FILTER
#define GL_TEXTURE_MIN_FILTER SB_GL_TEXTURE_MIN_FILTER
#define GL_TEXTURE_WRAP_S SB_GL_TEXTURE_WRAP_S
#define GL_TEXTURE_WRAP_T SB_GL_TEXTURE_WRAP_T
#define GL_TEXTURE SB_GL_TEXTURE
#define GL_TEXTURE_CUBE_MAP SB_GL_TEXTURE_CUBE_MAP
#define GL_TEXTURE_BINDING_CUBE_MAP SB_GL_TEXTURE_BINDING_CUBE_MAP
#define GL_TEXTURE_CUBE_MAP_POSITIVE_X SB_GL_TEXTURE_CUBE_MAP_POSITIVE_X
#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X SB_GL_TEXTURE_CUBE_MAP_NEGATIVE_X
#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y SB_GL_TEXTURE_CUBE_MAP_POSITIVE_Y
#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y SB_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y
#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z SB_GL_TEXTURE_CUBE_MAP_POSITIVE_Z
#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z SB_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z
#define GL_MAX_CUBE_MAP_TEXTURE_SIZE SB_GL_MAX_CUBE_MAP_TEXTURE_SIZE
#define GL_TEXTURE0 SB_GL_TEXTURE0
#define GL_TEXTURE1 SB_GL_TEXTURE1
#define GL_TEXTURE2 SB_GL_TEXTURE2
#define GL_TEXTURE3 SB_GL_TEXTURE3
#define GL_TEXTURE4 SB_GL_TEXTURE4
#define GL_TEXTURE5 SB_GL_TEXTURE5
#define GL_TEXTURE6 SB_GL_TEXTURE6
#define GL_TEXTURE7 SB_GL_TEXTURE7
#define GL_TEXTURE8 SB_GL_TEXTURE8
#define GL_TEXTURE9 SB_GL_TEXTURE9
#define GL_TEXTURE10 SB_GL_TEXTURE10
#define GL_TEXTURE11 SB_GL_TEXTURE11
#define GL_TEXTURE12 SB_GL_TEXTURE12
#define GL_TEXTURE13 SB_GL_TEXTURE13
#define GL_TEXTURE14 SB_GL_TEXTURE14
#define GL_TEXTURE15 SB_GL_TEXTURE15
#define GL_TEXTURE16 SB_GL_TEXTURE16
#define GL_TEXTURE17 SB_GL_TEXTURE17
#define GL_TEXTURE18 SB_GL_TEXTURE18
#define GL_TEXTURE19 SB_GL_TEXTURE19
#define GL_TEXTURE20 SB_GL_TEXTURE20
#define GL_TEXTURE21 SB_GL_TEXTURE21
#define GL_TEXTURE22 SB_GL_TEXTURE22
#define GL_TEXTURE23 SB_GL_TEXTURE23
#define GL_TEXTURE24 SB_GL_TEXTURE24
#define GL_TEXTURE25 SB_GL_TEXTURE25
#define GL_TEXTURE26 SB_GL_TEXTURE26
#define GL_TEXTURE27 SB_GL_TEXTURE27
#define GL_TEXTURE28 SB_GL_TEXTURE28
#define GL_TEXTURE29 SB_GL_TEXTURE29
#define GL_TEXTURE30 SB_GL_TEXTURE30
#define GL_TEXTURE31 SB_GL_TEXTURE31
#define GL_ACTIVE_TEXTURE SB_GL_ACTIVE_TEXTURE
#define GL_REPEAT SB_GL_REPEAT
#define GL_CLAMP_TO_EDGE SB_GL_CLAMP_TO_EDGE
#define GL_MIRRORED_REPEAT SB_GL_MIRRORED_REPEAT
#define GL_FLOAT_VEC2 SB_GL_FLOAT_VEC2
#define GL_FLOAT_VEC3 SB_GL_FLOAT_VEC3
#define GL_FLOAT_VEC4 SB_GL_FLOAT_VEC4
#define GL_INT_VEC2 SB_GL_INT_VEC2
#define GL_INT_VEC3 SB_GL_INT_VEC3
#define GL_INT_VEC4 SB_GL_INT_VEC4
#define GL_BOOL SB_GL_BOOL
#define GL_BOOL_VEC2 SB_GL_BOOL_VEC2
#define GL_BOOL_VEC3 SB_GL_BOOL_VEC3
#define GL_BOOL_VEC4 SB_GL_BOOL_VEC4
#define GL_FLOAT_MAT2 SB_GL_FLOAT_MAT2
#define GL_FLOAT_MAT3 SB_GL_FLOAT_MAT3
#define GL_FLOAT_MAT4 SB_GL_FLOAT_MAT4
#define GL_SAMPLER_2D SB_GL_SAMPLER_2D
#define GL_SAMPLER_CUBE SB_GL_SAMPLER_CUBE
#define GL_VERTEX_ATTRIB_ARRAY_ENABLED SB_GL_VERTEX_ATTRIB_ARRAY_ENABLED
#define GL_VERTEX_ATTRIB_ARRAY_SIZE SB_GL_VERTEX_ATTRIB_ARRAY_SIZE
#define GL_VERTEX_ATTRIB_ARRAY_STRIDE SB_GL_VERTEX_ATTRIB_ARRAY_STRIDE
#define GL_VERTEX_ATTRIB_ARRAY_TYPE SB_GL_VERTEX_ATTRIB_ARRAY_TYPE
#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED SB_GL_VERTEX_ATTRIB_ARRAY_NORMALIZED
#define GL_VERTEX_ATTRIB_ARRAY_POINTER SB_GL_VERTEX_ATTRIB_ARRAY_POINTER
#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING \
SB_GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING
#define GL_IMPLEMENTATION_COLOR_READ_TYPE SB_GL_IMPLEMENTATION_COLOR_READ_TYPE
#define GL_IMPLEMENTATION_COLOR_READ_FORMAT \
SB_GL_IMPLEMENTATION_COLOR_READ_FORMAT
#define GL_COMPILE_STATUS SB_GL_COMPILE_STATUS
#define GL_INFO_LOG_LENGTH SB_GL_INFO_LOG_LENGTH
#define GL_SHADER_SOURCE_LENGTH SB_GL_SHADER_SOURCE_LENGTH
#define GL_SHADER_COMPILER SB_GL_SHADER_COMPILER
#define GL_SHADER_BINARY_FORMATS SB_GL_SHADER_BINARY_FORMATS
#define GL_NUM_SHADER_BINARY_FORMATS SB_GL_NUM_SHADER_BINARY_FORMATS
#define GL_LOW_FLOAT SB_GL_LOW_FLOAT
#define GL_MEDIUM_FLOAT SB_GL_MEDIUM_FLOAT
#define GL_HIGH_FLOAT SB_GL_HIGH_FLOAT
#define GL_LOW_INT SB_GL_LOW_INT
#define GL_MEDIUM_INT SB_GL_MEDIUM_INT
#define GL_HIGH_INT SB_GL_HIGH_INT
#define GL_FRAMEBUFFER SB_GL_FRAMEBUFFER
#define GL_RENDERBUFFER SB_GL_RENDERBUFFER
#define GL_RGBA4 SB_GL_RGBA4
#define GL_RGB5_A1 SB_GL_RGB5_A1
#define GL_RGB565 SB_GL_RGB565
#define GL_DEPTH_COMPONENT16 SB_GL_DEPTH_COMPONENT16
#define GL_STENCIL_INDEX8 SB_GL_STENCIL_INDEX8
#define GL_RENDERBUFFER_WIDTH SB_GL_RENDERBUFFER_WIDTH
#define GL_RENDERBUFFER_HEIGHT SB_GL_RENDERBUFFER_HEIGHT
#define GL_RENDERBUFFER_INTERNAL_FORMAT SB_GL_RENDERBUFFER_INTERNAL_FORMAT
#define GL_RENDERBUFFER_RED_SIZE SB_GL_RENDERBUFFER_RED_SIZE
#define GL_RENDERBUFFER_GREEN_SIZE SB_GL_RENDERBUFFER_GREEN_SIZE
#define GL_RENDERBUFFER_BLUE_SIZE SB_GL_RENDERBUFFER_BLUE_SIZE
#define GL_RENDERBUFFER_ALPHA_SIZE SB_GL_RENDERBUFFER_ALPHA_SIZE
#define GL_RENDERBUFFER_DEPTH_SIZE SB_GL_RENDERBUFFER_DEPTH_SIZE
#define GL_RENDERBUFFER_STENCIL_SIZE SB_GL_RENDERBUFFER_STENCIL_SIZE
#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE \
SB_GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE
#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME \
SB_GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME
#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL \
SB_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL
#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE \
SB_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE
#define GL_COLOR_ATTACHMENT0 SB_GL_COLOR_ATTACHMENT0
#define GL_DEPTH_ATTACHMENT SB_GL_DEPTH_ATTACHMENT
#define GL_STENCIL_ATTACHMENT SB_GL_STENCIL_ATTACHMENT
#define GL_NONE SB_GL_NONE
#define GL_FRAMEBUFFER_COMPLETE SB_GL_FRAMEBUFFER_COMPLETE
#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT \
SB_GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT \
SB_GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT
#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS \
SB_GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS
#define GL_FRAMEBUFFER_UNSUPPORTED SB_GL_FRAMEBUFFER_UNSUPPORTED
#define GL_FRAMEBUFFER_BINDING SB_GL_FRAMEBUFFER_BINDING
#define GL_RENDERBUFFER_BINDING SB_GL_RENDERBUFFER_BINDING
#define GL_MAX_RENDERBUFFER_SIZE SB_GL_MAX_RENDERBUFFER_SIZE
#define GL_INVALID_FRAMEBUFFER_OPERATION SB_GL_INVALID_FRAMEBUFFER_OPERATION
#include "cobalt/renderer/gles_ext.h"
// Previously defined in
// https://www.khronos.org/registry/OpenGL/api/GLES3/gl3.h.
#define GL_READ_BUFFER SB_GL_READ_BUFFER
#define GL_UNPACK_ROW_LENGTH SB_GL_UNPACK_ROW_LENGTH
#define GL_UNPACK_SKIP_ROWS SB_GL_UNPACK_SKIP_ROWS
#define GL_UNPACK_SKIP_PIXELS SB_GL_UNPACK_SKIP_PIXELS
#define GL_PACK_ROW_LENGTH SB_GL_PACK_ROW_LENGTH
#define GL_PACK_SKIP_ROWS SB_GL_PACK_SKIP_ROWS
#define GL_PACK_SKIP_PIXELS SB_GL_PACK_SKIP_PIXELS
#define GL_COLOR SB_GL_COLOR
#define GL_DEPTH SB_GL_DEPTH
#define GL_STENCIL SB_GL_STENCIL
#define GL_RED SB_GL_RED
#define GL_RGB8 SB_GL_RGB8
#define GL_RGBA8 SB_GL_RGBA8
#define GL_RGB10_A2 SB_GL_RGB10_A2
#define GL_TEXTURE_BINDING_3D SB_GL_TEXTURE_BINDING_3D
#define GL_UNPACK_SKIP_IMAGES SB_GL_UNPACK_SKIP_IMAGES
#define GL_UNPACK_IMAGE_HEIGHT SB_GL_UNPACK_IMAGE_HEIGHT
#define GL_TEXTURE_3D SB_GL_TEXTURE_3D
#define GL_TEXTURE_WRAP_R SB_GL_TEXTURE_WRAP_R
#define GL_MAX_3D_TEXTURE_SIZE SB_GL_MAX_3D_TEXTURE_SIZE
#define GL_UNSIGNED_INT_2_10_10_10_REV SB_GL_UNSIGNED_INT_2_10_10_10_REV
#define GL_MAX_ELEMENTS_VERTICES SB_GL_MAX_ELEMENTS_VERTICES
#define GL_MAX_ELEMENTS_INDICES SB_GL_MAX_ELEMENTS_INDICES
#define GL_TEXTURE_MIN_LOD SB_GL_TEXTURE_MIN_LOD
#define GL_TEXTURE_MAX_LOD SB_GL_TEXTURE_MAX_LOD
#define GL_TEXTURE_BASE_LEVEL SB_GL_TEXTURE_BASE_LEVEL
#define GL_TEXTURE_MAX_LEVEL SB_GL_TEXTURE_MAX_LEVEL
#define GL_MIN SB_GL_MIN
#define GL_MAX SB_GL_MAX
#define GL_DEPTH_COMPONENT24 SB_GL_DEPTH_COMPONENT24
#define GL_MAX_TEXTURE_LOD_BIAS SB_GL_MAX_TEXTURE_LOD_BIAS
#define GL_TEXTURE_COMPARE_MODE SB_GL_TEXTURE_COMPARE_MODE
#define GL_TEXTURE_COMPARE_FUNC SB_GL_TEXTURE_COMPARE_FUNC
#define GL_CURRENT_QUERY SB_GL_CURRENT_QUERY
#define GL_QUERY_RESULT SB_GL_QUERY_RESULT
#define GL_QUERY_RESULT_AVAILABLE SB_GL_QUERY_RESULT_AVAILABLE
#define GL_BUFFER_MAPPED SB_GL_BUFFER_MAPPED
#define GL_BUFFER_MAP_POINTER SB_GL_BUFFER_MAP_POINTER
#define GL_STREAM_READ SB_GL_STREAM_READ
#define GL_STREAM_COPY SB_GL_STREAM_COPY
#define GL_STATIC_READ SB_GL_STATIC_READ
#define GL_STATIC_COPY SB_GL_STATIC_COPY
#define GL_DYNAMIC_READ SB_GL_DYNAMIC_READ
#define GL_DYNAMIC_COPY SB_GL_DYNAMIC_COPY
#define GL_MAX_DRAW_BUFFERS SB_GL_MAX_DRAW_BUFFERS
#define GL_DRAW_BUFFER0 SB_GL_DRAW_BUFFER0
#define GL_DRAW_BUFFER1 SB_GL_DRAW_BUFFER1
#define GL_DRAW_BUFFER2 SB_GL_DRAW_BUFFER2
#define GL_DRAW_BUFFER3 SB_GL_DRAW_BUFFER3
#define GL_DRAW_BUFFER4 SB_GL_DRAW_BUFFER4
#define GL_DRAW_BUFFER5 SB_GL_DRAW_BUFFER5
#define GL_DRAW_BUFFER6 SB_GL_DRAW_BUFFER6
#define GL_DRAW_BUFFER7 SB_GL_DRAW_BUFFER7
#define GL_DRAW_BUFFER8 SB_GL_DRAW_BUFFER8
#define GL_DRAW_BUFFER9 SB_GL_DRAW_BUFFER9
#define GL_DRAW_BUFFER10 SB_GL_DRAW_BUFFER10
#define GL_DRAW_BUFFER11 SB_GL_DRAW_BUFFER11
#define GL_DRAW_BUFFER12 SB_GL_DRAW_BUFFER12
#define GL_DRAW_BUFFER13 SB_GL_DRAW_BUFFER13
#define GL_DRAW_BUFFER14 SB_GL_DRAW_BUFFER14
#define GL_DRAW_BUFFER15 SB_GL_DRAW_BUFFER15
#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS SB_GL_MAX_FRAGMENT_UNIFORM_COMPONENTS
#define GL_MAX_VERTEX_UNIFORM_COMPONENTS SB_GL_MAX_VERTEX_UNIFORM_COMPONENTS
#define GL_SAMPLER_3D SB_GL_SAMPLER_3D
#define GL_SAMPLER_2D_SHADOW SB_GL_SAMPLER_2D_SHADOW
#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT SB_GL_FRAGMENT_SHADER_DERIVATIVE_HINT
#define GL_PIXEL_PACK_BUFFER SB_GL_PIXEL_PACK_BUFFER
#define GL_PIXEL_UNPACK_BUFFER SB_GL_PIXEL_UNPACK_BUFFER
#define GL_PIXEL_PACK_BUFFER_BINDING SB_GL_PIXEL_PACK_BUFFER_BINDING
#define GL_PIXEL_UNPACK_BUFFER_BINDING SB_GL_PIXEL_UNPACK_BUFFER_BINDING
#define GL_FLOAT_MAT2x3 SB_GL_FLOAT_MAT2x3
#define GL_FLOAT_MAT2x4 SB_GL_FLOAT_MAT2x4
#define GL_FLOAT_MAT3x2 SB_GL_FLOAT_MAT3x2
#define GL_FLOAT_MAT3x4 SB_GL_FLOAT_MAT3x4
#define GL_FLOAT_MAT4x2 SB_GL_FLOAT_MAT4x2
#define GL_FLOAT_MAT4x3 SB_GL_FLOAT_MAT4x3
#define GL_SRGB SB_GL_SRGB
#define GL_SRGB8 SB_GL_SRGB8
#define GL_SRGB8_ALPHA8 SB_GL_SRGB8_ALPHA8
#define GL_COMPARE_REF_TO_TEXTURE SB_GL_COMPARE_REF_TO_TEXTURE
#define GL_MAJOR_VERSION SB_GL_MAJOR_VERSION
#define GL_MINOR_VERSION SB_GL_MINOR_VERSION
#define GL_NUM_EXTENSIONS SB_GL_NUM_EXTENSIONS
#define GL_RGBA32F SB_GL_RGBA32F
#define GL_RGB32F SB_GL_RGB32F
#define GL_RGBA16F SB_GL_RGBA16F
#define GL_RGB16F SB_GL_RGB16F
#define GL_VERTEX_ATTRIB_ARRAY_INTEGER SB_GL_VERTEX_ATTRIB_ARRAY_INTEGER
#define GL_MAX_ARRAY_TEXTURE_LAYERS SB_GL_MAX_ARRAY_TEXTURE_LAYERS
#define GL_MIN_PROGRAM_TEXEL_OFFSET SB_GL_MIN_PROGRAM_TEXEL_OFFSET
#define GL_MAX_PROGRAM_TEXEL_OFFSET SB_GL_MAX_PROGRAM_TEXEL_OFFSET
#define GL_MAX_VARYING_COMPONENTS SB_GL_MAX_VARYING_COMPONENTS
#define GL_TEXTURE_2D_ARRAY SB_GL_TEXTURE_2D_ARRAY
#define GL_TEXTURE_BINDING_2D_ARRAY SB_GL_TEXTURE_BINDING_2D_ARRAY
#define GL_R11F_G11F_B10F SB_GL_R11F_G11F_B10F
#define GL_UNSIGNED_INT_10F_11F_11F_REV SB_GL_UNSIGNED_INT_10F_11F_11F_REV
#define GL_RGB9_E5 SB_GL_RGB9_E5
#define GL_UNSIGNED_INT_5_9_9_9_REV SB_GL_UNSIGNED_INT_5_9_9_9_REV
#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH \
SB_GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH
#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE SB_GL_TRANSFORM_FEEDBACK_BUFFER_MODE
#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS \
SB_GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS
#define GL_TRANSFORM_FEEDBACK_VARYINGS SB_GL_TRANSFORM_FEEDBACK_VARYINGS
#define GL_TRANSFORM_FEEDBACK_BUFFER_START SB_GL_TRANSFORM_FEEDBACK_BUFFER_START
#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE SB_GL_TRANSFORM_FEEDBACK_BUFFER_SIZE
#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN \
SB_GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN
#define GL_RASTERIZER_DISCARD SB_GL_RASTERIZER_DISCARD
#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS \
SB_GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS
#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS \
SB_GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS
#define GL_INTERLEAVED_ATTRIBS SB_GL_INTERLEAVED_ATTRIBS
#define GL_SEPARATE_ATTRIBS SB_GL_SEPARATE_ATTRIBS
#define GL_TRANSFORM_FEEDBACK_BUFFER SB_GL_TRANSFORM_FEEDBACK_BUFFER
#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING \
SB_GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
#define GL_RGBA32UI SB_GL_RGBA32UI
#define GL_RGB32UI SB_GL_RGB32UI
#define GL_RGBA16UI SB_GL_RGBA16UI
#define GL_RGB16UI SB_GL_RGB16UI
#define GL_RGBA8UI SB_GL_RGBA8UI
#define GL_RGB8UI SB_GL_RGB8UI
#define GL_RGBA32I SB_GL_RGBA32I
#define GL_RGB32I SB_GL_RGB32I
#define GL_RGBA16I SB_GL_RGBA16I
#define GL_RGB16I SB_GL_RGB16I
#define GL_RGBA8I SB_GL_RGBA8I
#define GL_RGB8I SB_GL_RGB8I
#define GL_RED_INTEGER SB_GL_RED_INTEGER
#define GL_RGB_INTEGER SB_GL_RGB_INTEGER
#define GL_RGBA_INTEGER SB_GL_RGBA_INTEGER
#define GL_SAMPLER_2D_ARRAY SB_GL_SAMPLER_2D_ARRAY
#define GL_SAMPLER_2D_ARRAY_SHADOW SB_GL_SAMPLER_2D_ARRAY_SHADOW
#define GL_SAMPLER_CUBE_SHADOW SB_GL_SAMPLER_CUBE_SHADOW
#define GL_UNSIGNED_INT_VEC2 SB_GL_UNSIGNED_INT_VEC2
#define GL_UNSIGNED_INT_VEC3 SB_GL_UNSIGNED_INT_VEC3
#define GL_UNSIGNED_INT_VEC4 SB_GL_UNSIGNED_INT_VEC4
#define GL_INT_SAMPLER_2D SB_GL_INT_SAMPLER_2D
#define GL_INT_SAMPLER_3D SB_GL_INT_SAMPLER_3D
#define GL_INT_SAMPLER_CUBE SB_GL_INT_SAMPLER_CUBE
#define GL_INT_SAMPLER_2D_ARRAY SB_GL_INT_SAMPLER_2D_ARRAY
#define GL_UNSIGNED_INT_SAMPLER_2D SB_GL_UNSIGNED_INT_SAMPLER_2D
#define GL_UNSIGNED_INT_SAMPLER_3D SB_GL_UNSIGNED_INT_SAMPLER_3D
#define GL_UNSIGNED_INT_SAMPLER_CUBE SB_GL_UNSIGNED_INT_SAMPLER_CUBE
#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY SB_GL_UNSIGNED_INT_SAMPLER_2D_ARRAY
#define GL_BUFFER_ACCESS_FLAGS SB_GL_BUFFER_ACCESS_FLAGS
#define GL_BUFFER_MAP_LENGTH SB_GL_BUFFER_MAP_LENGTH
#define GL_BUFFER_MAP_OFFSET SB_GL_BUFFER_MAP_OFFSET
#define GL_DEPTH_COMPONENT32F SB_GL_DEPTH_COMPONENT32F
#define GL_DEPTH32F_STENCIL8 SB_GL_DEPTH32F_STENCIL8
#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV SB_GL_FLOAT_32_UNSIGNED_INT_24_8_REV
#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING \
SB_GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING
#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE \
SB_GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE
#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE SB_GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE
#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE \
SB_GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE
#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE \
SB_GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE
#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE \
SB_GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE
#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE \
SB_GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE
#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE \
SB_GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE
#define GL_FRAMEBUFFER_DEFAULT SB_GL_FRAMEBUFFER_DEFAULT
#define GL_FRAMEBUFFER_UNDEFINED SB_GL_FRAMEBUFFER_UNDEFINED
#define GL_DEPTH_STENCIL_ATTACHMENT SB_GL_DEPTH_STENCIL_ATTACHMENT
#define GL_DEPTH_STENCIL SB_GL_DEPTH_STENCIL
#define GL_UNSIGNED_INT_24_8 SB_GL_UNSIGNED_INT_24_8
#define GL_DEPTH24_STENCIL8 SB_GL_DEPTH24_STENCIL8
#define GL_UNSIGNED_NORMALIZED SB_GL_UNSIGNED_NORMALIZED
#define GL_DRAW_FRAMEBUFFER_BINDING SB_GL_DRAW_FRAMEBUFFER_BINDING
#define GL_READ_FRAMEBUFFER SB_GL_READ_FRAMEBUFFER
#define GL_DRAW_FRAMEBUFFER SB_GL_DRAW_FRAMEBUFFER
#define GL_READ_FRAMEBUFFER_BINDING SB_GL_READ_FRAMEBUFFER_BINDING
#define GL_RENDERBUFFER_SAMPLES SB_GL_RENDERBUFFER_SAMPLES
#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER \
SB_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER
#define GL_MAX_COLOR_ATTACHMENTS SB_GL_MAX_COLOR_ATTACHMENTS
#define GL_COLOR_ATTACHMENT1 SB_GL_COLOR_ATTACHMENT1
#define GL_COLOR_ATTACHMENT2 SB_GL_COLOR_ATTACHMENT2
#define GL_COLOR_ATTACHMENT3 SB_GL_COLOR_ATTACHMENT3
#define GL_COLOR_ATTACHMENT4 SB_GL_COLOR_ATTACHMENT4
#define GL_COLOR_ATTACHMENT5 SB_GL_COLOR_ATTACHMENT5
#define GL_COLOR_ATTACHMENT6 SB_GL_COLOR_ATTACHMENT6
#define GL_COLOR_ATTACHMENT7 SB_GL_COLOR_ATTACHMENT7
#define GL_COLOR_ATTACHMENT8 SB_GL_COLOR_ATTACHMENT8
#define GL_COLOR_ATTACHMENT9 SB_GL_COLOR_ATTACHMENT9
#define GL_COLOR_ATTACHMENT10 SB_GL_COLOR_ATTACHMENT10
#define GL_COLOR_ATTACHMENT11 SB_GL_COLOR_ATTACHMENT11
#define GL_COLOR_ATTACHMENT12 SB_GL_COLOR_ATTACHMENT12
#define GL_COLOR_ATTACHMENT13 SB_GL_COLOR_ATTACHMENT13
#define GL_COLOR_ATTACHMENT14 SB_GL_COLOR_ATTACHMENT14
#define GL_COLOR_ATTACHMENT15 SB_GL_COLOR_ATTACHMENT15
#define GL_COLOR_ATTACHMENT16 SB_GL_COLOR_ATTACHMENT16
#define GL_COLOR_ATTACHMENT17 SB_GL_COLOR_ATTACHMENT17
#define GL_COLOR_ATTACHMENT18 SB_GL_COLOR_ATTACHMENT18
#define GL_COLOR_ATTACHMENT19 SB_GL_COLOR_ATTACHMENT19
#define GL_COLOR_ATTACHMENT20 SB_GL_COLOR_ATTACHMENT20
#define GL_COLOR_ATTACHMENT21 SB_GL_COLOR_ATTACHMENT21
#define GL_COLOR_ATTACHMENT22 SB_GL_COLOR_ATTACHMENT22
#define GL_COLOR_ATTACHMENT23 SB_GL_COLOR_ATTACHMENT23
#define GL_COLOR_ATTACHMENT24 SB_GL_COLOR_ATTACHMENT24
#define GL_COLOR_ATTACHMENT25 SB_GL_COLOR_ATTACHMENT25
#define GL_COLOR_ATTACHMENT26 SB_GL_COLOR_ATTACHMENT26
#define GL_COLOR_ATTACHMENT27 SB_GL_COLOR_ATTACHMENT27
#define GL_COLOR_ATTACHMENT28 SB_GL_COLOR_ATTACHMENT28
#define GL_COLOR_ATTACHMENT29 SB_GL_COLOR_ATTACHMENT29
#define GL_COLOR_ATTACHMENT30 SB_GL_COLOR_ATTACHMENT30
#define GL_COLOR_ATTACHMENT31 SB_GL_COLOR_ATTACHMENT31
#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE \
SB_GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE
#define GL_MAX_SAMPLES SB_GL_MAX_SAMPLES
#define GL_HALF_FLOAT SB_GL_HALF_FLOAT
#define GL_MAP_READ_BIT SB_GL_MAP_READ_BIT
#define GL_MAP_WRITE_BIT SB_GL_MAP_WRITE_BIT
#define GL_MAP_INVALIDATE_RANGE_BIT SB_GL_MAP_INVALIDATE_RANGE_BIT
#define GL_MAP_INVALIDATE_BUFFER_BIT SB_GL_MAP_INVALIDATE_BUFFER_BIT
#define GL_MAP_FLUSH_EXPLICIT_BIT SB_GL_MAP_FLUSH_EXPLICIT_BIT
#define GL_MAP_UNSYNCHRONIZED_BIT SB_GL_MAP_UNSYNCHRONIZED_BIT
#define GL_RG SB_GL_RG
#define GL_RG_INTEGER SB_GL_RG_INTEGER
#define GL_R8 SB_GL_R8
#define GL_RG8 SB_GL_RG8
#define GL_R16F SB_GL_R16F
#define GL_R32F SB_GL_R32F
#define GL_RG16F SB_GL_RG16F
#define GL_RG32F SB_GL_RG32F
#define GL_R8I SB_GL_R8I
#define GL_R8UI SB_GL_R8UI
#define GL_R16I SB_GL_R16I
#define GL_R16UI SB_GL_R16UI
#define GL_R32I SB_GL_R32I
#define GL_R32UI SB_GL_R32UI
#define GL_RG8I SB_GL_RG8I
#define GL_RG8UI SB_GL_RG8UI
#define GL_RG16I SB_GL_RG16I
#define GL_RG16UI SB_GL_RG16UI
#define GL_RG32I SB_GL_RG32I
#define GL_RG32UI SB_GL_RG32UI
#define GL_VERTEX_ARRAY_BINDING SB_GL_VERTEX_ARRAY_BINDING
#define GL_R8_SNORM SB_GL_R8_SNORM
#define GL_RG8_SNORM SB_GL_RG8_SNORM
#define GL_RGB8_SNORM SB_GL_RGB8_SNORM
#define GL_RGBA8_SNORM SB_GL_RGBA8_SNORM
#define GL_SIGNED_NORMALIZED SB_GL_SIGNED_NORMALIZED
#define GL_PRIMITIVE_RESTART_FIXED_INDEX SB_GL_PRIMITIVE_RESTART_FIXED_INDEX
#define GL_COPY_READ_BUFFER SB_GL_COPY_READ_BUFFER
#define GL_COPY_WRITE_BUFFER SB_GL_COPY_WRITE_BUFFER
#define GL_COPY_READ_BUFFER_BINDING SB_GL_COPY_READ_BUFFER_BINDING
#define GL_COPY_WRITE_BUFFER_BINDING SB_GL_COPY_WRITE_BUFFER_BINDING
#define GL_UNIFORM_BUFFER SB_GL_UNIFORM_BUFFER
#define GL_UNIFORM_BUFFER_BINDING SB_GL_UNIFORM_BUFFER_BINDING
#define GL_UNIFORM_BUFFER_START SB_GL_UNIFORM_BUFFER_START
#define GL_UNIFORM_BUFFER_SIZE SB_GL_UNIFORM_BUFFER_SIZE
#define GL_MAX_VERTEX_UNIFORM_BLOCKS SB_GL_MAX_VERTEX_UNIFORM_BLOCKS
#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS SB_GL_MAX_FRAGMENT_UNIFORM_BLOCKS
#define GL_MAX_COMBINED_UNIFORM_BLOCKS SB_GL_MAX_COMBINED_UNIFORM_BLOCKS
#define GL_MAX_UNIFORM_BUFFER_BINDINGS SB_GL_MAX_UNIFORM_BUFFER_BINDINGS
#define GL_MAX_UNIFORM_BLOCK_SIZE SB_GL_MAX_UNIFORM_BLOCK_SIZE
#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS \
SB_GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS
#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS \
SB_GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS
#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT SB_GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT
#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH \
SB_GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH
#define GL_ACTIVE_UNIFORM_BLOCKS SB_GL_ACTIVE_UNIFORM_BLOCKS
#define GL_UNIFORM_TYPE SB_GL_UNIFORM_TYPE
#define GL_UNIFORM_SIZE SB_GL_UNIFORM_SIZE
#define GL_UNIFORM_NAME_LENGTH SB_GL_UNIFORM_NAME_LENGTH
#define GL_UNIFORM_BLOCK_INDEX SB_GL_UNIFORM_BLOCK_INDEX
#define GL_UNIFORM_OFFSET SB_GL_UNIFORM_OFFSET
#define GL_UNIFORM_ARRAY_STRIDE SB_GL_UNIFORM_ARRAY_STRIDE
#define GL_UNIFORM_MATRIX_STRIDE SB_GL_UNIFORM_MATRIX_STRIDE
#define GL_UNIFORM_IS_ROW_MAJOR SB_GL_UNIFORM_IS_ROW_MAJOR
#define GL_UNIFORM_BLOCK_BINDING SB_GL_UNIFORM_BLOCK_BINDING
#define GL_UNIFORM_BLOCK_DATA_SIZE SB_GL_UNIFORM_BLOCK_DATA_SIZE
#define GL_UNIFORM_BLOCK_NAME_LENGTH SB_GL_UNIFORM_BLOCK_NAME_LENGTH
#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS SB_GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS
#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES \
SB_GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES
#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER \
SB_GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER
#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER \
SB_GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER
#define GL_INVALID_INDEX SB_GL_INVALID_INDEX
#define GL_MAX_VERTEX_OUTPUT_COMPONENTS SB_GL_MAX_VERTEX_OUTPUT_COMPONENTS
#define GL_MAX_FRAGMENT_INPUT_COMPONENTS SB_GL_MAX_FRAGMENT_INPUT_COMPONENTS
#define GL_MAX_SERVER_WAIT_TIMEOUT SB_GL_MAX_SERVER_WAIT_TIMEOUT
#define GL_OBJECT_TYPE SB_GL_OBJECT_TYPE
#define GL_SYNC_CONDITION SB_GL_SYNC_CONDITION
#define GL_SYNC_STATUS SB_GL_SYNC_STATUS
#define GL_SYNC_FLAGS SB_GL_SYNC_FLAGS
#define GL_SYNC_FENCE SB_GL_SYNC_FENCE
#define GL_SYNC_GPU_COMMANDS_COMPLETE SB_GL_SYNC_GPU_COMMANDS_COMPLETE
#define GL_UNSIGNALED SB_GL_UNSIGNALED
#define GL_SIGNALED SB_GL_SIGNALED
#define GL_ALREADY_SIGNALED SB_GL_ALREADY_SIGNALED
#define GL_TIMEOUT_EXPIRED SB_GL_TIMEOUT_EXPIRED
#define GL_CONDITION_SATISFIED SB_GL_CONDITION_SATISFIED
#define GL_WAIT_FAILED SB_GL_WAIT_FAILED
#define GL_SYNC_FLUSH_COMMANDS_BIT SB_GL_SYNC_FLUSH_COMMANDS_BIT
#define GL_TIMEOUT_IGNORED SB_GL_TIMEOUT_IGNORED
#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR SB_GL_VERTEX_ATTRIB_ARRAY_DIVISOR
#define GL_ANY_SAMPLES_PASSED SB_GL_ANY_SAMPLES_PASSED
#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE SB_GL_ANY_SAMPLES_PASSED_CONSERVATIVE
#define GL_SAMPLER_BINDING SB_GL_SAMPLER_BINDING
#define GL_RGB10_A2UI SB_GL_RGB10_A2UI
#define GL_TEXTURE_SWIZZLE_R SB_GL_TEXTURE_SWIZZLE_R
#define GL_TEXTURE_SWIZZLE_G SB_GL_TEXTURE_SWIZZLE_G
#define GL_TEXTURE_SWIZZLE_B SB_GL_TEXTURE_SWIZZLE_B
#define GL_TEXTURE_SWIZZLE_A SB_GL_TEXTURE_SWIZZLE_A
#define GL_GREEN SB_GL_GREEN
#define GL_BLUE SB_GL_BLUE
#define GL_INT_2_10_10_10_REV SB_GL_INT_2_10_10_10_REV
#define GL_TRANSFORM_FEEDBACK SB_GL_TRANSFORM_FEEDBACK
#define GL_TRANSFORM_FEEDBACK_PAUSED SB_GL_TRANSFORM_FEEDBACK_PAUSED
#define GL_TRANSFORM_FEEDBACK_ACTIVE SB_GL_TRANSFORM_FEEDBACK_ACTIVE
#define GL_TRANSFORM_FEEDBACK_BINDING SB_GL_TRANSFORM_FEEDBACK_BINDING
#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT SB_GL_PROGRAM_BINARY_RETRIEVABLE_HINT
#define GL_PROGRAM_BINARY_LENGTH SB_GL_PROGRAM_BINARY_LENGTH
#define GL_NUM_PROGRAM_BINARY_FORMATS SB_GL_NUM_PROGRAM_BINARY_FORMATS
#define GL_PROGRAM_BINARY_FORMATS SB_GL_PROGRAM_BINARY_FORMATS
#define GL_COMPRESSED_R11_EAC SB_GL_COMPRESSED_R11_EAC
#define GL_COMPRESSED_SIGNED_R11_EAC SB_GL_COMPRESSED_SIGNED_R11_EAC
#define GL_COMPRESSED_RG11_EAC SB_GL_COMPRESSED_RG11_EAC
#define GL_COMPRESSED_SIGNED_RG11_EAC SB_GL_COMPRESSED_SIGNED_RG11_EAC
#define GL_COMPRESSED_RGB8_ETC2 SB_GL_COMPRESSED_RGB8_ETC2
#define GL_COMPRESSED_SRGB8_ETC2 SB_GL_COMPRESSED_SRGB8_ETC2
#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 \
SB_GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 \
SB_GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
#define GL_COMPRESSED_RGBA8_ETC2_EAC SB_GL_COMPRESSED_RGBA8_ETC2_EAC
#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC \
SB_GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
#define GL_TEXTURE_IMMUTABLE_FORMAT SB_GL_TEXTURE_IMMUTABLE_FORMAT
#define GL_MAX_ELEMENT_INDEX SB_GL_MAX_ELEMENT_INDEX
#define GL_NUM_SAMPLE_COUNTS SB_GL_NUM_SAMPLE_COUNTS
#define GL_TEXTURE_IMMUTABLE_LEVELS SB_GL_TEXTURE_IMMUTABLE_LEVELS
#endif // SB_API_VERSION >= EGL_AND_GL_INTERFACE_VERSION
#endif // COBALT_RENDERER_EGL_AND_GLES_H_