|  | /* | 
|  | * Copyright (C) 2009 Apple Inc. All rights reserved. | 
|  | * | 
|  | * Redistribution and use in source and binary forms, with or without | 
|  | * modification, are permitted provided that the following conditions | 
|  | * are met: | 
|  | * 1. Redistributions of source code must retain the above copyright | 
|  | *    notice, this list of conditions and the following disclaimer. | 
|  | * 2. Redistributions in binary form must reproduce the above copyright | 
|  | *    notice, this list of conditions and the following disclaimer in the | 
|  | *    documentation and/or other materials provided with the distribution. | 
|  | * | 
|  | * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY | 
|  | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 
|  | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | 
|  | * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR | 
|  | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | 
|  | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | 
|  | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | 
|  | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY | 
|  | * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 
|  | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 
|  | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 
|  | */ | 
|  |  | 
|  | // http://www.khronos.org/registry/webgl/specs/latest/1.0/#WebGLRenderingContextBase | 
|  |  | 
|  | typedef unsigned long  GLenum; | 
|  | typedef boolean        GLboolean; | 
|  | typedef unsigned long  GLbitfield; | 
|  | typedef byte           GLbyte; // 'byte' should be a signed 8 bit type. | 
|  | typedef short          GLshort; | 
|  | typedef long           GLint; | 
|  | typedef long           GLsizei; | 
|  | typedef long long      GLintptr; | 
|  | typedef long long      GLsizeiptr; | 
|  | typedef octet          GLubyte; // 'octet' should be an unsigned 8 bit type. | 
|  | typedef unsigned short GLushort; | 
|  | typedef unsigned long  GLuint; | 
|  | typedef unrestricted float GLfloat; | 
|  | typedef unrestricted float GLclampf; | 
|  |  | 
|  | [ | 
|  | // FIXME: [DoNotCheckConstants] should be applied to members and not need to | 
|  | // be put on implementing interface | 
|  | // DoNotCheckConstants, // need to put on implementing interface | 
|  | NoInterfaceObject, // Always used on target of 'implements' | 
|  | WillBeGarbageCollected, | 
|  | ] interface WebGLRenderingContextBase { | 
|  |  | 
|  | readonly attribute HTMLCanvasElement canvas; | 
|  |  | 
|  | /* ClearBufferMask */ | 
|  | const GLenum DEPTH_BUFFER_BIT               = 0x00000100; | 
|  | const GLenum STENCIL_BUFFER_BIT             = 0x00000400; | 
|  | const GLenum COLOR_BUFFER_BIT               = 0x00004000; | 
|  |  | 
|  | /* BeginMode */ | 
|  | const GLenum POINTS                         = 0x0000; | 
|  | const GLenum LINES                          = 0x0001; | 
|  | const GLenum LINE_LOOP                      = 0x0002; | 
|  | const GLenum LINE_STRIP                     = 0x0003; | 
|  | const GLenum TRIANGLES                      = 0x0004; | 
|  | const GLenum TRIANGLE_STRIP                 = 0x0005; | 
|  | const GLenum TRIANGLE_FAN                   = 0x0006; | 
|  |  | 
|  | /* AlphaFunction (not supported in ES20) */ | 
|  | /*      NEVER */ | 
|  | /*      LESS */ | 
|  | /*      EQUAL */ | 
|  | /*      LEQUAL */ | 
|  | /*      GREATER */ | 
|  | /*      NOTEQUAL */ | 
|  | /*      GEQUAL */ | 
|  | /*      ALWAYS */ | 
|  |  | 
|  | /* BlendingFactorDest */ | 
|  | const GLenum ZERO                           = 0; | 
|  | const GLenum ONE                            = 1; | 
|  | const GLenum SRC_COLOR                      = 0x0300; | 
|  | const GLenum ONE_MINUS_SRC_COLOR            = 0x0301; | 
|  | const GLenum SRC_ALPHA                      = 0x0302; | 
|  | const GLenum ONE_MINUS_SRC_ALPHA            = 0x0303; | 
|  | const GLenum DST_ALPHA                      = 0x0304; | 
|  | const GLenum ONE_MINUS_DST_ALPHA            = 0x0305; | 
|  |  | 
|  | /* BlendingFactorSrc */ | 
|  | /*      ZERO */ | 
|  | /*      ONE */ | 
|  | const GLenum DST_COLOR                      = 0x0306; | 
|  | const GLenum ONE_MINUS_DST_COLOR            = 0x0307; | 
|  | const GLenum SRC_ALPHA_SATURATE             = 0x0308; | 
|  | /*      SRC_ALPHA */ | 
|  | /*      ONE_MINUS_SRC_ALPHA */ | 
|  | /*      DST_ALPHA */ | 
|  | /*      ONE_MINUS_DST_ALPHA */ | 
|  |  | 
|  | /* BlendEquationSeparate */ | 
|  | const GLenum FUNC_ADD                       = 0x8006; | 
|  | const GLenum BLEND_EQUATION                 = 0x8009; | 
|  | const GLenum BLEND_EQUATION_RGB             = 0x8009;   /* same as BLEND_EQUATION */ | 
|  | const GLenum BLEND_EQUATION_ALPHA           = 0x883D; | 
|  |  | 
|  | /* BlendSubtract */ | 
|  | const GLenum FUNC_SUBTRACT                  = 0x800A; | 
|  | const GLenum FUNC_REVERSE_SUBTRACT          = 0x800B; | 
|  |  | 
|  | /* Separate Blend Functions */ | 
|  | const GLenum BLEND_DST_RGB                  = 0x80C8; | 
|  | const GLenum BLEND_SRC_RGB                  = 0x80C9; | 
|  | const GLenum BLEND_DST_ALPHA                = 0x80CA; | 
|  | const GLenum BLEND_SRC_ALPHA                = 0x80CB; | 
|  | const GLenum CONSTANT_COLOR                 = 0x8001; | 
|  | const GLenum ONE_MINUS_CONSTANT_COLOR       = 0x8002; | 
|  | const GLenum CONSTANT_ALPHA                 = 0x8003; | 
|  | const GLenum ONE_MINUS_CONSTANT_ALPHA       = 0x8004; | 
|  | const GLenum BLEND_COLOR                    = 0x8005; | 
|  |  | 
|  | /* Buffer Objects */ | 
|  | const GLenum ARRAY_BUFFER                   = 0x8892; | 
|  | const GLenum ELEMENT_ARRAY_BUFFER           = 0x8893; | 
|  | const GLenum ARRAY_BUFFER_BINDING           = 0x8894; | 
|  | const GLenum ELEMENT_ARRAY_BUFFER_BINDING   = 0x8895; | 
|  |  | 
|  | const GLenum STREAM_DRAW                    = 0x88E0; | 
|  | const GLenum STATIC_DRAW                    = 0x88E4; | 
|  | const GLenum DYNAMIC_DRAW                   = 0x88E8; | 
|  |  | 
|  | const GLenum BUFFER_SIZE                    = 0x8764; | 
|  | const GLenum BUFFER_USAGE                   = 0x8765; | 
|  |  | 
|  | const GLenum CURRENT_VERTEX_ATTRIB          = 0x8626; | 
|  |  | 
|  | /* CullFaceMode */ | 
|  | const GLenum FRONT                          = 0x0404; | 
|  | const GLenum BACK                           = 0x0405; | 
|  | const GLenum FRONT_AND_BACK                 = 0x0408; | 
|  |  | 
|  | /* DepthFunction */ | 
|  | /*      NEVER */ | 
|  | /*      LESS */ | 
|  | /*      EQUAL */ | 
|  | /*      LEQUAL */ | 
|  | /*      GREATER */ | 
|  | /*      NOTEQUAL */ | 
|  | /*      GEQUAL */ | 
|  | /*      ALWAYS */ | 
|  |  | 
|  | /* EnableCap */ | 
|  | const GLenum TEXTURE_2D                     = 0x0DE1; | 
|  | const GLenum CULL_FACE                      = 0x0B44; | 
|  | const GLenum BLEND                          = 0x0BE2; | 
|  | const GLenum DITHER                         = 0x0BD0; | 
|  | const GLenum STENCIL_TEST                   = 0x0B90; | 
|  | const GLenum DEPTH_TEST                     = 0x0B71; | 
|  | const GLenum SCISSOR_TEST                   = 0x0C11; | 
|  | const GLenum POLYGON_OFFSET_FILL            = 0x8037; | 
|  | const GLenum SAMPLE_ALPHA_TO_COVERAGE       = 0x809E; | 
|  | const GLenum SAMPLE_COVERAGE                = 0x80A0; | 
|  |  | 
|  | /* ErrorCode */ | 
|  | const GLenum NO_ERROR                       = 0; | 
|  | const GLenum INVALID_ENUM                   = 0x0500; | 
|  | const GLenum INVALID_VALUE                  = 0x0501; | 
|  | const GLenum INVALID_OPERATION              = 0x0502; | 
|  | const GLenum OUT_OF_MEMORY                  = 0x0505; | 
|  |  | 
|  | /* FrontFaceDirection */ | 
|  | const GLenum CW                             = 0x0900; | 
|  | const GLenum CCW                            = 0x0901; | 
|  |  | 
|  | /* GetPName */ | 
|  | const GLenum LINE_WIDTH                     = 0x0B21; | 
|  | const GLenum ALIASED_POINT_SIZE_RANGE       = 0x846D; | 
|  | const GLenum ALIASED_LINE_WIDTH_RANGE       = 0x846E; | 
|  | const GLenum CULL_FACE_MODE                 = 0x0B45; | 
|  | const GLenum FRONT_FACE                     = 0x0B46; | 
|  | const GLenum DEPTH_RANGE                    = 0x0B70; | 
|  | const GLenum DEPTH_WRITEMASK                = 0x0B72; | 
|  | const GLenum DEPTH_CLEAR_VALUE              = 0x0B73; | 
|  | const GLenum DEPTH_FUNC                     = 0x0B74; | 
|  | const GLenum STENCIL_CLEAR_VALUE            = 0x0B91; | 
|  | const GLenum STENCIL_FUNC                   = 0x0B92; | 
|  | const GLenum STENCIL_FAIL                   = 0x0B94; | 
|  | const GLenum STENCIL_PASS_DEPTH_FAIL        = 0x0B95; | 
|  | const GLenum STENCIL_PASS_DEPTH_PASS        = 0x0B96; | 
|  | const GLenum STENCIL_REF                    = 0x0B97; | 
|  | const GLenum STENCIL_VALUE_MASK             = 0x0B93; | 
|  | const GLenum STENCIL_WRITEMASK              = 0x0B98; | 
|  | const GLenum STENCIL_BACK_FUNC              = 0x8800; | 
|  | const GLenum STENCIL_BACK_FAIL              = 0x8801; | 
|  | const GLenum STENCIL_BACK_PASS_DEPTH_FAIL   = 0x8802; | 
|  | const GLenum STENCIL_BACK_PASS_DEPTH_PASS   = 0x8803; | 
|  | const GLenum STENCIL_BACK_REF               = 0x8CA3; | 
|  | const GLenum STENCIL_BACK_VALUE_MASK        = 0x8CA4; | 
|  | const GLenum STENCIL_BACK_WRITEMASK         = 0x8CA5; | 
|  | const GLenum VIEWPORT                       = 0x0BA2; | 
|  | const GLenum SCISSOR_BOX                    = 0x0C10; | 
|  | /*      SCISSOR_TEST */ | 
|  | const GLenum COLOR_CLEAR_VALUE              = 0x0C22; | 
|  | const GLenum COLOR_WRITEMASK                = 0x0C23; | 
|  | const GLenum UNPACK_ALIGNMENT               = 0x0CF5; | 
|  | const GLenum PACK_ALIGNMENT                 = 0x0D05; | 
|  | const GLenum MAX_TEXTURE_SIZE               = 0x0D33; | 
|  | const GLenum MAX_VIEWPORT_DIMS              = 0x0D3A; | 
|  | const GLenum SUBPIXEL_BITS                  = 0x0D50; | 
|  | const GLenum RED_BITS                       = 0x0D52; | 
|  | const GLenum GREEN_BITS                     = 0x0D53; | 
|  | const GLenum BLUE_BITS                      = 0x0D54; | 
|  | const GLenum ALPHA_BITS                     = 0x0D55; | 
|  | const GLenum DEPTH_BITS                     = 0x0D56; | 
|  | const GLenum STENCIL_BITS                   = 0x0D57; | 
|  | const GLenum POLYGON_OFFSET_UNITS           = 0x2A00; | 
|  | /*      POLYGON_OFFSET_FILL */ | 
|  | const GLenum POLYGON_OFFSET_FACTOR          = 0x8038; | 
|  | const GLenum TEXTURE_BINDING_2D             = 0x8069; | 
|  | const GLenum SAMPLE_BUFFERS                 = 0x80A8; | 
|  | const GLenum SAMPLES                        = 0x80A9; | 
|  | const GLenum SAMPLE_COVERAGE_VALUE          = 0x80AA; | 
|  | const GLenum SAMPLE_COVERAGE_INVERT         = 0x80AB; | 
|  |  | 
|  | /* GetTextureParameter */ | 
|  | /*      TEXTURE_MAG_FILTER */ | 
|  | /*      TEXTURE_MIN_FILTER */ | 
|  | /*      TEXTURE_WRAP_S */ | 
|  | /*      TEXTURE_WRAP_T */ | 
|  |  | 
|  | const GLenum COMPRESSED_TEXTURE_FORMATS     = 0x86A3; | 
|  |  | 
|  | /* HintMode */ | 
|  | const GLenum DONT_CARE                      = 0x1100; | 
|  | const GLenum FASTEST                        = 0x1101; | 
|  | const GLenum NICEST                         = 0x1102; | 
|  |  | 
|  | /* HintTarget */ | 
|  | const GLenum GENERATE_MIPMAP_HINT            = 0x8192; | 
|  |  | 
|  | /* DataType */ | 
|  | const GLenum BYTE                           = 0x1400; | 
|  | const GLenum UNSIGNED_BYTE                  = 0x1401; | 
|  | const GLenum SHORT                          = 0x1402; | 
|  | const GLenum UNSIGNED_SHORT                 = 0x1403; | 
|  | const GLenum INT                            = 0x1404; | 
|  | const GLenum UNSIGNED_INT                   = 0x1405; | 
|  | const GLenum FLOAT                          = 0x1406; | 
|  |  | 
|  | /* PixelFormat */ | 
|  | const GLenum DEPTH_COMPONENT                = 0x1902; | 
|  | const GLenum ALPHA                          = 0x1906; | 
|  | const GLenum RGB                            = 0x1907; | 
|  | const GLenum RGBA                           = 0x1908; | 
|  | const GLenum LUMINANCE                      = 0x1909; | 
|  | const GLenum LUMINANCE_ALPHA                = 0x190A; | 
|  |  | 
|  | /* PixelType */ | 
|  | /*      UNSIGNED_BYTE */ | 
|  | const GLenum UNSIGNED_SHORT_4_4_4_4         = 0x8033; | 
|  | const GLenum UNSIGNED_SHORT_5_5_5_1         = 0x8034; | 
|  | const GLenum UNSIGNED_SHORT_5_6_5           = 0x8363; | 
|  |  | 
|  | /* Shaders */ | 
|  | const GLenum FRAGMENT_SHADER                  = 0x8B30; | 
|  | const GLenum VERTEX_SHADER                    = 0x8B31; | 
|  | const GLenum MAX_VERTEX_ATTRIBS               = 0x8869; | 
|  | const GLenum MAX_VERTEX_UNIFORM_VECTORS       = 0x8DFB; | 
|  | const GLenum MAX_VARYING_VECTORS              = 0x8DFC; | 
|  | const GLenum MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D; | 
|  | const GLenum MAX_VERTEX_TEXTURE_IMAGE_UNITS   = 0x8B4C; | 
|  | const GLenum MAX_TEXTURE_IMAGE_UNITS          = 0x8872; | 
|  | const GLenum MAX_FRAGMENT_UNIFORM_VECTORS     = 0x8DFD; | 
|  | const GLenum SHADER_TYPE                      = 0x8B4F; | 
|  | const GLenum DELETE_STATUS                    = 0x8B80; | 
|  | const GLenum LINK_STATUS                      = 0x8B82; | 
|  | const GLenum VALIDATE_STATUS                  = 0x8B83; | 
|  | const GLenum ATTACHED_SHADERS                 = 0x8B85; | 
|  | const GLenum ACTIVE_UNIFORMS                  = 0x8B86; | 
|  | const GLenum ACTIVE_ATTRIBUTES                = 0x8B89; | 
|  | const GLenum SHADING_LANGUAGE_VERSION         = 0x8B8C; | 
|  | const GLenum CURRENT_PROGRAM                  = 0x8B8D; | 
|  |  | 
|  | /* StencilFunction */ | 
|  | const GLenum NEVER                          = 0x0200; | 
|  | const GLenum LESS                           = 0x0201; | 
|  | const GLenum EQUAL                          = 0x0202; | 
|  | const GLenum LEQUAL                         = 0x0203; | 
|  | const GLenum GREATER                        = 0x0204; | 
|  | const GLenum NOTEQUAL                       = 0x0205; | 
|  | const GLenum GEQUAL                         = 0x0206; | 
|  | const GLenum ALWAYS                         = 0x0207; | 
|  |  | 
|  | /* StencilOp */ | 
|  | /*      ZERO */ | 
|  | const GLenum KEEP                           = 0x1E00; | 
|  | const GLenum REPLACE                        = 0x1E01; | 
|  | const GLenum INCR                           = 0x1E02; | 
|  | const GLenum DECR                           = 0x1E03; | 
|  | const GLenum INVERT                         = 0x150A; | 
|  | const GLenum INCR_WRAP                      = 0x8507; | 
|  | const GLenum DECR_WRAP                      = 0x8508; | 
|  |  | 
|  | /* StringName */ | 
|  | const GLenum VENDOR                         = 0x1F00; | 
|  | const GLenum RENDERER                       = 0x1F01; | 
|  | const GLenum VERSION                        = 0x1F02; | 
|  |  | 
|  | /* TextureMagFilter */ | 
|  | const GLenum NEAREST                        = 0x2600; | 
|  | const GLenum LINEAR                         = 0x2601; | 
|  |  | 
|  | /* TextureMinFilter */ | 
|  | /*      NEAREST */ | 
|  | /*      LINEAR */ | 
|  | const GLenum NEAREST_MIPMAP_NEAREST         = 0x2700; | 
|  | const GLenum LINEAR_MIPMAP_NEAREST          = 0x2701; | 
|  | const GLenum NEAREST_MIPMAP_LINEAR          = 0x2702; | 
|  | const GLenum LINEAR_MIPMAP_LINEAR           = 0x2703; | 
|  |  | 
|  | /* TextureParameterName */ | 
|  | const GLenum TEXTURE_MAG_FILTER             = 0x2800; | 
|  | const GLenum TEXTURE_MIN_FILTER             = 0x2801; | 
|  | const GLenum TEXTURE_WRAP_S                 = 0x2802; | 
|  | const GLenum TEXTURE_WRAP_T                 = 0x2803; | 
|  |  | 
|  | /* TextureTarget */ | 
|  | /*      TEXTURE_2D */ | 
|  | const GLenum TEXTURE                        = 0x1702; | 
|  |  | 
|  | const GLenum TEXTURE_CUBE_MAP               = 0x8513; | 
|  | const GLenum TEXTURE_BINDING_CUBE_MAP       = 0x8514; | 
|  | const GLenum TEXTURE_CUBE_MAP_POSITIVE_X    = 0x8515; | 
|  | const GLenum TEXTURE_CUBE_MAP_NEGATIVE_X    = 0x8516; | 
|  | const GLenum TEXTURE_CUBE_MAP_POSITIVE_Y    = 0x8517; | 
|  | const GLenum TEXTURE_CUBE_MAP_NEGATIVE_Y    = 0x8518; | 
|  | const GLenum TEXTURE_CUBE_MAP_POSITIVE_Z    = 0x8519; | 
|  | const GLenum TEXTURE_CUBE_MAP_NEGATIVE_Z    = 0x851A; | 
|  | const GLenum MAX_CUBE_MAP_TEXTURE_SIZE      = 0x851C; | 
|  |  | 
|  | /* TextureUnit */ | 
|  | const GLenum TEXTURE0                       = 0x84C0; | 
|  | const GLenum TEXTURE1                       = 0x84C1; | 
|  | const GLenum TEXTURE2                       = 0x84C2; | 
|  | const GLenum TEXTURE3                       = 0x84C3; | 
|  | const GLenum TEXTURE4                       = 0x84C4; | 
|  | const GLenum TEXTURE5                       = 0x84C5; | 
|  | const GLenum TEXTURE6                       = 0x84C6; | 
|  | const GLenum TEXTURE7                       = 0x84C7; | 
|  | const GLenum TEXTURE8                       = 0x84C8; | 
|  | const GLenum TEXTURE9                       = 0x84C9; | 
|  | const GLenum TEXTURE10                      = 0x84CA; | 
|  | const GLenum TEXTURE11                      = 0x84CB; | 
|  | const GLenum TEXTURE12                      = 0x84CC; | 
|  | const GLenum TEXTURE13                      = 0x84CD; | 
|  | const GLenum TEXTURE14                      = 0x84CE; | 
|  | const GLenum TEXTURE15                      = 0x84CF; | 
|  | const GLenum TEXTURE16                      = 0x84D0; | 
|  | const GLenum TEXTURE17                      = 0x84D1; | 
|  | const GLenum TEXTURE18                      = 0x84D2; | 
|  | const GLenum TEXTURE19                      = 0x84D3; | 
|  | const GLenum TEXTURE20                      = 0x84D4; | 
|  | const GLenum TEXTURE21                      = 0x84D5; | 
|  | const GLenum TEXTURE22                      = 0x84D6; | 
|  | const GLenum TEXTURE23                      = 0x84D7; | 
|  | const GLenum TEXTURE24                      = 0x84D8; | 
|  | const GLenum TEXTURE25                      = 0x84D9; | 
|  | const GLenum TEXTURE26                      = 0x84DA; | 
|  | const GLenum TEXTURE27                      = 0x84DB; | 
|  | const GLenum TEXTURE28                      = 0x84DC; | 
|  | const GLenum TEXTURE29                      = 0x84DD; | 
|  | const GLenum TEXTURE30                      = 0x84DE; | 
|  | const GLenum TEXTURE31                      = 0x84DF; | 
|  | const GLenum ACTIVE_TEXTURE                 = 0x84E0; | 
|  |  | 
|  | /* TextureWrapMode */ | 
|  | const GLenum REPEAT                         = 0x2901; | 
|  | const GLenum CLAMP_TO_EDGE                  = 0x812F; | 
|  | const GLenum MIRRORED_REPEAT                = 0x8370; | 
|  |  | 
|  | /* Uniform Types */ | 
|  | const GLenum FLOAT_VEC2                     = 0x8B50; | 
|  | const GLenum FLOAT_VEC3                     = 0x8B51; | 
|  | const GLenum FLOAT_VEC4                     = 0x8B52; | 
|  | const GLenum INT_VEC2                       = 0x8B53; | 
|  | const GLenum INT_VEC3                       = 0x8B54; | 
|  | const GLenum INT_VEC4                       = 0x8B55; | 
|  | const GLenum BOOL                           = 0x8B56; | 
|  | const GLenum BOOL_VEC2                      = 0x8B57; | 
|  | const GLenum BOOL_VEC3                      = 0x8B58; | 
|  | const GLenum BOOL_VEC4                      = 0x8B59; | 
|  | const GLenum FLOAT_MAT2                     = 0x8B5A; | 
|  | const GLenum FLOAT_MAT3                     = 0x8B5B; | 
|  | const GLenum FLOAT_MAT4                     = 0x8B5C; | 
|  | const GLenum SAMPLER_2D                     = 0x8B5E; | 
|  | const GLenum SAMPLER_CUBE                   = 0x8B60; | 
|  |  | 
|  | /* Vertex Arrays */ | 
|  | const GLenum VERTEX_ATTRIB_ARRAY_ENABLED        = 0x8622; | 
|  | const GLenum VERTEX_ATTRIB_ARRAY_SIZE           = 0x8623; | 
|  | const GLenum VERTEX_ATTRIB_ARRAY_STRIDE         = 0x8624; | 
|  | const GLenum VERTEX_ATTRIB_ARRAY_TYPE           = 0x8625; | 
|  | const GLenum VERTEX_ATTRIB_ARRAY_NORMALIZED     = 0x886A; | 
|  | const GLenum VERTEX_ATTRIB_ARRAY_POINTER        = 0x8645; | 
|  | const GLenum VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F; | 
|  |  | 
|  | /* Read Format */ | 
|  | const GLenum IMPLEMENTATION_COLOR_READ_TYPE   = 0x8B9A; | 
|  | const GLenum IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B; | 
|  |  | 
|  | /* Shader Source */ | 
|  | const GLenum COMPILE_STATUS                 = 0x8B81; | 
|  |  | 
|  | /* Shader Precision-Specified Types */ | 
|  | const GLenum LOW_FLOAT                      = 0x8DF0; | 
|  | const GLenum MEDIUM_FLOAT                   = 0x8DF1; | 
|  | const GLenum HIGH_FLOAT                     = 0x8DF2; | 
|  | const GLenum LOW_INT                        = 0x8DF3; | 
|  | const GLenum MEDIUM_INT                     = 0x8DF4; | 
|  | const GLenum HIGH_INT                       = 0x8DF5; | 
|  |  | 
|  | /* Framebuffer Object. */ | 
|  | const GLenum FRAMEBUFFER                    = 0x8D40; | 
|  | const GLenum RENDERBUFFER                   = 0x8D41; | 
|  |  | 
|  | const GLenum RGBA4                          = 0x8056; | 
|  | const GLenum RGB5_A1                        = 0x8057; | 
|  | const GLenum RGB565                         = 0x8D62; | 
|  | const GLenum DEPTH_COMPONENT16              = 0x81A5; | 
|  | const GLenum STENCIL_INDEX                  = 0x1901; | 
|  | const GLenum STENCIL_INDEX8                 = 0x8D48; | 
|  | const GLenum DEPTH_STENCIL                  = 0x84F9; | 
|  |  | 
|  | const GLenum RENDERBUFFER_WIDTH             = 0x8D42; | 
|  | const GLenum RENDERBUFFER_HEIGHT            = 0x8D43; | 
|  | const GLenum RENDERBUFFER_INTERNAL_FORMAT   = 0x8D44; | 
|  | const GLenum RENDERBUFFER_RED_SIZE          = 0x8D50; | 
|  | const GLenum RENDERBUFFER_GREEN_SIZE        = 0x8D51; | 
|  | const GLenum RENDERBUFFER_BLUE_SIZE         = 0x8D52; | 
|  | const GLenum RENDERBUFFER_ALPHA_SIZE        = 0x8D53; | 
|  | const GLenum RENDERBUFFER_DEPTH_SIZE        = 0x8D54; | 
|  | const GLenum RENDERBUFFER_STENCIL_SIZE      = 0x8D55; | 
|  |  | 
|  | const GLenum FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE           = 0x8CD0; | 
|  | const GLenum FRAMEBUFFER_ATTACHMENT_OBJECT_NAME           = 0x8CD1; | 
|  | const GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL         = 0x8CD2; | 
|  | const GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3; | 
|  |  | 
|  | const GLenum COLOR_ATTACHMENT0              = 0x8CE0; | 
|  | const GLenum DEPTH_ATTACHMENT               = 0x8D00; | 
|  | const GLenum STENCIL_ATTACHMENT             = 0x8D20; | 
|  | const GLenum DEPTH_STENCIL_ATTACHMENT       = 0x821A; | 
|  |  | 
|  | const GLenum NONE                           = 0; | 
|  |  | 
|  | const GLenum FRAMEBUFFER_COMPLETE                      = 0x8CD5; | 
|  | const GLenum FRAMEBUFFER_INCOMPLETE_ATTACHMENT         = 0x8CD6; | 
|  | const GLenum FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7; | 
|  | const GLenum FRAMEBUFFER_INCOMPLETE_DIMENSIONS         = 0x8CD9; | 
|  | const GLenum FRAMEBUFFER_UNSUPPORTED                   = 0x8CDD; | 
|  |  | 
|  | const GLenum FRAMEBUFFER_BINDING            = 0x8CA6; | 
|  | const GLenum RENDERBUFFER_BINDING           = 0x8CA7; | 
|  | const GLenum MAX_RENDERBUFFER_SIZE          = 0x84E8; | 
|  |  | 
|  | const GLenum INVALID_FRAMEBUFFER_OPERATION  = 0x0506; | 
|  |  | 
|  | /* WebGL-specific enums */ | 
|  | const GLenum UNPACK_FLIP_Y_WEBGL                = 0x9240; | 
|  | const GLenum UNPACK_PREMULTIPLY_ALPHA_WEBGL     = 0x9241; | 
|  | const GLenum CONTEXT_LOST_WEBGL                 = 0x9242; | 
|  | const GLenum UNPACK_COLORSPACE_CONVERSION_WEBGL = 0x9243; | 
|  | const GLenum BROWSER_DEFAULT_WEBGL              = 0x9244; | 
|  |  | 
|  | readonly attribute GLsizei drawingBufferWidth; | 
|  | readonly attribute GLsizei drawingBufferHeight; | 
|  |  | 
|  | void activeTexture(GLenum texture); | 
|  | [CallWith=ScriptState] void attachShader(WebGLProgram? program, WebGLShader? shader); | 
|  | void bindAttribLocation(WebGLProgram? program, GLuint index, DOMString name); | 
|  | [CallWith=ScriptState] void bindBuffer(GLenum target, WebGLBuffer? buffer); | 
|  | [CallWith=ScriptState] void bindFramebuffer(GLenum target, WebGLFramebuffer? framebuffer); | 
|  | [CallWith=ScriptState] void bindRenderbuffer(GLenum target, WebGLRenderbuffer? renderbuffer); | 
|  | [CallWith=ScriptState] void bindTexture(GLenum target, WebGLTexture? texture); | 
|  | void blendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); | 
|  | void blendEquation(GLenum mode); | 
|  | void blendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); | 
|  | void blendFunc(GLenum sfactor, GLenum dfactor); | 
|  | void blendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); | 
|  | // FIXME: should be union type | 
|  | // https://www.khronos.org/bugzilla/show_bug.cgi?id=1172 | 
|  | void bufferData(GLenum target, GLsizeiptr size, GLenum usage); | 
|  | void bufferData(GLenum target, ArrayBufferView data, GLenum usage); | 
|  | void bufferData(GLenum target, ArrayBuffer? data, GLenum usage); | 
|  | void bufferSubData(GLenum target, GLintptr offset, [FlexibleArrayBufferView] ArrayBufferView data); | 
|  | void bufferSubData(GLenum target, GLintptr offset, ArrayBuffer? data); | 
|  |  | 
|  | GLenum checkFramebufferStatus(GLenum target); | 
|  | void clear(GLbitfield mask); | 
|  | void clearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); | 
|  | void clearDepth(GLclampf depth); | 
|  | void clearStencil(GLint s); | 
|  | void colorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); | 
|  | void compileShader(WebGLShader? shader); | 
|  |  | 
|  | void compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, | 
|  | GLsizei width, GLsizei height, GLint border, ArrayBufferView? data); | 
|  | void compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, | 
|  | GLsizei width, GLsizei height, GLenum format, ArrayBufferView? data); | 
|  |  | 
|  | void copyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); | 
|  | void copyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); | 
|  |  | 
|  | WebGLBuffer createBuffer(); | 
|  | WebGLFramebuffer createFramebuffer(); | 
|  | WebGLProgram createProgram(); | 
|  | WebGLRenderbuffer createRenderbuffer(); | 
|  | WebGLShader createShader(GLenum type); | 
|  | WebGLTexture createTexture(); | 
|  |  | 
|  | void cullFace(GLenum mode); | 
|  |  | 
|  | void deleteBuffer(WebGLBuffer? buffer); | 
|  | void deleteFramebuffer(WebGLFramebuffer? framebuffer); | 
|  | void deleteProgram(WebGLProgram? program); | 
|  | void deleteRenderbuffer(WebGLRenderbuffer? renderbuffer); | 
|  | void deleteShader(WebGLShader? shader); | 
|  | void deleteTexture(WebGLTexture? texture); | 
|  |  | 
|  | void depthFunc(GLenum func); | 
|  | void depthMask(GLboolean flag); | 
|  | void depthRange(GLclampf zNear, GLclampf zFar); | 
|  | [CallWith=ScriptState] void detachShader(WebGLProgram? program, WebGLShader? shader); | 
|  | void disable(GLenum cap); | 
|  | void disableVertexAttribArray(GLuint index); | 
|  | void drawArrays(GLenum mode, GLint first, GLsizei count); | 
|  | void drawElements(GLenum mode, GLsizei count, GLenum type, GLintptr offset); | 
|  |  | 
|  | void enable(GLenum cap); | 
|  | void enableVertexAttribArray(GLuint index); | 
|  | void finish(); | 
|  | void flush(); | 
|  | [CallWith=ScriptState] void framebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, WebGLRenderbuffer? renderbuffer); | 
|  | [CallWith=ScriptState] void framebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, WebGLTexture? texture, GLint level); | 
|  | void frontFace(GLenum mode); | 
|  | void generateMipmap(GLenum target); | 
|  |  | 
|  | WebGLActiveInfo getActiveAttrib(WebGLProgram? program, GLuint index); | 
|  | WebGLActiveInfo getActiveUniform(WebGLProgram? program, GLuint index); | 
|  |  | 
|  | sequence<WebGLShader>? getAttachedShaders(WebGLProgram? program); | 
|  |  | 
|  | GLint getAttribLocation(WebGLProgram? program, DOMString name); | 
|  |  | 
|  | [CallWith=ScriptState] any getBufferParameter(GLenum target, GLenum pname); | 
|  |  | 
|  | WebGLContextAttributes? getContextAttributes(); | 
|  |  | 
|  | GLenum getError(); | 
|  |  | 
|  | [CallWith=ScriptState] object? getExtension(DOMString name); | 
|  |  | 
|  | [CallWith=ScriptState] any getFramebufferAttachmentParameter(GLenum target, GLenum attachment, GLenum pname); | 
|  | [CallWith=ScriptState] any getParameter(GLenum pname); | 
|  | [CallWith=ScriptState] any getProgramParameter(WebGLProgram? program, GLenum pname); | 
|  | DOMString? getProgramInfoLog(WebGLProgram? program); | 
|  | [CallWith=ScriptState] any getRenderbufferParameter(GLenum target, GLenum pname); | 
|  | [CallWith=ScriptState] any getShaderParameter(WebGLShader? shader, GLenum pname); | 
|  |  | 
|  | DOMString?   getShaderInfoLog(WebGLShader? shader); | 
|  |  | 
|  | WebGLShaderPrecisionFormat getShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype); | 
|  |  | 
|  | DOMString?   getShaderSource(WebGLShader? shader); | 
|  |  | 
|  | sequence<DOMString>? getSupportedExtensions(); | 
|  |  | 
|  | [CallWith=ScriptState] any getTexParameter(GLenum target, GLenum pname); | 
|  |  | 
|  | [CallWith=ScriptState] any getUniform(WebGLProgram? program, WebGLUniformLocation? location); | 
|  |  | 
|  | WebGLUniformLocation getUniformLocation(WebGLProgram? program, DOMString name); | 
|  |  | 
|  | [CallWith=ScriptState] any getVertexAttrib(GLuint index, GLenum pname); | 
|  |  | 
|  | GLintptr getVertexAttribOffset(GLuint index, GLenum pname); | 
|  |  | 
|  | void hint(GLenum target, GLenum mode); | 
|  | GLboolean isBuffer(WebGLBuffer? buffer); | 
|  | GLboolean isContextLost(); | 
|  | GLboolean isEnabled(GLenum cap); | 
|  | GLboolean isFramebuffer(WebGLFramebuffer? framebuffer); | 
|  | GLboolean isProgram(WebGLProgram? program); | 
|  | GLboolean isRenderbuffer(WebGLRenderbuffer? renderbuffer); | 
|  | GLboolean isShader(WebGLShader? shader); | 
|  | GLboolean isTexture(WebGLTexture? texture); | 
|  | void lineWidth(GLfloat width); | 
|  | void linkProgram(WebGLProgram? program); | 
|  | void pixelStorei(GLenum pname, GLint param); | 
|  | void polygonOffset(GLfloat factor, GLfloat units); | 
|  |  | 
|  | void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, ArrayBufferView? pixels); | 
|  |  | 
|  | void renderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); | 
|  | void sampleCoverage(GLclampf value, GLboolean invert); | 
|  | void scissor(GLint x, GLint y, GLsizei width, GLsizei height); | 
|  | void shaderSource(WebGLShader? shader, DOMString string); | 
|  | void stencilFunc(GLenum func, GLint ref, GLuint mask); | 
|  | void stencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); | 
|  | void stencilMask(GLuint mask); | 
|  | void stencilMaskSeparate(GLenum face, GLuint mask); | 
|  | void stencilOp(GLenum fail, GLenum zfail, GLenum zpass); | 
|  | void stencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass); | 
|  |  | 
|  | void texParameterf(GLenum target, GLenum pname, GLfloat param); | 
|  | void texParameteri(GLenum target, GLenum pname, GLint param); | 
|  |  | 
|  | // Supported forms: | 
|  | // FIXME: should be union type | 
|  | // https://www.khronos.org/bugzilla/show_bug.cgi?id=1172 | 
|  | void texImage2D( | 
|  | GLenum target, GLint level, GLenum internalformat, | 
|  | GLsizei width, GLsizei height, GLint border, | 
|  | GLenum format, GLenum type, ArrayBufferView? pixels); | 
|  | void texImage2D( | 
|  | GLenum target, GLint level, GLenum internalformat, | 
|  | GLenum format, GLenum type, ImageData? pixels); | 
|  | [RaisesException] void texImage2D( | 
|  | GLenum target, GLint level, GLenum internalformat, | 
|  | GLenum format, GLenum type, HTMLImageElement image); | 
|  | [RaisesException] void texImage2D( | 
|  | GLenum target, GLint level, GLenum internalformat, | 
|  | GLenum format, GLenum type, HTMLCanvasElement canvas); | 
|  | [RaisesException] void texImage2D( | 
|  | GLenum target, GLint level, GLenum internalformat, | 
|  | GLenum format, GLenum type, HTMLVideoElement video); | 
|  | [RuntimeEnabled=ExperimentalCanvasFeatures] void texImage2D( | 
|  | GLenum target, GLint level, GLenum internalformat, | 
|  | GLenum format, GLenum type, ImageBitmap bitmap); | 
|  |  | 
|  | void texSubImage2D( | 
|  | GLenum target, GLint level, GLint xoffset, GLint yoffset, | 
|  | GLsizei width, GLsizei height, | 
|  | GLenum format, GLenum type, ArrayBufferView? pixels); | 
|  | void texSubImage2D( | 
|  | GLenum target, GLint level, GLint xoffset, GLint yoffset, | 
|  | GLenum format, GLenum type, ImageData? pixels); | 
|  | [RaisesException] void texSubImage2D( | 
|  | GLenum target, GLint level, GLint xoffset, GLint yoffset, | 
|  | GLenum format, GLenum type, HTMLImageElement image); | 
|  | [RaisesException] void texSubImage2D( | 
|  | GLenum target, GLint level, GLint xoffset, GLint yoffset, | 
|  | GLenum format, GLenum type, HTMLCanvasElement canvas); | 
|  | [RaisesException] void texSubImage2D( | 
|  | GLenum target, GLint level, GLint xoffset, GLint yoffset, | 
|  | GLenum format, GLenum type, HTMLVideoElement video); | 
|  | [RuntimeEnabled=ExperimentalCanvasFeatures] void texSubImage2D( | 
|  | GLenum target, GLint level, GLint xoffset, GLint yoffset, | 
|  | GLenum format, GLenum type, ImageBitmap bitmap); | 
|  |  | 
|  | void uniform1f(WebGLUniformLocation? location, GLfloat x); | 
|  | void uniform1fv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Float32Array v); | 
|  | void uniform1fv(WebGLUniformLocation? location, sequence<GLfloat> v); | 
|  | void uniform1i(WebGLUniformLocation? location, GLint x); | 
|  | void uniform1iv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Int32Array v); | 
|  | void uniform1iv(WebGLUniformLocation? location, sequence<GLint> v); | 
|  | void uniform2f(WebGLUniformLocation? location, GLfloat x, GLfloat y); | 
|  | void uniform2fv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Float32Array v); | 
|  | void uniform2fv(WebGLUniformLocation? location, sequence<GLfloat> v); | 
|  | void uniform2i(WebGLUniformLocation? location, GLint x, GLint y); | 
|  | void uniform2iv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Int32Array v); | 
|  | void uniform2iv(WebGLUniformLocation? location, sequence<GLint> v); | 
|  | void uniform3f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z); | 
|  | void uniform3fv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Float32Array v); | 
|  | void uniform3fv(WebGLUniformLocation? location, sequence<GLfloat> v); | 
|  | void uniform3i(WebGLUniformLocation? location, GLint x, GLint y, GLint z); | 
|  | void uniform3iv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Int32Array v); | 
|  | void uniform3iv(WebGLUniformLocation? location, sequence<GLint> v); | 
|  | void uniform4f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); | 
|  | void uniform4fv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Float32Array v); | 
|  | void uniform4fv(WebGLUniformLocation? location, sequence<GLfloat> v); | 
|  | void uniform4i(WebGLUniformLocation? location, GLint x, GLint y, GLint z, GLint w); | 
|  | void uniform4iv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Int32Array v); | 
|  | void uniform4iv(WebGLUniformLocation? location, sequence<GLint> v); | 
|  |  | 
|  | void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32Array array); | 
|  | void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, sequence<GLfloat> array); | 
|  | void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32Array array); | 
|  | void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, sequence<GLfloat> array); | 
|  | void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32Array array); | 
|  | void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, sequence<GLfloat> array); | 
|  |  | 
|  | [CallWith=ScriptState] void useProgram(WebGLProgram? program); | 
|  | void validateProgram(WebGLProgram? program); | 
|  |  | 
|  | void vertexAttrib1f(GLuint indx, GLfloat x); | 
|  | void vertexAttrib1fv(GLuint indx, Float32Array values); | 
|  | void vertexAttrib1fv(GLuint indx, sequence<GLfloat> values); | 
|  | void vertexAttrib2f(GLuint indx, GLfloat x, GLfloat y); | 
|  | void vertexAttrib2fv(GLuint indx, Float32Array values); | 
|  | void vertexAttrib2fv(GLuint indx, sequence<GLfloat> values); | 
|  | void vertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z); | 
|  | void vertexAttrib3fv(GLuint indx, Float32Array values); | 
|  | void vertexAttrib3fv(GLuint indx, sequence<GLfloat> values); | 
|  | void vertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w); | 
|  | void vertexAttrib4fv(GLuint indx, Float32Array values); | 
|  | void vertexAttrib4fv(GLuint indx, sequence<GLfloat> values); | 
|  | [CallWith=ScriptState] void vertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, | 
|  | GLsizei stride, GLintptr offset); | 
|  |  | 
|  | void viewport(GLint x, GLint y, GLsizei width, GLsizei height); | 
|  | }; |