Title: [270218] trunk/Source/WebCore
Revision
270218
Author
[email protected]
Date
2020-11-28 06:40:54 -0800 (Sat, 28 Nov 2020)

Log Message

Remove enums for GCGLenum constants in GraphicsContextGL and ExtensionsGL
https://bugs.webkit.org/show_bug.cgi?id=219319

Reviewed by Darin Adler.

Both GraphicsContextGL and ExtensionsGL were using C style enums to scope GCGLenum
values. Rather than using the enum static constexpr values of GCGLenum are used
instead.

This removes the need in WebGLDrawBuffers to static_cast the enums to GCGLenum
which works around a narrowing error.

No new tests. No change in behavior.

* html/canvas/WebGLDrawBuffers.cpp:
(WebCore::WebGLDrawBuffers::drawBuffersWEBGL):
* platform/graphics/ExtensionsGL.h:
* platform/graphics/GraphicsContextGL.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (270217 => 270218)


--- trunk/Source/WebCore/ChangeLog	2020-11-28 14:07:27 UTC (rev 270217)
+++ trunk/Source/WebCore/ChangeLog	2020-11-28 14:40:54 UTC (rev 270218)
@@ -1,3 +1,24 @@
+2020-11-28  Don Olmstead  <[email protected]>
+
+        Remove enums for GCGLenum constants in GraphicsContextGL and ExtensionsGL
+        https://bugs.webkit.org/show_bug.cgi?id=219319
+
+        Reviewed by Darin Adler.
+
+        Both GraphicsContextGL and ExtensionsGL were using C style enums to scope GCGLenum
+        values. Rather than using the enum static constexpr values of GCGLenum are used
+        instead.
+
+        This removes the need in WebGLDrawBuffers to static_cast the enums to GCGLenum
+        which works around a narrowing error.
+
+        No new tests. No change in behavior.
+
+        * html/canvas/WebGLDrawBuffers.cpp:
+        (WebCore::WebGLDrawBuffers::drawBuffersWEBGL):
+        * platform/graphics/ExtensionsGL.h:
+        * platform/graphics/GraphicsContextGL.h:
+
 2020-11-28  Philippe Normand  <[email protected]>
 
         Unreviewed, GTK LTS build fix after r270195

Modified: trunk/Source/WebCore/html/canvas/WebGLDrawBuffers.cpp (270217 => 270218)


--- trunk/Source/WebCore/html/canvas/WebGLDrawBuffers.cpp	2020-11-28 14:07:27 UTC (rev 270217)
+++ trunk/Source/WebCore/html/canvas/WebGLDrawBuffers.cpp	2020-11-28 14:40:54 UTC (rev 270218)
@@ -74,7 +74,7 @@
             return;
         }
         // Because the backbuffer is simulated on all current WebKit ports, we need to change BACK to COLOR_ATTACHMENT0.
