xref: /aosp_15_r20/external/deqp/scripts/opengl/gen_str_util.py (revision 35238bce31c2a825756842865a792f8cf7f89930)
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
72# Enum mapping
73ENUM_GROUPS = [
74    # Common enums
75
76    # ErrorCode
77    ("Error", ["NO_ERROR", "INVALID_ENUM", "INVALID_VALUE", "INVALID_OPERATION", "OUT_OF_MEMORY",
78                             "INVALID_FRAMEBUFFER_OPERATION", "CONTEXT_LOST"]),
79    # PixelType, partially
80    ("Type", [
81        # GLES2 types
82        "BYTE",
83        "UNSIGNED_BYTE",
84        "SHORT",
85        "UNSIGNED_SHORT",
86        "INT",
87        "UNSIGNED_INT",
88        "FLOAT",
89        "FIXED",
90        "UNSIGNED_SHORT_5_6_5",
91        "UNSIGNED_SHORT_4_4_4_4",
92        "UNSIGNED_SHORT_5_5_5_1",
93
94        # GLES3 types
95        "HALF_FLOAT",
96        "INT_2_10_10_10_REV",
97        "UNSIGNED_INT_2_10_10_10_REV",
98        "UNSIGNED_INT_10F_11F_11F_REV",
99        "UNSIGNED_INT_5_9_9_9_REV",
100        "UNSIGNED_INT_24_8",
101        "FLOAT_32_UNSIGNED_INT_24_8_REV",
102        "SIGNED_NORMALIZED",
103        "UNSIGNED_NORMALIZED",
104
105        # Extension types
106        "HALF_FLOAT_OES",
107        ]),
108
109    # GetPName, also GettableState below
110    ("ParamQuery", [
111        # Generic
112        "LINE_WIDTH",
113        "ALIASED_POINT_SIZE_RANGE",
114        "ALIASED_LINE_WIDTH_RANGE",
115        "CULL_FACE_MODE",
116        "FRONT_FACE",
117        "DEPTH_RANGE",
118        "DEPTH_WRITEMASK",
119        "DEPTH_CLEAR_VALUE",
120        "DEPTH_FUNC",
121        "STENCIL_CLEAR_VALUE",
122        "STENCIL_FUNC",
123        "STENCIL_FAIL",
124        "STENCIL_PASS_DEPTH_FAIL",
125        "STENCIL_PASS_DEPTH_PASS",
126        "STENCIL_REF",
127        "STENCIL_VALUE_MASK",
128        "STENCIL_WRITEMASK",
129        "STENCIL_BACK_FUNC",
130        "STENCIL_BACK_FAIL",
131        "STENCIL_BACK_PASS_DEPTH_FAIL",
132        "STENCIL_BACK_PASS_DEPTH_PASS",
133        "STENCIL_BACK_REF",
134        "STENCIL_BACK_VALUE_MASK",
135        "STENCIL_BACK_WRITEMASK",
136        "VIEWPORT",
137        "SCISSOR_BOX",
138        "SCISSOR_TEST",
139        "COLOR_CLEAR_VALUE",
140        "COLOR_WRITEMASK",
141        "UNPACK_ALIGNMENT",
142        "PACK_ALIGNMENT",
143        "MAX_TEXTURE_SIZE",
144        "MAX_VIEWPORT_DIMS",
145        "SUBPIXEL_BITS",
146        "RED_BITS",
147        "GREEN_BITS",
148        "BLUE_BITS",
149        "ALPHA_BITS",
150        "DEPTH_BITS",
151        "STENCIL_BITS",
152        "POLYGON_OFFSET_UNITS",
153        "POLYGON_OFFSET_FILL",
154        "POLYGON_OFFSET_FACTOR",
155        "TEXTURE_BINDING_2D",
156        "SAMPLE_BUFFERS",
157        "SAMPLES",
158        "SAMPLE_COVERAGE_VALUE",
159        "SAMPLE_COVERAGE_INVERT",
160
161        "MAX_CUBE_MAP_TEXTURE_SIZE",
162        "MAX_RENDERBUFFER_SIZE",
163
164        # Program-related
165        "MAX_VERTEX_ATTRIBS",
166        "MAX_VERTEX_UNIFORM_VECTORS",
167        "MAX_VARYING_VECTORS",
168        "MAX_COMBINED_TEXTURE_IMAGE_UNITS",
169        "MAX_VERTEX_TEXTURE_IMAGE_UNITS",
170        "MAX_TEXTURE_IMAGE_UNITS",
171        "MAX_FRAGMENT_UNIFORM_VECTORS"
172        ]),
173
174    # *missing*
175    # Program query
176    ("ProgramParam", [
177        "ACTIVE_ATTRIBUTES",
178        "ACTIVE_ATTRIBUTE_MAX_LENGTH",
179        "ACTIVE_UNIFORMS",
180        "ACTIVE_UNIFORM_BLOCKS",
181        "ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH",
182        "ACTIVE_UNIFORM_MAX_LENGTH",
183        "ATTACHED_SHADERS",
184        "DELETE_STATUS",
185        "INFO_LOG_LENGTH",
186        "LINK_STATUS",
187        "PROGRAM_BINARY_RETRIEVABLE_HINT",
188        "TRANSFORM_FEEDBACK_BUFFER_MODE",
189        "TRANSFORM_FEEDBACK_VARYINGS",
190        "TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH",
191        "VALIDATE_STATUS",
192        "GEOMETRY_INPUT_TYPE",
193        "GEOMETRY_OUTPUT_TYPE",
194        "GEOMETRY_VERTICES_OUT",
195        "GEOMETRY_SHADER_INVOCATIONS",
196        "PROGRAM_SEPARABLE",
197        "COMPUTE_WORK_GROUP_SIZE",
198        "ACTIVE_ATOMIC_COUNTER_BUFFERS",
199        "TESS_CONTROL_OUTPUT_VERTICES",
200        "TESS_GEN_MODE",
201        "TESS_GEN_SPACING",
202        "TESS_GEN_VERTEX_ORDER",
203        "TESS_GEN_POINT_MODE",
204        ]),
205
206    # *missing*
207    # Uniform query
208    ("UniformParam", [
209        "UNIFORM_TYPE",
210        "UNIFORM_SIZE",
211        "UNIFORM_NAME_LENGTH",
212        "UNIFORM_BLOCK_INDEX",
213        "UNIFORM_OFFSET",
214        "UNIFORM_ARRAY_STRIDE",
215        "UNIFORM_MATRIX_STRIDE",
216        "UNIFORM_IS_ROW_MAJOR"
217        ]),
218
219    # *missing*
220    # Framebuffers
221    ("FramebufferAttachment", ["COLOR_ATTACHMENT0", "COLOR_ATTACHMENT1", "COLOR_ATTACHMENT2", "COLOR_ATTACHMENT3",
222                                         "COLOR_ATTACHMENT4", "COLOR_ATTACHMENT5", "COLOR_ATTACHMENT6", "COLOR_ATTACHMENT7",
223                                         "COLOR_ATTACHMENT8", "COLOR_ATTACHMENT9", "COLOR_ATTACHMENT10", "COLOR_ATTACHMENT11",
224                                         "COLOR_ATTACHMENT12", "COLOR_ATTACHMENT13", "COLOR_ATTACHMENT14", "COLOR_ATTACHMENT15",
225                                         "DEPTH_ATTACHMENT", "STENCIL_ATTACHMENT", "DEPTH_STENCIL_ATTACHMENT",
226                                         "BACK", "FRONT_LEFT", "FRONT_RIGHT", "BACK_LEFT", "BACK_RIGHT",
227                                         "DEPTH", "STENCIL"]),
228    # *missing*
229    ("FramebufferAttachmentParameter", ["FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE", "FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",
230                                         "FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL", "FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",
231                                         "FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER", "FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE",
232                                         "FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING", "FRAMEBUFFER_ATTACHMENT_RED_SIZE",
233                                         "FRAMEBUFFER_ATTACHMENT_GREEN_SIZE", "FRAMEBUFFER_ATTACHMENT_BLUE_SIZE",
234                                         "FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE", "FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE",
235                                         "FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE", "FRAMEBUFFER_ATTACHMENT_LAYERED"]),
236    ("FramebufferTarget", ["FRAMEBUFFER", "RENDERBUFFER", "DRAW_FRAMEBUFFER", "READ_FRAMEBUFFER"]),
237    ("FramebufferStatus", ["FRAMEBUFFER_COMPLETE", "FRAMEBUFFER_INCOMPLETE_ATTACHMENT", "FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",
238                                         "FRAMEBUFFER_INCOMPLETE_DIMENSIONS", "FRAMEBUFFER_UNSUPPORTED", "FRAMEBUFFER_INCOMPLETE_MULTISAMPLE",
239                                         "FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS"]),
240    ("FramebufferAttachmentType", ["NONE", "FRAMEBUFFER_DEFAULT", "TEXTURE", "RENDERBUFFER"]),
241    ("FramebufferColorEncoding", ["LINEAR", "SRGB"]),
242
243    ("FramebufferParameter", [
244        "FRAMEBUFFER_DEFAULT_WIDTH",
245        "FRAMEBUFFER_DEFAULT_HEIGHT",
246        "FRAMEBUFFER_DEFAULT_SAMPLES",
247        "FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS",
248        "FRAMEBUFFER_DEFAULT_LAYERS",
249        ]),
250
251    # Renderbuffers
252    ("RenderbufferParameter", ["RENDERBUFFER_WIDTH", "RENDERBUFFER_HEIGHT", "RENDERBUFFER_INTERNAL_FORMAT", "RENDERBUFFER_RED_SIZE",
253                                        "RENDERBUFFER_GREEN_SIZE", "RENDERBUFFER_BLUE_SIZE", "RENDERBUFFER_ALPHA_SIZE", "RENDERBUFFER_DEPTH_SIZE",
254                                        "RENDERBUFFER_STENCIL_SIZE", "RENDERBUFFER_SAMPLES"]),
255
256    # Primitives
257    ("PrimitiveType", ["POINTS", "LINES", "LINE_STRIP", "LINE_LOOP", "TRIANGLES", "TRIANGLE_STRIP", "TRIANGLE_FAN", "LINES_ADJACENCY", "LINE_STRIP_ADJACENCY", "TRIANGLES_ADJACENCY", "TRIANGLE_STRIP_ADJACENCY"]),
258
259    # Blending
260    ("BlendFactor", ["ZERO", "ONE", "SRC_ALPHA_SATURATE",
261                             "SRC_COLOR", "ONE_MINUS_SRC_COLOR", "SRC_ALPHA", "ONE_MINUS_SRC_ALPHA",
262                             "SRC1_COLOR", "ONE_MINUS_SRC1_COLOR", "SRC1_ALPHA", "ONE_MINUS_SRC1_ALPHA",
263                             "DST_COLOR", "ONE_MINUS_DST_COLOR", "DST_ALPHA", "ONE_MINUS_DST_ALPHA",
264                             "CONSTANT_COLOR", "ONE_MINUS_CONSTANT_COLOR", "CONSTANT_ALPHA", "ONE_MINUS_CONSTANT_ALPHA"]),
265    ("BlendEquation", [
266        "FUNC_ADD",
267        "FUNC_SUBTRACT",
268        "FUNC_REVERSE_SUBTRACT",
269        "MIN",
270        "MAX",
271        "MULTIPLY_KHR",
272        "SCREEN_KHR",
273        "OVERLAY_KHR",
274        "DARKEN_KHR",
275        "LIGHTEN_KHR",
276        "COLORDODGE_KHR",
277        "COLORBURN_KHR",
278        "HARDLIGHT_KHR",
279        "SOFTLIGHT_KHR",
280        "DIFFERENCE_KHR",
281        "EXCLUSION_KHR",
282        "HSL_HUE_KHR",
283        "HSL_SATURATION_KHR",
284        "HSL_COLOR_KHR",
285        "HSL_LUMINOSITY_KHR",
286        ]),
287
288    # Buffer Objects
289    ("BufferTarget", [
290        "ARRAY_BUFFER",
291        "ELEMENT_ARRAY_BUFFER",
292        "COPY_READ_BUFFER",
293        "COPY_WRITE_BUFFER",
294        "PIXEL_PACK_BUFFER",
295        "PIXEL_UNPACK_BUFFER",
296        "TRANSFORM_FEEDBACK_BUFFER",
297        "UNIFORM_BUFFER",
298        "DRAW_INDIRECT_BUFFER",
299        "SHADER_STORAGE_BUFFER",
300        "TEXTURE_BUFFER",
301        "DISPATCH_INDIRECT_BUFFER",
302        "ATOMIC_COUNTER_BUFFER",
303        ]),
304    ("BufferBinding", ["ARRAY_BUFFER_BINDING", "ELEMENT_ARRAY_BUFFER_BINDING"]),
305    ("Usage", [
306        "STREAM_DRAW",
307        "STREAM_READ",
308        "STREAM_COPY",
309        "STATIC_DRAW",
310        "STATIC_READ",
311        "STATIC_COPY",
312        "DYNAMIC_DRAW",
313        "DYNAMIC_READ",
314        "DYNAMIC_COPY"]),
315    ("BufferQuery", ["BUFFER_SIZE", "BUFFER_USAGE", "BUFFER_ACCESS_FLAGS", "BUFFER_MAPPED", "BUFFER_MAP_OFFSET", "BUFFER_MAP_LENGTH"]),
316
317    # Culling
318    ("Face", ["FRONT", "BACK", "FRONT_AND_BACK"]),
319
320    # Comparison function
321    ("CompareFunc", ["NEVER", "LESS", "LEQUAL", "GREATER", "EQUAL", "NOTEQUAL", "GEQUAL", "ALWAYS"]),
322
323    # Enable-disable bit
324    ("EnableCap", ["TEXTURE_2D", "CULL_FACE", "BLEND", "DITHER", "STENCIL_TEST", "DEPTH_TEST", "SCISSOR_TEST",
325                             "POLYGON_OFFSET_FILL", "SAMPLE_ALPHA_TO_COVERAGE", "SAMPLE_COVERAGE",
326                             "PRIMITIVE_RESTART_FIXED_INDEX", "RASTERIZER_DISCARD",
327                             "FRAMEBUFFER_SRGB", "SAMPLE_SHADING", "DEPTH_CLAMP",
328                             "PRIMITIVE_RESTART", "SAMPLE_MASK", "DEBUG_OUTPUT", "DEBUG_OUTPUT_SYNCHRONOUS",
329                             "BLEND_ADVANCED_COHERENT_KHR"]),
330
331    # Indexed enable-disable bit
332    ("IndexedEnableCap", ["BLEND"]),
333
334    # Polygon winding
335    ("Winding", ["CW", "CCW"]),
336
337    # Hints
338    ("HintMode", ["DONT_CARE", "FASTEST", "NICEST"]),
339    ("Hint", ["GENERATE_MIPMAP_HINT"]),
340
341    # Stencil ops
342    ("StencilOp", ["ZERO", "KEEP", "REPLACE", "INCR", "DECR", "INVERT", "INCR_WRAP", "DECR_WRAP"]),
343
344    # Shader type
345    ("ShaderType", [
346        "VERTEX_SHADER",
347        "FRAGMENT_SHADER",
348        "COMPUTE_SHADER",
349        "TESS_CONTROL_SHADER",
350        "TESS_EVALUATION_SHADER",
351        "GEOMETRY_SHADER",
352        ]),
353
354    # Buffers
355    ("Buffer", ["COLOR", "DEPTH", "STENCIL", "DEPTH_STENCIL"]),
356
357    # Invalidate buffer target
358    ("InvalidateAttachment",["COLOR", "DEPTH", "STENCIL",
359                             "COLOR_ATTACHMENT0",
360                             "COLOR_ATTACHMENT1",
361                             "COLOR_ATTACHMENT2",
362                             "COLOR_ATTACHMENT3",
363                             "COLOR_ATTACHMENT4",
364                             "COLOR_ATTACHMENT5",
365                             "COLOR_ATTACHMENT6",
366                             "COLOR_ATTACHMENT7",
367                             "DEPTH_ATTACHMENT",
368                             "STENCIL_ATTACHMENT",
369                             "DEPTH_STENCIL_ATTACHMENT"]),
370
371    # Draw/ReadBuffer attachment
372    ("DrawReadBuffer", ["COLOR", "DEPTH", "STENCIL", "BACK", "NONE",
373                             "COLOR_ATTACHMENT0",
374                             "COLOR_ATTACHMENT1",
375                             "COLOR_ATTACHMENT2",
376                             "COLOR_ATTACHMENT3",
377                             "COLOR_ATTACHMENT4",
378                             "COLOR_ATTACHMENT5",
379                             "COLOR_ATTACHMENT6",
380                             "COLOR_ATTACHMENT7",
381                             "DEPTH_ATTACHMENT",
382                             "STENCIL_ATTACHMENT",
383                             "DEPTH_STENCIL_ATTACHMENT"]),
384
385    # Textures
386    ("TextureTarget", ["TEXTURE_1D",
387                             "TEXTURE_2D", "TEXTURE_CUBE_MAP",
388                             "TEXTURE_CUBE_MAP_POSITIVE_X", "TEXTURE_CUBE_MAP_NEGATIVE_X",
389                             "TEXTURE_CUBE_MAP_POSITIVE_Y", "TEXTURE_CUBE_MAP_NEGATIVE_Y",
390                             "TEXTURE_CUBE_MAP_POSITIVE_Z", "TEXTURE_CUBE_MAP_NEGATIVE_Z",
391                             "TEXTURE_3D", "TEXTURE_2D_ARRAY", "TEXTURE_2D_MULTISAMPLE",
392                             "TEXTURE_2D_MULTISAMPLE_ARRAY",
393                             "TEXTURE_BUFFER",
394                             "TEXTURE_CUBE_MAP_ARRAY"]),
395    ("TextureParameter", [
396        "TEXTURE_WRAP_S",
397        "TEXTURE_WRAP_T",
398        "TEXTURE_WRAP_R",
399        "TEXTURE_BASE_LEVEL",
400        "TEXTURE_MAX_LEVEL",
401        "TEXTURE_COMPARE_MODE",
402        "TEXTURE_COMPARE_FUNC",
403        "TEXTURE_MAX_LOD",
404        "TEXTURE_MIN_LOD",
405        "TEXTURE_SWIZZLE_R",
406        "TEXTURE_SWIZZLE_G",
407        "TEXTURE_SWIZZLE_B",
408        "TEXTURE_SWIZZLE_A",
409        "TEXTURE_MIN_FILTER",
410        "TEXTURE_MAG_FILTER",
411        "DEPTH_STENCIL_TEXTURE_MODE",
412        "TEXTURE_SRGB_DECODE_EXT",
413        "TEXTURE_BORDER_COLOR",
414
415        # Gettable only
416        "TEXTURE_IMMUTABLE_LEVELS",
417        "TEXTURE_IMMUTABLE_FORMAT",
418        ]),
419    ("TextureLevelParameter", [
420        "TEXTURE_SAMPLES",
421        "TEXTURE_FIXED_SAMPLE_LOCATIONS",
422        "TEXTURE_WIDTH",
423        "TEXTURE_HEIGHT",
424        "TEXTURE_DEPTH",
425        "TEXTURE_INTERNAL_FORMAT",
426        "TEXTURE_RED_SIZE",
427        "TEXTURE_GREEN_SIZE",
428        "TEXTURE_BLUE_SIZE",
429        "TEXTURE_ALPHA_SIZE",
430        "TEXTURE_DEPTH_SIZE",
431        "TEXTURE_STENCIL_SIZE",
432        "TEXTURE_SHARED_SIZE",
433        "TEXTURE_RED_TYPE",
434        "TEXTURE_GREEN_TYPE",
435        "TEXTURE_BLUE_TYPE",
436        "TEXTURE_ALPHA_TYPE",
437        "TEXTURE_DEPTH_TYPE",
438        "TEXTURE_COMPRESSED",
439        "TEXTURE_BUFFER_DATA_STORE_BINDING",
440        "TEXTURE_BUFFER_OFFSET",
441        "TEXTURE_BUFFER_SIZE",
442        ]),
443    ("RepeatMode", ["REPEAT", "CLAMP_TO_EDGE", "MIRRORED_REPEAT", "CLAMP_TO_BORDER"]),
444    ("TextureFilter", ["NEAREST", "LINEAR", "NEAREST_MIPMAP_NEAREST", "LINEAR_MIPMAP_NEAREST",
445                             "NEAREST_MIPMAP_LINEAR", "LINEAR_MIPMAP_LINEAR"]),
446    ("TextureWrapMode", ["REPEAT", "CLAMP_TO_EDGE", "MIRRORED_REPEAT"]),
447    ("TextureSwizzle", ["RED", "GREEN", "BLUE", "ALPHA", "ZERO", "ONE"]),
448    ("TextureCompareMode", ["NONE", "COMPARE_REF_TO_TEXTURE"]),
449    ("CubeMapFace", ["TEXTURE_CUBE_MAP_POSITIVE_X", "TEXTURE_CUBE_MAP_NEGATIVE_X",
450                             "TEXTURE_CUBE_MAP_POSITIVE_Y", "TEXTURE_CUBE_MAP_NEGATIVE_Y",
451                             "TEXTURE_CUBE_MAP_POSITIVE_Z", "TEXTURE_CUBE_MAP_NEGATIVE_Z"]),
452    ("TextureDepthStencilMode", ["DEPTH_COMPONENT", "STENCIL_INDEX"]),
453    ("PixelStoreParameter", [
454        "UNPACK_ALIGNMENT",
455        "UNPACK_IMAGE_HEIGHT",
456        "UNPACK_ROW_LENGTH",
457        "UNPACK_SKIP_IMAGES",
458        "UNPACK_SKIP_ROWS",
459        "UNPACK_SKIP_PIXELS",
460        "PACK_ROW_LENGTH",
461        "PACK_SKIP_ROWS",
462        "PACK_SKIP_PIXELS"]),
463    ("UncompressedTextureFormat", [
464        # GLES2 unsized formats
465        "LUMINANCE",
466        "LUMINANCE_ALPHA",
467        "ALPHA",
468        "RGB",
469        "RGBA",
470
471        # GLES2 sized formats
472        "RGBA4",
473        "RGB5_A1",
474        "RGB565",
475        "DEPTH_COMPONENT16",
476        "STENCIL_INDEX8",
477
478        # GLES3 unsized formats
479        "RG",
480        "RED",
481        "RGBA_INTEGER",
482        "RGB_INTEGER",
483        "RG_INTEGER",
484        "RED_INTEGER",
485        "DEPTH_COMPONENT",
486        "DEPTH_STENCIL",
487
488        # GLES3 sized formats
489        "RGBA32F",
490        "RGBA32I",
491        "RGBA32UI",
492        "RGBA16",
493        "RGBA16_SNORM",
494        "RGBA16F",
495        "RGBA16I",
496        "RGBA16UI",
497        "RGBA8",
498        "RGBA8I",
499        "RGBA8UI",
500        "SRGB8_ALPHA8",
501        "RGB10_A2",
502        "RGB10_A2UI",
503        "RGBA8_SNORM",
504        "RGB8",
505        "R11F_G11F_B10F",
506        "RGB32F",
507        "RGB32I",
508        "RGB32UI",
509        "RGB16",
510        "RGB16_SNORM",
511        "RGB16F",
512        "RGB16I",
513        "RGB16UI",
514        "RGB8_SNORM",
515        "RGB8I",
516        "RGB8UI",
517        "SRGB8",
518        "RGB9_E5",
519        "RG32F",
520        "RG32I",
521        "RG32UI",
522        "RG16",
523        "RG16_SNORM",
524        "RG16F",
525        "RG16I",
526        "RG16UI",
527        "RG8",
528        "RG8I",
529        "RG8UI",
530        "RG8_SNORM",
531        "R32F",
532        "R32I",
533        "R32UI",
534        "R16",
535        "R16_SNORM",
536        "R16F",
537        "R16I",
538        "R16UI",
539        "R8",
540        "R8I",
541        "R8UI",
542        "R8_SNORM",
543        "DEPTH_COMPONENT32F",
544        "DEPTH_COMPONENT24",
545        "DEPTH32F_STENCIL8",
546        "DEPTH24_STENCIL8",
547
548        # OES_required_internalformat
549        "RGB10",
550
551        # OES_depth32
552        "DEPTH_COMPONENT32",
553
554        # EXT_sRGB
555        "SRGB",
556        "SRGB_ALPHA",
557
558        # GL_EXT_texture_sRGB_R8 & RG8
559        "SR8_EXT",
560        "SRG8_EXT",
561
562        # GL_EXT_read_format_bgra
563        "BGRA",
564        ]),
565
566    ("CompressedTextureFormat", [
567        # ETC2/EAC formats
568        "COMPRESSED_R11_EAC",
569        "COMPRESSED_SIGNED_R11_EAC",
570        "COMPRESSED_RG11_EAC",
571        "COMPRESSED_SIGNED_RG11_EAC",
572        "COMPRESSED_RGB8_ETC2",
573        "COMPRESSED_SRGB8_ETC2",
574        "COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",
575        "COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",
576        "COMPRESSED_RGBA8_ETC2_EAC",
577        "COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",
578
579        # ASTC formats
580        "COMPRESSED_RGBA_ASTC_4x4_KHR",
581        "COMPRESSED_RGBA_ASTC_5x4_KHR",
582        "COMPRESSED_RGBA_ASTC_5x5_KHR",
583        "COMPRESSED_RGBA_ASTC_6x5_KHR",
584        "COMPRESSED_RGBA_ASTC_6x6_KHR",
585        "COMPRESSED_RGBA_ASTC_8x5_KHR",
586        "COMPRESSED_RGBA_ASTC_8x6_KHR",
587        "COMPRESSED_RGBA_ASTC_8x8_KHR",
588        "COMPRESSED_RGBA_ASTC_10x5_KHR",
589        "COMPRESSED_RGBA_ASTC_10x6_KHR",
590        "COMPRESSED_RGBA_ASTC_10x8_KHR",
591        "COMPRESSED_RGBA_ASTC_10x10_KHR",
592        "COMPRESSED_RGBA_ASTC_12x10_KHR",
593        "COMPRESSED_RGBA_ASTC_12x12_KHR",
594        "COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR",
595        "COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR",
596        "COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR",
597        "COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR",
598        "COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR",
599        "COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR",
600        "COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR",
601        "COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR",
602        "COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR",
603        "COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR",
604        "COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR",
605        "COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR",
606        "COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR",
607        "COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR",
608
609        # EXT_texture_compression_s3tc
610        "COMPRESSED_RGB_S3TC_DXT1_EXT",
611        "COMPRESSED_RGBA_S3TC_DXT1_EXT",
612        "COMPRESSED_RGBA_S3TC_DXT3_EXT",
613        "COMPRESSED_RGBA_S3TC_DXT5_EXT",
614
615        # IMG_texture_compression_pvrtc
616        "COMPRESSED_RGB_PVRTC_4BPPV1_IMG",
617        "COMPRESSED_RGB_PVRTC_2BPPV1_IMG",
618        "COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",
619        "COMPRESSED_RGBA_PVRTC_2BPPV1_IMG",
620        ]),
621
622    # Shader var type
623    ("ShaderVarType", [
624        "FLOAT",
625        "FLOAT_VEC2",
626        "FLOAT_VEC3",
627        "FLOAT_VEC4",
628        "INT",
629        "INT_VEC2",
630        "INT_VEC3",
631        "INT_VEC4",
632        "UNSIGNED_INT",
633        "UNSIGNED_INT_VEC2",
634        "UNSIGNED_INT_VEC3",
635        "UNSIGNED_INT_VEC4",
636        "BOOL",
637        "BOOL_VEC2",
638        "BOOL_VEC3",
639        "BOOL_VEC4",
640        "FLOAT_MAT2",
641        "FLOAT_MAT3",
642        "FLOAT_MAT4",
643        "FLOAT_MAT2x3",
644        "FLOAT_MAT2x4",
645        "FLOAT_MAT3x2",
646        "FLOAT_MAT3x4",
647        "FLOAT_MAT4x2",
648        "FLOAT_MAT4x3",
649        "SAMPLER_2D",
650        "SAMPLER_3D",
651        "SAMPLER_CUBE",
652        "SAMPLER_2D_SHADOW",
653        "SAMPLER_2D_ARRAY",
654        "SAMPLER_2D_ARRAY_SHADOW",
655        "SAMPLER_CUBE_SHADOW",
656        "INT_SAMPLER_2D",
657        "INT_SAMPLER_3D",
658        "INT_SAMPLER_CUBE",
659        "INT_SAMPLER_2D_ARRAY",
660        "UNSIGNED_INT_SAMPLER_2D",
661        "UNSIGNED_INT_SAMPLER_3D",
662        "UNSIGNED_INT_SAMPLER_CUBE",
663        "UNSIGNED_INT_SAMPLER_2D_ARRAY",
664        "SAMPLER_2D_MULTISAMPLE",
665        "INT_SAMPLER_2D_MULTISAMPLE",
666        "UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE",
667        "IMAGE_2D",
668        "IMAGE_3D",
669        "IMAGE_CUBE",
670        "IMAGE_2D_ARRAY",
671        "INT_IMAGE_2D",
672        "INT_IMAGE_3D",
673        "INT_IMAGE_CUBE",
674        "INT_IMAGE_2D_ARRAY",
675        "UNSIGNED_INT_IMAGE_2D",
676        "UNSIGNED_INT_IMAGE_3D",
677        "UNSIGNED_INT_IMAGE_CUBE",
678        "UNSIGNED_INT_IMAGE_2D_ARRAY",
679        "UNSIGNED_INT_ATOMIC_COUNTER",
680        "SAMPLER_2D_MULTISAMPLE_ARRAY",
681        "INT_SAMPLER_2D_MULTISAMPLE_ARRAY",
682        "UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY",
683        "SAMPLER_BUFFER",
684        "INT_SAMPLER_BUFFER",
685        "UNSIGNED_INT_SAMPLER_BUFFER",
686        "IMAGE_BUFFER",
687        "INT_IMAGE_BUFFER",
688        "UNSIGNED_INT_IMAGE_BUFFER",
689        "SAMPLER_CUBE_MAP_ARRAY",
690        "SAMPLER_CUBE_MAP_ARRAY_SHADOW",
691        "INT_SAMPLER_CUBE_MAP_ARRAY",
692        "UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY",
693        "IMAGE_CUBE_MAP_ARRAY",
694        "INT_IMAGE_CUBE_MAP_ARRAY",
695        "UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY",
696    ]),
697
698    # Shader params
699    ("ShaderParam", [ "SHADER_TYPE", "DELETE_STATUS", "COMPILE_STATUS", "INFO_LOG_LENGTH", "SHADER_SOURCE_LENGTH"]),
700
701    # Vertex attribute queries
702    ("VertexAttribParameterName", [
703        "VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",
704        "VERTEX_ATTRIB_ARRAY_ENABLED",
705        "VERTEX_ATTRIB_ARRAY_SIZE",
706        "VERTEX_ATTRIB_ARRAY_STRIDE",
707        "VERTEX_ATTRIB_ARRAY_TYPE",
708        "VERTEX_ATTRIB_ARRAY_NORMALIZED",
709        "VERTEX_ATTRIB_ARRAY_INTEGER",
710        "VERTEX_ATTRIB_ARRAY_DIVISOR",
711        "CURRENT_VERTEX_ATTRIB",
712        "VERTEX_ATTRIB_BINDING",
713        "VERTEX_ATTRIB_RELATIVE_OFFSET",
714    ]),
715
716    ("Boolean", ["FALSE", "TRUE"]),
717
718    # GetPName
719    ("GettableState", [
720        "ELEMENT_ARRAY_BUFFER_BINDING", "ARRAY_BUFFER_BINDING", "VERTEX_ARRAY_BINDING", "VIEWPORT", "DEPTH_RANGE",
721        "TRANSFORM_FEEDBACK_BINDING", "LINE_WIDTH", "CULL_FACE_MODE", "FRONT_FACE", "POLYGON_OFFSET_FACTOR",
722        "POLYGON_OFFSET_UNITS", "SAMPLE_COVERAGE_VALUE", "SAMPLE_COVERAGE_INVERT", "ACTIVE_TEXTURE", "TEXTURE_BINDING_1D",
723        "TEXTURE_BINDING_2D", "TEXTURE_BINDING_3D", "TEXTURE_BINDING_2D_ARRAY",
724        "TEXTURE_BINDING_CUBE_MAP", "SAMPLER_BINDING", "SCISSOR_BOX", "STENCIL_FUNC", "STENCIL_VALUE_MASK",
725        "STENCIL_REF", "STENCIL_FAIL", "STENCIL_PASS_DEPTH_FAIL", "STENCIL_PASS_DEPTH_PASS", "STENCIL_BACK_FUNC",
726        "STENCIL_BACK_VALUE_MASK", "STENCIL_BACK_REF", "STENCIL_BACK_FAIL", "STENCIL_BACK_PASS_DEPTH_FAIL", "STENCIL_BACK_PASS_DEPTH_PASS",
727        "DEPTH_FUNC", "BLEND_SRC_RGB", "BLEND_SRC_ALPHA", "BLEND_DST_RGB", "BLEND_DST_ALPHA",
728        "BLEND_EQUATION_RGB", "BLEND_EQUATION_ALPHA", "BLEND_COLOR", "COLOR_WRITEMASK", "DEPTH_WRITEMASK",
729        "STENCIL_WRITEMASK", "STENCIL_BACK_WRITEMASK", "COLOR_CLEAR_VALUE", "DEPTH_CLEAR_VALUE", "STENCIL_CLEAR_VALUE",
730        "DRAW_FRAMEBUFFER_BINDING", "READ_FRAMEBUFFER_BINDING", "RENDERBUFFER_BINDING", "DRAW_BUFFER0", "DRAW_BUFFER1",
731        "DRAW_BUFFER2", "DRAW_BUFFER3", "DRAW_BUFFER4", "DRAW_BUFFER5", "DRAW_BUFFER6",
732        "DRAW_BUFFER7", "DRAW_BUFFER8", "DRAW_BUFFER9", "DRAW_BUFFER10", "DRAW_BUFFER11",
733        "DRAW_BUFFER12", "DRAW_BUFFER13", "DRAW_BUFFER14", "DRAW_BUFFER15", "READ_BUFFER",
734        "UNPACK_IMAGE_HEIGHT", "UNPACK_SKIP_IMAGES", "UNPACK_ROW_LENGTH", "UNPACK_SKIP_ROWS", "UNPACK_SKIP_PIXELS",
735        "UNPACK_ALIGNMENT", "PACK_ROW_LENGTH", "PACK_SKIP_ROWS", "PACK_SKIP_PIXELS", "PACK_ALIGNMENT",
736        "PIXEL_PACK_BUFFER_BINDING", "PIXEL_UNPACK_BUFFER_BINDING", "CURRENT_PROGRAM", "TRANSFORM_FEEDBACK_BUFFER_BINDING", "TRANSFORM_FEEDBACK_PAUSED",
737        "TRANSFORM_FEEDBACK_ACTIVE", "UNIFORM_BUFFER_BINDING", "GENERATE_MIPMAP_HINT", "FRAGMENT_SHADER_DERIVATIVE_HINT", "MAX_ELEMENT_INDEX",
738        "SUBPIXEL_BITS", "MAX_3D_TEXTURE_SIZE", "MAX_TEXTURE_SIZE", "MAX_ARRAY_TEXTURE_LAYERS", "MAX_TEXTURE_LOD_BIAS",
739        "MAX_CUBE_MAP_TEXTURE_SIZE", "MAX_RENDERBUFFER_SIZE", "MAX_DRAW_BUFFERS", "MAX_COLOR_ATTACHMENTS", "MAX_VIEWPORT_DIMS",
740        "ALIASED_POINT_SIZE_RANGE", "ALIASED_LINE_WIDTH_RANGE", "MAX_ELEMENTS_INDICES", "MAX_ELEMENTS_VERTICES", "COMPRESSED_TEXTURE_FORMATS",
741        "NUM_COMPRESSED_TEXTURE_FORMATS", "PROGRAM_BINARY_FORMATS", "NUM_PROGRAM_BINARY_FORMATS", "SHADER_BINARY_FORMATS", "NUM_SHADER_BINARY_FORMATS",
742        "SHADER_COMPILER", "MAX_SERVER_WAIT_TIMEOUT", "NUM_EXTENSIONS", "MAJOR_VERSION", "MINOR_VERSION",
743        "MAX_VERTEX_ATTRIBS", "MAX_VERTEX_UNIFORM_COMPONENTS", "MAX_VERTEX_UNIFORM_VECTORS", "MAX_VERTEX_UNIFORM_BLOCKS", "MAX_VERTEX_OUTPUT_COMPONENTS",
744        "MAX_VERTEX_TEXTURE_IMAGE_UNITS", "MAX_FRAGMENT_UNIFORM_COMPONENTS", "MAX_FRAGMENT_UNIFORM_VECTORS", "MAX_FRAGMENT_UNIFORM_BLOCKS", "MAX_FRAGMENT_INPUT_COMPONENTS",
745        "MAX_TEXTURE_IMAGE_UNITS", "MIN_PROGRAM_TEXEL_OFFSET", "MAX_PROGRAM_TEXEL_OFFSET", "MAX_UNIFORM_BUFFER_BINDINGS", "MAX_UNIFORM_BLOCK_SIZE",
746        "UNIFORM_BUFFER_OFFSET_ALIGNMENT", "MAX_COMBINED_UNIFORM_BLOCKS", "MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS", "MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS", "MAX_VARYING_COMPONENTS",
747        "MAX_VARYING_VECTORS", "MAX_COMBINED_TEXTURE_IMAGE_UNITS", "MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS", "MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS", "MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS",
748        "SAMPLE_BUFFERS", "SAMPLES", "MAX_SAMPLES", "DEPTH_BITS", "STENCIL_BITS",
749        "IMPLEMENTATION_COLOR_READ_TYPE", "IMPLEMENTATION_COLOR_READ_FORMAT", "COPY_READ_BUFFER_BINDING", "COPY_WRITE_BUFFER_BINDING", "RED_BITS",
750        "GREEN_BITS", "BLUE_BITS", "ALPHA_BITS", "MAX_COLOR_TEXTURE_SAMPLES", "TIMESTAMP",
751        "MAX_DEPTH_TEXTURE_SAMPLES", "MAX_INTEGER_SAMPLES", "TEXTURE_BINDING_2D_MULTISAMPLE", "TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY", "MAX_VERTEX_ATTRIB_STRIDE",
752        "MAX_VERTEX_ATTRIB_BINDINGS", "MAX_VERTEX_ATTRIB_RELATIVE_OFFSET", "MIN_SAMPLE_SHADING_VALUE", "FRAGMENT_INTERPOLATION_OFFSET_BITS", "MAX_FRAGMENT_INTERPOLATION_OFFSET",
753        "MIN_FRAGMENT_INTERPOLATION_OFFSET", "MAX_GEOMETRY_SHADER_INVOCATIONS", "LAYER_PROVOKING_VERTEX", "MAX_GEOMETRY_UNIFORM_COMPONENTS", "MAX_GEOMETRY_SHADER_STORAGE_BLOCKS",
754        "MAX_GEOMETRY_UNIFORM_BLOCKS", "MAX_GEOMETRY_INPUT_COMPONENTS", "MAX_GEOMETRY_OUTPUT_COMPONENTS", "MAX_GEOMETRY_IMAGE_UNIFORMS", "MAX_GEOMETRY_TEXTURE_IMAGE_UNITS",
755        "MAX_GEOMETRY_OUTPUT_VERTICES", "MAX_GEOMETRY_ATOMIC_COUNTERS", "MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS", "MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS", "MAX_FRAMEBUFFER_LAYERS",
756        "PROVOKING_VERTEX", "PRIMITIVE_RESTART_INDEX", "MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS", "MAX_FRAGMENT_ATOMIC_COUNTERS", "MAX_FRAGMENT_IMAGE_UNIFORMS",
757        "MAX_COMPUTE_UNIFORM_BLOCKS", "MAX_COMPUTE_TEXTURE_IMAGE_UNITS", "MAX_COMPUTE_UNIFORM_COMPONENTS", "MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS", "MAX_COMPUTE_ATOMIC_COUNTERS",
758        "MAX_COMPUTE_IMAGE_UNIFORMS", "MAX_COMPUTE_SHADER_STORAGE_BLOCKS", "MAX_FRAGMENT_SHADER_STORAGE_BLOCKS", "MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS", "MAX_VERTEX_ATOMIC_COUNTER_BUFFERS",
759        "MAX_VERTEX_ATOMIC_COUNTERS", "MAX_VERTEX_IMAGE_UNIFORMS", "MAX_VERTEX_SHADER_STORAGE_BLOCKS", "MAX_COMBINED_SHADER_OUTPUT_RESOURCES", "MAX_ATOMIC_COUNTER_BUFFER_BINDINGS",
760        "MAX_ATOMIC_COUNTER_BUFFER_SIZE", "MAX_IMAGE_UNITS", "MAX_COMBINED_ATOMIC_COUNTER_BUFFERS", "MAX_COMBINED_IMAGE_UNIFORMS", "MAX_SHADER_STORAGE_BUFFER_BINDINGS",
761        "MAX_SHADER_STORAGE_BLOCK_SIZE", "MAX_COMBINED_ATOMIC_COUNTERS", "MAX_COMBINED_SHADER_STORAGE_BLOCKS", "SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT", "PRIMITIVE_BOUNDING_BOX_EXT",
762        "DRAW_INDIRECT_BUFFER_BINDING", "MAX_SAMPLE_MASK_WORDS", "PROGRAM_PIPELINE_BINDING", "ATOMIC_COUNTER_BUFFER_BINDING", "SHADER_STORAGE_BUFFER_BINDING",
763        "DISPATCH_INDIRECT_BUFFER_BINDING", "MAX_FRAMEBUFFER_WIDTH", "MAX_FRAMEBUFFER_HEIGHT", "MAX_FRAMEBUFFER_SAMPLES", "MAX_COMPUTE_SHARED_MEMORY_SIZE",
764        "MIN_PROGRAM_TEXTURE_GATHER_OFFSET", "MAX_PROGRAM_TEXTURE_GATHER_OFFSET", "MAX_COMPUTE_WORK_GROUP_INVOCATIONS", "MAX_UNIFORM_LOCATIONS", "MAX_DEBUG_MESSAGE_LENGTH",
765        "MAX_DEBUG_LOGGED_MESSAGES", "MAX_DEBUG_GROUP_STACK_DEPTH", "MAX_LABEL_LENGTH", "CONTEXT_FLAGS", "DEBUG_LOGGED_MESSAGES",
766        "DEBUG_NEXT_LOGGED_MESSAGE_LENGTH", "DEBUG_GROUP_STACK_DEPTH", "MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS", "TEXTURE_BUFFER_OFFSET_ALIGNMENT", "TEXTURE_BUFFER_BINDING",
767        "TEXTURE_BINDING_BUFFER", "MAX_TEXTURE_BUFFER_SIZE", "MAX_PATCH_VERTICES", "MAX_TESS_GEN_LEVEL", "MAX_TESS_CONTROL_UNIFORM_COMPONENTS",
768        "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",
769        "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",
770        "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",
771        "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",
772        "MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS", "PATCH_VERTICES", "PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED"
773    ]),
774
775    ("GettableIndexedState", [
776        "TRANSFORM_FEEDBACK_BUFFER_BINDING",
777        "UNIFORM_BUFFER_BINDING",
778        "TRANSFORM_FEEDBACK_BUFFER_START",
779        "TRANSFORM_FEEDBACK_BUFFER_SIZE",
780        "UNIFORM_BUFFER_START",
781        "UNIFORM_BUFFER_SIZE",
782        "SAMPLE_MASK_VALUE",
783        "VERTEX_BINDING_OFFSET",
784        "VERTEX_BINDING_STRIDE",
785        "VERTEX_BINDING_DIVISOR",
786        "VERTEX_BINDING_BUFFER",
787        "MAX_COMPUTE_WORK_GROUP_COUNT",
788        "MAX_COMPUTE_WORK_GROUP_SIZE",
789        "ATOMIC_COUNTER_BUFFER_BINDING",
790        "ATOMIC_COUNTER_BUFFER_START",
791        "ATOMIC_COUNTER_BUFFER_SIZE",
792        "SHADER_STORAGE_BUFFER_BINDING",
793        "SHADER_STORAGE_BUFFER_START",
794        "SHADER_STORAGE_BUFFER_SIZE",
795        "IMAGE_BINDING_NAME",
796        "IMAGE_BINDING_LEVEL",
797        "IMAGE_BINDING_LAYERED",
798        "IMAGE_BINDING_LAYER",
799        "IMAGE_BINDING_ACCESS",
800        "IMAGE_BINDING_FORMAT",
801        "BLEND_EQUATION_RGB",
802        "BLEND_EQUATION_ALPHA",
803        "BLEND_SRC_RGB",
804        "BLEND_SRC_ALPHA",
805        "BLEND_DST_RGB",
806        "BLEND_DST_ALPHA",
807        "COLOR_WRITEMASK",
808    ]),
809
810    ("GettableString", [
811        "EXTENSIONS",
812        "RENDERER",
813        "SHADING_LANGUAGE_VERSION",
814        "VENDOR",
815        "VERSION"
816    ]),
817
818    ("PointerState", [
819        "DEBUG_CALLBACK_FUNCTION",
820        "DEBUG_CALLBACK_USER_PARAM",
821    ]),
822
823    ("InternalFormatParameter", ["NUM_SAMPLE_COUNTS", "SAMPLES"]),
824    ("InternalFormatTarget", [
825        "RENDERBUFFER",
826        "TEXTURE_2D_MULTISAMPLE",
827        "TEXTURE_2D_MULTISAMPLE_ARRAY",
828        "TEXTURE_2D",
829        "TEXTURE_3D",
830        "TEXTURE_2D_ARRAY",
831        "TEXTURE_CUBE_MAP",
832    ]),
833
834    ("MultisampleParameter", ["SAMPLE_POSITION"]),
835
836    # Occlusion and timer queries
837    ("QueryTarget", [
838        "SAMPLES_PASSED",
839        "ANY_SAMPLES_PASSED",
840        "PRIMITIVES_GENERATED",
841        "TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN",
842        "TIME_ELAPSED",
843    ]),
844
845    ("QueryParam", ["CURRENT_QUERY", "QUERY_COUNTER_BITS"]),
846    ("QueryObjectParam", ["QUERY_RESULT", "QUERY_RESULT_AVAILABLE"]),
847
848    ("ImageAccess", ["READ_ONLY", "WRITE_ONLY", "READ_WRITE"]),
849
850    ("ProgramInterface", [
851        "UNIFORM",
852        "UNIFORM_BLOCK",
853        "ATOMIC_COUNTER_BUFFER",
854        "PROGRAM_INPUT",
855        "PROGRAM_OUTPUT",
856        "TRANSFORM_FEEDBACK_VARYING",
857        "BUFFER_VARIABLE",
858        "SHADER_STORAGE_BLOCK",
859    ]),
860
861    ("ProgramResourceProperty", [
862        "ACTIVE_VARIABLES",
863        "BUFFER_BINDING",
864        "NUM_ACTIVE_VARIABLES",
865        "ARRAY_SIZE",
866        "ARRAY_STRIDE",
867        "BLOCK_INDEX",
868        "IS_ROW_MAJOR",
869        "MATRIX_STRIDE",
870        "ATOMIC_COUNTER_BUFFER_INDEX",
871        "BUFFER_DATA_SIZE",
872        "LOCATION",
873        "NAME_LENGTH",
874        "OFFSET",
875        "REFERENCED_BY_VERTEX_SHADER",
876        "REFERENCED_BY_FRAGMENT_SHADER",
877        "REFERENCED_BY_COMPUTE_SHADER",
878        "REFERENCED_BY_GEOMETRY_SHADER",
879        "REFERENCED_BY_TESS_CONTROL_SHADER",
880        "REFERENCED_BY_TESS_EVALUATION_SHADER",
881        "TOP_LEVEL_ARRAY_SIZE",
882        "TOP_LEVEL_ARRAY_STRIDE",
883        "TYPE",
884        "IS_PER_PATCH",
885    ]),
886
887    ("PrecisionFormatType", ["LOW_FLOAT", "MEDIUM_FLOAT", "HIGH_FLOAT", "LOW_INT", "MEDIUM_INT", "HIGH_INT"]),
888
889    ("TransformFeedbackTarget", ["TRANSFORM_FEEDBACK"]),
890
891    ("ProvokingVertex", ["FIRST_VERTEX_CONVENTION", "LAST_VERTEX_CONVENTION", "UNDEFINED_VERTEX"]),
892
893    ("DebugMessageSource", [
894        "DEBUG_SOURCE_API",
895        "DEBUG_SOURCE_WINDOW_SYSTEM",
896        "DEBUG_SOURCE_SHADER_COMPILER",
897        "DEBUG_SOURCE_THIRD_PARTY",
898        "DEBUG_SOURCE_APPLICATION",
899        "DEBUG_SOURCE_OTHER", "DONT_CARE"
900    ]),
901    ("DebugMessageType", [
902        "DEBUG_TYPE_ERROR",
903        "DEBUG_TYPE_DEPRECATED_BEHAVIOR",
904        "DEBUG_TYPE_UNDEFINED_BEHAVIOR",
905        "DEBUG_TYPE_PORTABILITY",
906        "DEBUG_TYPE_PERFORMANCE",
907        "DEBUG_TYPE_OTHER",
908        "DEBUG_TYPE_MARKER",
909        "DEBUG_TYPE_PUSH_GROUP",
910        "DEBUG_TYPE_POP_GROUP",
911        "DONT_CARE"
912    ]),
913    ("DebugMessageSeverity", [
914        "DEBUG_SEVERITY_HIGH",
915        "DEBUG_SEVERITY_MEDIUM",
916        "DEBUG_SEVERITY_LOW",
917        "DEBUG_SEVERITY_NOTIFICATION",
918        "DONT_CARE"
919    ]),
920
921    # Pipeline query
922    ("PipelineParam", [
923        "ACTIVE_PROGRAM",
924        "INFO_LOG_LENGTH",
925        "VALIDATE_STATUS",
926        "VERTEX_SHADER",
927        "FRAGMENT_SHADER",
928        "COMPUTE_SHADER",
929        "GEOMETRY_SHADER",
930        "TESS_CONTROL_SHADER",
931        "TESS_EVALUATION_SHADER",
932    ]),
933
934    ("PatchParam", [
935        "PATCH_VERTICES",
936    ]),
937
938    ("TextureFormat", [
939        # generated: UncompressedTextureFormat + CompressedTextureFormat
940    ]),
941
942    # GraphicsResetStatus
943    ("GraphicsResetStatus", [
944        "NO_ERROR",
945        "GUILTY_CONTEXT_RESET",
946        "INNOCENT_CONTEXT_RESET",
947        "UNKNOWN_CONTEXT_RESET",
948    ]),
949]
950
951def getEnumGroupByName (name):
952    # \note: will raise an (index out of bounds) error if no such group
953    return [x for x in ENUM_GROUPS if x[0]==name][0][1]
954
955# EnableCap EnumGroups are also GettableState EnumGroups
956getEnumGroupByName("GettableState").extend(getEnumGroupByName("EnableCap"))
957
958# TextureFormat = UncompressedTextureFormat + CompressedTextureFormat
959getEnumGroupByName("TextureFormat").extend(getEnumGroupByName("UncompressedTextureFormat") + getEnumGroupByName("CompressedTextureFormat"))
960
961def genStrUtil (iface):
962    enumGroups = addValuePrefix(ENUM_GROUPS, "GL_")
963    bitfieldGroups = addValuePrefix(BITFIELD_GROUPS, "GL_")
964    prototypeFile = os.path.join(OPENGL_DIR, "gluStrUtilPrototypes.inl")
965    implFile = os.path.join(OPENGL_DIR, "gluStrUtil.inl")
966
967    writeInlFile(prototypeFile, indentLines(genStrUtilProtos(iface, enumGroups, bitfieldGroups)))
968    writeInlFile(implFile, genStrUtilImpls(iface, enumGroups, bitfieldGroups))
969
970if __name__ == "__main__":
971    genStrUtil(getHybridInterface())
972