• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# -*- coding: utf-8 -*-
2
3#-------------------------------------------------------------------------
4# drawElements Quality Program utilities
5# --------------------------------------
6#
7# Copyright 2015 The Android Open Source Project
8#
9# Licensed under the Apache License, Version 2.0 (the "License");
10# you may not use this file except in compliance with the License.
11# You may obtain a copy of the License at
12#
13#      http://www.apache.org/licenses/LICENSE-2.0
14#
15# Unless required by applicable law or agreed to in writing, software
16# distributed under the License is distributed on an "AS IS" BASIS,
17# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18# See the License for the specific language governing permissions and
19# limitations under the License.
20#
21#-------------------------------------------------------------------------
22
23import os
24import string
25
26# TODO remove
27import sys
28sys.path.append(os.path.dirname(os.path.dirname(__file__)))
29
30from src_util import *
31from khr_util.gen_str_util import addValuePrefix, genStrUtilProtos, genStrUtilImpls
32
33# Bitfield mapping
34BITFIELD_GROUPS = [
35    # ClearBufferMask
36    ("BufferMask", ["DEPTH_BUFFER_BIT", "STENCIL_BUFFER_BIT", "COLOR_BUFFER_BIT"]),
37    # MapBufferUsageMask
38    ("BufferMapFlags", [
39        "MAP_READ_BIT",
40        "MAP_WRITE_BIT",
41        "MAP_INVALIDATE_RANGE_BIT",
42        "MAP_INVALIDATE_BUFFER_BIT",
43        "MAP_FLUSH_EXPLICIT_BIT",
44        "MAP_UNSYNCHRONIZED_BIT"
45        ]),
46    # MemoryBarrierMask
47    ("MemoryBarrierFlags", [
48        "VERTEX_ATTRIB_ARRAY_BARRIER_BIT",
49        "ELEMENT_ARRAY_BARRIER_BIT",
50        "UNIFORM_BARRIER_BIT",
51        "TEXTURE_FETCH_BARRIER_BIT",
52        "SHADER_IMAGE_ACCESS_BARRIER_BIT",
53        "COMMAND_BARRIER_BIT",
54        "PIXEL_BUFFER_BARRIER_BIT",
55        "TEXTURE_UPDATE_BARRIER_BIT",
56        "BUFFER_UPDATE_BARRIER_BIT",
57        "FRAMEBUFFER_BARRIER_BIT",
58        "TRANSFORM_FEEDBACK_BARRIER_BIT",
59        "ATOMIC_COUNTER_BARRIER_BIT"
60        ]),
61    # ShaderTypeMask
62    ("ShaderTypeMask", [
63        "VERTEX_SHADER_BIT",
64        "FRAGMENT_SHADER_BIT",
65        "COMPUTE_SHADER_BIT",
66        "GEOMETRY_SHADER_BIT",
67        "TESS_CONTROL_SHADER_BIT",
68        "TESS_EVALUATION_SHADER_BIT"
69        ]),
70
71    ("ContextMask", [
72        "CONTEXT_FLAG_NO_ERROR_BIT",
73        "CONTEXT_FLAG_ROBUST_ACCESS_BIT",
74        "CONTEXT_FLAG_DEBUG_BIT",
75        "CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT",
76        ]),
77
78    ("ClientWaitMask", [
79        "SYNC_FLUSH_COMMANDS_BIT",
80        ]),
81
82    ("ContextProfileMask", [
83        "CONTEXT_CORE_PROFILE_BIT",
84        "CONTEXT_COMPATIBILITY_PROFILE_BIT",
85        ]),
86]
87
88# Enum mapping
89ENUM_GROUPS = [
90    # Common enums
91
92    # ErrorCode
93    ("Error", [
94        "NO_ERROR",
95        "INVALID_ENUM",
96        "INVALID_VALUE",
97        "INVALID_OPERATION",
98        "OUT_OF_MEMORY",
99        "INVALID_FRAMEBUFFER_OPERATION",
100        "CONTEXT_LOST",
101        ]),
102
103    # PixelType, partially
104    ("Type", [
105        # GLES2 types
106        "BYTE",
107        "UNSIGNED_BYTE",
108        "SHORT",
109        "UNSIGNED_SHORT",
110        "INT",
111        "UNSIGNED_INT",
112        "FLOAT",
113        "DOUBLE",
114        "FIXED",
115        "UNSIGNED_SHORT_5_6_5",
116        "UNSIGNED_SHORT_4_4_4_4",
117        "UNSIGNED_SHORT_5_5_5_1",
118        "UNSIGNED_BYTE_3_3_2",
119        "UNSIGNED_INT_8_8_8_8",
120        "UNSIGNED_INT_10_10_10_2",
121        "UNSIGNED_BYTE_2_3_3_REV",
122        "UNSIGNED_SHORT_5_6_5_REV",
123        "UNSIGNED_SHORT_4_4_4_4_REV",
124        "UNSIGNED_SHORT_1_5_5_5_REV",
125        "UNSIGNED_INT_8_8_8_8_REV",
126
127        # GLES3 types
128        "HALF_FLOAT",
129        "INT_2_10_10_10_REV",
130        "UNSIGNED_INT_2_10_10_10_REV",
131        "UNSIGNED_INT_10F_11F_11F_REV",
132        "UNSIGNED_INT_5_9_9_9_REV",
133        "UNSIGNED_INT_24_8",
134        "FLOAT_32_UNSIGNED_INT_24_8_REV",
135        "SIGNED_NORMALIZED",
136        "UNSIGNED_NORMALIZED",
137
138        # Extension types
139        "HALF_FLOAT_OES",
140
141        # GL4.0 types
142        "DOUBLE_VEC2",
143        "DOUBLE_VEC3",
144        "DOUBLE_VEC4",
145        "DOUBLE_MAT2",
146        "DOUBLE_MAT3",
147        "DOUBLE_MAT4",
148        "DOUBLE_MAT2x3",
149        "DOUBLE_MAT2x4",
150        "DOUBLE_MAT3x2",
151        "DOUBLE_MAT3x4",
152        "DOUBLE_MAT4x2",
153        "DOUBLE_MAT4x3",
154        ]),
155
156    # GetPName, also GettableState below
157    ("ParamQuery", [
158        # Generic
159        "LINE_WIDTH",
160        "LINE_SMOOTH",
161        "LINE_SMOOTH_HINT",
162        "LINE_WIDTH_RANGE",
163        "LINE_WIDTH_GRANULARITY",
164        "POLYGON_SMOOTH",
165        "POLYGON_SMOOTH_HINT",
166        "ALIASED_POINT_SIZE_RANGE",
167        "ALIASED_LINE_WIDTH_RANGE",
168        "CULL_FACE_MODE",
169        "FRONT_FACE",
170        "DEPTH_RANGE",
171        "DEPTH_WRITEMASK",
172        "DEPTH_CLEAR_VALUE",
173        "DEPTH_FUNC",
174        "STENCIL_CLEAR_VALUE",
175        "STENCIL_FUNC",
176        "STENCIL_FAIL",
177        "STENCIL_PASS_DEPTH_FAIL",
178        "STENCIL_PASS_DEPTH_PASS",
179        "STENCIL_REF",
180        "STENCIL_VALUE_MASK",
181        "STENCIL_WRITEMASK",
182        "STENCIL_BACK_FUNC",
183        "STENCIL_BACK_FAIL",
184        "STENCIL_BACK_PASS_DEPTH_FAIL",
185        "STENCIL_BACK_PASS_DEPTH_PASS",
186        "STENCIL_BACK_REF",
187        "STENCIL_BACK_VALUE_MASK",
188        "STENCIL_BACK_WRITEMASK",
189        "VIEWPORT",
190        "SCISSOR_BOX",
191        "SCISSOR_TEST",
192        "COLOR_CLEAR_VALUE",
193        "COLOR_WRITEMASK",
194        "UNPACK_ALIGNMENT",
195        "PACK_ALIGNMENT",
196        "MAX_TEXTURE_SIZE",
197        "MAX_VIEWPORT_DIMS",
198        "SUBPIXEL_BITS",
199        "RED_BITS",
200        "GREEN_BITS",
201        "BLUE_BITS",
202        "ALPHA_BITS",
203        "DEPTH_BITS",
204        "STENCIL_BITS",
205        "POLYGON_OFFSET_UNITS",
206        "POLYGON_OFFSET_FILL",
207        "POLYGON_OFFSET_FACTOR",
208        "POLYGON_OFFSET_POINT",
209        "POLYGON_OFFSET_LINE",
210        "TEXTURE_BINDING_2D",
211        "SAMPLE_BUFFERS",
212        "SAMPLES",
213        "SAMPLE_COVERAGE_VALUE",
214        "SAMPLE_COVERAGE_INVERT",
215
216        "MAX_CUBE_MAP_TEXTURE_SIZE",
217        "MAX_RENDERBUFFER_SIZE",
218
219        # Program-related
220        "MAX_VERTEX_ATTRIBS",
221        "MAX_VERTEX_UNIFORM_VECTORS",
222        "MAX_VARYING_VECTORS",
223        "MAX_COMBINED_TEXTURE_IMAGE_UNITS",
224        "MAX_VERTEX_TEXTURE_IMAGE_UNITS",
225        "MAX_TEXTURE_IMAGE_UNITS",
226        "MAX_FRAGMENT_UNIFORM_VECTORS"
227        ]),
228
229    # *missing*
230    # Program query
231    ("ProgramParam", [
232        "ACTIVE_ATTRIBUTES",
233        "ACTIVE_ATTRIBUTE_MAX_LENGTH",
234        "ACTIVE_UNIFORMS",
235        "ACTIVE_UNIFORM_BLOCKS",
236        "ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH",
237        "ACTIVE_UNIFORM_MAX_LENGTH",
238        "ATTACHED_SHADERS",
239        "DELETE_STATUS",
240        "INFO_LOG_LENGTH",
241        "LINK_STATUS",
242        "PROGRAM_BINARY_RETRIEVABLE_HINT",
243        "TRANSFORM_FEEDBACK_BUFFER_MODE",
244        "TRANSFORM_FEEDBACK_BUFFER_PAUSED",
245        "TRANSFORM_FEEDBACK_BUFFER_ACTIVE",
246        "TRANSFORM_FEEDBACK_VARYINGS",
247        "TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH",
248        "VALIDATE_STATUS",
249        "GEOMETRY_INPUT_TYPE",
250        "GEOMETRY_OUTPUT_TYPE",
251        "GEOMETRY_VERTICES_OUT",
252        "GEOMETRY_SHADER_INVOCATIONS",
253        "PROGRAM_SEPARABLE",
254        "COMPUTE_WORK_GROUP_SIZE",
255        "ACTIVE_ATOMIC_COUNTER_BUFFERS",
256        "TESS_CONTROL_OUTPUT_VERTICES",
257        "TESS_GEN_MODE",
258        "TESS_GEN_SPACING",
259        "TESS_GEN_VERTEX_ORDER",
260        "TESS_GEN_POINT_MODE",
261        ]),
262
263    # *missing*
264    # Uniform query
265    ("UniformParam", [
266        "UNIFORM_TYPE",
267        "UNIFORM_SIZE",
268        "UNIFORM_NAME_LENGTH",
269        "UNIFORM_BLOCK_INDEX",
270        "UNIFORM_OFFSET",
271        "UNIFORM_ARRAY_STRIDE",
272        "UNIFORM_MATRIX_STRIDE",
273        "UNIFORM_IS_ROW_MAJOR"
274        ]),
275
276    # *missing*
277    # Framebuffers
278    ("FramebufferAttachment", ["COLOR_ATTACHMENT0", "COLOR_ATTACHMENT1", "COLOR_ATTACHMENT2", "COLOR_ATTACHMENT3",
279                                         "COLOR_ATTACHMENT4", "COLOR_ATTACHMENT5", "COLOR_ATTACHMENT6", "COLOR_ATTACHMENT7",
280                                         "COLOR_ATTACHMENT8", "COLOR_ATTACHMENT9", "COLOR_ATTACHMENT10", "COLOR_ATTACHMENT11",
281                                         "COLOR_ATTACHMENT12", "COLOR_ATTACHMENT13", "COLOR_ATTACHMENT14", "COLOR_ATTACHMENT15",
282                                         "DEPTH_ATTACHMENT", "STENCIL_ATTACHMENT", "DEPTH_STENCIL_ATTACHMENT",
283                                         "BACK", "FRONT_LEFT", "FRONT_RIGHT", "BACK_LEFT", "BACK_RIGHT", "LEFT", "RIGHT",
284                                         "DEPTH", "STENCIL"]),
285    # *missing*
286    ("FramebufferAttachmentParameter", ["FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE", "FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",
287                                         "FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL", "FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",
288                                         "FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER", "FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE",
289                                         "FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING", "FRAMEBUFFER_ATTACHMENT_RED_SIZE",
290                                         "FRAMEBUFFER_ATTACHMENT_GREEN_SIZE", "FRAMEBUFFER_ATTACHMENT_BLUE_SIZE",
291                                         "FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE", "FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE",
292                                         "FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE", "FRAMEBUFFER_ATTACHMENT_LAYERED"]),
293    ("FramebufferTarget", ["FRAMEBUFFER", "RENDERBUFFER", "DRAW_FRAMEBUFFER", "READ_FRAMEBUFFER"]),
294    ("FramebufferStatus", ["FRAMEBUFFER_COMPLETE", "FRAMEBUFFER_INCOMPLETE_ATTACHMENT", "FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",
295                                         "FRAMEBUFFER_INCOMPLETE_DIMENSIONS", "FRAMEBUFFER_UNSUPPORTED", "FRAMEBUFFER_INCOMPLETE_MULTISAMPLE",
296                                         "FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS", "FRAMEBUFFER_UNDEFINED",
297                                         "FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER", "FRAMEBUFFER_INCOMPLETE_READ_BUFFER"]),
298    ("FramebufferAttachmentType", ["NONE", "FRAMEBUFFER_DEFAULT", "TEXTURE", "RENDERBUFFER"]),
299    ("FramebufferColorEncoding", ["LINEAR", "SRGB"]),
300
301    ("FramebufferParameter", [
302        "FRAMEBUFFER_DEFAULT_WIDTH",
303        "FRAMEBUFFER_DEFAULT_HEIGHT",
304        "FRAMEBUFFER_DEFAULT_SAMPLES",
305        "FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS",
306        "FRAMEBUFFER_DEFAULT_LAYERS",
307        "DOUBLEBUFFER",
308        "IMPLEMENTATION_COLOR_READ_FORMAT",
309        "IMPLEMENTATION_COLOR_READ_TYPE",
310        "SAMPLES",
311        "SAMPLE_BUFFERS",
312        "STEREO",
313        ]),
314
315    # Renderbuffers
316    ("RenderbufferParameter", ["RENDERBUFFER_WIDTH", "RENDERBUFFER_HEIGHT", "RENDERBUFFER_INTERNAL_FORMAT", "RENDERBUFFER_RED_SIZE",
317                                        "RENDERBUFFER_GREEN_SIZE", "RENDERBUFFER_BLUE_SIZE", "RENDERBUFFER_ALPHA_SIZE", "RENDERBUFFER_DEPTH_SIZE",
318                                        "RENDERBUFFER_STENCIL_SIZE", "RENDERBUFFER_SAMPLES"]),
319
320    # Primitives
321    ("PrimitiveType", [
322        "POINTS",
323        "LINES",
324        "LINE_STRIP",
325        "LINE_LOOP",
326        "TRIANGLES",
327        "TRIANGLE_STRIP",
328        "TRIANGLE_FAN",
329        "LINES_ADJACENCY",
330        "LINE_STRIP_ADJACENCY",
331        "TRIANGLES_ADJACENCY",
332        "TRIANGLE_STRIP_ADJACENCY",
333        "PATCHES",
334        "ISOLINES",
335        ]),
336
337    # Blending
338    ("BlendFactor", ["ZERO", "ONE", "SRC_ALPHA_SATURATE",
339                             "SRC_COLOR", "ONE_MINUS_SRC_COLOR", "SRC_ALPHA", "ONE_MINUS_SRC_ALPHA",
340                             "SRC1_COLOR", "ONE_MINUS_SRC1_COLOR", "SRC1_ALPHA", "ONE_MINUS_SRC1_ALPHA",
341                             "DST_COLOR", "ONE_MINUS_DST_COLOR", "DST_ALPHA", "ONE_MINUS_DST_ALPHA",
342                             "CONSTANT_COLOR", "ONE_MINUS_CONSTANT_COLOR", "CONSTANT_ALPHA", "ONE_MINUS_CONSTANT_ALPHA"]),
343    ("BlendEquation", [
344        "FUNC_ADD",
345        "FUNC_SUBTRACT",
346        "FUNC_REVERSE_SUBTRACT",
347        "MIN",
348        "MAX",
349        "MULTIPLY_KHR",
350        "SCREEN_KHR",
351        "OVERLAY_KHR",
352        "DARKEN_KHR",
353        "LIGHTEN_KHR",
354        "COLORDODGE_KHR",
355        "COLORBURN_KHR",
356        "HARDLIGHT_KHR",
357        "SOFTLIGHT_KHR",
358        "DIFFERENCE_KHR",
359        "EXCLUSION_KHR",
360        "HSL_HUE_KHR",
361        "HSL_SATURATION_KHR",
362        "HSL_COLOR_KHR",
363        "HSL_LUMINOSITY_KHR",
364        "BLEND_EQUATION",
365        ]),
366
367    # Buffer Objects
368    ("BufferTarget", [
369        "ARRAY_BUFFER",
370        "ELEMENT_ARRAY_BUFFER",
371        "COPY_READ_BUFFER",
372        "COPY_WRITE_BUFFER",
373        "PIXEL_PACK_BUFFER",
374        "PIXEL_UNPACK_BUFFER",
375        "TRANSFORM_FEEDBACK_BUFFER",
376        "UNIFORM_BUFFER",
377        "DRAW_INDIRECT_BUFFER",
378        "SHADER_STORAGE_BUFFER",
379        "TEXTURE_BUFFER",
380        "DISPATCH_INDIRECT_BUFFER",
381        "ATOMIC_COUNTER_BUFFER",
382        ]),
383    ("BufferBinding", ["ARRAY_BUFFER_BINDING", "ELEMENT_ARRAY_BUFFER_BINDING"]),
384    ("Usage", [
385        "STREAM_DRAW",
386        "STREAM_READ",
387        "STREAM_COPY",
388        "STATIC_DRAW",
389        "STATIC_READ",
390        "STATIC_COPY",
391        "DYNAMIC_DRAW",
392        "DYNAMIC_READ",
393        "DYNAMIC_COPY"]),
394    ("BufferQuery", [
395        "BUFFER_SIZE",
396        "BUFFER_USAGE",
397        "BUFFER_ACCESS_FLAGS",
398        "BUFFER_MAPPED",
399        "BUFFER_MAP_OFFSET",
400        "BUFFER_MAP_LENGTH",
401        "BUFFER_ACCESS",
402        "BUFFER_MAP_POINTER",
403        ]),
404
405    # Culling
406    ("Face", ["FRONT", "BACK", "FRONT_AND_BACK"]),
407
408    # Comparison function
409    ("CompareFunc", ["NEVER", "LESS", "LEQUAL", "GREATER", "EQUAL", "NOTEQUAL", "GEQUAL", "ALWAYS"]),
410
411    # Enable-disable bit
412    ("EnableCap", [
413        "TEXTURE_2D", "CULL_FACE", "BLEND", "DITHER", "STENCIL_TEST", "DEPTH_TEST", "SCISSOR_TEST",
414        "POLYGON_OFFSET_FILL", "SAMPLE_ALPHA_TO_COVERAGE", "SAMPLE_COVERAGE", "STEREO",
415        "PRIMITIVE_RESTART_FIXED_INDEX", "RASTERIZER_DISCARD", "FRAMEBUFFER_SRGB", "SAMPLE_SHADING", "DEPTH_CLAMP",
416        "PRIMITIVE_RESTART", "SAMPLE_MASK", "DEBUG_OUTPUT", "DEBUG_OUTPUT_SYNCHRONOUS",
417        "BLEND_ADVANCED_COHERENT_KHR", "MULTISAMPLE", "SAMPLE_ALPHA_TO_ONE", "VERTEX_PROGRAM_POINT_SIZE",
418        "TEXTURE_CUBE_MAP_SEAMLESS",
419        ]),
420
421    # Indexed enable-disable bit
422    ("IndexedEnableCap", ["BLEND"]),
423
424    # Polygon winding
425    ("Winding", ["CW", "CCW"]),
426
427    # Hints
428    ("HintMode", ["DONT_CARE", "FASTEST", "NICEST"]),
429    ("Hint", ["GENERATE_MIPMAP_HINT", "TEXTURE_COMPRESSION_HINT"]),
430
431    # Stencil ops
432    ("StencilOp", ["ZERO", "KEEP", "REPLACE", "INCR", "DECR", "INVERT", "INCR_WRAP", "DECR_WRAP"]),
433
434    # Shader type
435    ("ShaderType", [
436        "VERTEX_SHADER",
437        "FRAGMENT_SHADER",
438        "COMPUTE_SHADER",
439        "TESS_CONTROL_SHADER",
440        "TESS_EVALUATION_SHADER",
441        "GEOMETRY_SHADER",
442        ]),
443
444    # Buffers
445    ("Buffer", ["COLOR", "DEPTH", "STENCIL", "DEPTH_STENCIL"]),
446
447    # Invalidate buffer target
448    ("InvalidateAttachment",["COLOR", "DEPTH", "STENCIL",
449                             "COLOR_ATTACHMENT0",
450                             "COLOR_ATTACHMENT1",
451                             "COLOR_ATTACHMENT2",
452                             "COLOR_ATTACHMENT3",
453                             "COLOR_ATTACHMENT4",
454                             "COLOR_ATTACHMENT5",
455                             "COLOR_ATTACHMENT6",
456                             "COLOR_ATTACHMENT7",
457                             "DEPTH_ATTACHMENT",
458                             "STENCIL_ATTACHMENT",
459                             "DEPTH_STENCIL_ATTACHMENT"]),
460
461    # Draw/ReadBuffer attachment
462    ("DrawReadBuffer", ["COLOR", "DEPTH", "STENCIL", "BACK", "NONE",
463                             "COLOR_ATTACHMENT0",
464                             "COLOR_ATTACHMENT1",
465                             "COLOR_ATTACHMENT2",
466                             "COLOR_ATTACHMENT3",
467                             "COLOR_ATTACHMENT4",
468                             "COLOR_ATTACHMENT5",
469                             "COLOR_ATTACHMENT6",
470                             "COLOR_ATTACHMENT7",
471                             "DEPTH_ATTACHMENT",
472                             "STENCIL_ATTACHMENT",
473                             "DEPTH_STENCIL_ATTACHMENT"]),
474
475    # Textures
476    ("TextureTarget", ["TEXTURE_1D", "TEXTURE_1D_ARRAY", "PROXY_TEXTURE_1D", "PROXY_TEXTURE_1D_ARRAY",
477                             "TEXTURE_2D", "TEXTURE_RECTANGLE", "PROXY_TEXTURE_2D", "TEXTURE_CUBE_MAP",
478                             "PROXY_TEXTURE_CUBE_MAP", "PROXY_TEXTURE_CUBE_MAP_ARRAY",
479                             "TEXTURE_CUBE_MAP_POSITIVE_X", "TEXTURE_CUBE_MAP_NEGATIVE_X",
480                             "TEXTURE_CUBE_MAP_POSITIVE_Y", "TEXTURE_CUBE_MAP_NEGATIVE_Y",
481                             "TEXTURE_CUBE_MAP_POSITIVE_Z", "TEXTURE_CUBE_MAP_NEGATIVE_Z",
482                             "TEXTURE_3D", "PROXY_TEXTURE_3D", "TEXTURE_2D_ARRAY", "PROXY_TEXTURE_2D_ARRAY",
483                             "TEXTURE_2D_MULTISAMPLE", "PROXY_TEXTURE_2D_MULTISAMPLE", "TEXTURE_2D_MULTISAMPLE_ARRAY",
484                             "PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY", "PROXY_TEXTURE_RECTANGLE",
485                             "TEXTURE_BUFFER", "TEXTURE_CUBE_MAP_ARRAY"]),
486    ("TextureParameter", [
487        "TEXTURE_WRAP_S",
488        "TEXTURE_WRAP_T",
489        "TEXTURE_WRAP_R",
490        "TEXTURE_BASE_LEVEL",
491        "TEXTURE_MAX_LEVEL",
492        "TEXTURE_COMPARE_MODE",
493        "TEXTURE_COMPARE_FUNC",
494        "TEXTURE_MAX_LOD",
495        "TEXTURE_MIN_LOD",
496        "TEXTURE_SWIZZLE_R",
497        "TEXTURE_SWIZZLE_G",
498        "TEXTURE_SWIZZLE_B",
499        "TEXTURE_SWIZZLE_A",
500        "TEXTURE_SWIZZLE_RGBA",
501        "TEXTURE_MIN_FILTER",
502        "TEXTURE_MAG_FILTER",
503        "DEPTH_STENCIL_TEXTURE_MODE",
504        "TEXTURE_SRGB_DECODE_EXT",
505        "TEXTURE_BORDER_COLOR",
506
507        # Gettable only
508        "TEXTURE_IMMUTABLE_LEVELS",
509        "TEXTURE_IMMUTABLE_FORMAT",
510        ]),
511    ("TextureLevelParameter", [
512        "TEXTURE_SAMPLES",
513        "TEXTURE_FIXED_SAMPLE_LOCATIONS",
514        "TEXTURE_WIDTH",
515        "TEXTURE_HEIGHT",
516        "TEXTURE_DEPTH",
517        "TEXTURE_INTERNAL_FORMAT",
518        "TEXTURE_RED_SIZE",
519        "TEXTURE_GREEN_SIZE",
520        "TEXTURE_BLUE_SIZE",
521        "TEXTURE_ALPHA_SIZE",
522        "TEXTURE_DEPTH_SIZE",
523        "TEXTURE_STENCIL_SIZE",
524        "TEXTURE_SHARED_SIZE",
525        "TEXTURE_RED_TYPE",
526        "TEXTURE_GREEN_TYPE",
527        "TEXTURE_BLUE_TYPE",
528        "TEXTURE_ALPHA_TYPE",
529        "TEXTURE_DEPTH_TYPE",
530        "TEXTURE_COMPRESSED",
531        "TEXTURE_BUFFER_DATA_STORE_BINDING",
532        "TEXTURE_BUFFER_OFFSET",
533        "TEXTURE_BUFFER_SIZE",
534        "TEXTURE_COMPRESSED_IMAGE_SIZE",
535        ]),
536    ("RepeatMode", ["REPEAT", "CLAMP_TO_EDGE", "MIRRORED_REPEAT", "CLAMP_TO_BORDER"]),
537    ("TextureFilter", ["NEAREST", "LINEAR", "NEAREST_MIPMAP_NEAREST", "LINEAR_MIPMAP_NEAREST",
538                             "NEAREST_MIPMAP_LINEAR", "LINEAR_MIPMAP_LINEAR"]),
539    ("TextureWrapMode", ["REPEAT", "CLAMP_TO_EDGE", "MIRRORED_REPEAT"]),
540    ("TextureSwizzle", ["RED", "GREEN", "BLUE", "ALPHA", "ZERO", "ONE"]),
541    ("TextureCompareMode", ["NONE", "COMPARE_REF_TO_TEXTURE"]),
542    ("CubeMapFace", ["TEXTURE_CUBE_MAP_POSITIVE_X", "TEXTURE_CUBE_MAP_NEGATIVE_X",
543                             "TEXTURE_CUBE_MAP_POSITIVE_Y", "TEXTURE_CUBE_MAP_NEGATIVE_Y",
544                             "TEXTURE_CUBE_MAP_POSITIVE_Z", "TEXTURE_CUBE_MAP_NEGATIVE_Z"]),
545    ("TextureDepthStencilMode", ["DEPTH_COMPONENT", "STENCIL_INDEX"]),
546    ("PixelStoreParameter", [
547        "UNPACK_ALIGNMENT",
548        "UNPACK_IMAGE_HEIGHT",
549        "UNPACK_ROW_LENGTH",
550        "UNPACK_SKIP_IMAGES",
551        "UNPACK_SKIP_ROWS",
552        "UNPACK_SKIP_PIXELS",
553        "PACK_ROW_LENGTH",
554        "PACK_SKIP_ROWS",
555        "PACK_SKIP_PIXELS"]),
556    ("UncompressedTextureFormat", [
557        # GLES2 unsized formats
558        "LUMINANCE",
559        "LUMINANCE_ALPHA",
560        "ALPHA",
561        "RGB",
562        "RGBA",
563
564        # GLES2 sized formats
565        "RGBA4",
566        "RGB4",
567        "RGB5_A1",
568        "RGB565",
569        "R3_G3_B2", "RGB5", "RGB12", "RGBA2", "RGBA12",
570        "DEPTH_COMPONENT16",
571        "STENCIL_INDEX1",
572        "STENCIL_INDEX4",
573        "STENCIL_INDEX8",
574        "STENCIL_INDEX16",
575
576        # GLES3 unsized formats
577        "RG",
578        "RED",
579        "RGBA_INTEGER",
580        "RGB_INTEGER",
581        "RG_INTEGER",
582        "RED_INTEGER",
583        "GREEN_INTEGER",
584        "BLUE_INTEGER",
585        "BGR_INTEGER",
586        "BGRA_INTEGER",
587        "DEPTH_COMPONENT",
588        "DEPTH_STENCIL",
589
590        # GLES3 sized formats
591        "RGBA32F",
592        "RGBA32I",
593        "RGBA32UI",
594        "RGBA16",
595        "RGBA16_SNORM",
596        "RGBA16F",
597        "RGBA16I",
598        "RGBA16UI",
599        "RGBA8",
600        "RGBA8I",
601        "RGBA8UI",
602        "SRGB8_ALPHA8",
603        "RGB10_A2",
604        "RGB10_A2UI",
605        "RGBA8_SNORM",
606        "RGB8",
607        "R11F_G11F_B10F",
608        "RGB32F",
609        "RGB32I",
610        "RGB32UI",
611        "RGB16",
612        "RGB16_SNORM",
613        "RGB16F",
614        "RGB16I",
615        "RGB16UI",
616        "RGB8_SNORM",
617        "RGB8I",
618        "RGB8UI",
619        "SRGB8",
620        "RGB9_E5",
621        "RG32F",
622        "RG32I",
623        "RG32UI",
624        "RG16",
625        "RG16_SNORM",
626        "RG16F",
627        "RG16I",
628        "RG16UI",
629        "RG8",
630        "RG8I",
631        "RG8UI",
632        "RG8_SNORM",
633        "R32F",
634        "R32I",
635        "R32UI",
636        "R16",
637        "R16_SNORM",
638        "R16F",
639        "R16I",
640        "R16UI",
641        "R8",
642        "R8I",
643        "R8UI",
644        "R8_SNORM",
645        "DEPTH_COMPONENT32F",
646        "DEPTH_COMPONENT24",
647        "DEPTH32F_STENCIL8",
648        "DEPTH24_STENCIL8",
649
650        # OES_required_internalformat
651        "RGB10",
652
653        # OES_depth32
654        "DEPTH_COMPONENT32",
655
656        # EXT_sRGB
657        "SRGB",
658        "SRGB_ALPHA",
659
660        # GL_EXT_texture_sRGB_R8 & RG8
661        "SR8_EXT",
662        "SRG8_EXT",
663
664        # GL_EXT_read_format_bgra
665        "BGRA",
666
667        # GL_EXT_texture_format_BGRA8888
668        "BGRA8_EXT",
669
670        "BGR",
671        "RED_SNORM",
672        "RG_SNORM",
673        "RGB_SNORM",
674        "RGBA_SNORM",
675        ]),
676
677    ("CompressedTextureFormat", [
678        # ETC2/EAC formats
679        "COMPRESSED_R11_EAC",
680        "COMPRESSED_SIGNED_R11_EAC",
681        "COMPRESSED_RG11_EAC",
682        "COMPRESSED_SIGNED_RG11_EAC",
683        "COMPRESSED_RGB8_ETC2",
684        "COMPRESSED_SRGB8_ETC2",
685        "COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",
686        "COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",
687        "COMPRESSED_RGBA8_ETC2_EAC",
688        "COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",
689
690        # ASTC formats
691        "COMPRESSED_RGBA_ASTC_4x4_KHR",
692        "COMPRESSED_RGBA_ASTC_5x4_KHR",
693        "COMPRESSED_RGBA_ASTC_5x5_KHR",
694        "COMPRESSED_RGBA_ASTC_6x5_KHR",
695        "COMPRESSED_RGBA_ASTC_6x6_KHR",
696        "COMPRESSED_RGBA_ASTC_8x5_KHR",
697        "COMPRESSED_RGBA_ASTC_8x6_KHR",
698        "COMPRESSED_RGBA_ASTC_8x8_KHR",
699        "COMPRESSED_RGBA_ASTC_10x5_KHR",
700        "COMPRESSED_RGBA_ASTC_10x6_KHR",
701        "COMPRESSED_RGBA_ASTC_10x8_KHR",
702        "COMPRESSED_RGBA_ASTC_10x10_KHR",
703        "COMPRESSED_RGBA_ASTC_12x10_KHR",
704        "COMPRESSED_RGBA_ASTC_12x12_KHR",
705        "COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR",
706        "COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR",
707        "COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR",
708        "COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR",
709        "COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR",
710        "COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR",
711        "COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR",
712        "COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR",
713        "COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR",
714        "COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR",
715        "COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR",
716        "COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR",
717        "COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR",
718        "COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR",
719
720        # EXT_texture_compression_s3tc
721        "COMPRESSED_RGB_S3TC_DXT1_EXT",
722        "COMPRESSED_RGBA_S3TC_DXT1_EXT",
723        "COMPRESSED_RGBA_S3TC_DXT3_EXT",
724        "COMPRESSED_RGBA_S3TC_DXT5_EXT",
725
726        # IMG_texture_compression_pvrtc
727        "COMPRESSED_RGB_PVRTC_4BPPV1_IMG",
728        "COMPRESSED_RGB_PVRTC_2BPPV1_IMG",
729        "COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",
730        "COMPRESSED_RGBA_PVRTC_2BPPV1_IMG",
731
732        "COMPRESSED_RED",
733        "COMPRESSED_RG",
734        "COMPRESSED_RGB",
735        "COMPRESSED_RGBA",
736        "COMPRESSED_SRGB",
737        "COMPRESSED_SRGB_ALPHA",
738        "COMPRESSED_RED_RGTC1",
739        "COMPRESSED_SIGNED_RED_RGTC1",
740        "COMPRESSED_RG_RGTC2",
741        "COMPRESSED_SIGNED_RG_RGTC2",
742        "COMPRESSED_RGBA_BPTC_UNORM",
743        "COMPRESSED_SRGB_ALPHA_BPTC_UNORM",
744        "COMPRESSED_RGB_BPTC_SIGNED_FLOAT",
745        "COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT",
746        ]),
747
748    # Shader var type
749    ("ShaderVarType", [
750        "FLOAT",
751        "FLOAT_VEC2",
752        "FLOAT_VEC3",
753        "FLOAT_VEC4",
754        "INT",
755        "INT_VEC2",
756        "INT_VEC3",
757        "INT_VEC4",
758        "UNSIGNED_INT",
759        "UNSIGNED_INT_VEC2",
760        "UNSIGNED_INT_VEC3",
761        "UNSIGNED_INT_VEC4",
762        "BOOL",
763        "BOOL_VEC2",
764        "BOOL_VEC3",
765        "BOOL_VEC4",
766        "FLOAT_MAT2",
767        "FLOAT_MAT3",
768        "FLOAT_MAT4",
769        "FLOAT_MAT2x3",
770        "FLOAT_MAT2x4",
771        "FLOAT_MAT3x2",
772        "FLOAT_MAT3x4",
773        "FLOAT_MAT4x2",
774        "FLOAT_MAT4x3",
775        "SAMPLER_1D",
776        "SAMPLER_1D_ARRAY",
777        "SAMPLER_1D_SHADOW",
778        "SAMPLER_2D",
779        "SAMPLER_2D_RECT",
780        "SAMPLER_2D_RECT_SHADOW",
781        "SAMPLER_3D",
782        "SAMPLER_CUBE",
783        "SAMPLER_1D_ARRAY_SHADOW",
784        "SAMPLER_2D_SHADOW",
785        "SAMPLER_2D_ARRAY",
786        "SAMPLER_2D_ARRAY_SHADOW",
787        "SAMPLER_CUBE_SHADOW",
788        "INT_SAMPLER_1D",
789        "INT_SAMPLER_2D",
790        "INT_SAMPLER_2D_RECT",
791        "INT_SAMPLER_3D",
792        "INT_SAMPLER_CUBE",
793        "INT_SAMPLER_2D_ARRAY",
794        "INT_SAMPLER_1D_ARRAY",
795        "UNSIGNED_INT_SAMPLER_1D",
796        "UNSIGNED_INT_SAMPLER_2D",
797        "UNSIGNED_INT_SAMPLER_2D_RECT",
798        "UNSIGNED_INT_SAMPLER_3D",
799        "UNSIGNED_INT_SAMPLER_CUBE",
800        "UNSIGNED_INT_SAMPLER_1D_ARRAY",
801        "UNSIGNED_INT_SAMPLER_2D_ARRAY",
802        "SAMPLER_2D_MULTISAMPLE",
803        "INT_SAMPLER_2D_MULTISAMPLE",
804        "UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE",
805        "IMAGE_2D",
806        "IMAGE_3D",
807        "IMAGE_CUBE",
808        "IMAGE_2D_ARRAY",
809        "INT_IMAGE_2D",
810        "INT_IMAGE_3D",
811        "INT_IMAGE_CUBE",
812        "INT_IMAGE_2D_ARRAY",
813        "UNSIGNED_INT_IMAGE_2D",
814        "UNSIGNED_INT_IMAGE_3D",
815        "UNSIGNED_INT_IMAGE_CUBE",
816        "UNSIGNED_INT_IMAGE_2D_ARRAY",
817        "UNSIGNED_INT_ATOMIC_COUNTER",
818        "SAMPLER_2D_MULTISAMPLE_ARRAY",
819        "INT_SAMPLER_2D_MULTISAMPLE_ARRAY",
820        "UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY",
821        "SAMPLER_BUFFER",
822        "INT_SAMPLER_BUFFER",
823        "UNSIGNED_INT_SAMPLER_BUFFER",
824        "IMAGE_BUFFER",
825        "INT_IMAGE_BUFFER",
826        "UNSIGNED_INT_IMAGE_BUFFER",
827        "SAMPLER_CUBE_MAP_ARRAY",
828        "SAMPLER_CUBE_MAP_ARRAY_SHADOW",
829        "INT_SAMPLER_CUBE_MAP_ARRAY",
830        "UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY",
831        "IMAGE_CUBE_MAP_ARRAY",
832        "INT_IMAGE_CUBE_MAP_ARRAY",
833        "UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY",
834    ]),
835
836    # Shader params
837    ("ShaderParam", [ "SHADER_TYPE", "DELETE_STATUS", "COMPILE_STATUS", "INFO_LOG_LENGTH", "SHADER_SOURCE_LENGTH"]),
838
839    # Vertex attribute queries
840    ("VertexAttribParameterName", [
841        "VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",
842        "VERTEX_ATTRIB_ARRAY_ENABLED",
843        "VERTEX_ATTRIB_ARRAY_SIZE",
844        "VERTEX_ATTRIB_ARRAY_STRIDE",
845        "VERTEX_ATTRIB_ARRAY_TYPE",
846        "VERTEX_ATTRIB_ARRAY_NORMALIZED",
847        "VERTEX_ATTRIB_ARRAY_INTEGER",
848        "VERTEX_ATTRIB_ARRAY_DIVISOR",
849        "CURRENT_VERTEX_ATTRIB",
850        "VERTEX_ATTRIB_BINDING",
851        "VERTEX_ATTRIB_RELATIVE_OFFSET",
852        "VERTEX_ATTRIB_ARRAY_POINTER",
853    ]),
854
855    ("Boolean", ["FALSE", "TRUE"]),
856
857    # GetPName
858    ("GettableState", [
859        "ELEMENT_ARRAY_BUFFER_BINDING", "ARRAY_BUFFER_BINDING", "VERTEX_ARRAY_BINDING", "VIEWPORT", "DEPTH_RANGE",
860        "TRANSFORM_FEEDBACK_BINDING", "LINE_WIDTH", "CULL_FACE_MODE", "FRONT_FACE", "POLYGON_OFFSET_FACTOR",
861        "POLYGON_OFFSET_UNITS", "SAMPLE_COVERAGE_VALUE", "SAMPLE_COVERAGE_INVERT", "ACTIVE_TEXTURE", "TEXTURE_BINDING_1D",
862        "TEXTURE_BINDING_1D_ARRAY", "TEXTURE_BINDING_2D", "TEXTURE_BINDING_RECTANGLE", "TEXTURE_BINDING_3D", "TEXTURE_BINDING_2D_ARRAY",
863        "TEXTURE_BINDING_CUBE_MAP", "TEXTURE_BINDING_CUBE_MAP_ARRAY", "SAMPLER_BINDING", "SCISSOR_BOX", "STENCIL_FUNC", "STENCIL_VALUE_MASK",
864        "STENCIL_REF", "STENCIL_FAIL", "STENCIL_PASS_DEPTH_FAIL", "STENCIL_PASS_DEPTH_PASS", "STENCIL_BACK_FUNC",
865        "STENCIL_BACK_VALUE_MASK", "STENCIL_BACK_REF", "STENCIL_BACK_FAIL", "STENCIL_BACK_PASS_DEPTH_FAIL", "STENCIL_BACK_PASS_DEPTH_PASS",
866        "DEPTH_FUNC", "BLEND_SRC_RGB", "BLEND_SRC_ALPHA", "BLEND_DST_RGB", "BLEND_DST_ALPHA",
867        "BLEND_EQUATION_RGB", "BLEND_EQUATION_ALPHA", "BLEND_COLOR", "COLOR_WRITEMASK", "DEPTH_WRITEMASK",
868        "STENCIL_WRITEMASK", "STENCIL_BACK_WRITEMASK", "COLOR_CLEAR_VALUE", "DEPTH_CLEAR_VALUE", "STENCIL_CLEAR_VALUE",
869        "DRAW_FRAMEBUFFER_BINDING", "READ_FRAMEBUFFER_BINDING", "RENDERBUFFER_BINDING", "DRAW_BUFFER0", "DRAW_BUFFER1",
870        "DRAW_BUFFER2", "DRAW_BUFFER3", "DRAW_BUFFER4", "DRAW_BUFFER5", "DRAW_BUFFER6",
871        "DRAW_BUFFER7", "DRAW_BUFFER8", "DRAW_BUFFER9", "DRAW_BUFFER10", "DRAW_BUFFER11",
872        "DRAW_BUFFER12", "DRAW_BUFFER13", "DRAW_BUFFER14", "DRAW_BUFFER15", "READ_BUFFER", "DRAW_BUFFER",
873        "UNPACK_IMAGE_HEIGHT", "UNPACK_SKIP_IMAGES", "UNPACK_ROW_LENGTH", "UNPACK_SKIP_ROWS", "UNPACK_SKIP_PIXELS",
874        "UNPACK_ALIGNMENT", "PACK_ROW_LENGTH", "PACK_SKIP_ROWS", "PACK_SKIP_PIXELS", "PACK_ALIGNMENT",
875        "PIXEL_PACK_BUFFER_BINDING", "PIXEL_UNPACK_BUFFER_BINDING", "CURRENT_PROGRAM", "TRANSFORM_FEEDBACK_BUFFER_BINDING", "TRANSFORM_FEEDBACK_PAUSED",
876        "TRANSFORM_FEEDBACK_ACTIVE", "UNIFORM_BUFFER_BINDING", "GENERATE_MIPMAP_HINT", "FRAGMENT_SHADER_DERIVATIVE_HINT", "MAX_ELEMENT_INDEX",
877        "SUBPIXEL_BITS", "MAX_3D_TEXTURE_SIZE", "MAX_TEXTURE_SIZE", "MAX_ARRAY_TEXTURE_LAYERS", "MAX_TEXTURE_LOD_BIAS",
878        "MAX_CUBE_MAP_TEXTURE_SIZE", "MAX_RECTANGLE_TEXTURE_SIZE", "MAX_RENDERBUFFER_SIZE", "MAX_DRAW_BUFFERS", "MAX_DUAL_SOURCE_DRAW_BUFFERS", "MAX_COLOR_ATTACHMENTS", "MAX_VIEWPORT_DIMS",
879        "ALIASED_POINT_SIZE_RANGE", "ALIASED_LINE_WIDTH_RANGE", "MAX_ELEMENTS_INDICES", "MAX_ELEMENTS_VERTICES", "COMPRESSED_TEXTURE_FORMATS",
880        "NUM_COMPRESSED_TEXTURE_FORMATS", "PROGRAM_BINARY_FORMATS", "NUM_PROGRAM_BINARY_FORMATS", "SHADER_BINARY_FORMATS", "NUM_SHADER_BINARY_FORMATS",
881        "SHADER_COMPILER", "MAX_SERVER_WAIT_TIMEOUT", "NUM_EXTENSIONS", "MAJOR_VERSION", "MINOR_VERSION",
882        "MAX_VERTEX_ATTRIBS", "MAX_VERTEX_UNIFORM_COMPONENTS", "MAX_VERTEX_UNIFORM_VECTORS", "MAX_VERTEX_UNIFORM_BLOCKS", "MAX_VERTEX_OUTPUT_COMPONENTS",
883        "MAX_VERTEX_TEXTURE_IMAGE_UNITS", "MAX_FRAGMENT_UNIFORM_COMPONENTS", "MAX_FRAGMENT_UNIFORM_VECTORS", "MAX_FRAGMENT_UNIFORM_BLOCKS", "MAX_FRAGMENT_INPUT_COMPONENTS",
884        "MAX_TEXTURE_IMAGE_UNITS", "MIN_PROGRAM_TEXEL_OFFSET", "MAX_PROGRAM_TEXEL_OFFSET", "MAX_UNIFORM_BUFFER_BINDINGS", "MAX_UNIFORM_BLOCK_SIZE",
885        "UNIFORM_BUFFER_OFFSET_ALIGNMENT", "MAX_COMBINED_UNIFORM_BLOCKS", "MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS", "MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS", "MAX_VARYING_COMPONENTS",
886        "MAX_VARYING_VECTORS", "MAX_COMBINED_TEXTURE_IMAGE_UNITS",
887        "MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS", "MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS", "MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS", "INTERLEAVED_ATTRIBS", "SEPARATE_ATTRIBS",
888        "SAMPLE_BUFFERS", "SAMPLES", "MAX_SAMPLES", "DEPTH_BITS", "STENCIL_BITS",
889        "IMPLEMENTATION_COLOR_READ_TYPE", "IMPLEMENTATION_COLOR_READ_FORMAT", "COPY_READ_BUFFER_BINDING", "COPY_WRITE_BUFFER_BINDING", "RED_BITS",
890        "GREEN_BITS", "BLUE_BITS", "ALPHA_BITS", "MAX_COLOR_TEXTURE_SAMPLES", "TIMESTAMP",
891        "MAX_DEPTH_TEXTURE_SAMPLES", "MAX_INTEGER_SAMPLES", "TEXTURE_BINDING_2D_MULTISAMPLE", "TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY", "MAX_VERTEX_ATTRIB_STRIDE",
892        "MAX_VERTEX_ATTRIB_BINDINGS", "MAX_VERTEX_ATTRIB_RELATIVE_OFFSET", "MIN_SAMPLE_SHADING_VALUE", "FRAGMENT_INTERPOLATION_OFFSET_BITS", "MAX_FRAGMENT_INTERPOLATION_OFFSET",
893        "MIN_FRAGMENT_INTERPOLATION_OFFSET", "MAX_GEOMETRY_SHADER_INVOCATIONS", "LAYER_PROVOKING_VERTEX", "MAX_GEOMETRY_UNIFORM_COMPONENTS", "MAX_GEOMETRY_SHADER_STORAGE_BLOCKS",
894        "MAX_GEOMETRY_UNIFORM_BLOCKS", "MAX_GEOMETRY_INPUT_COMPONENTS", "MAX_GEOMETRY_OUTPUT_COMPONENTS", "MAX_GEOMETRY_IMAGE_UNIFORMS", "MAX_GEOMETRY_TEXTURE_IMAGE_UNITS",
895        "MAX_GEOMETRY_OUTPUT_VERTICES", "MAX_GEOMETRY_ATOMIC_COUNTERS", "MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS", "MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS", "MAX_FRAMEBUFFER_LAYERS",
896        "PROVOKING_VERTEX", "PRIMITIVE_RESTART_INDEX", "MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS", "MAX_FRAGMENT_ATOMIC_COUNTERS", "MAX_FRAGMENT_IMAGE_UNIFORMS",
897        "MAX_COMPUTE_UNIFORM_BLOCKS", "MAX_COMPUTE_TEXTURE_IMAGE_UNITS", "MAX_COMPUTE_UNIFORM_COMPONENTS", "MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS", "MAX_COMPUTE_ATOMIC_COUNTERS",
898        "MAX_COMPUTE_IMAGE_UNIFORMS", "MAX_COMPUTE_SHADER_STORAGE_BLOCKS", "MAX_FRAGMENT_SHADER_STORAGE_BLOCKS", "MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS", "MAX_VERTEX_ATOMIC_COUNTER_BUFFERS",
899        "MAX_VERTEX_ATOMIC_COUNTERS", "MAX_VERTEX_IMAGE_UNIFORMS", "MAX_VERTEX_SHADER_STORAGE_BLOCKS", "MAX_COMBINED_SHADER_OUTPUT_RESOURCES", "MAX_ATOMIC_COUNTER_BUFFER_BINDINGS",
900        "MAX_ATOMIC_COUNTER_BUFFER_SIZE", "MAX_IMAGE_UNITS", "MAX_COMBINED_ATOMIC_COUNTER_BUFFERS", "MAX_COMBINED_IMAGE_UNIFORMS", "MAX_SHADER_STORAGE_BUFFER_BINDINGS",
901        "MAX_SHADER_STORAGE_BLOCK_SIZE", "MAX_COMBINED_ATOMIC_COUNTERS", "MAX_COMBINED_SHADER_STORAGE_BLOCKS", "SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT", "PRIMITIVE_BOUNDING_BOX_EXT",
902        "DRAW_INDIRECT_BUFFER_BINDING", "MAX_SAMPLE_MASK_WORDS", "PROGRAM_PIPELINE_BINDING", "ATOMIC_COUNTER_BUFFER_BINDING", "SHADER_STORAGE_BUFFER_BINDING",
903        "DISPATCH_INDIRECT_BUFFER_BINDING", "MAX_FRAMEBUFFER_WIDTH", "MAX_FRAMEBUFFER_HEIGHT", "MAX_FRAMEBUFFER_SAMPLES", "MAX_COMPUTE_SHARED_MEMORY_SIZE",
904        "MIN_PROGRAM_TEXTURE_GATHER_OFFSET", "MAX_PROGRAM_TEXTURE_GATHER_OFFSET", "MAX_COMPUTE_WORK_GROUP_INVOCATIONS", "MAX_UNIFORM_LOCATIONS", "MAX_DEBUG_MESSAGE_LENGTH",
905        "MAX_DEBUG_LOGGED_MESSAGES", "MAX_DEBUG_GROUP_STACK_DEPTH", "MAX_LABEL_LENGTH", "CONTEXT_FLAGS", "DEBUG_LOGGED_MESSAGES",
906        "DEBUG_NEXT_LOGGED_MESSAGE_LENGTH", "DEBUG_GROUP_STACK_DEPTH", "MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS", "TEXTURE_BUFFER_OFFSET_ALIGNMENT", "TEXTURE_BUFFER_BINDING",
907        "TEXTURE_BINDING_BUFFER", "MAX_TEXTURE_BUFFER_SIZE", "MAX_PATCH_VERTICES", "MAX_TESS_GEN_LEVEL", "MAX_TESS_CONTROL_UNIFORM_COMPONENTS",
908        "MAX_TESS_EVALUATION_UNIFORM_COMPONENTS", "MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS", "MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS", "MAX_TESS_CONTROL_OUTPUT_COMPONENTS", "MAX_TESS_PATCH_COMPONENTS",
909        "MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS", "MAX_TESS_EVALUATION_OUTPUT_COMPONENTS", "MAX_TESS_CONTROL_UNIFORM_BLOCKS", "MAX_TESS_EVALUATION_UNIFORM_BLOCKS", "MAX_TESS_CONTROL_INPUT_COMPONENTS",
910        "MAX_TESS_EVALUATION_INPUT_COMPONENTS", "MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS", "MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS", "MAX_TESS_CONTROL_ATOMIC_COUNTERS", "MAX_TESS_EVALUATION_ATOMIC_COUNTERS",
911        "MAX_TESS_CONTROL_IMAGE_UNIFORMS", "MAX_TESS_EVALUATION_IMAGE_UNIFORMS", "MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS", "MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS","MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS",
912        "MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS", "PATCH_VERTICES", "PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED", "BUFFER_MAP_POINTER", "POINT_SIZE", "POINT_SIZE_RANGE", "POINT_SIZE_GRANULARITY",
913        "BLEND_DST", "BLEND_SRC", "LOGIC_OP_MODE", "COLOR_LOGIC_OP", "TEXTURE_LOD_BIAS", "QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION",
914        "MAX_SUBROUTINES", "MAX_SUBROUTINE_UNIFORM_LOCATIONS", "NUM_COMPATIBLE_SUBROUTINES", "COMPATIBLE_SUBROUTINES",
915        "PATCH_DEFAULT_INNER_LEVEL", "PATCH_DEFAULT_OUTER_LEVEL", "MAX_TRANSFORM_FEEDBACK_BUFFERS",
916    ]),
917
918    ("GettableIndexedState", [
919        "TRANSFORM_FEEDBACK_BUFFER_BINDING",
920        "UNIFORM_BUFFER_BINDING",
921        "TRANSFORM_FEEDBACK_BUFFER_START",
922        "TRANSFORM_FEEDBACK_BUFFER_SIZE",
923        "UNIFORM_BUFFER_START",
924        "UNIFORM_BUFFER_SIZE",
925        "SAMPLE_MASK_VALUE",
926        "VERTEX_BINDING_OFFSET",
927        "VERTEX_BINDING_STRIDE",
928        "VERTEX_BINDING_DIVISOR",
929        "VERTEX_BINDING_BUFFER",
930        "MAX_COMPUTE_WORK_GROUP_COUNT",
931        "MAX_COMPUTE_WORK_GROUP_SIZE",
932        "ATOMIC_COUNTER_BUFFER_BINDING",
933        "ATOMIC_COUNTER_BUFFER_START",
934        "ATOMIC_COUNTER_BUFFER_SIZE",
935        "SHADER_STORAGE_BUFFER_BINDING",
936        "SHADER_STORAGE_BUFFER_START",
937        "SHADER_STORAGE_BUFFER_SIZE",
938        "IMAGE_BINDING_NAME",
939        "IMAGE_BINDING_LEVEL",
940        "IMAGE_BINDING_LAYERED",
941        "IMAGE_BINDING_LAYER",
942        "IMAGE_BINDING_ACCESS",
943        "IMAGE_BINDING_FORMAT",
944        "BLEND_EQUATION_RGB",
945        "BLEND_EQUATION_ALPHA",
946        "BLEND_SRC_RGB",
947        "BLEND_SRC_ALPHA",
948        "BLEND_DST_RGB",
949        "BLEND_DST_ALPHA",
950        "COLOR_WRITEMASK",
951        "UNIFORM_BLOCK_BINDING",
952        "UNIFORM_BLOCK_DATA_SIZE",
953        "UNIFORM_BLOCK_NAME_LENGTH",
954        "UNIFORM_BLOCK_ACTIVE_UNIFORMS",
955        "UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES",
956        "UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER",
957        "UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER",
958        "UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER",
959        "UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER",
960        "UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER",
961        "UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER",
962        "OBJECT_TYPE",
963        "SYNC_STATUS",
964        "SYNC_CONDITION",
965        "SYNC_FLAGS",
966        "SYNC_FENCE",
967        "SYNC_GPU_COMMANDS_COMPLETE",
968        "SIGNALED",
969        "UNSIGNALED",
970        "PROGRAM_BINARY_LENGTH",
971        "CONTEXT_PROFILE_MASK",
972        "FRACTIONAL_EVEN",
973        "FRACTIONAL_ODD",
974    ]),
975
976    ("GettableString", [
977        "EXTENSIONS",
978        "RENDERER",
979        "SHADING_LANGUAGE_VERSION",
980        "VENDOR",
981        "VERSION"
982    ]),
983
984    ("GettablePackState", [
985        "PACK_SWAP_BYTES", "PACK_LSB_FIRST", "PACK_ROW_LENGTH", "PACK_IMAGE_HEIGHT", "PACK_SKIP_ROWS", "PACK_SKIP_PIXELS", "PACK_SKIP_IMAGES",
986        "PACK_ALIGNMENT", "UNPACK_SWAP_BYTES", "UNPACK_LSB_FIRST", "UNPACK_ROW_LENGTH", "UNPACK_IMAGE_HEIGHT", "UNPACK_SKIP_ROWS", "UNPACK_SKIP_PIXELS",
987        "UNPACK_SKIP_IMAGES", "UNPACK_ALIGNMENT",
988    ]),
989
990    ("PointerState", [
991        "DEBUG_CALLBACK_FUNCTION",
992        "DEBUG_CALLBACK_USER_PARAM",
993    ]),
994
995    ("InternalFormatParameter", ["NUM_SAMPLE_COUNTS", "SAMPLES"]),
996    ("InternalFormatTarget", [
997        "RENDERBUFFER",
998        "TEXTURE_2D_MULTISAMPLE",
999        "TEXTURE_2D_MULTISAMPLE_ARRAY",
1000        "TEXTURE_2D",
1001        "TEXTURE_3D",
1002        "TEXTURE_2D_ARRAY",
1003        "TEXTURE_CUBE_MAP",
1004    ]),
1005
1006    ("MultisampleParameter", ["SAMPLE_POSITION"]),
1007
1008    # Occlusion and timer queries
1009    ("QueryTarget", [
1010        "SAMPLES_PASSED",
1011        "ANY_SAMPLES_PASSED",
1012        "PRIMITIVES_GENERATED",
1013        "TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN",
1014        "TIME_ELAPSED",
1015        "ANY_SAMPLES_PASSED_CONSERVATIVE",
1016    ]),
1017
1018    ("QueryParam", ["CURRENT_QUERY", "QUERY_COUNTER_BITS"]),
1019    ("QueryObjectParam", [
1020        "QUERY_RESULT",
1021        "QUERY_RESULT_AVAILABLE",
1022        "MAX_VERTEX_STREAMS",
1023        ]),
1024
1025    ("ImageAccess", ["READ_ONLY", "WRITE_ONLY", "READ_WRITE"]),
1026
1027    ("ProgramInterface", [
1028        "UNIFORM",
1029        "UNIFORM_BLOCK",
1030        "ATOMIC_COUNTER_BUFFER",
1031        "PROGRAM_INPUT",
1032        "PROGRAM_OUTPUT",
1033        "TRANSFORM_FEEDBACK_VARYING",
1034        "BUFFER_VARIABLE",
1035        "SHADER_STORAGE_BLOCK",
1036    ]),
1037
1038    ("ProgramResourceProperty", [
1039        "ACTIVE_VARIABLES",
1040        "BUFFER_BINDING",
1041        "NUM_ACTIVE_VARIABLES",
1042        "ARRAY_SIZE",
1043        "ARRAY_STRIDE",
1044        "BLOCK_INDEX",
1045        "IS_ROW_MAJOR",
1046        "MATRIX_STRIDE",
1047        "ATOMIC_COUNTER_BUFFER_INDEX",
1048        "BUFFER_DATA_SIZE",
1049        "LOCATION",
1050        "NAME_LENGTH",
1051        "OFFSET",
1052        "REFERENCED_BY_VERTEX_SHADER",
1053        "REFERENCED_BY_FRAGMENT_SHADER",
1054        "REFERENCED_BY_COMPUTE_SHADER",
1055        "REFERENCED_BY_GEOMETRY_SHADER",
1056        "REFERENCED_BY_TESS_CONTROL_SHADER",
1057        "REFERENCED_BY_TESS_EVALUATION_SHADER",
1058        "TOP_LEVEL_ARRAY_SIZE",
1059        "TOP_LEVEL_ARRAY_STRIDE",
1060        "TYPE",
1061        "IS_PER_PATCH",
1062    ]),
1063
1064    ("PrecisionFormatType", ["LOW_FLOAT", "MEDIUM_FLOAT", "HIGH_FLOAT", "LOW_INT", "MEDIUM_INT", "HIGH_INT"]),
1065
1066    ("TransformFeedbackTarget", ["TRANSFORM_FEEDBACK"]),
1067
1068    ("ClampColorTarget", ["CLAMP_READ_COLOR", "FIXED_ONLY"]),
1069
1070    ("ProvokingVertex", ["FIRST_VERTEX_CONVENTION", "LAST_VERTEX_CONVENTION", "UNDEFINED_VERTEX"]),
1071
1072    ("DebugMessageSource", [
1073        "DEBUG_SOURCE_API",
1074        "DEBUG_SOURCE_WINDOW_SYSTEM",
1075        "DEBUG_SOURCE_SHADER_COMPILER",
1076        "DEBUG_SOURCE_THIRD_PARTY",
1077        "DEBUG_SOURCE_APPLICATION",
1078        "DEBUG_SOURCE_OTHER", "DONT_CARE"
1079    ]),
1080    ("DebugMessageType", [
1081        "DEBUG_TYPE_ERROR",
1082        "DEBUG_TYPE_DEPRECATED_BEHAVIOR",
1083        "DEBUG_TYPE_UNDEFINED_BEHAVIOR",
1084        "DEBUG_TYPE_PORTABILITY",
1085        "DEBUG_TYPE_PERFORMANCE",
1086        "DEBUG_TYPE_OTHER",
1087        "DEBUG_TYPE_MARKER",
1088        "DEBUG_TYPE_PUSH_GROUP",
1089        "DEBUG_TYPE_POP_GROUP",
1090        "DONT_CARE"
1091    ]),
1092    ("DebugMessageSeverity", [
1093        "DEBUG_SEVERITY_HIGH",
1094        "DEBUG_SEVERITY_MEDIUM",
1095        "DEBUG_SEVERITY_LOW",
1096        "DEBUG_SEVERITY_NOTIFICATION",
1097        "DONT_CARE"
1098    ]),
1099
1100    # Pipeline query
1101    ("PipelineParam", [
1102        "ACTIVE_PROGRAM",
1103        "INFO_LOG_LENGTH",
1104        "VALIDATE_STATUS",
1105        "VERTEX_SHADER",
1106        "FRAGMENT_SHADER",
1107        "COMPUTE_SHADER",
1108        "GEOMETRY_SHADER",
1109        "TESS_CONTROL_SHADER",
1110        "TESS_EVALUATION_SHADER",
1111    ]),
1112
1113    ("PatchParam", [
1114        "PATCH_VERTICES",
1115    ]),
1116
1117    ("TextureFormat", [
1118        # generated: UncompressedTextureFormat + CompressedTextureFormat
1119    ]),
1120
1121    # GraphicsResetStatus
1122    ("GraphicsResetStatus", [
1123        "NO_ERROR",
1124        "GUILTY_CONTEXT_RESET",
1125        "INNOCENT_CONTEXT_RESET",
1126        "UNKNOWN_CONTEXT_RESET",
1127    ]),
1128
1129    ("ClipDistanceParam", [
1130        "CLIP_DISTANCE0",
1131        "CLIP_DISTANCE1",
1132        "CLIP_DISTANCE2",
1133        "CLIP_DISTANCE3",
1134        "CLIP_DISTANCE4",
1135        "CLIP_DISTANCE5",
1136        "CLIP_DISTANCE6",
1137        "CLIP_DISTANCE7",
1138        "MAX_CLIP_DISTANCES",
1139        "MAX_CULL_DISTANCES",
1140        "MAX_COMBINED_CLIP_AND_CULL_DISTANCES",
1141    ]),
1142
1143    ("ConditionalRenderParam", [
1144        "QUERY_WAIT",
1145        "QUERY_NO_WAIT",
1146        "QUERY_BY_REGION_WAIT",
1147        "QUERY_BY_REGION_NO_WAIT",
1148        "QUERY_WAIT_INVERTED",
1149        "QUERY_NO_WAIT_INVERTED",
1150        "QUERY_BY_REGION_WAIT_INVERTED",
1151        "QUERY_BY_REGION_NO_WAIT_INVERTED",
1152    ]),
1153
1154    ("WaitEnum", [
1155        "ALREADY_SIGNALED",
1156        "TIMEOUT_EXPIRED",
1157        "CONDITION_SATISFIED",
1158        "WAIT_FAILED",
1159    ]),
1160
1161    ("LogicOpParams", [
1162        "CLEAR", "SET", "COPY", "COPY_INVERTED", "NOOP",
1163        "INVERT", "AND", "NAND", "OR", "NOR", "XOR", "EQUIV",
1164        "AND_REVERSE", "AND_INVERTED", "OR_REVERSE", "OR_INVERTED",
1165    ]),
1166
1167    ("PolygonMode", [
1168        "LINE", "POINT", "FILL",
1169    ]),
1170
1171    ("PrimSizeParam", [
1172        "ALIASED_POINT_SIZE_RANGE", "POINT_SIZE", "POINT_FADE_THRESHOLD_SIZE",
1173        "SMOOTH_POINT_SIZE_RANGE", "SMOOTH_POINT_SIZE_GRANULARITY", "POINT_SPRITE_COORD_ORIGIN",
1174        "SMOOTH_LINE_WIDTH_RANGE", "SMOOTH_LINE_WIDTH_GRANULARITY", "ALIASED_LINE_WIDTH_RANGE",
1175    ]),
1176
1177    ("ActiveTextureParam", [
1178        "TEXTURE0", "TEXTURE1",
1179        "TEXTURE2", "TEXTURE3",
1180        "TEXTURE4", "TEXTURE5",
1181        "TEXTURE6", "TEXTURE7",
1182        "TEXTURE8", "TEXTURE9",
1183        "TEXTURE10", "TEXTURE11",
1184        "TEXTURE12", "TEXTURE13",
1185        "TEXTURE14", "TEXTURE15",
1186        "TEXTURE16", "TEXTURE17",
1187        "TEXTURE18", "TEXTURE19",
1188        "TEXTURE20", "TEXTURE21",
1189        "TEXTURE22", "TEXTURE23",
1190        "TEXTURE24", "TEXTURE25",
1191        "TEXTURE26", "TEXTURE27",
1192        "TEXTURE28", "TEXTURE29",
1193        "TEXTURE30", "TEXTURE31",
1194    ]),
1195
1196    ("ClipControlParam", [
1197        "LOWER_LEFT",
1198        "UPPER_LEFT",
1199        "NEGATIVE_ONE_TO_ONE",
1200        "ZERO_TO_ONE",
1201    ]),
1202
1203    ("UniformSubroutinesParam", [
1204       "ACTIVE_SUBROUTINES",
1205       "ACTIVE_SUBROUTINE_UNIFORMS",
1206       "ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS",
1207       "ACTIVE_SUBROUTINE_MAX_LENGTH",
1208       "ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH",
1209    ]),
1210]
1211
1212def getEnumGroupByName (name):
1213    # \note: will raise an (index out of bounds) error if no such group
1214    return [x for x in ENUM_GROUPS if x[0]==name][0][1]
1215
1216# EnableCap EnumGroups are also GettableState EnumGroups
1217getEnumGroupByName("GettableState").extend(getEnumGroupByName("EnableCap"))
1218
1219# TextureFormat = UncompressedTextureFormat + CompressedTextureFormat
1220getEnumGroupByName("TextureFormat").extend(getEnumGroupByName("UncompressedTextureFormat") + getEnumGroupByName("CompressedTextureFormat"))
1221
1222def genStrUtil (iface):
1223    enumGroups = addValuePrefix(ENUM_GROUPS, "GL_")
1224    bitfieldGroups = addValuePrefix(BITFIELD_GROUPS, "GL_")
1225    prototypeFile = os.path.join(OPENGL_DIR, "gluStrUtilPrototypes.inl")
1226    implFile = os.path.join(OPENGL_DIR, "gluStrUtil.inl")
1227
1228    writeInlFile(prototypeFile, indentLines(genStrUtilProtos(iface, enumGroups, bitfieldGroups)))
1229    writeInlFile(implFile, genStrUtilImpls(iface, enumGroups, bitfieldGroups))
1230
1231if __name__ == "__main__":
1232    genStrUtil(getHybridInterface())
1233