-        GCGLenum value[1] { static_cast<GCGLenum>(bufs[0] == GraphicsContextGL::BACK ? GraphicsContextGL::COLOR_ATTACHMENT0 : GraphicsContextGL::NONE) };
+        GCGLenum value[1] { bufs[0] == GraphicsContextGL::BACK ? GraphicsContextGL::COLOR_ATTACHMENT0 : GraphicsContextGL::NONE };
         m_context->graphicsContextGL()->getExtensions().drawBuffersEXT(value);
         m_context->setBackDrawBuffer(bufs[0]);
     } else {
@@ -83,7 +83,7 @@
             return;
         }
         for (GCGLsizei i = 0; i < n; ++i) {
-            if (bufs[i] != GraphicsContextGL::NONE && bufs[i] != static_cast<GCGLenum>(ExtensionsGL::COLOR_ATTACHMENT0_EXT + i)) {
+            if (bufs[i] != GraphicsContextGL::NONE && bufs[i] != ExtensionsGL::COLOR_ATTACHMENT0_EXT + i) {
                 m_context->synthesizeGLError(GraphicsContextGL::INVALID_OPERATION, "drawBuffersWEBGL", "COLOR_ATTACHMENTi_EXT or NONE");
                 return;
             }

Modified: trunk/Source/WebCore/platform/graphics/ExtensionsGL.h (270217 => 270218)


--- trunk/Source/WebCore/platform/graphics/ExtensionsGL.h	2020-11-28 14:07:27 UTC (rev 270217)
+++ trunk/Source/WebCore/platform/graphics/ExtensionsGL.h	2020-11-28 14:40:54 UTC (rev 270218)
@@ -92,179 +92,177 @@
     // Has no other side-effects.
     virtual bool isEnabled(const String&) = 0;
 
-    enum ExtensionsEnumType {
-        // EXT_sRGB formats
-        SRGB_EXT = 0x8C40,
-        SRGB_ALPHA_EXT = 0x8C42,
-        SRGB8_ALPHA8_EXT = 0x8C43,
-        FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT = 0x8210,
+    // EXT_sRGB formats
+    static constexpr GCGLenum SRGB_EXT = 0x8C40;
+    static constexpr GCGLenum SRGB_ALPHA_EXT = 0x8C42;
+    static constexpr GCGLenum SRGB8_ALPHA8_EXT = 0x8C43;
+    static constexpr GCGLenum FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT = 0x8210;
 
-        // EXT_blend_minmax enums
-        MIN_EXT = 0x8007,
-        MAX_EXT = 0x8008,
+    // EXT_blend_minmax enums
+    static constexpr GCGLenum MIN_EXT = 0x8007;
+    static constexpr GCGLenum MAX_EXT = 0x8008;
 
-        // GL_EXT_texture_format_BGRA8888 enums
-        BGRA_EXT = 0x80E1,
+    // GL_EXT_texture_format_BGRA8888 enums
+    static constexpr GCGLenum BGRA_EXT = 0x80E1;
 
-        // GL_ARB_robustness enums
-        GUILTY_CONTEXT_RESET_ARB = 0x8253,
-        INNOCENT_CONTEXT_RESET_ARB = 0x8254,
-        UNKNOWN_CONTEXT_RESET_ARB = 0x8255,
-        CONTEXT_ROBUST_ACCESS = 0x90F3,
+    // GL_ARB_robustness enums
+    static constexpr GCGLenum GUILTY_CONTEXT_RESET_ARB = 0x8253;
+    static constexpr GCGLenum INNOCENT_CONTEXT_RESET_ARB = 0x8254;
+    static constexpr GCGLenum UNKNOWN_CONTEXT_RESET_ARB = 0x8255;
+    static constexpr GCGLenum CONTEXT_ROBUST_ACCESS = 0x90F3;
 
-        // GL_EXT/OES_packed_depth_stencil enums
-        DEPTH24_STENCIL8 = 0x88F0,
+    // GL_EXT/OES_packed_depth_stencil enums
+    static constexpr GCGLenum DEPTH24_STENCIL8 = 0x88F0;
 
-        // GL_ANGLE_framebuffer_blit names
-        READ_FRAMEBUFFER = 0x8CA8,
-        DRAW_FRAMEBUFFER = 0x8CA9,
-        DRAW_FRAMEBUFFER_BINDING = 0x8CA6,
-        READ_FRAMEBUFFER_BINDING = 0x8CAA,
+    // GL_ANGLE_framebuffer_blit names
+    static constexpr GCGLenum READ_FRAMEBUFFER = 0x8CA8;
+    static constexpr GCGLenum DRAW_FRAMEBUFFER = 0x8CA9;
+    static constexpr GCGLenum DRAW_FRAMEBUFFER_BINDING = 0x8CA6;
+    static constexpr GCGLenum READ_FRAMEBUFFER_BINDING = 0x8CAA;
 
-        // GL_ANGLE_framebuffer_multisample names
-        RENDERBUFFER_SAMPLES = 0x8CAB,
-        FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56,
-        MAX_SAMPLES = 0x8D57,
+    // GL_ANGLE_framebuffer_multisample names
+    static constexpr GCGLenum RENDERBUFFER_SAMPLES = 0x8CAB;
+    static constexpr GCGLenum FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56;
+    static constexpr GCGLenum MAX_SAMPLES = 0x8D57;
 
-        // GL_IMG_multisampled_render_to_texture
-        RENDERBUFFER_SAMPLES_IMG = 0x9133,
-        FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG = 0x9134,
-        MAX_SAMPLES_IMG = 0x9135,
-        TEXTURE_SAMPLES_IMG = 0x9136,
+    // GL_IMG_multisampled_render_to_texture
+    static constexpr GCGLenum RENDERBUFFER_SAMPLES_IMG = 0x9133;
+    static constexpr GCGLenum FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG = 0x9134;
+    static constexpr GCGLenum MAX_SAMPLES_IMG = 0x9135;
+    static constexpr GCGLenum TEXTURE_SAMPLES_IMG = 0x9136;
 
-        // GL_OES_standard_derivatives names
-        FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 0x8B8B,
+    // GL_OES_standard_derivatives names
+    static constexpr GCGLenum FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 0x8B8B;
 
-        // GL_OES_rgb8_rgba8 names
-        RGB8_OES = 0x8051,
-        RGBA8_OES = 0x8058,
+    // GL_OES_rgb8_rgba8 names
+    static constexpr GCGLenum RGB8_OES = 0x8051;
+    static constexpr GCGLenum RGBA8_OES = 0x8058;
 
-        // GL_OES_vertex_array_object names
-        VERTEX_ARRAY_BINDING_OES = 0x85B5,
+    // GL_OES_vertex_array_object names
+    static constexpr GCGLenum VERTEX_ARRAY_BINDING_OES = 0x85B5;
 
-        // GL_ANGLE_translated_shader_source
-        TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE = 0x93A0,
+    // GL_ANGLE_translated_shader_source
+    static constexpr GCGLenum TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE = 0x93A0;
 
-        // GL_ARB_texture_rectangle
-        TEXTURE_RECTANGLE_ARB =  0x84F5,
-        TEXTURE_BINDING_RECTANGLE_ARB = 0x84F6,
+    // GL_ARB_texture_rectangle
+    static constexpr GCGLenum TEXTURE_RECTANGLE_ARB =  0x84F5;
+    static constexpr GCGLenum TEXTURE_BINDING_RECTANGLE_ARB = 0x84F6;
 
-        // GL_EXT_texture_compression_dxt1
-        // GL_EXT_texture_compression_s3tc
-        COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0,
-        COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1,
-        COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2,
-        COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3,
+    // GL_EXT_texture_compression_dxt1
+    // GL_EXT_texture_compression_s3tc
+    static constexpr GCGLenum COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0;
+    static constexpr GCGLenum COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1;
+    static constexpr GCGLenum COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2;
+    static constexpr GCGLenum COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3;
 
-        // GL_EXT_texture_compression_s3tc_srgb
-        COMPRESSED_SRGB_S3TC_DXT1_EXT = 0x8C4C,
-        COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = 0x8C4D,
-        COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = 0x8C4E,
-        COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = 0x8C4F,
+    // GL_EXT_texture_compression_s3tc_srgb
+    static constexpr GCGLenum COMPRESSED_SRGB_S3TC_DXT1_EXT = 0x8C4C;
+    static constexpr GCGLenum COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = 0x8C4D;
+    static constexpr GCGLenum COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = 0x8C4E;
+    static constexpr GCGLenum COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = 0x8C4F;
 
-        // GL_OES_compressed_ETC1_RGB8_texture
-        ETC1_RGB8_OES = 0x8D64,
+    // GL_OES_compressed_ETC1_RGB8_texture
+    static constexpr GCGLenum ETC1_RGB8_OES = 0x8D64;
 
-        // WEBGL_compressed_texture_etc
-        COMPRESSED_R11_EAC = 0x9270,
-        COMPRESSED_SIGNED_R11_EAC = 0x9271,
-        COMPRESSED_RG11_EAC = 0x9272,
-        COMPRESSED_SIGNED_RG11_EAC = 0x9273,
-        COMPRESSED_RGB8_ETC2 = 0x9274,
-        COMPRESSED_SRGB8_ETC2 = 0x9275,
-        COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9276,
-        COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9277,
-        COMPRESSED_RGBA8_ETC2_EAC = 0x9278,
-        COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 0x9279,
+    // WEBGL_compressed_texture_etc
+    static constexpr GCGLenum COMPRESSED_R11_EAC = 0x9270;
+    static constexpr GCGLenum COMPRESSED_SIGNED_R11_EAC = 0x9271;
+    static constexpr GCGLenum COMPRESSED_RG11_EAC = 0x9272;
+    static constexpr GCGLenum COMPRESSED_SIGNED_RG11_EAC = 0x9273;
+    static constexpr GCGLenum COMPRESSED_RGB8_ETC2 = 0x9274;
+    static constexpr GCGLenum COMPRESSED_SRGB8_ETC2 = 0x9275;
+    static constexpr GCGLenum COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9276;
+    static constexpr GCGLenum COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9277;
+    static constexpr GCGLenum COMPRESSED_RGBA8_ETC2_EAC = 0x9278;
+    static constexpr GCGLenum COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 0x9279;
 
-        // GL_IMG_texture_compression_pvrtc
-        COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 0x8C00,
-        COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 0x8C01,
-        COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 0x8C02,
-        COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 0x8C03,
+    // GL_IMG_texture_compression_pvrtc
+    static constexpr GCGLenum COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 0x8C00;
+    static constexpr GCGLenum COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 0x8C01;
+    static constexpr GCGLenum COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 0x8C02;
+    static constexpr GCGLenum COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 0x8C03;
 
-        // GL_AMD_compressed_ATC_texture
-        COMPRESSED_ATC_RGB_AMD = 0x8C92,
-        COMPRESSED_ATC_RGBA_EXPLICIT_ALPHA_AMD = 0x8C93,
-        COMPRESSED_ATC_RGBA_INTERPOLATED_ALPHA_AMD = 0x87EE,
+    // GL_AMD_compressed_ATC_texture
+    static constexpr GCGLenum COMPRESSED_ATC_RGB_AMD = 0x8C92;
+    static constexpr GCGLenum COMPRESSED_ATC_RGBA_EXPLICIT_ALPHA_AMD = 0x8C93;
+    static constexpr GCGLenum COMPRESSED_ATC_RGBA_INTERPOLATED_ALPHA_AMD = 0x87EE;
 
-        // GL_KHR_texture_compression_astc_hdr
-        COMPRESSED_RGBA_ASTC_4x4_KHR = 0x93B0,
-        COMPRESSED_RGBA_ASTC_5x4_KHR = 0x93B1,
-        COMPRESSED_RGBA_ASTC_5x5_KHR = 0x93B2,
-        COMPRESSED_RGBA_ASTC_6x5_KHR = 0x93B3,
-        COMPRESSED_RGBA_ASTC_6x6_KHR = 0x93B4,
-        COMPRESSED_RGBA_ASTC_8x5_KHR = 0x93B5,
-        COMPRESSED_RGBA_ASTC_8x6_KHR = 0x93B6,
-        COMPRESSED_RGBA_ASTC_8x8_KHR = 0x93B7,
-        COMPRESSED_RGBA_ASTC_10x5_KHR = 0x93B8,
-        COMPRESSED_RGBA_ASTC_10x6_KHR = 0x93B9,
-        COMPRESSED_RGBA_ASTC_10x8_KHR = 0x93BA,
-        COMPRESSED_RGBA_ASTC_10x10_KHR = 0x93BB,
-        COMPRESSED_RGBA_ASTC_12x10_KHR = 0x93BC,
-        COMPRESSED_RGBA_ASTC_12x12_KHR = 0x93BD,
+    // GL_KHR_texture_compression_astc_hdr
+    static constexpr GCGLenum COMPRESSED_RGBA_ASTC_4x4_KHR = 0x93B0;
+    static constexpr GCGLenum COMPRESSED_RGBA_ASTC_5x4_KHR = 0x93B1;
+    static constexpr GCGLenum COMPRESSED_RGBA_ASTC_5x5_KHR = 0x93B2;
+    static constexpr GCGLenum COMPRESSED_RGBA_ASTC_6x5_KHR = 0x93B3;
+    static constexpr GCGLenum COMPRESSED_RGBA_ASTC_6x6_KHR = 0x93B4;
+    static constexpr GCGLenum COMPRESSED_RGBA_ASTC_8x5_KHR = 0x93B5;
+    static constexpr GCGLenum COMPRESSED_RGBA_ASTC_8x6_KHR = 0x93B6;
+    static constexpr GCGLenum COMPRESSED_RGBA_ASTC_8x8_KHR = 0x93B7;
+    static constexpr GCGLenum COMPRESSED_RGBA_ASTC_10x5_KHR = 0x93B8;
+    static constexpr GCGLenum COMPRESSED_RGBA_ASTC_10x6_KHR = 0x93B9;
+    static constexpr GCGLenum COMPRESSED_RGBA_ASTC_10x8_KHR = 0x93BA;
+    static constexpr GCGLenum COMPRESSED_RGBA_ASTC_10x10_KHR = 0x93BB;
+    static constexpr GCGLenum COMPRESSED_RGBA_ASTC_12x10_KHR = 0x93BC;
+    static constexpr GCGLenum COMPRESSED_RGBA_ASTC_12x12_KHR = 0x93BD;
 
-        COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR = 0x93D0,
-        COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR = 0x93D1,
-        COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR = 0x93D2,
-        COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR = 0x93D3,
-        COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR = 0x93D4,
-        COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR = 0x93D5,
-        COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR = 0x93D6,
-        COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR = 0x93D7,
-        COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR = 0x93D8,
-        COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR = 0x93D9,
-        COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR = 0x93DA,
-        COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR = 0x93DB,
-        COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR = 0x93DC,
-        COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR = 0x93DD,
+    static constexpr GCGLenum COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR = 0x93D0;
+    static constexpr GCGLenum COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR = 0x93D1;
+    static constexpr GCGLenum COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR = 0x93D2;
+    static constexpr GCGLenum COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR = 0x93D3;
+    static constexpr GCGLenum COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR = 0x93D4;
+    static constexpr GCGLenum COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR = 0x93D5;
+    static constexpr GCGLenum COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR = 0x93D6;
+    static constexpr GCGLenum COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR = 0x93D7;
+    static constexpr GCGLenum COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR = 0x93D8;
+    static constexpr GCGLenum COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR = 0x93D9;
+    static constexpr GCGLenum COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR = 0x93DA;
+    static constexpr GCGLenum COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR = 0x93DB;
+    static constexpr GCGLenum COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR = 0x93DC;
+    static constexpr GCGLenum COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR = 0x93DD;
 
-        // GL_EXT_texture_compression_rgtc
-        COMPRESSED_RED_RGTC1_EXT = 0x8DBB,
-        COMPRESSED_SIGNED_RED_RGTC1_EXT = 0x8DBC,
-        COMPRESSED_RED_GREEN_RGTC2_EXT = 0x8DBD,
-        COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT = 0x8DBE,
+    // GL_EXT_texture_compression_rgtc
+    static constexpr GCGLenum COMPRESSED_RED_RGTC1_EXT = 0x8DBB;
+    static constexpr GCGLenum COMPRESSED_SIGNED_RED_RGTC1_EXT = 0x8DBC;
+    static constexpr GCGLenum COMPRESSED_RED_GREEN_RGTC2_EXT = 0x8DBD;
+    static constexpr GCGLenum COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT = 0x8DBE;
 
-        // GL_EXT_texture_filter_anisotropic
-        TEXTURE_MAX_ANISOTROPY_EXT = 0x84FE,
-        MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF,
+    // GL_EXT_texture_filter_anisotropic
+    static constexpr GCGLenum TEXTURE_MAX_ANISOTROPY_EXT = 0x84FE;
+    static constexpr GCGLenum MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF;
 
-        // GL_ARB_draw_buffers / GL_EXT_draw_buffers
-        MAX_DRAW_BUFFERS_EXT = 0x8824,
-        DRAW_BUFFER0_EXT = 0x8825,
-        DRAW_BUFFER1_EXT = 0x8826,
-        DRAW_BUFFER2_EXT = 0x8827,
-        DRAW_BUFFER3_EXT = 0x8828,
-        DRAW_BUFFER4_EXT = 0x8829,
-        DRAW_BUFFER5_EXT = 0x882A,
-        DRAW_BUFFER6_EXT = 0x882B,
-        DRAW_BUFFER7_EXT = 0x882C,
-        DRAW_BUFFER8_EXT = 0x882D,
-        DRAW_BUFFER9_EXT = 0x882E,
-        DRAW_BUFFER10_EXT = 0x882F,
-        DRAW_BUFFER11_EXT = 0x8830,
-        DRAW_BUFFER12_EXT = 0x8831,
-        DRAW_BUFFER13_EXT = 0x8832,
-        DRAW_BUFFER14_EXT = 0x8833,
-        DRAW_BUFFER15_EXT = 0x8834,
-        MAX_COLOR_ATTACHMENTS_EXT = 0x8CDF,
-        COLOR_ATTACHMENT0_EXT = 0x8CE0,
-        COLOR_ATTACHMENT1_EXT = 0x8CE1,
-        COLOR_ATTACHMENT2_EXT = 0x8CE2,
-        COLOR_ATTACHMENT3_EXT = 0x8CE3,
-        COLOR_ATTACHMENT4_EXT = 0x8CE4,
-        COLOR_ATTACHMENT5_EXT = 0x8CE5,
-        COLOR_ATTACHMENT6_EXT = 0x8CE6,
-        COLOR_ATTACHMENT7_EXT = 0x8CE7,
-        COLOR_ATTACHMENT8_EXT = 0x8CE8,
-        COLOR_ATTACHMENT9_EXT = 0x8CE9,
-        COLOR_ATTACHMENT10_EXT = 0x8CEA,
-        COLOR_ATTACHMENT11_EXT = 0x8CEB,
-        COLOR_ATTACHMENT12_EXT = 0x8CEC,
-        COLOR_ATTACHMENT13_EXT = 0x8CED,
-        COLOR_ATTACHMENT14_EXT = 0x8CEE,
-        COLOR_ATTACHMENT15_EXT = 0x8CEF
-    };
+    // GL_ARB_draw_buffers / GL_EXT_draw_buffers
+    static constexpr GCGLenum MAX_DRAW_BUFFERS_EXT = 0x8824;
+    static constexpr GCGLenum DRAW_BUFFER0_EXT = 0x8825;
+    static constexpr GCGLenum DRAW_BUFFER1_EXT = 0x8826;
+    static constexpr GCGLenum DRAW_BUFFER2_EXT = 0x8827;
+    static constexpr GCGLenum DRAW_BUFFER3_EXT = 0x8828;
+    static constexpr GCGLenum DRAW_BUFFER4_EXT = 0x8829;
+    static constexpr GCGLenum DRAW_BUFFER5_EXT = 0x882A;
+    static constexpr GCGLenum DRAW_BUFFER6_EXT = 0x882B;
+    static constexpr GCGLenum DRAW_BUFFER7_EXT = 0x882C;
+    static constexpr GCGLenum DRAW_BUFFER8_EXT = 0x882D;
+    static constexpr GCGLenum DRAW_BUFFER9_EXT = 0x882E;
+    static constexpr GCGLenum DRAW_BUFFER10_EXT = 0x882F;
+    static constexpr GCGLenum DRAW_BUFFER11_EXT = 0x8830;
+    static constexpr GCGLenum DRAW_BUFFER12_EXT = 0x8831;
+    static constexpr GCGLenum DRAW_BUFFER13_EXT = 0x8832;
+    static constexpr GCGLenum DRAW_BUFFER14_EXT = 0x8833;
+    static constexpr GCGLenum DRAW_BUFFER15_EXT = 0x8834;
+    static constexpr GCGLenum MAX_COLOR_ATTACHMENTS_EXT = 0x8CDF;
+    static constexpr GCGLenum COLOR_ATTACHMENT0_EXT = 0x8CE0;
+    static constexpr GCGLenum COLOR_ATTACHMENT1_EXT = 0x8CE1;
+    static constexpr GCGLenum COLOR_ATTACHMENT2_EXT = 0x8CE2;
+    static constexpr GCGLenum COLOR_ATTACHMENT3_EXT = 0x8CE3;
+    static constexpr GCGLenum COLOR_ATTACHMENT4_EXT = 0x8CE4;
+    static constexpr GCGLenum COLOR_ATTACHMENT5_EXT = 0x8CE5;
+    static constexpr GCGLenum COLOR_ATTACHMENT6_EXT = 0x8CE6;
+    static constexpr GCGLenum COLOR_ATTACHMENT7_EXT = 0x8CE7;
+    static constexpr GCGLenum COLOR_ATTACHMENT8_EXT = 0x8CE8;
+    static constexpr GCGLenum COLOR_ATTACHMENT9_EXT = 0x8CE9;
+    static constexpr GCGLenum COLOR_ATTACHMENT10_EXT = 0x8CEA;
+    static constexpr GCGLenum COLOR_ATTACHMENT11_EXT = 0x8CEB;
+    static constexpr GCGLenum COLOR_ATTACHMENT12_EXT = 0x8CEC;
+    static constexpr GCGLenum COLOR_ATTACHMENT13_EXT = 0x8CED;
+    static constexpr GCGLenum COLOR_ATTACHMENT14_EXT = 0x8CEE;
+    static constexpr GCGLenum COLOR_ATTACHMENT15_EXT = 0x8CEF;
 
     // WebGL functions in format generate-gpup-webgl understands.
 

Modified: trunk/Source/WebCore/platform/graphics/GraphicsContextGL.h (270217 => 270218)


--- trunk/Source/WebCore/platform/graphics/GraphicsContextGL.h	2020-11-28 14:07:27 UTC (rev 270217)
+++ trunk/Source/WebCore/platform/graphics/GraphicsContextGL.h	2020-11-28 14:40:54 UTC (rev 270218)
@@ -61,616 +61,614 @@
 
 class GraphicsContextGL : public RefCounted<GraphicsContextGL> {
 public:
-    enum {
-        // WebGL 1 constants.
-        DEPTH_BUFFER_BIT = 0x00000100,
-        STENCIL_BUFFER_BIT = 0x00000400,
-        COLOR_BUFFER_BIT = 0x00004000,
-        POINTS = 0x0000,
-        LINES = 0x0001,
-        LINE_LOOP = 0x0002,
-        LINE_STRIP = 0x0003,
-        TRIANGLES = 0x0004,
-        TRIANGLE_STRIP = 0x0005,
-        TRIANGLE_FAN = 0x0006,
-        ZERO = 0,
-        _ONE_ = 1,
-        SRC_COLOR = 0x0300,
-        _ONE_MINUS_SRC_COLOR_ = 0x0301,
-        SRC_ALPHA = 0x0302,
-        _ONE_MINUS_SRC_ALPHA_ = 0x0303,
-        DST_ALPHA = 0x0304,
-        _ONE_MINUS_DST_ALPHA_ = 0x0305,
-        DST_COLOR = 0x0306,
-        _ONE_MINUS_DST_COLOR_ = 0x0307,
-        SRC_ALPHA_SATURATE = 0x0308,
-        FUNC_ADD = 0x8006,
-        BLEND_EQUATION = 0x8009,
-        BLEND_EQUATION_RGB = 0x8009,
-        BLEND_EQUATION_ALPHA = 0x883D,
-        FUNC_SUBTRACT = 0x800A,
-        FUNC_REVERSE_SUBTRACT = 0x800B,
-        BLEND_DST_RGB = 0x80C8,
-        BLEND_SRC_RGB = 0x80C9,
-        BLEND_DST_ALPHA = 0x80CA,
-        BLEND_SRC_ALPHA = 0x80CB,
-        CONSTANT_COLOR = 0x8001,
-        _ONE_MINUS_CONSTANT_COLOR_ = 0x8002,
-        CONSTANT_ALPHA = 0x8003,
-        _ONE_MINUS_CONSTANT_ALPHA_ = 0x8004,
-        BLEND_COLOR = 0x8005,
-        ARRAY_BUFFER = 0x8892,
-        ELEMENT_ARRAY_BUFFER = 0x8893,
-        ARRAY_BUFFER_BINDING = 0x8894,
-        ELEMENT_ARRAY_BUFFER_BINDING = 0x8895,
-        STREAM_DRAW = 0x88E0,
-        STATIC_DRAW = 0x88E4,
-        DYNAMIC_DRAW = 0x88E8,
-        BUFFER_SIZE = 0x8764,
-        BUFFER_USAGE = 0x8765,
-        CURRENT_VERTEX_ATTRIB = 0x8626,
-        FRONT = 0x0404,
-        BACK = 0x0405,
-        FRONT_AND_BACK = 0x0408,
-        TEXTURE_2D = 0x0DE1,
-        CULL_FACE = 0x0B44,
-        BLEND = 0x0BE2,
-        DITHER = 0x0BD0,
-        STENCIL_TEST = 0x0B90,
-        DEPTH_TEST = 0x0B71,
-        SCISSOR_TEST = 0x0C11,
-        POLYGON_OFFSET_FILL = 0x8037,
-        SAMPLE_ALPHA_TO_COVERAGE = 0x809E,
-        SAMPLE_COVERAGE = 0x80A0,
-        NO_ERROR = 0,
-        INVALID_ENUM = 0x0500,
-        INVALID_VALUE = 0x0501,
-        INVALID_OPERATION = 0x0502,
-        OUT_OF_MEMORY = 0x0505,
-        CW = 0x0900,
-        CCW = 0x0901,
-        LINE_WIDTH = 0x0B21,
-        ALIASED_POINT_SIZE_RANGE = 0x846D,
-        ALIASED_LINE_WIDTH_RANGE = 0x846E,
-        CULL_FACE_MODE = 0x0B45,
-        FRONT_FACE = 0x0B46,
-        DEPTH_RANGE = 0x0B70,
-        DEPTH_WRITEMASK = 0x0B72,
-        DEPTH_CLEAR_VALUE = 0x0B73,
-        DEPTH_FUNC = 0x0B74,
-        STENCIL_CLEAR_VALUE = 0x0B91,
-        STENCIL_FUNC = 0x0B92,
-        STENCIL_FAIL = 0x0B94,
-        STENCIL_PASS_DEPTH_FAIL = 0x0B95,
-        STENCIL_PASS_DEPTH_PASS = 0x0B96,
-        STENCIL_REF = 0x0B97,
-        STENCIL_VALUE_MASK = 0x0B93,
-        STENCIL_WRITEMASK = 0x0B98,
-        STENCIL_BACK_FUNC = 0x8800,
-        STENCIL_BACK_FAIL = 0x8801,
-        STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802,
-        STENCIL_BACK_PASS_DEPTH_PASS = 0x8803,
-        STENCIL_BACK_REF = 0x8CA3,
-        STENCIL_BACK_VALUE_MASK = 0x8CA4,
-        STENCIL_BACK_WRITEMASK = 0x8CA5,
-        VIEWPORT = 0x0BA2,
-        SCISSOR_BOX = 0x0C10,
-        COLOR_CLEAR_VALUE = 0x0C22,
-        COLOR_WRITEMASK = 0x0C23,
-        UNPACK_ALIGNMENT = 0x0CF5,
-        PACK_ALIGNMENT = 0x0D05,
-        MAX_TEXTURE_SIZE = 0x0D33,
-        MAX_VIEWPORT_DIMS = 0x0D3A,
-        SUBPIXEL_BITS = 0x0D50,
-        RED_BITS = 0x0D52,
-        GREEN_BITS = 0x0D53,
-        BLUE_BITS = 0x0D54,
-        ALPHA_BITS = 0x0D55,
-        DEPTH_BITS = 0x0D56,
-        STENCIL_BITS = 0x0D57,
-        POLYGON_OFFSET_UNITS = 0x2A00,
-        POLYGON_OFFSET_FACTOR = 0x8038,
-        TEXTURE_BINDING_2D = 0x8069,
-        SAMPLE_BUFFERS = 0x80A8,
-        SAMPLES = 0x80A9,
-        SAMPLE_COVERAGE_VALUE = 0x80AA,
-        SAMPLE_COVERAGE_INVERT = 0x80AB,
-        NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2,
-        COMPRESSED_TEXTURE_FORMATS = 0x86A3,
-        DONT_CARE = 0x1100,
-        FASTEST = 0x1101,
-        NICEST = 0x1102,
-        GENERATE_MIPMAP_HINT = 0x8192,
-        BYTE = 0x1400,
-        UNSIGNED_BYTE = 0x1401,
-        SHORT = 0x1402,
-        UNSIGNED_SHORT = 0x1403,
-        INT = 0x1404,
-        UNSIGNED_INT = 0x1405,
-        FLOAT = 0x1406,
-        HALF_FLOAT_OES = 0x8D61,
-        FIXED = 0x140C,
-        DEPTH_COMPONENT = 0x1902,
-        ALPHA = 0x1906,
-        RGB = 0x1907,
-        RGBA = 0x1908,
-        BGRA = 0x80E1,
-        LUMINANCE = 0x1909,
-        LUMINANCE_ALPHA = 0x190A,
-        UNSIGNED_SHORT_4_4_4_4 = 0x8033,
-        UNSIGNED_SHORT_5_5_5_1 = 0x8034,
-        UNSIGNED_SHORT_5_6_5 = 0x8363,
-        FRAGMENT_SHADER = 0x8B30,
-        VERTEX_SHADER = 0x8B31,
-        MAX_VERTEX_ATTRIBS = 0x8869,
-        MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB,
-        MAX_VARYING_VECTORS = 0x8DFC,
-        MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D,
-        MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C,
-        MAX_TEXTURE_IMAGE_UNITS = 0x8872,
-        MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD,
-        SHADER_TYPE = 0x8B4F,
-        DELETE_STATUS = 0x8B80,
-        LINK_STATUS = 0x8B82,
-        VALIDATE_STATUS = 0x8B83,
-        ATTACHED_SHADERS = 0x8B85,
-        ACTIVE_UNIFORMS = 0x8B86,
-        ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87,
-        ACTIVE_ATTRIBUTES = 0x8B89,
-        ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A,
-        SHADING_LANGUAGE_VERSION = 0x8B8C,
-        CURRENT_PROGRAM = 0x8B8D,
-        NEVER = 0x0200,
-        LESS = 0x0201,
-        EQUAL = 0x0202,
-        LEQUAL = 0x0203,
-        GREATER = 0x0204,
-        NOTEQUAL = 0x0205,
-        GEQUAL = 0x0206,
-        ALWAYS = 0x0207,
-        KEEP = 0x1E00,
-        REPLACE = 0x1E01,
-        INCR = 0x1E02,
-        DECR = 0x1E03,
-        INVERT = 0x150A,
-        INCR_WRAP = 0x8507,
-        DECR_WRAP = 0x8508,
-        VENDOR = 0x1F00,
-        RENDERER = 0x1F01,
-        VERSION = 0x1F02,
-        EXTENSIONS = 0x1F03,
-        NEAREST = 0x2600,
-        LINEAR = 0x2601,
-        NEAREST_MIPMAP_NEAREST = 0x2700,
-        LINEAR_MIPMAP_NEAREST = 0x2701,
-        NEAREST_MIPMAP_LINEAR = 0x2702,
-        LINEAR_MIPMAP_LINEAR = 0x2703,
-        TEXTURE_MAG_FILTER = 0x2800,
-        TEXTURE_MIN_FILTER = 0x2801,
-        TEXTURE_WRAP_S = 0x2802,
-        TEXTURE_WRAP_T = 0x2803,
-        TEXTURE = 0x1702,
-        TEXTURE_CUBE_MAP = 0x8513,
-        TEXTURE_BINDING_CUBE_MAP = 0x8514,
-        TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515,
-        TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516,
-        TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517,
-        TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518,
-        TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519,
-        TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A,
-        MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C,
-        TEXTURE0 = 0x84C0,
-        TEXTURE1 = 0x84C1,
-        TEXTURE2 = 0x84C2,
-        TEXTURE3 = 0x84C3,
-        TEXTURE4 = 0x84C4,
-        TEXTURE5 = 0x84C5,
-        TEXTURE6 = 0x84C6,
-        TEXTURE7 = 0x84C7,
-        TEXTURE8 = 0x84C8,
-        TEXTURE9 = 0x84C9,
-        TEXTURE10 = 0x84CA,
-        TEXTURE11 = 0x84CB,
-        TEXTURE12 = 0x84CC,
-        TEXTURE13 = 0x84CD,
-        TEXTURE14 = 0x84CE,
-        TEXTURE15 = 0x84CF,
-        TEXTURE16 = 0x84D0,
-        TEXTURE17 = 0x84D1,
-        TEXTURE18 = 0x84D2,
-        TEXTURE19 = 0x84D3,
-        TEXTURE20 = 0x84D4,
-        TEXTURE21 = 0x84D5,
-        TEXTURE22 = 0x84D6,
-        TEXTURE23 = 0x84D7,
-        TEXTURE24 = 0x84D8,
-        TEXTURE25 = 0x84D9,
-        TEXTURE26 = 0x84DA,
-        TEXTURE27 = 0x84DB,
-        TEXTURE28 = 0x84DC,
-        TEXTURE29 = 0x84DD,
-        TEXTURE30 = 0x84DE,
-        TEXTURE31 = 0x84DF,
-        ACTIVE_TEXTURE = 0x84E0,
-        REPEAT = 0x2901,
-        CLAMP_TO_EDGE = 0x812F,
-        MIRRORED_REPEAT = 0x8370,
-        FLOAT_VEC2 = 0x8B50,
-        FLOAT_VEC3 = 0x8B51,
-        FLOAT_VEC4 = 0x8B52,
-        INT_VEC2 = 0x8B53,
-        INT_VEC3 = 0x8B54,
-        INT_VEC4 = 0x8B55,
-        BOOL = 0x8B56,
-        BOOL_VEC2 = 0x8B57,
-        BOOL_VEC3 = 0x8B58,
-        BOOL_VEC4 = 0x8B59,
-        FLOAT_MAT2 = 0x8B5A,
-        FLOAT_MAT3 = 0x8B5B,
-        FLOAT_MAT4 = 0x8B5C,
-        SAMPLER_2D = 0x8B5E,
-        SAMPLER_CUBE = 0x8B60,
-        VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622,
-        VERTEX_ATTRIB_ARRAY_SIZE = 0x8623,
-        VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624,
-        VERTEX_ATTRIB_ARRAY_TYPE = 0x8625,
-        VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A,
-        VERTEX_ATTRIB_ARRAY_POINTER = 0x8645,
-        VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F,
-        IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A,
-        IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B,
-        COMPILE_STATUS = 0x8B81,
-        INFO_LOG_LENGTH = 0x8B84,
-        SHADER_SOURCE_LENGTH = 0x8B88,
-        SHADER_COMPILER = 0x8DFA,
-        SHADER_BINARY_FORMATS = 0x8DF8,
-        NUM_SHADER_BINARY_FORMATS = 0x8DF9,
-        LOW_FLOAT = 0x8DF0,
-        MEDIUM_FLOAT = 0x8DF1,
-        HIGH_FLOAT = 0x8DF2,
-        LOW_INT = 0x8DF3,
-        MEDIUM_INT = 0x8DF4,
-        HIGH_INT = 0x8DF5,
-        FRAMEBUFFER = 0x8D40,
-        RENDERBUFFER = 0x8D41,
-        RGBA4 = 0x8056,
-        RGB5_A1 = 0x8057,
-        RGB565 = 0x8D62,
-        DEPTH_COMPONENT16 = 0x81A5,
-        STENCIL_INDEX = 0x1901,
-        STENCIL_INDEX8 = 0x8D48,
-        RENDERBUFFER_WIDTH = 0x8D42,
-        RENDERBUFFER_HEIGHT = 0x8D43,
-        RENDERBUFFER_INTERNAL_FORMAT = 0x8D44,
-        RENDERBUFFER_RED_SIZE = 0x8D50,
-        RENDERBUFFER_GREEN_SIZE = 0x8D51,
-        RENDERBUFFER_BLUE_SIZE = 0x8D52,
-        RENDERBUFFER_ALPHA_SIZE = 0x8D53,
-        RENDERBUFFER_DEPTH_SIZE = 0x8D54,
-        RENDERBUFFER_STENCIL_SIZE = 0x8D55,
-        FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0,
-        FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1,
-        FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2,
-        FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3,
-        COLOR_ATTACHMENT0 = 0x8CE0,
-        DEPTH_ATTACHMENT = 0x8D00,
-        STENCIL_ATTACHMENT = 0x8D20,
-        NONE = 0,
-        FRAMEBUFFER_COMPLETE = 0x8CD5,
-        FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6,
-        FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7,
-        FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x8CD9,
-        FRAMEBUFFER_UNSUPPORTED = 0x8CDD,
-        FRAMEBUFFER_BINDING = 0x8CA6,
-        RENDERBUFFER_BINDING = 0x8CA7,
-        MAX_RENDERBUFFER_SIZE = 0x84E8,
-        INVALID_FRAMEBUFFER_OPERATION = 0x0506,
+    // WebGL 1 constants.
+    static constexpr GCGLenum DEPTH_BUFFER_BIT = 0x00000100;
+    static constexpr GCGLenum STENCIL_BUFFER_BIT = 0x00000400;
+    static constexpr GCGLenum COLOR_BUFFER_BIT = 0x00004000;
+    static constexpr GCGLenum POINTS = 0x0000;
+    static constexpr GCGLenum LINES = 0x0001;
+    static constexpr GCGLenum LINE_LOOP = 0x0002;
+    static constexpr GCGLenum LINE_STRIP = 0x0003;
+    static constexpr GCGLenum TRIANGLES = 0x0004;
+    static constexpr GCGLenum TRIANGLE_STRIP = 0x0005;
+    static constexpr GCGLenum TRIANGLE_FAN = 0x0006;
+    static constexpr GCGLenum ZERO = 0;
+    static constexpr GCGLenum _ONE_ = 1;
+    static constexpr GCGLenum SRC_COLOR = 0x0300;
+    static constexpr GCGLenum _ONE_MINUS_SRC_COLOR_ = 0x0301;
+    static constexpr GCGLenum SRC_ALPHA = 0x0302;
+    static constexpr GCGLenum _ONE_MINUS_SRC_ALPHA_ = 0x0303;
+    static constexpr GCGLenum DST_ALPHA = 0x0304;
+    static constexpr GCGLenum _ONE_MINUS_DST_ALPHA_ = 0x0305;
+    static constexpr GCGLenum DST_COLOR = 0x0306;
+    static constexpr GCGLenum _ONE_MINUS_DST_COLOR_ = 0x0307;
+    static constexpr GCGLenum SRC_ALPHA_SATURATE = 0x0308;
+    static constexpr GCGLenum FUNC_ADD = 0x8006;
+    static constexpr GCGLenum BLEND_EQUATION = 0x8009;
+    static constexpr GCGLenum BLEND_EQUATION_RGB = 0x8009;
+    static constexpr GCGLenum BLEND_EQUATION_ALPHA = 0x883D;
+    static constexpr GCGLenum FUNC_SUBTRACT = 0x800A;
+    static constexpr GCGLenum FUNC_REVERSE_SUBTRACT = 0x800B;
+    static constexpr GCGLenum BLEND_DST_RGB = 0x80C8;
+    static constexpr GCGLenum BLEND_SRC_RGB = 0x80C9;
+    static constexpr GCGLenum BLEND_DST_ALPHA = 0x80CA;
+    static constexpr GCGLenum BLEND_SRC_ALPHA = 0x80CB;
+    static constexpr GCGLenum CONSTANT_COLOR = 0x8001;
+    static constexpr GCGLenum _ONE_MINUS_CONSTANT_COLOR_ = 0x8002;
+    static constexpr GCGLenum CONSTANT_ALPHA = 0x8003;
+    static constexpr GCGLenum _ONE_MINUS_CONSTANT_ALPHA_ = 0x8004;
+    static constexpr GCGLenum BLEND_COLOR = 0x8005;
+    static constexpr GCGLenum ARRAY_BUFFER = 0x8892;
+    static constexpr GCGLenum ELEMENT_ARRAY_BUFFER = 0x8893;
+    static constexpr GCGLenum ARRAY_BUFFER_BINDING = 0x8894;
+    static constexpr GCGLenum ELEMENT_ARRAY_BUFFER_BINDING = 0x8895;
+    static constexpr GCGLenum STREAM_DRAW = 0x88E0;
+    static constexpr GCGLenum STATIC_DRAW = 0x88E4;
+    static constexpr GCGLenum DYNAMIC_DRAW = 0x88E8;
+    static constexpr GCGLenum BUFFER_SIZE = 0x8764;
+    static constexpr GCGLenum BUFFER_USAGE = 0x8765;
+    static constexpr GCGLenum CURRENT_VERTEX_ATTRIB = 0x8626;
+    static constexpr GCGLenum FRONT = 0x0404;
+    static constexpr GCGLenum BACK = 0x0405;
+    static constexpr GCGLenum FRONT_AND_BACK = 0x0408;
+    static constexpr GCGLenum TEXTURE_2D = 0x0DE1;
+    static constexpr GCGLenum CULL_FACE = 0x0B44;
+    static constexpr GCGLenum BLEND = 0x0BE2;
+    static constexpr GCGLenum DITHER = 0x0BD0;
+    static constexpr GCGLenum STENCIL_TEST = 0x0B90;
+    static constexpr GCGLenum DEPTH_TEST = 0x0B71;
+    static constexpr GCGLenum SCISSOR_TEST = 0x0C11;
+    static constexpr GCGLenum POLYGON_OFFSET_FILL = 0x8037;
+    static constexpr GCGLenum SAMPLE_ALPHA_TO_COVERAGE = 0x809E;
+    static constexpr GCGLenum SAMPLE_COVERAGE = 0x80A0;
+    static constexpr GCGLenum NO_ERROR = 0;
+    static constexpr GCGLenum INVALID_ENUM = 0x0500;
+    static constexpr GCGLenum INVALID_VALUE = 0x0501;
+    static constexpr GCGLenum INVALID_OPERATION = 0x0502;
+    static constexpr GCGLenum OUT_OF_MEMORY = 0x0505;
+    static constexpr GCGLenum CW = 0x0900;
+    static constexpr GCGLenum CCW = 0x0901;
+    static constexpr GCGLenum LINE_WIDTH = 0x0B21;
+    static constexpr GCGLenum ALIASED_POINT_SIZE_RANGE = 0x846D;
+    static constexpr GCGLenum ALIASED_LINE_WIDTH_RANGE = 0x846E;
+    static constexpr GCGLenum CULL_FACE_MODE = 0x0B45;
+    static constexpr GCGLenum FRONT_FACE = 0x0B46;
+    static constexpr GCGLenum DEPTH_RANGE = 0x0B70;
+    static constexpr GCGLenum DEPTH_WRITEMASK = 0x0B72;
+    static constexpr GCGLenum DEPTH_CLEAR_VALUE = 0x0B73;
+    static constexpr GCGLenum DEPTH_FUNC = 0x0B74;
+    static constexpr GCGLenum STENCIL_CLEAR_VALUE = 0x0B91;
+    static constexpr GCGLenum STENCIL_FUNC = 0x0B92;
+    static constexpr GCGLenum STENCIL_FAIL = 0x0B94;
+    static constexpr GCGLenum STENCIL_PASS_DEPTH_FAIL = 0x0B95;
+    static constexpr GCGLenum STENCIL_PASS_DEPTH_PASS = 0x0B96;
+    static constexpr GCGLenum STENCIL_REF = 0x0B97;
+    static constexpr GCGLenum STENCIL_VALUE_MASK = 0x0B93;
+    static constexpr GCGLenum STENCIL_WRITEMASK = 0x0B98;
+    static constexpr GCGLenum STENCIL_BACK_FUNC = 0x8800;
+    static constexpr GCGLenum STENCIL_BACK_FAIL = 0x8801;
+    static constexpr GCGLenum STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802;
+    static constexpr GCGLenum STENCIL_BACK_PASS_DEPTH_PASS = 0x8803;
+    static constexpr GCGLenum STENCIL_BACK_REF = 0x8CA3;
+    static constexpr GCGLenum STENCIL_BACK_VALUE_MASK = 0x8CA4;
+    static constexpr GCGLenum STENCIL_BACK_WRITEMASK = 0x8CA5;
+    static constexpr GCGLenum VIEWPORT = 0x0BA2;
+    static constexpr GCGLenum SCISSOR_BOX = 0x0C10;
+    static constexpr GCGLenum COLOR_CLEAR_VALUE = 0x0C22;
+    static constexpr GCGLenum COLOR_WRITEMASK = 0x0C23;
+    static constexpr GCGLenum UNPACK_ALIGNMENT = 0x0CF5;
+    static constexpr GCGLenum PACK_ALIGNMENT = 0x0D05;
+    static constexpr GCGLenum MAX_TEXTURE_SIZE = 0x0D33;
+    static constexpr GCGLenum MAX_VIEWPORT_DIMS = 0x0D3A;
+    static constexpr GCGLenum SUBPIXEL_BITS = 0x0D50;
+    static constexpr GCGLenum RED_BITS = 0x0D52;
+    static constexpr GCGLenum GREEN_BITS = 0x0D53;
+    static constexpr GCGLenum BLUE_BITS = 0x0D54;
+    static constexpr GCGLenum ALPHA_BITS = 0x0D55;
+    static constexpr GCGLenum DEPTH_BITS = 0x0D56;
+    static constexpr GCGLenum STENCIL_BITS = 0x0D57;
+    static constexpr GCGLenum POLYGON_OFFSET_UNITS = 0x2A00;
+    static constexpr GCGLenum POLYGON_OFFSET_FACTOR = 0x8038;
+    static constexpr GCGLenum TEXTURE_BINDING_2D = 0x8069;
+    static constexpr GCGLenum SAMPLE_BUFFERS = 0x80A8;
+    static constexpr GCGLenum SAMPLES = 0x80A9;
+    static constexpr GCGLenum SAMPLE_COVERAGE_VALUE = 0x80AA;
+    static constexpr GCGLenum SAMPLE_COVERAGE_INVERT = 0x80AB;
+    static constexpr GCGLenum NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2;
+    static constexpr GCGLenum COMPRESSED_TEXTURE_FORMATS = 0x86A3;
+    static constexpr GCGLenum DONT_CARE = 0x1100;
+    static constexpr GCGLenum FASTEST = 0x1101;
+    static constexpr GCGLenum NICEST = 0x1102;
+    static constexpr GCGLenum GENERATE_MIPMAP_HINT = 0x8192;
+    static constexpr GCGLenum BYTE = 0x1400;
+    static constexpr GCGLenum UNSIGNED_BYTE = 0x1401;
+    static constexpr GCGLenum SHORT = 0x1402;
+    static constexpr GCGLenum UNSIGNED_SHORT = 0x1403;
+    static constexpr GCGLenum INT = 0x1404;
+    static constexpr GCGLenum UNSIGNED_INT = 0x1405;
+    static constexpr GCGLenum FLOAT = 0x1406;
+    static constexpr GCGLenum HALF_FLOAT_OES = 0x8D61;
+    static constexpr GCGLenum FIXED = 0x140C;
+    static constexpr GCGLenum DEPTH_COMPONENT = 0x1902;
+    static constexpr GCGLenum ALPHA = 0x1906;
+    static constexpr GCGLenum RGB = 0x1907;
+    static constexpr GCGLenum RGBA = 0x1908;
+    static constexpr GCGLenum BGRA = 0x80E1;
+    static constexpr GCGLenum LUMINANCE = 0x1909;
+    static constexpr GCGLenum LUMINANCE_ALPHA = 0x190A;
+    static constexpr GCGLenum UNSIGNED_SHORT_4_4_4_4 = 0x8033;
+    static constexpr GCGLenum UNSIGNED_SHORT_5_5_5_1 = 0x8034;
+    static constexpr GCGLenum UNSIGNED_SHORT_5_6_5 = 0x8363;
+    static constexpr GCGLenum FRAGMENT_SHADER = 0x8B30;
+    static constexpr GCGLenum VERTEX_SHADER = 0x8B31;
+    static constexpr GCGLenum MAX_VERTEX_ATTRIBS = 0x8869;
+    static constexpr GCGLenum MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB;
+    static constexpr GCGLenum MAX_VARYING_VECTORS = 0x8DFC;
+    static constexpr GCGLenum MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D;
+    static constexpr GCGLenum MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C;
+    static constexpr GCGLenum MAX_TEXTURE_IMAGE_UNITS = 0x8872;
+    static constexpr GCGLenum MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD;
+    static constexpr GCGLenum SHADER_TYPE = 0x8B4F;
+    static constexpr GCGLenum DELETE_STATUS = 0x8B80;
+    static constexpr GCGLenum LINK_STATUS = 0x8B82;
+    static constexpr GCGLenum VALIDATE_STATUS = 0x8B83;
+    static constexpr GCGLenum ATTACHED_SHADERS = 0x8B85;
+    static constexpr GCGLenum ACTIVE_UNIFORMS = 0x8B86;
+    static constexpr GCGLenum ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87;
+    static constexpr GCGLenum ACTIVE_ATTRIBUTES = 0x8B89;
+    static constexpr GCGLenum ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A;
+    static constexpr GCGLenum SHADING_LANGUAGE_VERSION = 0x8B8C;
+    static constexpr GCGLenum CURRENT_PROGRAM = 0x8B8D;
+    static constexpr GCGLenum NEVER = 0x0200;
+    static constexpr GCGLenum LESS = 0x0201;
+    static constexpr GCGLenum EQUAL = 0x0202;
+    static constexpr GCGLenum LEQUAL = 0x0203;
+    static constexpr GCGLenum GREATER = 0x0204;
+    static constexpr GCGLenum NOTEQUAL = 0x0205;
+    static constexpr GCGLenum GEQUAL = 0x0206;
+    static constexpr GCGLenum ALWAYS = 0x0207;
+    static constexpr GCGLenum KEEP = 0x1E00;
+    static constexpr GCGLenum REPLACE = 0x1E01;
+    static constexpr GCGLenum INCR = 0x1E02;
+    static constexpr GCGLenum DECR = 0x1E03;
+    static constexpr GCGLenum INVERT = 0x150A;
+    static constexpr GCGLenum INCR_WRAP = 0x8507;
+    static constexpr GCGLenum DECR_WRAP = 0x8508;
+    static constexpr GCGLenum VENDOR = 0x1F00;
+    static constexpr GCGLenum RENDERER = 0x1F01;
+    static constexpr GCGLenum VERSION = 0x1F02;
+    static constexpr GCGLenum EXTENSIONS = 0x1F03;
+    static constexpr GCGLenum NEAREST = 0x2600;
+    static constexpr GCGLenum LINEAR = 0x2601;
+    static constexpr GCGLenum NEAREST_MIPMAP_NEAREST = 0x2700;
+    static constexpr GCGLenum LINEAR_MIPMAP_NEAREST = 0x2701;
+    static constexpr GCGLenum NEAREST_MIPMAP_LINEAR = 0x2702;
+    static constexpr GCGLenum LINEAR_MIPMAP_LINEAR = 0x2703;
+    static constexpr GCGLenum TEXTURE_MAG_FILTER = 0x2800;
+    static constexpr GCGLenum TEXTURE_MIN_FILTER = 0x2801;
+    static constexpr GCGLenum TEXTURE_WRAP_S = 0x2802;
+    static constexpr GCGLenum TEXTURE_WRAP_T = 0x2803;
+    static constexpr GCGLenum TEXTURE = 0x1702;
+    static constexpr GCGLenum TEXTURE_CUBE_MAP = 0x8513;
+    static constexpr GCGLenum TEXTURE_BINDING_CUBE_MAP = 0x8514;
+    static constexpr GCGLenum TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515;
+    static constexpr GCGLenum TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516;
+    static constexpr GCGLenum TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517;
+    static constexpr GCGLenum TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518;
+    static constexpr GCGLenum TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519;
+    static constexpr GCGLenum TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A;
+    static constexpr GCGLenum MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C;
+    static constexpr GCGLenum TEXTURE0 = 0x84C0;
+    static constexpr GCGLenum TEXTURE1 = 0x84C1;
+    static constexpr GCGLenum TEXTURE2 = 0x84C2;
+    static constexpr GCGLenum TEXTURE3 = 0x84C3;
+    static constexpr GCGLenum TEXTURE4 = 0x84C4;
+    static constexpr GCGLenum TEXTURE5 = 0x84C5;
+    static constexpr GCGLenum TEXTURE6 = 0x84C6;
+    static constexpr GCGLenum TEXTURE7 = 0x84C7;
+    static constexpr GCGLenum TEXTURE8 = 0x84C8;
+    static constexpr GCGLenum TEXTURE9 = 0x84C9;
+    static constexpr GCGLenum TEXTURE10 = 0x84CA;
+    static constexpr GCGLenum TEXTURE11 = 0x84CB;
+    static constexpr GCGLenum TEXTURE12 = 0x84CC;
+    static constexpr GCGLenum TEXTURE13 = 0x84CD;
+    static constexpr GCGLenum TEXTURE14 = 0x84CE;
+    static constexpr GCGLenum TEXTURE15 = 0x84CF;
+    static constexpr GCGLenum TEXTURE16 = 0x84D0;
+    static constexpr GCGLenum TEXTURE17 = 0x84D1;
+    static constexpr GCGLenum TEXTURE18 = 0x84D2;
+    static constexpr GCGLenum TEXTURE19 = 0x84D3;
+    static constexpr GCGLenum TEXTURE20 = 0x84D4;
+    static constexpr GCGLenum TEXTURE21 = 0x84D5;
+    static constexpr GCGLenum TEXTURE22 = 0x84D6;
+    static constexpr GCGLenum TEXTURE23 = 0x84D7;
+    static constexpr GCGLenum TEXTURE24 = 0x84D8;
+    static constexpr GCGLenum TEXTURE25 = 0x84D9;
+    static constexpr GCGLenum TEXTURE26 = 0x84DA;
+    static constexpr GCGLenum TEXTURE27 = 0x84DB;
+    static constexpr GCGLenum TEXTURE28 = 0x84DC;
+    static constexpr GCGLenum TEXTURE29 = 0x84DD;
+    static constexpr GCGLenum TEXTURE30 = 0x84DE;
+    static constexpr GCGLenum TEXTURE31 = 0x84DF;
+    static constexpr GCGLenum ACTIVE_TEXTURE = 0x84E0;
+    static constexpr GCGLenum REPEAT = 0x2901;
+    static constexpr GCGLenum CLAMP_TO_EDGE = 0x812F;
+    static constexpr GCGLenum MIRRORED_REPEAT = 0x8370;
+    static constexpr GCGLenum FLOAT_VEC2 = 0x8B50;
+    static constexpr GCGLenum FLOAT_VEC3 = 0x8B51;
+    static constexpr GCGLenum FLOAT_VEC4 = 0x8B52;
+    static constexpr GCGLenum INT_VEC2 = 0x8B53;
+    static constexpr GCGLenum INT_VEC3 = 0x8B54;
+    static constexpr GCGLenum INT_VEC4 = 0x8B55;
+    static constexpr GCGLenum BOOL = 0x8B56;
+    static constexpr GCGLenum BOOL_VEC2 = 0x8B57;
+    static constexpr GCGLenum BOOL_VEC3 = 0x8B58;
+    static constexpr GCGLenum BOOL_VEC4 = 0x8B59;
+    static constexpr GCGLenum FLOAT_MAT2 = 0x8B5A;
+    static constexpr GCGLenum FLOAT_MAT3 = 0x8B5B;
+    static constexpr GCGLenum FLOAT_MAT4 = 0x8B5C;
+    static constexpr GCGLenum SAMPLER_2D = 0x8B5E;
+    static constexpr GCGLenum SAMPLER_CUBE = 0x8B60;
+    static constexpr GCGLenum VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622;
+    static constexpr GCGLenum VERTEX_ATTRIB_ARRAY_SIZE = 0x8623;
+    static constexpr GCGLenum VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624;
+    static constexpr GCGLenum VERTEX_ATTRIB_ARRAY_TYPE = 0x8625;
+    static constexpr GCGLenum VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A;
+    static constexpr GCGLenum VERTEX_ATTRIB_ARRAY_POINTER = 0x8645;
+    static constexpr GCGLenum VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F;
+    static constexpr GCGLenum IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A;
+    static constexpr GCGLenum IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B;
+    static constexpr GCGLenum COMPILE_STATUS = 0x8B81;
+    static constexpr GCGLenum INFO_LOG_LENGTH = 0x8B84;
+    static constexpr GCGLenum SHADER_SOURCE_LENGTH = 0x8B88;
+    static constexpr GCGLenum SHADER_COMPILER = 0x8DFA;
+    static constexpr GCGLenum SHADER_BINARY_FORMATS = 0x8DF8;
+    static constexpr GCGLenum NUM_SHADER_BINARY_FORMATS = 0x8DF9;
+    static constexpr GCGLenum LOW_FLOAT = 0x8DF0;
+    static constexpr GCGLenum MEDIUM_FLOAT = 0x8DF1;
+    static constexpr GCGLenum HIGH_FLOAT = 0x8DF2;
+    static constexpr GCGLenum LOW_INT = 0x8DF3;
+    static constexpr GCGLenum MEDIUM_INT = 0x8DF4;
+    static constexpr GCGLenum HIGH_INT = 0x8DF5;
+    static constexpr GCGLenum FRAMEBUFFER = 0x8D40;
+    static constexpr GCGLenum RENDERBUFFER = 0x8D41;
+    static constexpr GCGLenum RGBA4 = 0x8056;
+    static constexpr GCGLenum RGB5_A1 = 0x8057;
+    static constexpr GCGLenum RGB565 = 0x8D62;
+    static constexpr GCGLenum DEPTH_COMPONENT16 = 0x81A5;
+    static constexpr GCGLenum STENCIL_INDEX = 0x1901;
+    static constexpr GCGLenum STENCIL_INDEX8 = 0x8D48;
+    static constexpr GCGLenum RENDERBUFFER_WIDTH = 0x8D42;
+    static constexpr GCGLenum RENDERBUFFER_HEIGHT = 0x8D43;
+    static constexpr GCGLenum RENDERBUFFER_INTERNAL_FORMAT = 0x8D44;
+    static constexpr GCGLenum RENDERBUFFER_RED_SIZE = 0x8D50;
+    static constexpr GCGLenum RENDERBUFFER_GREEN_SIZE = 0x8D51;
+    static constexpr GCGLenum RENDERBUFFER_BLUE_SIZE = 0x8D52;
+    static constexpr GCGLenum RENDERBUFFER_ALPHA_SIZE = 0x8D53;
+    static constexpr GCGLenum RENDERBUFFER_DEPTH_SIZE = 0x8D54;
+    static constexpr GCGLenum RENDERBUFFER_STENCIL_SIZE = 0x8D55;
+    static constexpr GCGLenum FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0;
+    static constexpr GCGLenum FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1;
+    static constexpr GCGLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2;
+    static constexpr GCGLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3;
+    static constexpr GCGLenum COLOR_ATTACHMENT0 = 0x8CE0;
+    static constexpr GCGLenum DEPTH_ATTACHMENT = 0x8D00;
+    static constexpr GCGLenum STENCIL_ATTACHMENT = 0x8D20;
+    static constexpr GCGLenum NONE = 0;
+    static constexpr GCGLenum FRAMEBUFFER_COMPLETE = 0x8CD5;
+    static constexpr GCGLenum FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6;
+    static constexpr GCGLenum FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7;
+    static constexpr GCGLenum FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x8CD9;
+    static constexpr GCGLenum FRAMEBUFFER_UNSUPPORTED = 0x8CDD;
+    static constexpr GCGLenum FRAMEBUFFER_BINDING = 0x8CA6;
+    static constexpr GCGLenum RENDERBUFFER_BINDING = 0x8CA7;
+    static constexpr GCGLenum MAX_RENDERBUFFER_SIZE = 0x84E8;
+    static constexpr GCGLenum INVALID_FRAMEBUFFER_OPERATION = 0x0506;
 
-        // WebGL-specific enums
-        UNPACK_FLIP_Y_WEBGL = 0x9240,
-        UNPACK_PREMULTIPLY_ALPHA_WEBGL = 0x9241,
-        CONTEXT_LOST_WEBGL = 0x9242,
-        UNPACK_COLORSPACE_CONVERSION_WEBGL = 0x9243,
-        BROWSER_DEFAULT_WEBGL = 0x9244,
-        VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE = 0x88FE,
-        
-        // WebGL2 constants
-        READ_BUFFER = 0x0C02,
-        UNPACK_ROW_LENGTH = 0x0CF2,
-        UNPACK_SKIP_ROWS = 0x0CF3,
-        UNPACK_SKIP_PIXELS = 0x0CF4,
-        PACK_ROW_LENGTH = 0x0D02,
-        PACK_SKIP_ROWS = 0x0D03,
-        PACK_SKIP_PIXELS = 0x0D04,
-        COLOR = 0x1800,
-        DEPTH = 0x1801,
-        STENCIL = 0x1802,
-        RED = 0x1903,
-        RGB8 = 0x8051,
-        RGBA8 = 0x8058,
-        RGB10_A2 = 0x8059,
-        TEXTURE_BINDING_3D = 0x806A,
-        UNPACK_SKIP_IMAGES = 0x806D,
-        UNPACK_IMAGE_HEIGHT = 0x806E,
-        TEXTURE_3D = 0x806F,
-        TEXTURE_WRAP_R = 0x8072,
-        MAX_3D_TEXTURE_SIZE = 0x8073,
-        UNSIGNED_INT_2_10_10_10_REV = 0x8368,
-        MAX_ELEMENTS_VERTICES = 0x80E8,
-        MAX_ELEMENTS_INDICES = 0x80E9,
-        TEXTURE_MIN_LOD = 0x813A,
-        TEXTURE_MAX_LOD = 0x813B,
-        TEXTURE_BASE_LEVEL = 0x813C,
-        TEXTURE_MAX_LEVEL = 0x813D,
-        MIN = 0x8007,
-        MAX = 0x8008,
-        DEPTH_COMPONENT24 = 0x81A6,
-        MAX_TEXTURE_LOD_BIAS = 0x84FD,
-        TEXTURE_COMPARE_MODE = 0x884C,
-        TEXTURE_COMPARE_FUNC = 0x884D,
-        CURRENT_QUERY = 0x8865,
-        QUERY_RESULT = 0x8866,
-        QUERY_RESULT_AVAILABLE = 0x8867,
-        STREAM_READ = 0x88E1,
-        STREAM_COPY = 0x88E2,
-        STATIC_READ = 0x88E5,
-        STATIC_COPY = 0x88E6,
-        DYNAMIC_READ = 0x88E9,
-        DYNAMIC_COPY = 0x88EA,
-        MAX_DRAW_BUFFERS = 0x8824,
-        DRAW_BUFFER0 = 0x8825,
-        DRAW_BUFFER1 = 0x8826,
-        DRAW_BUFFER2 = 0x8827,
-        DRAW_BUFFER3 = 0x8828,
-        DRAW_BUFFER4 = 0x8829,
-        DRAW_BUFFER5 = 0x882A,
-        DRAW_BUFFER6 = 0x882B,
-        DRAW_BUFFER7 = 0x882C,
-        DRAW_BUFFER8 = 0x882D,
-        DRAW_BUFFER9 = 0x882E,
-        DRAW_BUFFER10 = 0x882F,
-        DRAW_BUFFER11 = 0x8830,
-        DRAW_BUFFER12 = 0x8831,
-        DRAW_BUFFER13 = 0x8832,
-        DRAW_BUFFER14 = 0x8833,
-        DRAW_BUFFER15 = 0x8834,
-        MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x8B49,
-        MAX_VERTEX_UNIFORM_COMPONENTS = 0x8B4A,
-        SAMPLER_3D = 0x8B5F,
-        SAMPLER_2D_SHADOW = 0x8B62,
-        FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8B8B,
-        PIXEL_PACK_BUFFER = 0x88EB,
-        PIXEL_UNPACK_BUFFER = 0x88EC,
-        PIXEL_PACK_BUFFER_BINDING = 0x88ED,
-        PIXEL_UNPACK_BUFFER_BINDING = 0x88EF,
-        FLOAT_MAT2x3 = 0x8B65,
-        FLOAT_MAT2x4 = 0x8B66,
-        FLOAT_MAT3x2 = 0x8B67,
-        FLOAT_MAT3x4 = 0x8B68,
-        FLOAT_MAT4x2 = 0x8B69,
-        FLOAT_MAT4x3 = 0x8B6A,
-        SRGB = 0x8C40,
-        SRGB8 = 0x8C41,
-        SRGB_ALPHA = 0x8C42,
-        SRGB8_ALPHA8 = 0x8C43,
-        COMPARE_REF_TO_TEXTURE = 0x884E,
-        RGBA32F = 0x8814,
-        RGB32F = 0x8815,
-        RGBA16F = 0x881A,
-        RGB16F = 0x881B,
-        VERTEX_ATTRIB_ARRAY_INTEGER = 0x88FD,
-        MAX_ARRAY_TEXTURE_LAYERS = 0x88FF,
-        MIN_PROGRAM_TEXEL_OFFSET = 0x8904,
-        MAX_PROGRAM_TEXEL_OFFSET = 0x8905,
-        MAX_VARYING_COMPONENTS = 0x8B4B,
-        TEXTURE_2D_ARRAY = 0x8C1A,
-        TEXTURE_BINDING_2D_ARRAY = 0x8C1D,
-        R11F_G11F_B10F = 0x8C3A,
-        UNSIGNED_INT_10F_11F_11F_REV = 0x8C3B,
-        RGB9_E5 = 0x8C3D,
-        UNSIGNED_INT_5_9_9_9_REV = 0x8C3E,
-        TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH = 0x8C76,
-        TRANSFORM_FEEDBACK_BUFFER_MODE = 0x8C7F,
-        MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 0x8C80,
-        TRANSFORM_FEEDBACK_VARYINGS = 0x8C83,
-        TRANSFORM_FEEDBACK_BUFFER_START = 0x8C84,
-        TRANSFORM_FEEDBACK_BUFFER_SIZE = 0x8C85,
-        TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8C88,
-        RASTERIZER_DISCARD = 0x8C89,
-        MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 0x8C8A,
-        MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 0x8C8B,
-        INTERLEAVED_ATTRIBS = 0x8C8C,
-        SEPARATE_ATTRIBS = 0x8C8D,
-        TRANSFORM_FEEDBACK_BUFFER = 0x8C8E,
-        TRANSFORM_FEEDBACK_BUFFER_BINDING = 0x8C8F,
-        RGBA32UI = 0x8D70,
-        RGB32UI = 0x8D71,
-        RGBA16UI = 0x8D76,
-        RGB16UI = 0x8D77,
-        RGBA8UI = 0x8D7C,
-        RGB8UI = 0x8D7D,
-        RGBA32I = 0x8D82,
-        RGB32I = 0x8D83,
-        RGBA16I = 0x8D88,
-        RGB16I = 0x8D89,
-        RGBA8I = 0x8D8E,
-        RGB8I = 0x8D8F,
-        RED_INTEGER = 0x8D94,
-        RGB_INTEGER = 0x8D98,
-        RGBA_INTEGER = 0x8D99,
-        SAMPLER_2D_ARRAY = 0x8DC1,
-        SAMPLER_2D_ARRAY_SHADOW = 0x8DC4,
-        SAMPLER_CUBE_SHADOW = 0x8DC5,
-        UNSIGNED_INT_VEC2 = 0x8DC6,
-        UNSIGNED_INT_VEC3 = 0x8DC7,
-        UNSIGNED_INT_VEC4 = 0x8DC8,
-        INT_SAMPLER_2D = 0x8DCA,
-        INT_SAMPLER_3D = 0x8DCB,
-        INT_SAMPLER_CUBE = 0x8DCC,
-        INT_SAMPLER_2D_ARRAY = 0x8DCF,
-        UNSIGNED_INT_SAMPLER_2D = 0x8DD2,
-        UNSIGNED_INT_SAMPLER_3D = 0x8DD3,
-        UNSIGNED_INT_SAMPLER_CUBE = 0x8DD4,
-        UNSIGNED_INT_SAMPLER_2D_ARRAY = 0x8DD7,
-        DEPTH_COMPONENT32F = 0x8CAC,
-        DEPTH32F_STENCIL8 = 0x8CAD,
-        FLOAT_32_UNSIGNED_INT_24_8_REV = 0x8DAD,
-        FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 0x8210,
-        FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 0x8211,
-        FRAMEBUFFER_ATTACHMENT_RED_SIZE = 0x8212,
-        FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 0x8213,
-        FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 0x8214,
-        FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 0x8215,
-        FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 0x8216,
-        FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 0x8217,
-        FRAMEBUFFER_DEFAULT = 0x8218,
-        DEPTH_STENCIL_ATTACHMENT = 0x821A,
-        DEPTH_STENCIL = 0x84F9,
-        UNSIGNED_INT_24_8 = 0x84FA,
-        DEPTH24_STENCIL8 = 0x88F0,
-        UNSIGNED_NORMALIZED = 0x8C17,
-        DRAW_FRAMEBUFFER_BINDING = 0x8CA6, /* Same as FRAMEBUFFER_BINDING */
-        READ_FRAMEBUFFER = 0x8CA8,
-        DRAW_FRAMEBUFFER = 0x8CA9,
-        READ_FRAMEBUFFER_BINDING = 0x8CAA,
-        RENDERBUFFER_SAMPLES = 0x8CAB,
-        FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 0x8CD4,
-        MAX_COLOR_ATTACHMENTS = 0x8CDF,
-        COLOR_ATTACHMENT1 = 0x8CE1,
-        COLOR_ATTACHMENT2 = 0x8CE2,
-        COLOR_ATTACHMENT3 = 0x8CE3,
-        COLOR_ATTACHMENT4 = 0x8CE4,
-        COLOR_ATTACHMENT5 = 0x8CE5,
-        COLOR_ATTACHMENT6 = 0x8CE6,
-        COLOR_ATTACHMENT7 = 0x8CE7,
-        COLOR_ATTACHMENT8 = 0x8CE8,
-        COLOR_ATTACHMENT9 = 0x8CE9,
-        COLOR_ATTACHMENT10 = 0x8CEA,
-        COLOR_ATTACHMENT11 = 0x8CEB,
-        COLOR_ATTACHMENT12 = 0x8CEC,
-        COLOR_ATTACHMENT13 = 0x8CED,
-        COLOR_ATTACHMENT14 = 0x8CEE,
-        COLOR_ATTACHMENT15 = 0x8CEF,
-        FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56,
-        MAX_SAMPLES = 0x8D57,
-        HALF_FLOAT = 0x140B,
-        RG = 0x8227,
-        RG_INTEGER = 0x8228,
-        R8 = 0x8229,
-        RG8 = 0x822B,
-        R16F = 0x822D,
-        R32F = 0x822E,
-        RG16F = 0x822F,
-        RG32F = 0x8230,
-        R8I = 0x8231,
-        R8UI = 0x8232,
-        R16I = 0x8233,
-        R16UI = 0x8234,
-        R32I = 0x8235,
-        R32UI = 0x8236,
-        RG8I = 0x8237,
-        RG8UI = 0x8238,
-        RG16I = 0x8239,
-        RG16UI = 0x823A,
-        RG32I = 0x823B,
-        RG32UI = 0x823C,
-        VERTEX_ARRAY_BINDING = 0x85B5,
-        R8_SNORM = 0x8F94,
-        RG8_SNORM = 0x8F95,
-        RGB8_SNORM = 0x8F96,
-        RGBA8_SNORM = 0x8F97,
-        SIGNED_NORMALIZED = 0x8F9C,
-        COPY_READ_BUFFER = 0x8F36,
-        COPY_WRITE_BUFFER = 0x8F37,
-        COPY_READ_BUFFER_BINDING = 0x8F36, /* Same as COPY_READ_BUFFER */
-        COPY_WRITE_BUFFER_BINDING = 0x8F37, /* Same as COPY_WRITE_BUFFER */
-        UNIFORM_BUFFER = 0x8A11,
-        UNIFORM_BUFFER_BINDING = 0x8A28,
-        UNIFORM_BUFFER_START = 0x8A29,
-        UNIFORM_BUFFER_SIZE = 0x8A2A,
-        MAX_VERTEX_UNIFORM_BLOCKS = 0x8A2B,
-        MAX_FRAGMENT_UNIFORM_BLOCKS = 0x8A2D,
-        MAX_COMBINED_UNIFORM_BLOCKS = 0x8A2E,
-        MAX_UNIFORM_BUFFER_BINDINGS = 0x8A2F,
-        MAX_UNIFORM_BLOCK_SIZE = 0x8A30,
-        MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 0x8A31,
-        MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 0x8A33,
-        UNIFORM_BUFFER_OFFSET_ALIGNMENT = 0x8A34,
-        ACTIVE_UNIFORM_BLOCKS = 0x8A36,
-        UNIFORM_TYPE = 0x8A37,
-        UNIFORM_SIZE = 0x8A38,
-        UNIFORM_BLOCK_INDEX = 0x8A3A,
-        UNIFORM_OFFSET = 0x8A3B,
-        UNIFORM_ARRAY_STRIDE = 0x8A3C,
-        UNIFORM_MATRIX_STRIDE = 0x8A3D,
-        UNIFORM_IS_ROW_MAJOR = 0x8A3E,
-        UNIFORM_BLOCK_BINDING = 0x8A3F,
-        UNIFORM_BLOCK_DATA_SIZE = 0x8A40,
-        UNIFORM_BLOCK_ACTIVE_UNIFORMS = 0x8A42,
-        UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x8A43,
-        UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x8A44,
-        UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x8A46,
-        INVALID_INDEX = 0xFFFFFFFF,
-        MAX_VERTEX_OUTPUT_COMPONENTS = 0x9122,
-        MAX_FRAGMENT_INPUT_COMPONENTS = 0x9125,
-        MAX_SERVER_WAIT_TIMEOUT = 0x9111,
-        OBJECT_TYPE = 0x9112,
-        SYNC_CONDITION = 0x9113,
-        SYNC_STATUS = 0x9114,
-        SYNC_FLAGS = 0x9115,
-        SYNC_FENCE = 0x9116,
-        SYNC_GPU_COMMANDS_COMPLETE = 0x9117,
-        UNSIGNALED = 0x9118,
-        SIGNALED = 0x9119,
-        ALREADY_SIGNALED = 0x911A,
-        TIMEOUT_EXPIRED = 0x911B,
-        CONDITION_SATISFIED = 0x911C,
-        WAIT_FAILED_WEBGL = 0x911D,
-        SYNC_FLUSH_COMMANDS_BIT = 0x00000001,
-        VERTEX_ATTRIB_ARRAY_DIVISOR = 0x88FE,
-        ANY_SAMPLES_PASSED = 0x8C2F,
-        ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8D6A,
-        SAMPLER_BINDING = 0x8919,
-        RGB10_A2UI = 0x906F,
-        TEXTURE_SWIZZLE_R = 0x8E42,
-        TEXTURE_SWIZZLE_G = 0x8E43,
-        TEXTURE_SWIZZLE_B = 0x8E44,
-        TEXTURE_SWIZZLE_A = 0x8E45,
-        GREEN = 0x1904,
-        BLUE = 0x1905,
-        INT_2_10_10_10_REV = 0x8D9F,
-        TRANSFORM_FEEDBACK = 0x8E22,
-        TRANSFORM_FEEDBACK_PAUSED = 0x8E23,
-        TRANSFORM_FEEDBACK_ACTIVE = 0x8E24,
-        TRANSFORM_FEEDBACK_BINDING = 0x8E25,
-        COMPRESSED_R11_EAC = 0x9270,
-        COMPRESSED_SIGNED_R11_EAC = 0x9271,
-        COMPRESSED_RG11_EAC = 0x9272,
-        COMPRESSED_SIGNED_RG11_EAC = 0x9273,
-        COMPRESSED_RGB8_ETC2 = 0x9274,
-        COMPRESSED_SRGB8_ETC2 = 0x9275,
-        COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9276,
-        COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9277,
-        COMPRESSED_RGBA8_ETC2_EAC = 0x9278,
-        COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 0x9279,
-        TEXTURE_IMMUTABLE_FORMAT = 0x912F,
-        MAX_ELEMENT_INDEX = 0x8D6B,
-        NUM_SAMPLE_COUNTS = 0x9380,
-        TEXTURE_IMMUTABLE_LEVELS = 0x82DF,
-        PRIMITIVE_RESTART_FIXED_INDEX = 0x8D69,
-        PRIMITIVE_RESTART = 0x8F9D,
+    // WebGL-specific enums
+    static constexpr GCGLenum UNPACK_FLIP_Y_WEBGL = 0x9240;
+    static constexpr GCGLenum UNPACK_PREMULTIPLY_ALPHA_WEBGL = 0x9241;
+    static constexpr GCGLenum CONTEXT_LOST_WEBGL = 0x9242;
+    static constexpr GCGLenum UNPACK_COLORSPACE_CONVERSION_WEBGL = 0x9243;
+    static constexpr GCGLenum BROWSER_DEFAULT_WEBGL = 0x9244;
+    static constexpr GCGLenum VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE = 0x88FE;
 
-        // OpenGL ES 3 constants.
-        MAP_READ_BIT = 0x0001,
+    // WebGL2 constants
+    static constexpr GCGLenum READ_BUFFER = 0x0C02;
+    static constexpr GCGLenum UNPACK_ROW_LENGTH = 0x0CF2;
+    static constexpr GCGLenum UNPACK_SKIP_ROWS = 0x0CF3;
+    static constexpr GCGLenum UNPACK_SKIP_PIXELS = 0x0CF4;
+    static constexpr GCGLenum PACK_ROW_LENGTH = 0x0D02;
+    static constexpr GCGLenum PACK_SKIP_ROWS = 0x0D03;
+    static constexpr GCGLenum PACK_SKIP_PIXELS = 0x0D04;
+    static constexpr GCGLenum COLOR = 0x1800;
+    static constexpr GCGLenum DEPTH = 0x1801;
+    static constexpr GCGLenum STENCIL = 0x1802;
+    static constexpr GCGLenum RED = 0x1903;
+    static constexpr GCGLenum RGB8 = 0x8051;
+    static constexpr GCGLenum RGBA8 = 0x8058;
+    static constexpr GCGLenum RGB10_A2 = 0x8059;
+    static constexpr GCGLenum TEXTURE_BINDING_3D = 0x806A;
+    static constexpr GCGLenum UNPACK_SKIP_IMAGES = 0x806D;
+    static constexpr GCGLenum UNPACK_IMAGE_HEIGHT = 0x806E;
+    static constexpr GCGLenum TEXTURE_3D = 0x806F;
+    static constexpr GCGLenum TEXTURE_WRAP_R = 0x8072;
+    static constexpr GCGLenum MAX_3D_TEXTURE_SIZE = 0x8073;
+    static constexpr GCGLenum UNSIGNED_INT_2_10_10_10_REV = 0x8368;
+    static constexpr GCGLenum MAX_ELEMENTS_VERTICES = 0x80E8;
+    static constexpr GCGLenum MAX_ELEMENTS_INDICES = 0x80E9;
+    static constexpr GCGLenum TEXTURE_MIN_LOD = 0x813A;
+    static constexpr GCGLenum TEXTURE_MAX_LOD = 0x813B;
+    static constexpr GCGLenum TEXTURE_BASE_LEVEL = 0x813C;
+    static constexpr GCGLenum TEXTURE_MAX_LEVEL = 0x813D;
+    static constexpr GCGLenum MIN = 0x8007;
+    static constexpr GCGLenum MAX = 0x8008;
+    static constexpr GCGLenum DEPTH_COMPONENT24 = 0x81A6;
+    static constexpr GCGLenum MAX_TEXTURE_LOD_BIAS = 0x84FD;
+    static constexpr GCGLenum TEXTURE_COMPARE_MODE = 0x884C;
+    static constexpr GCGLenum TEXTURE_COMPARE_FUNC = 0x884D;
+    static constexpr GCGLenum CURRENT_QUERY = 0x8865;
+    static constexpr GCGLenum QUERY_RESULT = 0x8866;
+    static constexpr GCGLenum QUERY_RESULT_AVAILABLE = 0x8867;
+    static constexpr GCGLenum STREAM_READ = 0x88E1;
+    static constexpr GCGLenum STREAM_COPY = 0x88E2;
+    static constexpr GCGLenum STATIC_READ = 0x88E5;
+    static constexpr GCGLenum STATIC_COPY = 0x88E6;
+    static constexpr GCGLenum DYNAMIC_READ = 0x88E9;
+    static constexpr GCGLenum DYNAMIC_COPY = 0x88EA;
+    static constexpr GCGLenum MAX_DRAW_BUFFERS = 0x8824;
+    static constexpr GCGLenum DRAW_BUFFER0 = 0x8825;
+    static constexpr GCGLenum DRAW_BUFFER1 = 0x8826;
+    static constexpr GCGLenum DRAW_BUFFER2 = 0x8827;
+    static constexpr GCGLenum DRAW_BUFFER3 = 0x8828;
+    static constexpr GCGLenum DRAW_BUFFER4 = 0x8829;
+    static constexpr GCGLenum DRAW_BUFFER5 = 0x882A;
+    static constexpr GCGLenum DRAW_BUFFER6 = 0x882B;
+    static constexpr GCGLenum DRAW_BUFFER7 = 0x882C;
+    static constexpr GCGLenum DRAW_BUFFER8 = 0x882D;
+    static constexpr GCGLenum DRAW_BUFFER9 = 0x882E;
+    static constexpr GCGLenum DRAW_BUFFER10 = 0x882F;
+    static constexpr GCGLenum DRAW_BUFFER11 = 0x8830;
+    static constexpr GCGLenum DRAW_BUFFER12 = 0x8831;
+    static constexpr GCGLenum DRAW_BUFFER13 = 0x8832;
+    static constexpr GCGLenum DRAW_BUFFER14 = 0x8833;
+    static constexpr GCGLenum DRAW_BUFFER15 = 0x8834;
+    static constexpr GCGLenum MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x8B49;
+    static constexpr GCGLenum MAX_VERTEX_UNIFORM_COMPONENTS = 0x8B4A;
+    static constexpr GCGLenum SAMPLER_3D = 0x8B5F;
+    static constexpr GCGLenum SAMPLER_2D_SHADOW = 0x8B62;
+    static constexpr GCGLenum FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8B8B;
+    static constexpr GCGLenum PIXEL_PACK_BUFFER = 0x88EB;
+    static constexpr GCGLenum PIXEL_UNPACK_BUFFER = 0x88EC;
+    static constexpr GCGLenum PIXEL_PACK_BUFFER_BINDING = 0x88ED;
+    static constexpr GCGLenum PIXEL_UNPACK_BUFFER_BINDING = 0x88EF;
+    static constexpr GCGLenum FLOAT_MAT2x3 = 0x8B65;
+    static constexpr GCGLenum FLOAT_MAT2x4 = 0x8B66;
+    static constexpr GCGLenum FLOAT_MAT3x2 = 0x8B67;
+    static constexpr GCGLenum FLOAT_MAT3x4 = 0x8B68;
+    static constexpr GCGLenum FLOAT_MAT4x2 = 0x8B69;
+    static constexpr GCGLenum FLOAT_MAT4x3 = 0x8B6A;
+    static constexpr GCGLenum SRGB = 0x8C40;
+    static constexpr GCGLenum SRGB8 = 0x8C41;
+    static constexpr GCGLenum SRGB_ALPHA = 0x8C42;
+    static constexpr GCGLenum SRGB8_ALPHA8 = 0x8C43;
+    static constexpr GCGLenum COMPARE_REF_TO_TEXTURE = 0x884E;
+    static constexpr GCGLenum RGBA32F = 0x8814;
+    static constexpr GCGLenum RGB32F = 0x8815;
+    static constexpr GCGLenum RGBA16F = 0x881A;
+    static constexpr GCGLenum RGB16F = 0x881B;
+    static constexpr GCGLenum VERTEX_ATTRIB_ARRAY_INTEGER = 0x88FD;
+    static constexpr GCGLenum MAX_ARRAY_TEXTURE_LAYERS = 0x88FF;
+    static constexpr GCGLenum MIN_PROGRAM_TEXEL_OFFSET = 0x8904;
+    static constexpr GCGLenum MAX_PROGRAM_TEXEL_OFFSET = 0x8905;
+    static constexpr GCGLenum MAX_VARYING_COMPONENTS = 0x8B4B;
+    static constexpr GCGLenum TEXTURE_2D_ARRAY = 0x8C1A;
+    static constexpr GCGLenum TEXTURE_BINDING_2D_ARRAY = 0x8C1D;
+    static constexpr GCGLenum R11F_G11F_B10F = 0x8C3A;
+    static constexpr GCGLenum UNSIGNED_INT_10F_11F_11F_REV = 0x8C3B;
+    static constexpr GCGLenum RGB9_E5 = 0x8C3D;
+    static constexpr GCGLenum UNSIGNED_INT_5_9_9_9_REV = 0x8C3E;
+    static constexpr GCGLenum TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH = 0x8C76;
+    static constexpr GCGLenum TRANSFORM_FEEDBACK_BUFFER_MODE = 0x8C7F;
+    static constexpr GCGLenum MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 0x8C80;
+    static constexpr GCGLenum TRANSFORM_FEEDBACK_VARYINGS = 0x8C83;
+    static constexpr GCGLenum TRANSFORM_FEEDBACK_BUFFER_START = 0x8C84;
+    static constexpr GCGLenum TRANSFORM_FEEDBACK_BUFFER_SIZE = 0x8C85;
+    static constexpr GCGLenum TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8C88;
+    static constexpr GCGLenum RASTERIZER_DISCARD = 0x8C89;
+    static constexpr GCGLenum MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 0x8C8A;
+    static constexpr GCGLenum MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 0x8C8B;
+    static constexpr GCGLenum INTERLEAVED_ATTRIBS = 0x8C8C;
+    static constexpr GCGLenum SEPARATE_ATTRIBS = 0x8C8D;
+    static constexpr GCGLenum TRANSFORM_FEEDBACK_BUFFER = 0x8C8E;
+    static constexpr GCGLenum TRANSFORM_FEEDBACK_BUFFER_BINDING = 0x8C8F;
+    static constexpr GCGLenum RGBA32UI = 0x8D70;
+    static constexpr GCGLenum RGB32UI = 0x8D71;
+    static constexpr GCGLenum RGBA16UI = 0x8D76;
+    static constexpr GCGLenum RGB16UI = 0x8D77;
+    static constexpr GCGLenum RGBA8UI = 0x8D7C;
+    static constexpr GCGLenum RGB8UI = 0x8D7D;
+    static constexpr GCGLenum RGBA32I = 0x8D82;
+    static constexpr GCGLenum RGB32I = 0x8D83;
+    static constexpr GCGLenum RGBA16I = 0x8D88;
+    static constexpr GCGLenum RGB16I = 0x8D89;
+    static constexpr GCGLenum RGBA8I = 0x8D8E;
+    static constexpr GCGLenum RGB8I = 0x8D8F;
+    static constexpr GCGLenum RED_INTEGER = 0x8D94;
+    static constexpr GCGLenum RGB_INTEGER = 0x8D98;
+    static constexpr GCGLenum RGBA_INTEGER = 0x8D99;
+    static constexpr GCGLenum SAMPLER_2D_ARRAY = 0x8DC1;
+    static constexpr GCGLenum SAMPLER_2D_ARRAY_SHADOW = 0x8DC4;
+    static constexpr GCGLenum SAMPLER_CUBE_SHADOW = 0x8DC5;
+    static constexpr GCGLenum UNSIGNED_INT_VEC2 = 0x8DC6;
+    static constexpr GCGLenum UNSIGNED_INT_VEC3 = 0x8DC7;
+    static constexpr GCGLenum UNSIGNED_INT_VEC4 = 0x8DC8;
+    static constexpr GCGLenum INT_SAMPLER_2D = 0x8DCA;
+    static constexpr GCGLenum INT_SAMPLER_3D = 0x8DCB;
+    static constexpr GCGLenum INT_SAMPLER_CUBE = 0x8DCC;
+    static constexpr GCGLenum INT_SAMPLER_2D_ARRAY = 0x8DCF;
+    static constexpr GCGLenum UNSIGNED_INT_SAMPLER_2D = 0x8DD2;
+    static constexpr GCGLenum UNSIGNED_INT_SAMPLER_3D = 0x8DD3;
+    static constexpr GCGLenum UNSIGNED_INT_SAMPLER_CUBE = 0x8DD4;
+    static constexpr GCGLenum UNSIGNED_INT_SAMPLER_2D_ARRAY = 0x8DD7;
+    static constexpr GCGLenum DEPTH_COMPONENT32F = 0x8CAC;
+    static constexpr GCGLenum DEPTH32F_STENCIL8 = 0x8CAD;
+    static constexpr GCGLenum FLOAT_32_UNSIGNED_INT_24_8_REV = 0x8DAD;
+    static constexpr GCGLenum FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 0x8210;
+    static constexpr GCGLenum FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 0x8211;
+    static constexpr GCGLenum FRAMEBUFFER_ATTACHMENT_RED_SIZE = 0x8212;
+    static constexpr GCGLenum FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 0x8213;
+    static constexpr GCGLenum FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 0x8214;
+    static constexpr GCGLenum FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 0x8215;
+    static constexpr GCGLenum FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 0x8216;
+    static constexpr GCGLenum FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 0x8217;
+    static constexpr GCGLenum FRAMEBUFFER_DEFAULT = 0x8218;
+    static constexpr GCGLenum DEPTH_STENCIL_ATTACHMENT = 0x821A;
+    static constexpr GCGLenum DEPTH_STENCIL = 0x84F9;
+    static constexpr GCGLenum UNSIGNED_INT_24_8 = 0x84FA;
+    static constexpr GCGLenum DEPTH24_STENCIL8 = 0x88F0;
+    static constexpr GCGLenum UNSIGNED_NORMALIZED = 0x8C17;
+    static constexpr GCGLenum DRAW_FRAMEBUFFER_BINDING = 0x8CA6; /* Same as FRAMEBUFFER_BINDING */
+    static constexpr GCGLenum READ_FRAMEBUFFER = 0x8CA8;
+    static constexpr GCGLenum DRAW_FRAMEBUFFER = 0x8CA9;
+    static constexpr GCGLenum READ_FRAMEBUFFER_BINDING = 0x8CAA;
+    static constexpr GCGLenum RENDERBUFFER_SAMPLES = 0x8CAB;
+    static constexpr GCGLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 0x8CD4;
+    static constexpr GCGLenum MAX_COLOR_ATTACHMENTS = 0x8CDF;
+    static constexpr GCGLenum COLOR_ATTACHMENT1 = 0x8CE1;
+    static constexpr GCGLenum COLOR_ATTACHMENT2 = 0x8CE2;
+    static constexpr GCGLenum COLOR_ATTACHMENT3 = 0x8CE3;
+    static constexpr GCGLenum COLOR_ATTACHMENT4 = 0x8CE4;
+    static constexpr GCGLenum COLOR_ATTACHMENT5 = 0x8CE5;
+    static constexpr GCGLenum COLOR_ATTACHMENT6 = 0x8CE6;
+    static constexpr GCGLenum COLOR_ATTACHMENT7 = 0x8CE7;
+    static constexpr GCGLenum COLOR_ATTACHMENT8 = 0x8CE8;
+    static constexpr GCGLenum COLOR_ATTACHMENT9 = 0x8CE9;
+    static constexpr GCGLenum COLOR_ATTACHMENT10 = 0x8CEA;
+    static constexpr GCGLenum COLOR_ATTACHMENT11 = 0x8CEB;
+    static constexpr GCGLenum COLOR_ATTACHMENT12 = 0x8CEC;
+    static constexpr GCGLenum COLOR_ATTACHMENT13 = 0x8CED;
+    static constexpr GCGLenum COLOR_ATTACHMENT14 = 0x8CEE;
+    static constexpr GCGLenum COLOR_ATTACHMENT15 = 0x8CEF;
+    static constexpr GCGLenum FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56;
+    static constexpr GCGLenum MAX_SAMPLES = 0x8D57;
+    static constexpr GCGLenum HALF_FLOAT = 0x140B;
+    static constexpr GCGLenum RG = 0x8227;
+    static constexpr GCGLenum RG_INTEGER = 0x8228;
+    static constexpr GCGLenum R8 = 0x8229;
+    static constexpr GCGLenum RG8 = 0x822B;
+    static constexpr GCGLenum R16F = 0x822D;
+    static constexpr GCGLenum R32F = 0x822E;
+    static constexpr GCGLenum RG16F = 0x822F;
+    static constexpr GCGLenum RG32F = 0x8230;
+    static constexpr GCGLenum R8I = 0x8231;
+    static constexpr GCGLenum R8UI = 0x8232;
+    static constexpr GCGLenum R16I = 0x8233;
+    static constexpr GCGLenum R16UI = 0x8234;
+    static constexpr GCGLenum R32I = 0x8235;
+    static constexpr GCGLenum R32UI = 0x8236;
+    static constexpr GCGLenum RG8I = 0x8237;
+    static constexpr GCGLenum RG8UI = 0x8238;
+    static constexpr GCGLenum RG16I = 0x8239;
+    static constexpr GCGLenum RG16UI = 0x823A;
+    static constexpr GCGLenum RG32I = 0x823B;
+    static constexpr GCGLenum RG32UI = 0x823C;
+    static constexpr GCGLenum VERTEX_ARRAY_BINDING = 0x85B5;
+    static constexpr GCGLenum R8_SNORM = 0x8F94;
+    static constexpr GCGLenum RG8_SNORM = 0x8F95;
+    static constexpr GCGLenum RGB8_SNORM = 0x8F96;
+    static constexpr GCGLenum RGBA8_SNORM = 0x8F97;
+    static constexpr GCGLenum SIGNED_NORMALIZED = 0x8F9C;
+    static constexpr GCGLenum COPY_READ_BUFFER = 0x8F36;
+    static constexpr GCGLenum COPY_WRITE_BUFFER = 0x8F37;
+    static constexpr GCGLenum COPY_READ_BUFFER_BINDING = 0x8F36; /* Same as COPY_READ_BUFFER */
+    static constexpr GCGLenum COPY_WRITE_BUFFER_BINDING = 0x8F37; /* Same as COPY_WRITE_BUFFER */
+    static constexpr GCGLenum UNIFORM_BUFFER = 0x8A11;
+    static constexpr GCGLenum UNIFORM_BUFFER_BINDING = 0x8A28;
+    static constexpr GCGLenum UNIFORM_BUFFER_START = 0x8A29;
+    static constexpr GCGLenum UNIFORM_BUFFER_SIZE = 0x8A2A;
+    static constexpr GCGLenum MAX_VERTEX_UNIFORM_BLOCKS = 0x8A2B;
+    static constexpr GCGLenum MAX_FRAGMENT_UNIFORM_BLOCKS = 0x8A2D;
+    static constexpr GCGLenum MAX_COMBINED_UNIFORM_BLOCKS = 0x8A2E;
+    static constexpr GCGLenum MAX_UNIFORM_BUFFER_BINDINGS = 0x8A2F;
+    static constexpr GCGLenum MAX_UNIFORM_BLOCK_SIZE = 0x8A30;
+    static constexpr GCGLenum MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 0x8A31;
+    static constexpr GCGLenum MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 0x8A33;
+    static constexpr GCGLenum UNIFORM_BUFFER_OFFSET_ALIGNMENT = 0x8A34;
+    static constexpr GCGLenum ACTIVE_UNIFORM_BLOCKS = 0x8A36;
+    static constexpr GCGLenum UNIFORM_TYPE = 0x8A37;
+    static constexpr GCGLenum UNIFORM_SIZE = 0x8A38;
+    static constexpr GCGLenum UNIFORM_BLOCK_INDEX = 0x8A3A;
+    static constexpr GCGLenum UNIFORM_OFFSET = 0x8A3B;
+    static constexpr GCGLenum UNIFORM_ARRAY_STRIDE = 0x8A3C;
+    static constexpr GCGLenum UNIFORM_MATRIX_STRIDE = 0x8A3D;
+    static constexpr GCGLenum UNIFORM_IS_ROW_MAJOR = 0x8A3E;
+    static constexpr GCGLenum UNIFORM_BLOCK_BINDING = 0x8A3F;
+    static constexpr GCGLenum UNIFORM_BLOCK_DATA_SIZE = 0x8A40;
+    static constexpr GCGLenum UNIFORM_BLOCK_ACTIVE_UNIFORMS = 0x8A42;
+    static constexpr GCGLenum UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x8A43;
+    static constexpr GCGLenum UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x8A44;
+    static constexpr GCGLenum UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x8A46;
+    static constexpr GCGLenum INVALID_INDEX = 0xFFFFFFFF;
+    static constexpr GCGLenum MAX_VERTEX_OUTPUT_COMPONENTS = 0x9122;
+    static constexpr GCGLenum MAX_FRAGMENT_INPUT_COMPONENTS = 0x9125;
+    static constexpr GCGLenum MAX_SERVER_WAIT_TIMEOUT = 0x9111;
+    static constexpr GCGLenum OBJECT_TYPE = 0x9112;
+    static constexpr GCGLenum SYNC_CONDITION = 0x9113;
+    static constexpr GCGLenum SYNC_STATUS = 0x9114;
+    static constexpr GCGLenum SYNC_FLAGS = 0x9115;
+    static constexpr GCGLenum SYNC_FENCE = 0x9116;
+    static constexpr GCGLenum SYNC_GPU_COMMANDS_COMPLETE = 0x9117;
+    static constexpr GCGLenum UNSIGNALED = 0x9118;
+    static constexpr GCGLenum SIGNALED = 0x9119;
+    static constexpr GCGLenum ALREADY_SIGNALED = 0x911A;
+    static constexpr GCGLenum TIMEOUT_EXPIRED = 0x911B;
+    static constexpr GCGLenum CONDITION_SATISFIED = 0x911C;
+    static constexpr GCGLenum WAIT_FAILED_WEBGL = 0x911D;
+    static constexpr GCGLenum SYNC_FLUSH_COMMANDS_BIT = 0x00000001;
+    static constexpr GCGLenum VERTEX_ATTRIB_ARRAY_DIVISOR = 0x88FE;
+    static constexpr GCGLenum ANY_SAMPLES_PASSED = 0x8C2F;
+    static constexpr GCGLenum ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8D6A;
+    static constexpr GCGLenum SAMPLER_BINDING = 0x8919;
+    static constexpr GCGLenum RGB10_A2UI = 0x906F;
+    static constexpr GCGLenum TEXTURE_SWIZZLE_R = 0x8E42;
+    static constexpr GCGLenum TEXTURE_SWIZZLE_G = 0x8E43;
+    static constexpr GCGLenum TEXTURE_SWIZZLE_B = 0x8E44;
+    static constexpr GCGLenum TEXTURE_SWIZZLE_A = 0x8E45;
+    static constexpr GCGLenum GREEN = 0x1904;
+    static constexpr GCGLenum BLUE = 0x1905;
+    static constexpr GCGLenum INT_2_10_10_10_REV = 0x8D9F;
+    static constexpr GCGLenum TRANSFORM_FEEDBACK = 0x8E22;
+    static constexpr GCGLenum TRANSFORM_FEEDBACK_PAUSED = 0x8E23;
+    static constexpr GCGLenum TRANSFORM_FEEDBACK_ACTIVE = 0x8E24;
+    static constexpr GCGLenum TRANSFORM_FEEDBACK_BINDING = 0x8E25;
+    static constexpr GCGLenum COMPRESSED_R11_EAC = 0x9270;
+    static constexpr GCGLenum COMPRESSED_SIGNED_R11_EAC = 0x9271;
+    static constexpr GCGLenum COMPRESSED_RG11_EAC = 0x9272;
+    static constexpr GCGLenum COMPRESSED_SIGNED_RG11_EAC = 0x9273;
+    static constexpr GCGLenum COMPRESSED_RGB8_ETC2 = 0x9274;
+    static constexpr GCGLenum COMPRESSED_SRGB8_ETC2 = 0x9275;
+    static constexpr GCGLenum COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9276;
+    static constexpr GCGLenum COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9277;
+    static constexpr GCGLenum COMPRESSED_RGBA8_ETC2_EAC = 0x9278;
+    static constexpr GCGLenum COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 0x9279;
+    static constexpr GCGLenum TEXTURE_IMMUTABLE_FORMAT = 0x912F;
+    static constexpr GCGLenum MAX_ELEMENT_INDEX = 0x8D6B;
+    static constexpr GCGLenum NUM_SAMPLE_COUNTS = 0x9380;
+    static constexpr GCGLenum TEXTURE_IMMUTABLE_LEVELS = 0x82DF;
+    static constexpr GCGLenum PRIMITIVE_RESTART_FIXED_INDEX = 0x8D69;
+    static constexpr GCGLenum PRIMITIVE_RESTART = 0x8F9D;
 
-        // WebGL-specific.
-        MAX_CLIENT_WAIT_TIMEOUT_WEBGL = 0x9247,
+    // OpenGL ES 3 constants.
+    static constexpr GCGLenum MAP_READ_BIT = 0x0001;
 
-        // Necessary desktop OpenGL constants.
-        TEXTURE_RECTANGLE_ARB = 0x84F5,
-        TEXTURE_BINDING_RECTANGLE_ARB = 0x84F6,
-    };
+    // WebGL-specific.
+    static constexpr GCGLenum MAX_CLIENT_WAIT_TIMEOUT_WEBGL = 0x9247;
 
+    // Necessary desktop OpenGL constants.
+    static constexpr GCGLenum TEXTURE_RECTANGLE_ARB = 0x84F5;
+    static constexpr GCGLenum TEXTURE_BINDING_RECTANGLE_ARB = 0x84F6;
+
     // Attempt to enumerate all possible native image formats to
     // reduce the amount of temporary allocations during texture
     // uploading. This enum must be public because it is accessed
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to