1/* WARNING: This is auto-generated file. Do not modify, since changes will
2 * be lost! Modify the generating script instead.
3 *
4 * Generated from Khronos GL API description (gl.xml) revision 30159.
5 */
6
7const char* getErrorName (int value)
8{
9	switch (value)
10	{
11		case GL_NO_ERROR:						return "GL_NO_ERROR";
12		case GL_INVALID_ENUM:					return "GL_INVALID_ENUM";
13		case GL_INVALID_VALUE:					return "GL_INVALID_VALUE";
14		case GL_INVALID_OPERATION:				return "GL_INVALID_OPERATION";
15		case GL_OUT_OF_MEMORY:					return "GL_OUT_OF_MEMORY";
16		case GL_INVALID_FRAMEBUFFER_OPERATION:	return "GL_INVALID_FRAMEBUFFER_OPERATION";
17		default:								return DE_NULL;
18	}
19}
20
21const char* getTypeName (int value)
22{
23	switch (value)
24	{
25		case GL_BYTE:							return "GL_BYTE";
26		case GL_UNSIGNED_BYTE:					return "GL_UNSIGNED_BYTE";
27		case GL_SHORT:							return "GL_SHORT";
28		case GL_UNSIGNED_SHORT:					return "GL_UNSIGNED_SHORT";
29		case GL_INT:							return "GL_INT";
30		case GL_UNSIGNED_INT:					return "GL_UNSIGNED_INT";
31		case GL_FLOAT:							return "GL_FLOAT";
32		case GL_FIXED:							return "GL_FIXED";
33		case GL_UNSIGNED_SHORT_5_6_5:			return "GL_UNSIGNED_SHORT_5_6_5";
34		case GL_UNSIGNED_SHORT_4_4_4_4:			return "GL_UNSIGNED_SHORT_4_4_4_4";
35		case GL_UNSIGNED_SHORT_5_5_5_1:			return "GL_UNSIGNED_SHORT_5_5_5_1";
36		case GL_HALF_FLOAT:						return "GL_HALF_FLOAT";
37		case GL_INT_2_10_10_10_REV:				return "GL_INT_2_10_10_10_REV";
38		case GL_UNSIGNED_INT_2_10_10_10_REV:	return "GL_UNSIGNED_INT_2_10_10_10_REV";
39		case GL_UNSIGNED_INT_10F_11F_11F_REV:	return "GL_UNSIGNED_INT_10F_11F_11F_REV";
40		case GL_UNSIGNED_INT_5_9_9_9_REV:		return "GL_UNSIGNED_INT_5_9_9_9_REV";
41		case GL_UNSIGNED_INT_24_8:				return "GL_UNSIGNED_INT_24_8";
42		case GL_FLOAT_32_UNSIGNED_INT_24_8_REV:	return "GL_FLOAT_32_UNSIGNED_INT_24_8_REV";
43		case GL_SIGNED_NORMALIZED:				return "GL_SIGNED_NORMALIZED";
44		case GL_UNSIGNED_NORMALIZED:			return "GL_UNSIGNED_NORMALIZED";
45		case GL_HALF_FLOAT_OES:					return "GL_HALF_FLOAT_OES";
46		default:								return DE_NULL;
47	}
48}
49
50const char* getParamQueryName (int value)
51{
52	switch (value)
53	{
54		case GL_LINE_WIDTH:							return "GL_LINE_WIDTH";
55		case GL_ALIASED_POINT_SIZE_RANGE:			return "GL_ALIASED_POINT_SIZE_RANGE";
56		case GL_ALIASED_LINE_WIDTH_RANGE:			return "GL_ALIASED_LINE_WIDTH_RANGE";
57		case GL_CULL_FACE_MODE:						return "GL_CULL_FACE_MODE";
58		case GL_FRONT_FACE:							return "GL_FRONT_FACE";
59		case GL_DEPTH_RANGE:						return "GL_DEPTH_RANGE";
60		case GL_DEPTH_WRITEMASK:					return "GL_DEPTH_WRITEMASK";
61		case GL_DEPTH_CLEAR_VALUE:					return "GL_DEPTH_CLEAR_VALUE";
62		case GL_DEPTH_FUNC:							return "GL_DEPTH_FUNC";
63		case GL_STENCIL_CLEAR_VALUE:				return "GL_STENCIL_CLEAR_VALUE";
64		case GL_STENCIL_FUNC:						return "GL_STENCIL_FUNC";
65		case GL_STENCIL_FAIL:						return "GL_STENCIL_FAIL";
66		case GL_STENCIL_PASS_DEPTH_FAIL:			return "GL_STENCIL_PASS_DEPTH_FAIL";
67		case GL_STENCIL_PASS_DEPTH_PASS:			return "GL_STENCIL_PASS_DEPTH_PASS";
68		case GL_STENCIL_REF:						return "GL_STENCIL_REF";
69		case GL_STENCIL_VALUE_MASK:					return "GL_STENCIL_VALUE_MASK";
70		case GL_STENCIL_WRITEMASK:					return "GL_STENCIL_WRITEMASK";
71		case GL_STENCIL_BACK_FUNC:					return "GL_STENCIL_BACK_FUNC";
72		case GL_STENCIL_BACK_FAIL:					return "GL_STENCIL_BACK_FAIL";
73		case GL_STENCIL_BACK_PASS_DEPTH_FAIL:		return "GL_STENCIL_BACK_PASS_DEPTH_FAIL";
74		case GL_STENCIL_BACK_PASS_DEPTH_PASS:		return "GL_STENCIL_BACK_PASS_DEPTH_PASS";
75		case GL_STENCIL_BACK_REF:					return "GL_STENCIL_BACK_REF";
76		case GL_STENCIL_BACK_VALUE_MASK:			return "GL_STENCIL_BACK_VALUE_MASK";
77		case GL_STENCIL_BACK_WRITEMASK:				return "GL_STENCIL_BACK_WRITEMASK";
78		case GL_VIEWPORT:							return "GL_VIEWPORT";
79		case GL_SCISSOR_BOX:						return "GL_SCISSOR_BOX";
80		case GL_SCISSOR_TEST:						return "GL_SCISSOR_TEST";
81		case GL_COLOR_CLEAR_VALUE:					return "GL_COLOR_CLEAR_VALUE";
82		case GL_COLOR_WRITEMASK:					return "GL_COLOR_WRITEMASK";
83		case GL_UNPACK_ALIGNMENT:					return "GL_UNPACK_ALIGNMENT";
84		case GL_PACK_ALIGNMENT:						return "GL_PACK_ALIGNMENT";
85		case GL_MAX_TEXTURE_SIZE:					return "GL_MAX_TEXTURE_SIZE";
86		case GL_MAX_VIEWPORT_DIMS:					return "GL_MAX_VIEWPORT_DIMS";
87		case GL_SUBPIXEL_BITS:						return "GL_SUBPIXEL_BITS";
88		case GL_RED_BITS:							return "GL_RED_BITS";
89		case GL_GREEN_BITS:							return "GL_GREEN_BITS";
90		case GL_BLUE_BITS:							return "GL_BLUE_BITS";
91		case GL_ALPHA_BITS:							return "GL_ALPHA_BITS";
92		case GL_DEPTH_BITS:							return "GL_DEPTH_BITS";
93		case GL_STENCIL_BITS:						return "GL_STENCIL_BITS";
94		case GL_POLYGON_OFFSET_UNITS:				return "GL_POLYGON_OFFSET_UNITS";
95		case GL_POLYGON_OFFSET_FILL:				return "GL_POLYGON_OFFSET_FILL";
96		case GL_POLYGON_OFFSET_FACTOR:				return "GL_POLYGON_OFFSET_FACTOR";
97		case GL_TEXTURE_BINDING_2D:					return "GL_TEXTURE_BINDING_2D";
98		case GL_SAMPLE_BUFFERS:						return "GL_SAMPLE_BUFFERS";
99		case GL_SAMPLES:							return "GL_SAMPLES";
100		case GL_SAMPLE_COVERAGE_VALUE:				return "GL_SAMPLE_COVERAGE_VALUE";
101		case GL_SAMPLE_COVERAGE_INVERT:				return "GL_SAMPLE_COVERAGE_INVERT";
102		case GL_MAX_CUBE_MAP_TEXTURE_SIZE:			return "GL_MAX_CUBE_MAP_TEXTURE_SIZE";
103		case GL_MAX_RENDERBUFFER_SIZE:				return "GL_MAX_RENDERBUFFER_SIZE";
104		case GL_MAX_VERTEX_ATTRIBS:					return "GL_MAX_VERTEX_ATTRIBS";
105		case GL_MAX_VERTEX_UNIFORM_VECTORS:			return "GL_MAX_VERTEX_UNIFORM_VECTORS";
106		case GL_MAX_VARYING_VECTORS:				return "GL_MAX_VARYING_VECTORS";
107		case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:	return "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS";
108		case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS:		return "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS";
109		case GL_MAX_TEXTURE_IMAGE_UNITS:			return "GL_MAX_TEXTURE_IMAGE_UNITS";
110		case GL_MAX_FRAGMENT_UNIFORM_VECTORS:		return "GL_MAX_FRAGMENT_UNIFORM_VECTORS";
111		default:									return DE_NULL;
112	}
113}
114
115const char* getProgramParamName (int value)
116{
117	switch (value)
118	{
119		case GL_ACTIVE_ATTRIBUTES:						return "GL_ACTIVE_ATTRIBUTES";
120		case GL_ACTIVE_ATTRIBUTE_MAX_LENGTH:			return "GL_ACTIVE_ATTRIBUTE_MAX_LENGTH";
121		case GL_ACTIVE_UNIFORMS:						return "GL_ACTIVE_UNIFORMS";
122		case GL_ACTIVE_UNIFORM_BLOCKS:					return "GL_ACTIVE_UNIFORM_BLOCKS";
123		case GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH:	return "GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH";
124		case GL_ACTIVE_UNIFORM_MAX_LENGTH:				return "GL_ACTIVE_UNIFORM_MAX_LENGTH";
125		case GL_ATTACHED_SHADERS:						return "GL_ATTACHED_SHADERS";
126		case GL_DELETE_STATUS:							return "GL_DELETE_STATUS";
127		case GL_INFO_LOG_LENGTH:						return "GL_INFO_LOG_LENGTH";
128		case GL_LINK_STATUS:							return "GL_LINK_STATUS";
129		case GL_PROGRAM_BINARY_RETRIEVABLE_HINT:		return "GL_PROGRAM_BINARY_RETRIEVABLE_HINT";
130		case GL_TRANSFORM_FEEDBACK_BUFFER_MODE:			return "GL_TRANSFORM_FEEDBACK_BUFFER_MODE";
131		case GL_TRANSFORM_FEEDBACK_VARYINGS:			return "GL_TRANSFORM_FEEDBACK_VARYINGS";
132		case GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH:	return "GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH";
133		case GL_VALIDATE_STATUS:						return "GL_VALIDATE_STATUS";
134		case GL_GEOMETRY_INPUT_TYPE:					return "GL_GEOMETRY_INPUT_TYPE";
135		case GL_GEOMETRY_OUTPUT_TYPE:					return "GL_GEOMETRY_OUTPUT_TYPE";
136		case GL_GEOMETRY_VERTICES_OUT:					return "GL_GEOMETRY_VERTICES_OUT";
137		case GL_GEOMETRY_SHADER_INVOCATIONS:			return "GL_GEOMETRY_SHADER_INVOCATIONS";
138		case GL_PROGRAM_SEPARABLE:						return "GL_PROGRAM_SEPARABLE";
139		case GL_COMPUTE_WORK_GROUP_SIZE:				return "GL_COMPUTE_WORK_GROUP_SIZE";
140		case GL_ACTIVE_ATOMIC_COUNTER_BUFFERS:			return "GL_ACTIVE_ATOMIC_COUNTER_BUFFERS";
141		case GL_TESS_CONTROL_OUTPUT_VERTICES:			return "GL_TESS_CONTROL_OUTPUT_VERTICES";
142		case GL_TESS_GEN_MODE:							return "GL_TESS_GEN_MODE";
143		case GL_TESS_GEN_SPACING:						return "GL_TESS_GEN_SPACING";
144		case GL_TESS_GEN_VERTEX_ORDER:					return "GL_TESS_GEN_VERTEX_ORDER";
145		case GL_TESS_GEN_POINT_MODE:					return "GL_TESS_GEN_POINT_MODE";
146		default:										return DE_NULL;
147	}
148}
149
150const char* getUniformParamName (int value)
151{
152	switch (value)
153	{
154		case GL_UNIFORM_TYPE:			return "GL_UNIFORM_TYPE";
155		case GL_UNIFORM_SIZE:			return "GL_UNIFORM_SIZE";
156		case GL_UNIFORM_NAME_LENGTH:	return "GL_UNIFORM_NAME_LENGTH";
157		case GL_UNIFORM_BLOCK_INDEX:	return "GL_UNIFORM_BLOCK_INDEX";
158		case GL_UNIFORM_OFFSET:			return "GL_UNIFORM_OFFSET";
159		case GL_UNIFORM_ARRAY_STRIDE:	return "GL_UNIFORM_ARRAY_STRIDE";
160		case GL_UNIFORM_MATRIX_STRIDE:	return "GL_UNIFORM_MATRIX_STRIDE";
161		case GL_UNIFORM_IS_ROW_MAJOR:	return "GL_UNIFORM_IS_ROW_MAJOR";
162		default:						return DE_NULL;
163	}
164}
165
166const char* getFramebufferAttachmentName (int value)
167{
168	switch (value)
169	{
170		case GL_COLOR_ATTACHMENT0:			return "GL_COLOR_ATTACHMENT0";
171		case GL_COLOR_ATTACHMENT1:			return "GL_COLOR_ATTACHMENT1";
172		case GL_COLOR_ATTACHMENT2:			return "GL_COLOR_ATTACHMENT2";
173		case GL_COLOR_ATTACHMENT3:			return "GL_COLOR_ATTACHMENT3";
174		case GL_COLOR_ATTACHMENT4:			return "GL_COLOR_ATTACHMENT4";
175		case GL_COLOR_ATTACHMENT5:			return "GL_COLOR_ATTACHMENT5";
176		case GL_COLOR_ATTACHMENT6:			return "GL_COLOR_ATTACHMENT6";
177		case GL_COLOR_ATTACHMENT7:			return "GL_COLOR_ATTACHMENT7";
178		case GL_COLOR_ATTACHMENT8:			return "GL_COLOR_ATTACHMENT8";
179		case GL_COLOR_ATTACHMENT9:			return "GL_COLOR_ATTACHMENT9";
180		case GL_COLOR_ATTACHMENT10:			return "GL_COLOR_ATTACHMENT10";
181		case GL_COLOR_ATTACHMENT11:			return "GL_COLOR_ATTACHMENT11";
182		case GL_COLOR_ATTACHMENT12:			return "GL_COLOR_ATTACHMENT12";
183		case GL_COLOR_ATTACHMENT13:			return "GL_COLOR_ATTACHMENT13";
184		case GL_COLOR_ATTACHMENT14:			return "GL_COLOR_ATTACHMENT14";
185		case GL_COLOR_ATTACHMENT15:			return "GL_COLOR_ATTACHMENT15";
186		case GL_DEPTH_ATTACHMENT:			return "GL_DEPTH_ATTACHMENT";
187		case GL_STENCIL_ATTACHMENT:			return "GL_STENCIL_ATTACHMENT";
188		case GL_DEPTH_STENCIL_ATTACHMENT:	return "GL_DEPTH_STENCIL_ATTACHMENT";
189		case GL_BACK:						return "GL_BACK";
190		case GL_FRONT_LEFT:					return "GL_FRONT_LEFT";
191		case GL_FRONT_RIGHT:				return "GL_FRONT_RIGHT";
192		case GL_BACK_LEFT:					return "GL_BACK_LEFT";
193		case GL_BACK_RIGHT:					return "GL_BACK_RIGHT";
194		case GL_DEPTH:						return "GL_DEPTH";
195		case GL_STENCIL:					return "GL_STENCIL";
196		default:							return DE_NULL;
197	}
198}
199
200const char* getFramebufferAttachmentParameterName (int value)
201{
202	switch (value)
203	{
204		case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:				return "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE";
205		case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:				return "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME";
206		case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:			return "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL";
207		case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:	return "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE";
208		case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER:			return "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER";
209		case GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:			return "GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE";
210		case GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:			return "GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING";
211		case GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE:				return "GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE";
212		case GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:				return "GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE";
213		case GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:				return "GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE";
214		case GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:				return "GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE";
215		case GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:				return "GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE";
216		case GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:			return "GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE";
217		case GL_FRAMEBUFFER_ATTACHMENT_LAYERED:					return "GL_FRAMEBUFFER_ATTACHMENT_LAYERED";
218		default:												return DE_NULL;
219	}
220}
221
222const char* getFramebufferTargetName (int value)
223{
224	switch (value)
225	{
226		case GL_FRAMEBUFFER:		return "GL_FRAMEBUFFER";
227		case GL_RENDERBUFFER:		return "GL_RENDERBUFFER";
228		case GL_DRAW_FRAMEBUFFER:	return "GL_DRAW_FRAMEBUFFER";
229		case GL_READ_FRAMEBUFFER:	return "GL_READ_FRAMEBUFFER";
230		default:					return DE_NULL;
231	}
232}
233
234const char* getFramebufferStatusName (int value)
235{
236	switch (value)
237	{
238		case GL_FRAMEBUFFER_COMPLETE:						return "GL_FRAMEBUFFER_COMPLETE";
239		case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT:			return "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT";
240		case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:	return "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";
241		case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS:			return "GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS";
242		case GL_FRAMEBUFFER_UNSUPPORTED:					return "GL_FRAMEBUFFER_UNSUPPORTED";
243		case GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:			return "GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE";
244		case GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS:		return "GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS";
245		default:											return DE_NULL;
246	}
247}
248
249const char* getFramebufferAttachmentTypeName (int value)
250{
251	switch (value)
252	{
253		case GL_NONE:					return "GL_NONE";
254		case GL_FRAMEBUFFER_DEFAULT:	return "GL_FRAMEBUFFER_DEFAULT";
255		case GL_TEXTURE:				return "GL_TEXTURE";
256		case GL_RENDERBUFFER:			return "GL_RENDERBUFFER";
257		default:						return DE_NULL;
258	}
259}
260
261const char* getFramebufferColorEncodingName (int value)
262{
263	switch (value)
264	{
265		case GL_LINEAR:	return "GL_LINEAR";
266		case GL_SRGB:	return "GL_SRGB";
267		default:		return DE_NULL;
268	}
269}
270
271const char* getFramebufferParameterName (int value)
272{
273	switch (value)
274	{
275		case GL_FRAMEBUFFER_DEFAULT_WIDTH:					return "GL_FRAMEBUFFER_DEFAULT_WIDTH";
276		case GL_FRAMEBUFFER_DEFAULT_HEIGHT:					return "GL_FRAMEBUFFER_DEFAULT_HEIGHT";
277		case GL_FRAMEBUFFER_DEFAULT_SAMPLES:				return "GL_FRAMEBUFFER_DEFAULT_SAMPLES";
278		case GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS:	return "GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS";
279		case GL_FRAMEBUFFER_DEFAULT_LAYERS:					return "GL_FRAMEBUFFER_DEFAULT_LAYERS";
280		default:											return DE_NULL;
281	}
282}
283
284const char* getRenderbufferParameterName (int value)
285{
286	switch (value)
287	{
288		case GL_RENDERBUFFER_WIDTH:				return "GL_RENDERBUFFER_WIDTH";
289		case GL_RENDERBUFFER_HEIGHT:			return "GL_RENDERBUFFER_HEIGHT";
290		case GL_RENDERBUFFER_INTERNAL_FORMAT:	return "GL_RENDERBUFFER_INTERNAL_FORMAT";
291		case GL_RENDERBUFFER_RED_SIZE:			return "GL_RENDERBUFFER_RED_SIZE";
292		case GL_RENDERBUFFER_GREEN_SIZE:		return "GL_RENDERBUFFER_GREEN_SIZE";
293		case GL_RENDERBUFFER_BLUE_SIZE:			return "GL_RENDERBUFFER_BLUE_SIZE";
294		case GL_RENDERBUFFER_ALPHA_SIZE:		return "GL_RENDERBUFFER_ALPHA_SIZE";
295		case GL_RENDERBUFFER_DEPTH_SIZE:		return "GL_RENDERBUFFER_DEPTH_SIZE";
296		case GL_RENDERBUFFER_STENCIL_SIZE:		return "GL_RENDERBUFFER_STENCIL_SIZE";
297		case GL_RENDERBUFFER_SAMPLES:			return "GL_RENDERBUFFER_SAMPLES";
298		default:								return DE_NULL;
299	}
300}
301
302const char* getPrimitiveTypeName (int value)
303{
304	switch (value)
305	{
306		case GL_POINTS:						return "GL_POINTS";
307		case GL_LINES:						return "GL_LINES";
308		case GL_LINE_STRIP:					return "GL_LINE_STRIP";
309		case GL_LINE_LOOP:					return "GL_LINE_LOOP";
310		case GL_TRIANGLES:					return "GL_TRIANGLES";
311		case GL_TRIANGLE_STRIP:				return "GL_TRIANGLE_STRIP";
312		case GL_TRIANGLE_FAN:				return "GL_TRIANGLE_FAN";
313		case GL_LINES_ADJACENCY:			return "GL_LINES_ADJACENCY";
314		case GL_LINE_STRIP_ADJACENCY:		return "GL_LINE_STRIP_ADJACENCY";
315		case GL_TRIANGLES_ADJACENCY:		return "GL_TRIANGLES_ADJACENCY";
316		case GL_TRIANGLE_STRIP_ADJACENCY:	return "GL_TRIANGLE_STRIP_ADJACENCY";
317		default:							return DE_NULL;
318	}
319}
320
321const char* getBlendFactorName (int value)
322{
323	switch (value)
324	{
325		case GL_ZERO:						return "GL_ZERO";
326		case GL_ONE:						return "GL_ONE";
327		case GL_SRC_ALPHA_SATURATE:			return "GL_SRC_ALPHA_SATURATE";
328		case GL_SRC_COLOR:					return "GL_SRC_COLOR";
329		case GL_ONE_MINUS_SRC_COLOR:		return "GL_ONE_MINUS_SRC_COLOR";
330		case GL_SRC_ALPHA:					return "GL_SRC_ALPHA";
331		case GL_ONE_MINUS_SRC_ALPHA:		return "GL_ONE_MINUS_SRC_ALPHA";
332		case GL_SRC1_COLOR:					return "GL_SRC1_COLOR";
333		case GL_ONE_MINUS_SRC1_COLOR:		return "GL_ONE_MINUS_SRC1_COLOR";
334		case GL_SRC1_ALPHA:					return "GL_SRC1_ALPHA";
335		case GL_ONE_MINUS_SRC1_ALPHA:		return "GL_ONE_MINUS_SRC1_ALPHA";
336		case GL_DST_COLOR:					return "GL_DST_COLOR";
337		case GL_ONE_MINUS_DST_COLOR:		return "GL_ONE_MINUS_DST_COLOR";
338		case GL_DST_ALPHA:					return "GL_DST_ALPHA";
339		case GL_ONE_MINUS_DST_ALPHA:		return "GL_ONE_MINUS_DST_ALPHA";
340		case GL_CONSTANT_COLOR:				return "GL_CONSTANT_COLOR";
341		case GL_ONE_MINUS_CONSTANT_COLOR:	return "GL_ONE_MINUS_CONSTANT_COLOR";
342		case GL_CONSTANT_ALPHA:				return "GL_CONSTANT_ALPHA";
343		case GL_ONE_MINUS_CONSTANT_ALPHA:	return "GL_ONE_MINUS_CONSTANT_ALPHA";
344		default:							return DE_NULL;
345	}
346}
347
348const char* getBlendEquationName (int value)
349{
350	switch (value)
351	{
352		case GL_FUNC_ADD:				return "GL_FUNC_ADD";
353		case GL_FUNC_SUBTRACT:			return "GL_FUNC_SUBTRACT";
354		case GL_FUNC_REVERSE_SUBTRACT:	return "GL_FUNC_REVERSE_SUBTRACT";
355		case GL_MIN:					return "GL_MIN";
356		case GL_MAX:					return "GL_MAX";
357		case GL_MULTIPLY_KHR:			return "GL_MULTIPLY_KHR";
358		case GL_SCREEN_KHR:				return "GL_SCREEN_KHR";
359		case GL_OVERLAY_KHR:			return "GL_OVERLAY_KHR";
360		case GL_DARKEN_KHR:				return "GL_DARKEN_KHR";
361		case GL_LIGHTEN_KHR:			return "GL_LIGHTEN_KHR";
362		case GL_COLORDODGE_KHR:			return "GL_COLORDODGE_KHR";
363		case GL_COLORBURN_KHR:			return "GL_COLORBURN_KHR";
364		case GL_HARDLIGHT_KHR:			return "GL_HARDLIGHT_KHR";
365		case GL_SOFTLIGHT_KHR:			return "GL_SOFTLIGHT_KHR";
366		case GL_DIFFERENCE_KHR:			return "GL_DIFFERENCE_KHR";
367		case GL_EXCLUSION_KHR:			return "GL_EXCLUSION_KHR";
368		case GL_HSL_HUE_KHR:			return "GL_HSL_HUE_KHR";
369		case GL_HSL_SATURATION_KHR:		return "GL_HSL_SATURATION_KHR";
370		case GL_HSL_COLOR_KHR:			return "GL_HSL_COLOR_KHR";
371		case GL_HSL_LUMINOSITY_KHR:		return "GL_HSL_LUMINOSITY_KHR";
372		default:						return DE_NULL;
373	}
374}
375
376const char* getBufferTargetName (int value)
377{
378	switch (value)
379	{
380		case GL_ARRAY_BUFFER:				return "GL_ARRAY_BUFFER";
381		case GL_ELEMENT_ARRAY_BUFFER:		return "GL_ELEMENT_ARRAY_BUFFER";
382		case GL_COPY_READ_BUFFER:			return "GL_COPY_READ_BUFFER";
383		case GL_COPY_WRITE_BUFFER:			return "GL_COPY_WRITE_BUFFER";
384		case GL_PIXEL_PACK_BUFFER:			return "GL_PIXEL_PACK_BUFFER";
385		case GL_PIXEL_UNPACK_BUFFER:		return "GL_PIXEL_UNPACK_BUFFER";
386		case GL_TRANSFORM_FEEDBACK_BUFFER:	return "GL_TRANSFORM_FEEDBACK_BUFFER";
387		case GL_UNIFORM_BUFFER:				return "GL_UNIFORM_BUFFER";
388		case GL_DRAW_INDIRECT_BUFFER:		return "GL_DRAW_INDIRECT_BUFFER";
389		case GL_SHADER_STORAGE_BUFFER:		return "GL_SHADER_STORAGE_BUFFER";
390		case GL_TEXTURE_BUFFER:				return "GL_TEXTURE_BUFFER";
391		case GL_DISPATCH_INDIRECT_BUFFER:	return "GL_DISPATCH_INDIRECT_BUFFER";
392		case GL_ATOMIC_COUNTER_BUFFER:		return "GL_ATOMIC_COUNTER_BUFFER";
393		default:							return DE_NULL;
394	}
395}
396
397const char* getBufferBindingName (int value)
398{
399	switch (value)
400	{
401		case GL_ARRAY_BUFFER_BINDING:			return "GL_ARRAY_BUFFER_BINDING";
402		case GL_ELEMENT_ARRAY_BUFFER_BINDING:	return "GL_ELEMENT_ARRAY_BUFFER_BINDING";
403		default:								return DE_NULL;
404	}
405}
406
407const char* getUsageName (int value)
408{
409	switch (value)
410	{
411		case GL_STREAM_DRAW:	return "GL_STREAM_DRAW";
412		case GL_STREAM_READ:	return "GL_STREAM_READ";
413		case GL_STREAM_COPY:	return "GL_STREAM_COPY";
414		case GL_STATIC_DRAW:	return "GL_STATIC_DRAW";
415		case GL_STATIC_READ:	return "GL_STATIC_READ";
416		case GL_STATIC_COPY:	return "GL_STATIC_COPY";
417		case GL_DYNAMIC_DRAW:	return "GL_DYNAMIC_DRAW";
418		case GL_DYNAMIC_READ:	return "GL_DYNAMIC_READ";
419		case GL_DYNAMIC_COPY:	return "GL_DYNAMIC_COPY";
420		default:				return DE_NULL;
421	}
422}
423
424const char* getBufferQueryName (int value)
425{
426	switch (value)
427	{
428		case GL_BUFFER_SIZE:			return "GL_BUFFER_SIZE";
429		case GL_BUFFER_USAGE:			return "GL_BUFFER_USAGE";
430		case GL_BUFFER_ACCESS_FLAGS:	return "GL_BUFFER_ACCESS_FLAGS";
431		case GL_BUFFER_MAPPED:			return "GL_BUFFER_MAPPED";
432		case GL_BUFFER_MAP_OFFSET:		return "GL_BUFFER_MAP_OFFSET";
433		case GL_BUFFER_MAP_LENGTH:		return "GL_BUFFER_MAP_LENGTH";
434		default:						return DE_NULL;
435	}
436}
437
438const char* getFaceName (int value)
439{
440	switch (value)
441	{
442		case GL_FRONT:			return "GL_FRONT";
443		case GL_BACK:			return "GL_BACK";
444		case GL_FRONT_AND_BACK:	return "GL_FRONT_AND_BACK";
445		default:				return DE_NULL;
446	}
447}
448
449const char* getCompareFuncName (int value)
450{
451	switch (value)
452	{
453		case GL_NEVER:		return "GL_NEVER";
454		case GL_LESS:		return "GL_LESS";
455		case GL_LEQUAL:		return "GL_LEQUAL";
456		case GL_GREATER:	return "GL_GREATER";
457		case GL_EQUAL:		return "GL_EQUAL";
458		case GL_NOTEQUAL:	return "GL_NOTEQUAL";
459		case GL_GEQUAL:		return "GL_GEQUAL";
460		case GL_ALWAYS:		return "GL_ALWAYS";
461		default:			return DE_NULL;
462	}
463}
464
465const char* getEnableCapName (int value)
466{
467	switch (value)
468	{
469		case GL_TEXTURE_2D:						return "GL_TEXTURE_2D";
470		case GL_CULL_FACE:						return "GL_CULL_FACE";
471		case GL_BLEND:							return "GL_BLEND";
472		case GL_DITHER:							return "GL_DITHER";
473		case GL_STENCIL_TEST:					return "GL_STENCIL_TEST";
474		case GL_DEPTH_TEST:						return "GL_DEPTH_TEST";
475		case GL_SCISSOR_TEST:					return "GL_SCISSOR_TEST";
476		case GL_POLYGON_OFFSET_FILL:			return "GL_POLYGON_OFFSET_FILL";
477		case GL_SAMPLE_ALPHA_TO_COVERAGE:		return "GL_SAMPLE_ALPHA_TO_COVERAGE";
478		case GL_SAMPLE_COVERAGE:				return "GL_SAMPLE_COVERAGE";
479		case GL_PRIMITIVE_RESTART_FIXED_INDEX:	return "GL_PRIMITIVE_RESTART_FIXED_INDEX";
480		case GL_RASTERIZER_DISCARD:				return "GL_RASTERIZER_DISCARD";
481		case GL_FRAMEBUFFER_SRGB:				return "GL_FRAMEBUFFER_SRGB";
482		case GL_SAMPLE_SHADING:					return "GL_SAMPLE_SHADING";
483		case GL_DEPTH_CLAMP:					return "GL_DEPTH_CLAMP";
484		case GL_PRIMITIVE_RESTART:				return "GL_PRIMITIVE_RESTART";
485		case GL_SAMPLE_MASK:					return "GL_SAMPLE_MASK";
486		case GL_DEBUG_OUTPUT:					return "GL_DEBUG_OUTPUT";
487		case GL_DEBUG_OUTPUT_SYNCHRONOUS:		return "GL_DEBUG_OUTPUT_SYNCHRONOUS";
488		case GL_BLEND_ADVANCED_COHERENT_KHR:	return "GL_BLEND_ADVANCED_COHERENT_KHR";
489		default:								return DE_NULL;
490	}
491}
492
493const char* getIndexedEnableCapName (int value)
494{
495	switch (value)
496	{
497		case GL_BLEND:	return "GL_BLEND";
498		default:		return DE_NULL;
499	}
500}
501
502const char* getWindingName (int value)
503{
504	switch (value)
505	{
506		case GL_CW:		return "GL_CW";
507		case GL_CCW:	return "GL_CCW";
508		default:		return DE_NULL;
509	}
510}
511
512const char* getHintModeName (int value)
513{
514	switch (value)
515	{
516		case GL_DONT_CARE:	return "GL_DONT_CARE";
517		case GL_FASTEST:	return "GL_FASTEST";
518		case GL_NICEST:		return "GL_NICEST";
519		default:			return DE_NULL;
520	}
521}
522
523const char* getHintName (int value)
524{
525	switch (value)
526	{
527		case GL_GENERATE_MIPMAP_HINT:	return "GL_GENERATE_MIPMAP_HINT";
528		default:						return DE_NULL;
529	}
530}
531
532const char* getStencilOpName (int value)
533{
534	switch (value)
535	{
536		case GL_ZERO:		return "GL_ZERO";
537		case GL_KEEP:		return "GL_KEEP";
538		case GL_REPLACE:	return "GL_REPLACE";
539		case GL_INCR:		return "GL_INCR";
540		case GL_DECR:		return "GL_DECR";
541		case GL_INVERT:		return "GL_INVERT";
542		case GL_INCR_WRAP:	return "GL_INCR_WRAP";
543		case GL_DECR_WRAP:	return "GL_DECR_WRAP";
544		default:			return DE_NULL;
545	}
546}
547
548const char* getShaderTypeName (int value)
549{
550	switch (value)
551	{
552		case GL_VERTEX_SHADER:			return "GL_VERTEX_SHADER";
553		case GL_FRAGMENT_SHADER:		return "GL_FRAGMENT_SHADER";
554		case GL_COMPUTE_SHADER:			return "GL_COMPUTE_SHADER";
555		case GL_TESS_CONTROL_SHADER:	return "GL_TESS_CONTROL_SHADER";
556		case GL_TESS_EVALUATION_SHADER:	return "GL_TESS_EVALUATION_SHADER";
557		case GL_GEOMETRY_SHADER:		return "GL_GEOMETRY_SHADER";
558		default:						return DE_NULL;
559	}
560}
561
562const char* getBufferName (int value)
563{
564	switch (value)
565	{
566		case GL_COLOR:			return "GL_COLOR";
567		case GL_DEPTH:			return "GL_DEPTH";
568		case GL_STENCIL:		return "GL_STENCIL";
569		case GL_DEPTH_STENCIL:	return "GL_DEPTH_STENCIL";
570		default:				return DE_NULL;
571	}
572}
573
574const char* getInvalidateAttachmentName (int value)
575{
576	switch (value)
577	{
578		case GL_COLOR:						return "GL_COLOR";
579		case GL_DEPTH:						return "GL_DEPTH";
580		case GL_STENCIL:					return "GL_STENCIL";
581		case GL_COLOR_ATTACHMENT0:			return "GL_COLOR_ATTACHMENT0";
582		case GL_COLOR_ATTACHMENT1:			return "GL_COLOR_ATTACHMENT1";
583		case GL_COLOR_ATTACHMENT2:			return "GL_COLOR_ATTACHMENT2";
584		case GL_COLOR_ATTACHMENT3:			return "GL_COLOR_ATTACHMENT3";
585		case GL_COLOR_ATTACHMENT4:			return "GL_COLOR_ATTACHMENT4";
586		case GL_COLOR_ATTACHMENT5:			return "GL_COLOR_ATTACHMENT5";
587		case GL_COLOR_ATTACHMENT6:			return "GL_COLOR_ATTACHMENT6";
588		case GL_COLOR_ATTACHMENT7:			return "GL_COLOR_ATTACHMENT7";
589		case GL_DEPTH_ATTACHMENT:			return "GL_DEPTH_ATTACHMENT";
590		case GL_STENCIL_ATTACHMENT:			return "GL_STENCIL_ATTACHMENT";
591		case GL_DEPTH_STENCIL_ATTACHMENT:	return "GL_DEPTH_STENCIL_ATTACHMENT";
592		default:							return DE_NULL;
593	}
594}
595
596const char* getDrawReadBufferName (int value)
597{
598	switch (value)
599	{
600		case GL_COLOR:						return "GL_COLOR";
601		case GL_DEPTH:						return "GL_DEPTH";
602		case GL_STENCIL:					return "GL_STENCIL";
603		case GL_BACK:						return "GL_BACK";
604		case GL_NONE:						return "GL_NONE";
605		case GL_COLOR_ATTACHMENT0:			return "GL_COLOR_ATTACHMENT0";
606		case GL_COLOR_ATTACHMENT1:			return "GL_COLOR_ATTACHMENT1";
607		case GL_COLOR_ATTACHMENT2:			return "GL_COLOR_ATTACHMENT2";
608		case GL_COLOR_ATTACHMENT3:			return "GL_COLOR_ATTACHMENT3";
609		case GL_COLOR_ATTACHMENT4:			return "GL_COLOR_ATTACHMENT4";
610		case GL_COLOR_ATTACHMENT5:			return "GL_COLOR_ATTACHMENT5";
611		case GL_COLOR_ATTACHMENT6:			return "GL_COLOR_ATTACHMENT6";
612		case GL_COLOR_ATTACHMENT7:			return "GL_COLOR_ATTACHMENT7";
613		case GL_DEPTH_ATTACHMENT:			return "GL_DEPTH_ATTACHMENT";
614		case GL_STENCIL_ATTACHMENT:			return "GL_STENCIL_ATTACHMENT";
615		case GL_DEPTH_STENCIL_ATTACHMENT:	return "GL_DEPTH_STENCIL_ATTACHMENT";
616		default:							return DE_NULL;
617	}
618}
619
620const char* getTextureTargetName (int value)
621{
622	switch (value)
623	{
624		case GL_TEXTURE_1D:						return "GL_TEXTURE_1D";
625		case GL_TEXTURE_2D:						return "GL_TEXTURE_2D";
626		case GL_TEXTURE_CUBE_MAP:				return "GL_TEXTURE_CUBE_MAP";
627		case GL_TEXTURE_CUBE_MAP_POSITIVE_X:	return "GL_TEXTURE_CUBE_MAP_POSITIVE_X";
628		case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:	return "GL_TEXTURE_CUBE_MAP_NEGATIVE_X";
629		case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:	return "GL_TEXTURE_CUBE_MAP_POSITIVE_Y";
630		case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:	return "GL_TEXTURE_CUBE_MAP_NEGATIVE_Y";
631		case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:	return "GL_TEXTURE_CUBE_MAP_POSITIVE_Z";
632		case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:	return "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z";
633		case GL_TEXTURE_3D:						return "GL_TEXTURE_3D";
634		case GL_TEXTURE_2D_ARRAY:				return "GL_TEXTURE_2D_ARRAY";
635		case GL_TEXTURE_2D_MULTISAMPLE:			return "GL_TEXTURE_2D_MULTISAMPLE";
636		case GL_TEXTURE_2D_MULTISAMPLE_ARRAY:	return "GL_TEXTURE_2D_MULTISAMPLE_ARRAY";
637		case GL_TEXTURE_BUFFER:					return "GL_TEXTURE_BUFFER";
638		case GL_TEXTURE_CUBE_MAP_ARRAY:			return "GL_TEXTURE_CUBE_MAP_ARRAY";
639		default:								return DE_NULL;
640	}
641}
642
643const char* getTextureParameterName (int value)
644{
645	switch (value)
646	{
647		case GL_TEXTURE_WRAP_S:				return "GL_TEXTURE_WRAP_S";
648		case GL_TEXTURE_WRAP_T:				return "GL_TEXTURE_WRAP_T";
649		case GL_TEXTURE_WRAP_R:				return "GL_TEXTURE_WRAP_R";
650		case GL_TEXTURE_BASE_LEVEL:			return "GL_TEXTURE_BASE_LEVEL";
651		case GL_TEXTURE_MAX_LEVEL:			return "GL_TEXTURE_MAX_LEVEL";
652		case GL_TEXTURE_COMPARE_MODE:		return "GL_TEXTURE_COMPARE_MODE";
653		case GL_TEXTURE_COMPARE_FUNC:		return "GL_TEXTURE_COMPARE_FUNC";
654		case GL_TEXTURE_MAX_LOD:			return "GL_TEXTURE_MAX_LOD";
655		case GL_TEXTURE_MIN_LOD:			return "GL_TEXTURE_MIN_LOD";
656		case GL_TEXTURE_SWIZZLE_R:			return "GL_TEXTURE_SWIZZLE_R";
657		case GL_TEXTURE_SWIZZLE_G:			return "GL_TEXTURE_SWIZZLE_G";
658		case GL_TEXTURE_SWIZZLE_B:			return "GL_TEXTURE_SWIZZLE_B";
659		case GL_TEXTURE_SWIZZLE_A:			return "GL_TEXTURE_SWIZZLE_A";
660		case GL_TEXTURE_MIN_FILTER:			return "GL_TEXTURE_MIN_FILTER";
661		case GL_TEXTURE_MAG_FILTER:			return "GL_TEXTURE_MAG_FILTER";
662		case GL_DEPTH_STENCIL_TEXTURE_MODE:	return "GL_DEPTH_STENCIL_TEXTURE_MODE";
663		case GL_TEXTURE_SRGB_DECODE_EXT:	return "GL_TEXTURE_SRGB_DECODE_EXT";
664		case GL_TEXTURE_BORDER_COLOR:		return "GL_TEXTURE_BORDER_COLOR";
665		case GL_TEXTURE_IMMUTABLE_LEVELS:	return "GL_TEXTURE_IMMUTABLE_LEVELS";
666		case GL_TEXTURE_IMMUTABLE_FORMAT:	return "GL_TEXTURE_IMMUTABLE_FORMAT";
667		default:							return DE_NULL;
668	}
669}
670
671const char* getTextureLevelParameterName (int value)
672{
673	switch (value)
674	{
675		case GL_TEXTURE_SAMPLES:					return "GL_TEXTURE_SAMPLES";
676		case GL_TEXTURE_FIXED_SAMPLE_LOCATIONS:		return "GL_TEXTURE_FIXED_SAMPLE_LOCATIONS";
677		case GL_TEXTURE_WIDTH:						return "GL_TEXTURE_WIDTH";
678		case GL_TEXTURE_HEIGHT:						return "GL_TEXTURE_HEIGHT";
679		case GL_TEXTURE_DEPTH:						return "GL_TEXTURE_DEPTH";
680		case GL_TEXTURE_INTERNAL_FORMAT:			return "GL_TEXTURE_INTERNAL_FORMAT";
681		case GL_TEXTURE_RED_SIZE:					return "GL_TEXTURE_RED_SIZE";
682		case GL_TEXTURE_GREEN_SIZE:					return "GL_TEXTURE_GREEN_SIZE";
683		case GL_TEXTURE_BLUE_SIZE:					return "GL_TEXTURE_BLUE_SIZE";
684		case GL_TEXTURE_ALPHA_SIZE:					return "GL_TEXTURE_ALPHA_SIZE";
685		case GL_TEXTURE_DEPTH_SIZE:					return "GL_TEXTURE_DEPTH_SIZE";
686		case GL_TEXTURE_STENCIL_SIZE:				return "GL_TEXTURE_STENCIL_SIZE";
687		case GL_TEXTURE_SHARED_SIZE:				return "GL_TEXTURE_SHARED_SIZE";
688		case GL_TEXTURE_RED_TYPE:					return "GL_TEXTURE_RED_TYPE";
689		case GL_TEXTURE_GREEN_TYPE:					return "GL_TEXTURE_GREEN_TYPE";
690		case GL_TEXTURE_BLUE_TYPE:					return "GL_TEXTURE_BLUE_TYPE";
691		case GL_TEXTURE_ALPHA_TYPE:					return "GL_TEXTURE_ALPHA_TYPE";
692		case GL_TEXTURE_DEPTH_TYPE:					return "GL_TEXTURE_DEPTH_TYPE";
693		case GL_TEXTURE_COMPRESSED:					return "GL_TEXTURE_COMPRESSED";
694		case GL_TEXTURE_BUFFER_DATA_STORE_BINDING:	return "GL_TEXTURE_BUFFER_DATA_STORE_BINDING";
695		case GL_TEXTURE_BUFFER_OFFSET:				return "GL_TEXTURE_BUFFER_OFFSET";
696		case GL_TEXTURE_BUFFER_SIZE:				return "GL_TEXTURE_BUFFER_SIZE";
697		default:									return DE_NULL;
698	}
699}
700
701const char* getRepeatModeName (int value)
702{
703	switch (value)
704	{
705		case GL_REPEAT:				return "GL_REPEAT";
706		case GL_CLAMP_TO_EDGE:		return "GL_CLAMP_TO_EDGE";
707		case GL_MIRRORED_REPEAT:	return "GL_MIRRORED_REPEAT";
708		case GL_CLAMP_TO_BORDER:	return "GL_CLAMP_TO_BORDER";
709		default:					return DE_NULL;
710	}
711}
712
713const char* getTextureFilterName (int value)
714{
715	switch (value)
716	{
717		case GL_NEAREST:				return "GL_NEAREST";
718		case GL_LINEAR:					return "GL_LINEAR";
719		case GL_NEAREST_MIPMAP_NEAREST:	return "GL_NEAREST_MIPMAP_NEAREST";
720		case GL_LINEAR_MIPMAP_NEAREST:	return "GL_LINEAR_MIPMAP_NEAREST";
721		case GL_NEAREST_MIPMAP_LINEAR:	return "GL_NEAREST_MIPMAP_LINEAR";
722		case GL_LINEAR_MIPMAP_LINEAR:	return "GL_LINEAR_MIPMAP_LINEAR";
723		default:						return DE_NULL;
724	}
725}
726
727const char* getTextureWrapModeName (int value)
728{
729	switch (value)
730	{
731		case GL_REPEAT:				return "GL_REPEAT";
732		case GL_CLAMP_TO_EDGE:		return "GL_CLAMP_TO_EDGE";
733		case GL_MIRRORED_REPEAT:	return "GL_MIRRORED_REPEAT";
734		default:					return DE_NULL;
735	}
736}
737
738const char* getTextureSwizzleName (int value)
739{
740	switch (value)
741	{
742		case GL_RED:	return "GL_RED";
743		case GL_GREEN:	return "GL_GREEN";
744		case GL_BLUE:	return "GL_BLUE";
745		case GL_ALPHA:	return "GL_ALPHA";
746		case GL_ZERO:	return "GL_ZERO";
747		case GL_ONE:	return "GL_ONE";
748		default:		return DE_NULL;
749	}
750}
751
752const char* getTextureCompareModeName (int value)
753{
754	switch (value)
755	{
756		case GL_NONE:					return "GL_NONE";
757		case GL_COMPARE_REF_TO_TEXTURE:	return "GL_COMPARE_REF_TO_TEXTURE";
758		default:						return DE_NULL;
759	}
760}
761
762const char* getCubeMapFaceName (int value)
763{
764	switch (value)
765	{
766		case GL_TEXTURE_CUBE_MAP_POSITIVE_X:	return "GL_TEXTURE_CUBE_MAP_POSITIVE_X";
767		case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:	return "GL_TEXTURE_CUBE_MAP_NEGATIVE_X";
768		case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:	return "GL_TEXTURE_CUBE_MAP_POSITIVE_Y";
769		case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:	return "GL_TEXTURE_CUBE_MAP_NEGATIVE_Y";
770		case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:	return "GL_TEXTURE_CUBE_MAP_POSITIVE_Z";
771		case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:	return "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z";
772		default:								return DE_NULL;
773	}
774}
775
776const char* getTextureDepthStencilModeName (int value)
777{
778	switch (value)
779	{
780		case GL_DEPTH_COMPONENT:	return "GL_DEPTH_COMPONENT";
781		case GL_STENCIL_INDEX:		return "GL_STENCIL_INDEX";
782		default:					return DE_NULL;
783	}
784}
785
786const char* getPixelStoreParameterName (int value)
787{
788	switch (value)
789	{
790		case GL_UNPACK_ALIGNMENT:		return "GL_UNPACK_ALIGNMENT";
791		case GL_UNPACK_IMAGE_HEIGHT:	return "GL_UNPACK_IMAGE_HEIGHT";
792		case GL_UNPACK_ROW_LENGTH:		return "GL_UNPACK_ROW_LENGTH";
793		case GL_UNPACK_SKIP_IMAGES:		return "GL_UNPACK_SKIP_IMAGES";
794		case GL_UNPACK_SKIP_ROWS:		return "GL_UNPACK_SKIP_ROWS";
795		case GL_UNPACK_SKIP_PIXELS:		return "GL_UNPACK_SKIP_PIXELS";
796		case GL_PACK_ROW_LENGTH:		return "GL_PACK_ROW_LENGTH";
797		case GL_PACK_SKIP_ROWS:			return "GL_PACK_SKIP_ROWS";
798		case GL_PACK_SKIP_PIXELS:		return "GL_PACK_SKIP_PIXELS";
799		default:						return DE_NULL;
800	}
801}
802
803const char* getPixelFormatName (int value)
804{
805	switch (value)
806	{
807		case GL_LUMINANCE:			return "GL_LUMINANCE";
808		case GL_LUMINANCE_ALPHA:	return "GL_LUMINANCE_ALPHA";
809		case GL_ALPHA:				return "GL_ALPHA";
810		case GL_RGB:				return "GL_RGB";
811		case GL_RGBA:				return "GL_RGBA";
812		case GL_RGBA4:				return "GL_RGBA4";
813		case GL_RGB5_A1:			return "GL_RGB5_A1";
814		case GL_RGB565:				return "GL_RGB565";
815		case GL_DEPTH_COMPONENT16:	return "GL_DEPTH_COMPONENT16";
816		case GL_STENCIL_INDEX8:		return "GL_STENCIL_INDEX8";
817		case GL_RG:					return "GL_RG";
818		case GL_RED:				return "GL_RED";
819		case GL_RGBA_INTEGER:		return "GL_RGBA_INTEGER";
820		case GL_RGB_INTEGER:		return "GL_RGB_INTEGER";
821		case GL_RG_INTEGER:			return "GL_RG_INTEGER";
822		case GL_RED_INTEGER:		return "GL_RED_INTEGER";
823		case GL_DEPTH_COMPONENT:	return "GL_DEPTH_COMPONENT";
824		case GL_DEPTH_STENCIL:		return "GL_DEPTH_STENCIL";
825		case GL_RGBA32F:			return "GL_RGBA32F";
826		case GL_RGBA32I:			return "GL_RGBA32I";
827		case GL_RGBA32UI:			return "GL_RGBA32UI";
828		case GL_RGBA16:				return "GL_RGBA16";
829		case GL_RGBA16_SNORM:		return "GL_RGBA16_SNORM";
830		case GL_RGBA16F:			return "GL_RGBA16F";
831		case GL_RGBA16I:			return "GL_RGBA16I";
832		case GL_RGBA16UI:			return "GL_RGBA16UI";
833		case GL_RGBA8:				return "GL_RGBA8";
834		case GL_RGBA8I:				return "GL_RGBA8I";
835		case GL_RGBA8UI:			return "GL_RGBA8UI";
836		case GL_SRGB8_ALPHA8:		return "GL_SRGB8_ALPHA8";
837		case GL_RGB10_A2:			return "GL_RGB10_A2";
838		case GL_RGB10_A2UI:			return "GL_RGB10_A2UI";
839		case GL_RGBA8_SNORM:		return "GL_RGBA8_SNORM";
840		case GL_RGB8:				return "GL_RGB8";
841		case GL_R11F_G11F_B10F:		return "GL_R11F_G11F_B10F";
842		case GL_RGB32F:				return "GL_RGB32F";
843		case GL_RGB32I:				return "GL_RGB32I";
844		case GL_RGB32UI:			return "GL_RGB32UI";
845		case GL_RGB16:				return "GL_RGB16";
846		case GL_RGB16_SNORM:		return "GL_RGB16_SNORM";
847		case GL_RGB16F:				return "GL_RGB16F";
848		case GL_RGB16I:				return "GL_RGB16I";
849		case GL_RGB16UI:			return "GL_RGB16UI";
850		case GL_RGB8_SNORM:			return "GL_RGB8_SNORM";
851		case GL_RGB8I:				return "GL_RGB8I";
852		case GL_RGB8UI:				return "GL_RGB8UI";
853		case GL_SRGB8:				return "GL_SRGB8";
854		case GL_RGB9_E5:			return "GL_RGB9_E5";
855		case GL_RG32F:				return "GL_RG32F";
856		case GL_RG32I:				return "GL_RG32I";
857		case GL_RG32UI:				return "GL_RG32UI";
858		case GL_RG16:				return "GL_RG16";
859		case GL_RG16_SNORM:			return "GL_RG16_SNORM";
860		case GL_RG16F:				return "GL_RG16F";
861		case GL_RG16I:				return "GL_RG16I";
862		case GL_RG16UI:				return "GL_RG16UI";
863		case GL_RG8:				return "GL_RG8";
864		case GL_RG8I:				return "GL_RG8I";
865		case GL_RG8UI:				return "GL_RG8UI";
866		case GL_RG8_SNORM:			return "GL_RG8_SNORM";
867		case GL_R32F:				return "GL_R32F";
868		case GL_R32I:				return "GL_R32I";
869		case GL_R32UI:				return "GL_R32UI";
870		case GL_R16:				return "GL_R16";
871		case GL_R16_SNORM:			return "GL_R16_SNORM";
872		case GL_R16F:				return "GL_R16F";
873		case GL_R16I:				return "GL_R16I";
874		case GL_R16UI:				return "GL_R16UI";
875		case GL_R8:					return "GL_R8";
876		case GL_R8I:				return "GL_R8I";
877		case GL_R8UI:				return "GL_R8UI";
878		case GL_R8_SNORM:			return "GL_R8_SNORM";
879		case GL_DEPTH_COMPONENT32F:	return "GL_DEPTH_COMPONENT32F";
880		case GL_DEPTH_COMPONENT24:	return "GL_DEPTH_COMPONENT24";
881		case GL_DEPTH32F_STENCIL8:	return "GL_DEPTH32F_STENCIL8";
882		case GL_DEPTH24_STENCIL8:	return "GL_DEPTH24_STENCIL8";
883		case GL_RGB10:				return "GL_RGB10";
884		case GL_DEPTH_COMPONENT32:	return "GL_DEPTH_COMPONENT32";
885		case GL_SRGB:				return "GL_SRGB";
886		case GL_SRGB_ALPHA:			return "GL_SRGB_ALPHA";
887		case GL_SR8_EXT:			return "GL_SR8_EXT";
888		case GL_SRG8_EXT:			return "GL_SRG8_EXT";
889		case GL_BGRA:				return "GL_BGRA";
890		default:					return DE_NULL;
891	}
892}
893
894const char* getCompressedTexFormatName (int value)
895{
896	switch (value)
897	{
898		case GL_COMPRESSED_R11_EAC:							return "GL_COMPRESSED_R11_EAC";
899		case GL_COMPRESSED_SIGNED_R11_EAC:					return "GL_COMPRESSED_SIGNED_R11_EAC";
900		case GL_COMPRESSED_RG11_EAC:						return "GL_COMPRESSED_RG11_EAC";
901		case GL_COMPRESSED_SIGNED_RG11_EAC:					return "GL_COMPRESSED_SIGNED_RG11_EAC";
902		case GL_COMPRESSED_RGB8_ETC2:						return "GL_COMPRESSED_RGB8_ETC2";
903		case GL_COMPRESSED_SRGB8_ETC2:						return "GL_COMPRESSED_SRGB8_ETC2";
904		case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:	return "GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2";
905		case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:	return "GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2";
906		case GL_COMPRESSED_RGBA8_ETC2_EAC:					return "GL_COMPRESSED_RGBA8_ETC2_EAC";
907		case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:			return "GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC";
908		case GL_COMPRESSED_RGBA_ASTC_4x4_KHR:				return "GL_COMPRESSED_RGBA_ASTC_4x4_KHR";
909		case GL_COMPRESSED_RGBA_ASTC_5x4_KHR:				return "GL_COMPRESSED_RGBA_ASTC_5x4_KHR";
910		case GL_COMPRESSED_RGBA_ASTC_5x5_KHR:				return "GL_COMPRESSED_RGBA_ASTC_5x5_KHR";
911		case GL_COMPRESSED_RGBA_ASTC_6x5_KHR:				return "GL_COMPRESSED_RGBA_ASTC_6x5_KHR";
912		case GL_COMPRESSED_RGBA_ASTC_6x6_KHR:				return "GL_COMPRESSED_RGBA_ASTC_6x6_KHR";
913		case GL_COMPRESSED_RGBA_ASTC_8x5_KHR:				return "GL_COMPRESSED_RGBA_ASTC_8x5_KHR";
914		case GL_COMPRESSED_RGBA_ASTC_8x6_KHR:				return "GL_COMPRESSED_RGBA_ASTC_8x6_KHR";
915		case GL_COMPRESSED_RGBA_ASTC_8x8_KHR:				return "GL_COMPRESSED_RGBA_ASTC_8x8_KHR";
916		case GL_COMPRESSED_RGBA_ASTC_10x5_KHR:				return "GL_COMPRESSED_RGBA_ASTC_10x5_KHR";
917		case GL_COMPRESSED_RGBA_ASTC_10x6_KHR:				return "GL_COMPRESSED_RGBA_ASTC_10x6_KHR";
918		case GL_COMPRESSED_RGBA_ASTC_10x8_KHR:				return "GL_COMPRESSED_RGBA_ASTC_10x8_KHR";
919		case GL_COMPRESSED_RGBA_ASTC_10x10_KHR:				return "GL_COMPRESSED_RGBA_ASTC_10x10_KHR";
920		case GL_COMPRESSED_RGBA_ASTC_12x10_KHR:				return "GL_COMPRESSED_RGBA_ASTC_12x10_KHR";
921		case GL_COMPRESSED_RGBA_ASTC_12x12_KHR:				return "GL_COMPRESSED_RGBA_ASTC_12x12_KHR";
922		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR";
923		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR";
924		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR";
925		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR";
926		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR";
927		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR";
928		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR";
929		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR";
930		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR";
931		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR";
932		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR";
933		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR";
934		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR";
935		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR";
936		case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:				return "GL_COMPRESSED_RGB_S3TC_DXT1_EXT";
937		case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:				return "GL_COMPRESSED_RGBA_S3TC_DXT1_EXT";
938		case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT:				return "GL_COMPRESSED_RGBA_S3TC_DXT3_EXT";
939		case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT:				return "GL_COMPRESSED_RGBA_S3TC_DXT5_EXT";
940		case GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG:			return "GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG";
941		case GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG:			return "GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG";
942		case GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:			return "GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG";
943		case GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:			return "GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG";
944		default:											return DE_NULL;
945	}
946}
947
948const char* getShaderVarTypeName (int value)
949{
950	switch (value)
951	{
952		case GL_FLOAT:										return "GL_FLOAT";
953		case GL_FLOAT_VEC2:									return "GL_FLOAT_VEC2";
954		case GL_FLOAT_VEC3:									return "GL_FLOAT_VEC3";
955		case GL_FLOAT_VEC4:									return "GL_FLOAT_VEC4";
956		case GL_INT:										return "GL_INT";
957		case GL_INT_VEC2:									return "GL_INT_VEC2";
958		case GL_INT_VEC3:									return "GL_INT_VEC3";
959		case GL_INT_VEC4:									return "GL_INT_VEC4";
960		case GL_UNSIGNED_INT:								return "GL_UNSIGNED_INT";
961		case GL_UNSIGNED_INT_VEC2:							return "GL_UNSIGNED_INT_VEC2";
962		case GL_UNSIGNED_INT_VEC3:							return "GL_UNSIGNED_INT_VEC3";
963		case GL_UNSIGNED_INT_VEC4:							return "GL_UNSIGNED_INT_VEC4";
964		case GL_BOOL:										return "GL_BOOL";
965		case GL_BOOL_VEC2:									return "GL_BOOL_VEC2";
966		case GL_BOOL_VEC3:									return "GL_BOOL_VEC3";
967		case GL_BOOL_VEC4:									return "GL_BOOL_VEC4";
968		case GL_FLOAT_MAT2:									return "GL_FLOAT_MAT2";
969		case GL_FLOAT_MAT3:									return "GL_FLOAT_MAT3";
970		case GL_FLOAT_MAT4:									return "GL_FLOAT_MAT4";
971		case GL_FLOAT_MAT2x3:								return "GL_FLOAT_MAT2x3";
972		case GL_FLOAT_MAT2x4:								return "GL_FLOAT_MAT2x4";
973		case GL_FLOAT_MAT3x2:								return "GL_FLOAT_MAT3x2";
974		case GL_FLOAT_MAT3x4:								return "GL_FLOAT_MAT3x4";
975		case GL_FLOAT_MAT4x2:								return "GL_FLOAT_MAT4x2";
976		case GL_FLOAT_MAT4x3:								return "GL_FLOAT_MAT4x3";
977		case GL_SAMPLER_2D:									return "GL_SAMPLER_2D";
978		case GL_SAMPLER_3D:									return "GL_SAMPLER_3D";
979		case GL_SAMPLER_CUBE:								return "GL_SAMPLER_CUBE";
980		case GL_SAMPLER_2D_SHADOW:							return "GL_SAMPLER_2D_SHADOW";
981		case GL_SAMPLER_2D_ARRAY:							return "GL_SAMPLER_2D_ARRAY";
982		case GL_SAMPLER_2D_ARRAY_SHADOW:					return "GL_SAMPLER_2D_ARRAY_SHADOW";
983		case GL_SAMPLER_CUBE_SHADOW:						return "GL_SAMPLER_CUBE_SHADOW";
984		case GL_INT_SAMPLER_2D:								return "GL_INT_SAMPLER_2D";
985		case GL_INT_SAMPLER_3D:								return "GL_INT_SAMPLER_3D";
986		case GL_INT_SAMPLER_CUBE:							return "GL_INT_SAMPLER_CUBE";
987		case GL_INT_SAMPLER_2D_ARRAY:						return "GL_INT_SAMPLER_2D_ARRAY";
988		case GL_UNSIGNED_INT_SAMPLER_2D:					return "GL_UNSIGNED_INT_SAMPLER_2D";
989		case GL_UNSIGNED_INT_SAMPLER_3D:					return "GL_UNSIGNED_INT_SAMPLER_3D";
990		case GL_UNSIGNED_INT_SAMPLER_CUBE:					return "GL_UNSIGNED_INT_SAMPLER_CUBE";
991		case GL_UNSIGNED_INT_SAMPLER_2D_ARRAY:				return "GL_UNSIGNED_INT_SAMPLER_2D_ARRAY";
992		case GL_SAMPLER_2D_MULTISAMPLE:						return "GL_SAMPLER_2D_MULTISAMPLE";
993		case GL_INT_SAMPLER_2D_MULTISAMPLE:					return "GL_INT_SAMPLER_2D_MULTISAMPLE";
994		case GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE:		return "GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE";
995		case GL_IMAGE_2D:									return "GL_IMAGE_2D";
996		case GL_IMAGE_3D:									return "GL_IMAGE_3D";
997		case GL_IMAGE_CUBE:									return "GL_IMAGE_CUBE";
998		case GL_IMAGE_2D_ARRAY:								return "GL_IMAGE_2D_ARRAY";
999		case GL_INT_IMAGE_2D:								return "GL_INT_IMAGE_2D";
1000		case GL_INT_IMAGE_3D:								return "GL_INT_IMAGE_3D";
1001		case GL_INT_IMAGE_CUBE:								return "GL_INT_IMAGE_CUBE";
1002		case GL_INT_IMAGE_2D_ARRAY:							return "GL_INT_IMAGE_2D_ARRAY";
1003		case GL_UNSIGNED_INT_IMAGE_2D:						return "GL_UNSIGNED_INT_IMAGE_2D";
1004		case GL_UNSIGNED_INT_IMAGE_3D:						return "GL_UNSIGNED_INT_IMAGE_3D";
1005		case GL_UNSIGNED_INT_IMAGE_CUBE:					return "GL_UNSIGNED_INT_IMAGE_CUBE";
1006		case GL_UNSIGNED_INT_IMAGE_2D_ARRAY:				return "GL_UNSIGNED_INT_IMAGE_2D_ARRAY";
1007		case GL_UNSIGNED_INT_ATOMIC_COUNTER:				return "GL_UNSIGNED_INT_ATOMIC_COUNTER";
1008		case GL_SAMPLER_2D_MULTISAMPLE_ARRAY:				return "GL_SAMPLER_2D_MULTISAMPLE_ARRAY";
1009		case GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY:			return "GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY";
1010		case GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY:	return "GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY";
1011		case GL_SAMPLER_BUFFER:								return "GL_SAMPLER_BUFFER";
1012		case GL_INT_SAMPLER_BUFFER:							return "GL_INT_SAMPLER_BUFFER";
1013		case GL_UNSIGNED_INT_SAMPLER_BUFFER:				return "GL_UNSIGNED_INT_SAMPLER_BUFFER";
1014		case GL_IMAGE_BUFFER:								return "GL_IMAGE_BUFFER";
1015		case GL_INT_IMAGE_BUFFER:							return "GL_INT_IMAGE_BUFFER";
1016		case GL_UNSIGNED_INT_IMAGE_BUFFER:					return "GL_UNSIGNED_INT_IMAGE_BUFFER";
1017		case GL_SAMPLER_CUBE_MAP_ARRAY:						return "GL_SAMPLER_CUBE_MAP_ARRAY";
1018		case GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW:				return "GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW";
1019		case GL_INT_SAMPLER_CUBE_MAP_ARRAY:					return "GL_INT_SAMPLER_CUBE_MAP_ARRAY";
1020		case GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY:		return "GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY";
1021		case GL_IMAGE_CUBE_MAP_ARRAY:						return "GL_IMAGE_CUBE_MAP_ARRAY";
1022		case GL_INT_IMAGE_CUBE_MAP_ARRAY:					return "GL_INT_IMAGE_CUBE_MAP_ARRAY";
1023		case GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY:			return "GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY";
1024		default:											return DE_NULL;
1025	}
1026}
1027
1028const char* getShaderParamName (int value)
1029{
1030	switch (value)
1031	{
1032		case GL_SHADER_TYPE:			return "GL_SHADER_TYPE";
1033		case GL_DELETE_STATUS:			return "GL_DELETE_STATUS";
1034		case GL_COMPILE_STATUS:			return "GL_COMPILE_STATUS";
1035		case GL_INFO_LOG_LENGTH:		return "GL_INFO_LOG_LENGTH";
1036		case GL_SHADER_SOURCE_LENGTH:	return "GL_SHADER_SOURCE_LENGTH";
1037		default:						return DE_NULL;
1038	}
1039}
1040
1041const char* getVertexAttribParameterNameName (int value)
1042{
1043	switch (value)
1044	{
1045		case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:	return "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING";
1046		case GL_VERTEX_ATTRIB_ARRAY_ENABLED:		return "GL_VERTEX_ATTRIB_ARRAY_ENABLED";
1047		case GL_VERTEX_ATTRIB_ARRAY_SIZE:			return "GL_VERTEX_ATTRIB_ARRAY_SIZE";
1048		case GL_VERTEX_ATTRIB_ARRAY_STRIDE:			return "GL_VERTEX_ATTRIB_ARRAY_STRIDE";
1049		case GL_VERTEX_ATTRIB_ARRAY_TYPE:			return "GL_VERTEX_ATTRIB_ARRAY_TYPE";
1050		case GL_VERTEX_ATTRIB_ARRAY_NORMALIZED:		return "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED";
1051		case GL_VERTEX_ATTRIB_ARRAY_INTEGER:		return "GL_VERTEX_ATTRIB_ARRAY_INTEGER";
1052		case GL_VERTEX_ATTRIB_ARRAY_DIVISOR:		return "GL_VERTEX_ATTRIB_ARRAY_DIVISOR";
1053		case GL_CURRENT_VERTEX_ATTRIB:				return "GL_CURRENT_VERTEX_ATTRIB";
1054		case GL_VERTEX_ATTRIB_BINDING:				return "GL_VERTEX_ATTRIB_BINDING";
1055		case GL_VERTEX_ATTRIB_RELATIVE_OFFSET:		return "GL_VERTEX_ATTRIB_RELATIVE_OFFSET";
1056		default:									return DE_NULL;
1057	}
1058}
1059
1060const char* getBooleanName (int value)
1061{
1062	switch (value)
1063	{
1064		case GL_FALSE:	return "GL_FALSE";
1065		case GL_TRUE:	return "GL_TRUE";
1066		default:		return DE_NULL;
1067	}
1068}
1069
1070const char* getGettableStateName (int value)
1071{
1072	switch (value)
1073	{
1074		case GL_ELEMENT_ARRAY_BUFFER_BINDING:						return "GL_ELEMENT_ARRAY_BUFFER_BINDING";
1075		case GL_ARRAY_BUFFER_BINDING:								return "GL_ARRAY_BUFFER_BINDING";
1076		case GL_VERTEX_ARRAY_BINDING:								return "GL_VERTEX_ARRAY_BINDING";
1077		case GL_VIEWPORT:											return "GL_VIEWPORT";
1078		case GL_DEPTH_RANGE:										return "GL_DEPTH_RANGE";
1079		case GL_TRANSFORM_FEEDBACK_BINDING:							return "GL_TRANSFORM_FEEDBACK_BINDING";
1080		case GL_LINE_WIDTH:											return "GL_LINE_WIDTH";
1081		case GL_CULL_FACE_MODE:										return "GL_CULL_FACE_MODE";
1082		case GL_FRONT_FACE:											return "GL_FRONT_FACE";
1083		case GL_POLYGON_OFFSET_FACTOR:								return "GL_POLYGON_OFFSET_FACTOR";
1084		case GL_POLYGON_OFFSET_UNITS:								return "GL_POLYGON_OFFSET_UNITS";
1085		case GL_SAMPLE_COVERAGE_VALUE:								return "GL_SAMPLE_COVERAGE_VALUE";
1086		case GL_SAMPLE_COVERAGE_INVERT:								return "GL_SAMPLE_COVERAGE_INVERT";
1087		case GL_ACTIVE_TEXTURE:										return "GL_ACTIVE_TEXTURE";
1088		case GL_TEXTURE_BINDING_1D:									return "GL_TEXTURE_BINDING_1D";
1089		case GL_TEXTURE_BINDING_2D:									return "GL_TEXTURE_BINDING_2D";
1090		case GL_TEXTURE_BINDING_3D:									return "GL_TEXTURE_BINDING_3D";
1091		case GL_TEXTURE_BINDING_2D_ARRAY:							return "GL_TEXTURE_BINDING_2D_ARRAY";
1092		case GL_TEXTURE_BINDING_CUBE_MAP:							return "GL_TEXTURE_BINDING_CUBE_MAP";
1093		case GL_SAMPLER_BINDING:									return "GL_SAMPLER_BINDING";
1094		case GL_SCISSOR_BOX:										return "GL_SCISSOR_BOX";
1095		case GL_STENCIL_FUNC:										return "GL_STENCIL_FUNC";
1096		case GL_STENCIL_VALUE_MASK:									return "GL_STENCIL_VALUE_MASK";
1097		case GL_STENCIL_REF:										return "GL_STENCIL_REF";
1098		case GL_STENCIL_FAIL:										return "GL_STENCIL_FAIL";
1099		case GL_STENCIL_PASS_DEPTH_FAIL:							return "GL_STENCIL_PASS_DEPTH_FAIL";
1100		case GL_STENCIL_PASS_DEPTH_PASS:							return "GL_STENCIL_PASS_DEPTH_PASS";
1101		case GL_STENCIL_BACK_FUNC:									return "GL_STENCIL_BACK_FUNC";
1102		case GL_STENCIL_BACK_VALUE_MASK:							return "GL_STENCIL_BACK_VALUE_MASK";
1103		case GL_STENCIL_BACK_REF:									return "GL_STENCIL_BACK_REF";
1104		case GL_STENCIL_BACK_FAIL:									return "GL_STENCIL_BACK_FAIL";
1105		case GL_STENCIL_BACK_PASS_DEPTH_FAIL:						return "GL_STENCIL_BACK_PASS_DEPTH_FAIL";
1106		case GL_STENCIL_BACK_PASS_DEPTH_PASS:						return "GL_STENCIL_BACK_PASS_DEPTH_PASS";
1107		case GL_DEPTH_FUNC:											return "GL_DEPTH_FUNC";
1108		case GL_BLEND_SRC_RGB:										return "GL_BLEND_SRC_RGB";
1109		case GL_BLEND_SRC_ALPHA:									return "GL_BLEND_SRC_ALPHA";
1110		case GL_BLEND_DST_RGB:										return "GL_BLEND_DST_RGB";
1111		case GL_BLEND_DST_ALPHA:									return "GL_BLEND_DST_ALPHA";
1112		case GL_BLEND_EQUATION_RGB:									return "GL_BLEND_EQUATION_RGB";
1113		case GL_BLEND_EQUATION_ALPHA:								return "GL_BLEND_EQUATION_ALPHA";
1114		case GL_BLEND_COLOR:										return "GL_BLEND_COLOR";
1115		case GL_COLOR_WRITEMASK:									return "GL_COLOR_WRITEMASK";
1116		case GL_DEPTH_WRITEMASK:									return "GL_DEPTH_WRITEMASK";
1117		case GL_STENCIL_WRITEMASK:									return "GL_STENCIL_WRITEMASK";
1118		case GL_STENCIL_BACK_WRITEMASK:								return "GL_STENCIL_BACK_WRITEMASK";
1119		case GL_COLOR_CLEAR_VALUE:									return "GL_COLOR_CLEAR_VALUE";
1120		case GL_DEPTH_CLEAR_VALUE:									return "GL_DEPTH_CLEAR_VALUE";
1121		case GL_STENCIL_CLEAR_VALUE:								return "GL_STENCIL_CLEAR_VALUE";
1122		case GL_DRAW_FRAMEBUFFER_BINDING:							return "GL_DRAW_FRAMEBUFFER_BINDING";
1123		case GL_READ_FRAMEBUFFER_BINDING:							return "GL_READ_FRAMEBUFFER_BINDING";
1124		case GL_RENDERBUFFER_BINDING:								return "GL_RENDERBUFFER_BINDING";
1125		case GL_DRAW_BUFFER0:										return "GL_DRAW_BUFFER0";
1126		case GL_DRAW_BUFFER1:										return "GL_DRAW_BUFFER1";
1127		case GL_DRAW_BUFFER2:										return "GL_DRAW_BUFFER2";
1128		case GL_DRAW_BUFFER3:										return "GL_DRAW_BUFFER3";
1129		case GL_DRAW_BUFFER4:										return "GL_DRAW_BUFFER4";
1130		case GL_DRAW_BUFFER5:										return "GL_DRAW_BUFFER5";
1131		case GL_DRAW_BUFFER6:										return "GL_DRAW_BUFFER6";
1132		case GL_DRAW_BUFFER7:										return "GL_DRAW_BUFFER7";
1133		case GL_DRAW_BUFFER8:										return "GL_DRAW_BUFFER8";
1134		case GL_DRAW_BUFFER9:										return "GL_DRAW_BUFFER9";
1135		case GL_DRAW_BUFFER10:										return "GL_DRAW_BUFFER10";
1136		case GL_DRAW_BUFFER11:										return "GL_DRAW_BUFFER11";
1137		case GL_DRAW_BUFFER12:										return "GL_DRAW_BUFFER12";
1138		case GL_DRAW_BUFFER13:										return "GL_DRAW_BUFFER13";
1139		case GL_DRAW_BUFFER14:										return "GL_DRAW_BUFFER14";
1140		case GL_DRAW_BUFFER15:										return "GL_DRAW_BUFFER15";
1141		case GL_READ_BUFFER:										return "GL_READ_BUFFER";
1142		case GL_UNPACK_IMAGE_HEIGHT:								return "GL_UNPACK_IMAGE_HEIGHT";
1143		case GL_UNPACK_SKIP_IMAGES:									return "GL_UNPACK_SKIP_IMAGES";
1144		case GL_UNPACK_ROW_LENGTH:									return "GL_UNPACK_ROW_LENGTH";
1145		case GL_UNPACK_SKIP_ROWS:									return "GL_UNPACK_SKIP_ROWS";
1146		case GL_UNPACK_SKIP_PIXELS:									return "GL_UNPACK_SKIP_PIXELS";
1147		case GL_UNPACK_ALIGNMENT:									return "GL_UNPACK_ALIGNMENT";
1148		case GL_PACK_ROW_LENGTH:									return "GL_PACK_ROW_LENGTH";
1149		case GL_PACK_SKIP_ROWS:										return "GL_PACK_SKIP_ROWS";
1150		case GL_PACK_SKIP_PIXELS:									return "GL_PACK_SKIP_PIXELS";
1151		case GL_PACK_ALIGNMENT:										return "GL_PACK_ALIGNMENT";
1152		case GL_PIXEL_PACK_BUFFER_BINDING:							return "GL_PIXEL_PACK_BUFFER_BINDING";
1153		case GL_PIXEL_UNPACK_BUFFER_BINDING:						return "GL_PIXEL_UNPACK_BUFFER_BINDING";
1154		case GL_CURRENT_PROGRAM:									return "GL_CURRENT_PROGRAM";
1155		case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:					return "GL_TRANSFORM_FEEDBACK_BUFFER_BINDING";
1156		case GL_TRANSFORM_FEEDBACK_PAUSED:							return "GL_TRANSFORM_FEEDBACK_PAUSED";
1157		case GL_TRANSFORM_FEEDBACK_ACTIVE:							return "GL_TRANSFORM_FEEDBACK_ACTIVE";
1158		case GL_UNIFORM_BUFFER_BINDING:								return "GL_UNIFORM_BUFFER_BINDING";
1159		case GL_GENERATE_MIPMAP_HINT:								return "GL_GENERATE_MIPMAP_HINT";
1160		case GL_FRAGMENT_SHADER_DERIVATIVE_HINT:					return "GL_FRAGMENT_SHADER_DERIVATIVE_HINT";
1161		case GL_MAX_ELEMENT_INDEX:									return "GL_MAX_ELEMENT_INDEX";
1162		case GL_SUBPIXEL_BITS:										return "GL_SUBPIXEL_BITS";
1163		case GL_MAX_3D_TEXTURE_SIZE:								return "GL_MAX_3D_TEXTURE_SIZE";
1164		case GL_MAX_TEXTURE_SIZE:									return "GL_MAX_TEXTURE_SIZE";
1165		case GL_MAX_ARRAY_TEXTURE_LAYERS:							return "GL_MAX_ARRAY_TEXTURE_LAYERS";
1166		case GL_MAX_TEXTURE_LOD_BIAS:								return "GL_MAX_TEXTURE_LOD_BIAS";
1167		case GL_MAX_CUBE_MAP_TEXTURE_SIZE:							return "GL_MAX_CUBE_MAP_TEXTURE_SIZE";
1168		case GL_MAX_RENDERBUFFER_SIZE:								return "GL_MAX_RENDERBUFFER_SIZE";
1169		case GL_MAX_DRAW_BUFFERS:									return "GL_MAX_DRAW_BUFFERS";
1170		case GL_MAX_COLOR_ATTACHMENTS:								return "GL_MAX_COLOR_ATTACHMENTS";
1171		case GL_MAX_VIEWPORT_DIMS:									return "GL_MAX_VIEWPORT_DIMS";
1172		case GL_ALIASED_POINT_SIZE_RANGE:							return "GL_ALIASED_POINT_SIZE_RANGE";
1173		case GL_ALIASED_LINE_WIDTH_RANGE:							return "GL_ALIASED_LINE_WIDTH_RANGE";
1174		case GL_MAX_ELEMENTS_INDICES:								return "GL_MAX_ELEMENTS_INDICES";
1175		case GL_MAX_ELEMENTS_VERTICES:								return "GL_MAX_ELEMENTS_VERTICES";
1176		case GL_COMPRESSED_TEXTURE_FORMATS:							return "GL_COMPRESSED_TEXTURE_FORMATS";
1177		case GL_NUM_COMPRESSED_TEXTURE_FORMATS:						return "GL_NUM_COMPRESSED_TEXTURE_FORMATS";
1178		case GL_PROGRAM_BINARY_FORMATS:								return "GL_PROGRAM_BINARY_FORMATS";
1179		case GL_NUM_PROGRAM_BINARY_FORMATS:							return "GL_NUM_PROGRAM_BINARY_FORMATS";
1180		case GL_SHADER_BINARY_FORMATS:								return "GL_SHADER_BINARY_FORMATS";
1181		case GL_NUM_SHADER_BINARY_FORMATS:							return "GL_NUM_SHADER_BINARY_FORMATS";
1182		case GL_SHADER_COMPILER:									return "GL_SHADER_COMPILER";
1183		case GL_MAX_SERVER_WAIT_TIMEOUT:							return "GL_MAX_SERVER_WAIT_TIMEOUT";
1184		case GL_NUM_EXTENSIONS:										return "GL_NUM_EXTENSIONS";
1185		case GL_MAJOR_VERSION:										return "GL_MAJOR_VERSION";
1186		case GL_MINOR_VERSION:										return "GL_MINOR_VERSION";
1187		case GL_MAX_VERTEX_ATTRIBS:									return "GL_MAX_VERTEX_ATTRIBS";
1188		case GL_MAX_VERTEX_UNIFORM_COMPONENTS:						return "GL_MAX_VERTEX_UNIFORM_COMPONENTS";
1189		case GL_MAX_VERTEX_UNIFORM_VECTORS:							return "GL_MAX_VERTEX_UNIFORM_VECTORS";
1190		case GL_MAX_VERTEX_UNIFORM_BLOCKS:							return "GL_MAX_VERTEX_UNIFORM_BLOCKS";
1191		case GL_MAX_VERTEX_OUTPUT_COMPONENTS:						return "GL_MAX_VERTEX_OUTPUT_COMPONENTS";
1192		case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS:						return "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS";
1193		case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS:					return "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS";
1194		case GL_MAX_FRAGMENT_UNIFORM_VECTORS:						return "GL_MAX_FRAGMENT_UNIFORM_VECTORS";
1195		case GL_MAX_FRAGMENT_UNIFORM_BLOCKS:						return "GL_MAX_FRAGMENT_UNIFORM_BLOCKS";
1196		case GL_MAX_FRAGMENT_INPUT_COMPONENTS:						return "GL_MAX_FRAGMENT_INPUT_COMPONENTS";
1197		case GL_MAX_TEXTURE_IMAGE_UNITS:							return "GL_MAX_TEXTURE_IMAGE_UNITS";
1198		case GL_MIN_PROGRAM_TEXEL_OFFSET:							return "GL_MIN_PROGRAM_TEXEL_OFFSET";
1199		case GL_MAX_PROGRAM_TEXEL_OFFSET:							return "GL_MAX_PROGRAM_TEXEL_OFFSET";
1200		case GL_MAX_UNIFORM_BUFFER_BINDINGS:						return "GL_MAX_UNIFORM_BUFFER_BINDINGS";
1201		case GL_MAX_UNIFORM_BLOCK_SIZE:								return "GL_MAX_UNIFORM_BLOCK_SIZE";
1202		case GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT:					return "GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT";
1203		case GL_MAX_COMBINED_UNIFORM_BLOCKS:						return "GL_MAX_COMBINED_UNIFORM_BLOCKS";
1204		case GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS:				return "GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS";
1205		case GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS:			return "GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS";
1206		case GL_MAX_VARYING_COMPONENTS:								return "GL_MAX_VARYING_COMPONENTS";
1207		case GL_MAX_VARYING_VECTORS:								return "GL_MAX_VARYING_VECTORS";
1208		case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:					return "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS";
1209		case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:		return "GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS";
1210		case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:			return "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS";
1211		case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:			return "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS";
1212		case GL_SAMPLE_BUFFERS:										return "GL_SAMPLE_BUFFERS";
1213		case GL_SAMPLES:											return "GL_SAMPLES";
1214		case GL_MAX_SAMPLES:										return "GL_MAX_SAMPLES";
1215		case GL_DEPTH_BITS:											return "GL_DEPTH_BITS";
1216		case GL_STENCIL_BITS:										return "GL_STENCIL_BITS";
1217		case GL_IMPLEMENTATION_COLOR_READ_TYPE:						return "GL_IMPLEMENTATION_COLOR_READ_TYPE";
1218		case GL_IMPLEMENTATION_COLOR_READ_FORMAT:					return "GL_IMPLEMENTATION_COLOR_READ_FORMAT";
1219		case GL_COPY_READ_BUFFER_BINDING:							return "GL_COPY_READ_BUFFER_BINDING";
1220		case GL_COPY_WRITE_BUFFER_BINDING:							return "GL_COPY_WRITE_BUFFER_BINDING";
1221		case GL_RED_BITS:											return "GL_RED_BITS";
1222		case GL_GREEN_BITS:											return "GL_GREEN_BITS";
1223		case GL_BLUE_BITS:											return "GL_BLUE_BITS";
1224		case GL_ALPHA_BITS:											return "GL_ALPHA_BITS";
1225		case GL_MAX_COLOR_TEXTURE_SAMPLES:							return "GL_MAX_COLOR_TEXTURE_SAMPLES";
1226		case GL_TIMESTAMP:											return "GL_TIMESTAMP";
1227		case GL_MAX_DEPTH_TEXTURE_SAMPLES:							return "GL_MAX_DEPTH_TEXTURE_SAMPLES";
1228		case GL_MAX_INTEGER_SAMPLES:								return "GL_MAX_INTEGER_SAMPLES";
1229		case GL_TEXTURE_BINDING_2D_MULTISAMPLE:						return "GL_TEXTURE_BINDING_2D_MULTISAMPLE";
1230		case GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY:				return "GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY";
1231		case GL_MAX_VERTEX_ATTRIB_STRIDE:							return "GL_MAX_VERTEX_ATTRIB_STRIDE";
1232		case GL_MAX_VERTEX_ATTRIB_BINDINGS:							return "GL_MAX_VERTEX_ATTRIB_BINDINGS";
1233		case GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET:					return "GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET";
1234		case GL_MIN_SAMPLE_SHADING_VALUE:							return "GL_MIN_SAMPLE_SHADING_VALUE";
1235		case GL_FRAGMENT_INTERPOLATION_OFFSET_BITS:					return "GL_FRAGMENT_INTERPOLATION_OFFSET_BITS";
1236		case GL_MAX_FRAGMENT_INTERPOLATION_OFFSET:					return "GL_MAX_FRAGMENT_INTERPOLATION_OFFSET";
1237		case GL_MIN_FRAGMENT_INTERPOLATION_OFFSET:					return "GL_MIN_FRAGMENT_INTERPOLATION_OFFSET";
1238		case GL_MAX_GEOMETRY_SHADER_INVOCATIONS:					return "GL_MAX_GEOMETRY_SHADER_INVOCATIONS";
1239		case GL_LAYER_PROVOKING_VERTEX:								return "GL_LAYER_PROVOKING_VERTEX";
1240		case GL_MAX_GEOMETRY_UNIFORM_COMPONENTS:					return "GL_MAX_GEOMETRY_UNIFORM_COMPONENTS";
1241		case GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS:					return "GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS";
1242		case GL_MAX_GEOMETRY_UNIFORM_BLOCKS:						return "GL_MAX_GEOMETRY_UNIFORM_BLOCKS";
1243		case GL_MAX_GEOMETRY_INPUT_COMPONENTS:						return "GL_MAX_GEOMETRY_INPUT_COMPONENTS";
1244		case GL_MAX_GEOMETRY_OUTPUT_COMPONENTS:						return "GL_MAX_GEOMETRY_OUTPUT_COMPONENTS";
1245		case GL_MAX_GEOMETRY_IMAGE_UNIFORMS:						return "GL_MAX_GEOMETRY_IMAGE_UNIFORMS";
1246		case GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS:					return "GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS";
1247		case GL_MAX_GEOMETRY_OUTPUT_VERTICES:						return "GL_MAX_GEOMETRY_OUTPUT_VERTICES";
1248		case GL_MAX_GEOMETRY_ATOMIC_COUNTERS:						return "GL_MAX_GEOMETRY_ATOMIC_COUNTERS";
1249		case GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS:				return "GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS";
1250		case GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS:				return "GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS";
1251		case GL_MAX_FRAMEBUFFER_LAYERS:								return "GL_MAX_FRAMEBUFFER_LAYERS";
1252		case GL_PROVOKING_VERTEX:									return "GL_PROVOKING_VERTEX";
1253		case GL_PRIMITIVE_RESTART_INDEX:							return "GL_PRIMITIVE_RESTART_INDEX";
1254		case GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS:				return "GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS";
1255		case GL_MAX_FRAGMENT_ATOMIC_COUNTERS:						return "GL_MAX_FRAGMENT_ATOMIC_COUNTERS";
1256		case GL_MAX_FRAGMENT_IMAGE_UNIFORMS:						return "GL_MAX_FRAGMENT_IMAGE_UNIFORMS";
1257		case GL_MAX_COMPUTE_UNIFORM_BLOCKS:							return "GL_MAX_COMPUTE_UNIFORM_BLOCKS";
1258		case GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS:					return "GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS";
1259		case GL_MAX_COMPUTE_UNIFORM_COMPONENTS:						return "GL_MAX_COMPUTE_UNIFORM_COMPONENTS";
1260		case GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS:					return "GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS";
1261		case GL_MAX_COMPUTE_ATOMIC_COUNTERS:						return "GL_MAX_COMPUTE_ATOMIC_COUNTERS";
1262		case GL_MAX_COMPUTE_IMAGE_UNIFORMS:							return "GL_MAX_COMPUTE_IMAGE_UNIFORMS";
1263		case GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS:					return "GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS";
1264		case GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS:					return "GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS";
1265		case GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS:			return "GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS";
1266		case GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS:					return "GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS";
1267		case GL_MAX_VERTEX_ATOMIC_COUNTERS:							return "GL_MAX_VERTEX_ATOMIC_COUNTERS";
1268		case GL_MAX_VERTEX_IMAGE_UNIFORMS:							return "GL_MAX_VERTEX_IMAGE_UNIFORMS";
1269		case GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS:					return "GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS";
1270		case GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES:				return "GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES";
1271		case GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS:					return "GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS";
1272		case GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE:						return "GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE";
1273		case GL_MAX_IMAGE_UNITS:									return "GL_MAX_IMAGE_UNITS";
1274		case GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS:				return "GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS";
1275		case GL_MAX_COMBINED_IMAGE_UNIFORMS:						return "GL_MAX_COMBINED_IMAGE_UNIFORMS";
1276		case GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS:					return "GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS";
1277		case GL_MAX_SHADER_STORAGE_BLOCK_SIZE:						return "GL_MAX_SHADER_STORAGE_BLOCK_SIZE";
1278		case GL_MAX_COMBINED_ATOMIC_COUNTERS:						return "GL_MAX_COMBINED_ATOMIC_COUNTERS";
1279		case GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS:					return "GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS";
1280		case GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT:				return "GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT";
1281		case GL_PRIMITIVE_BOUNDING_BOX_EXT:							return "GL_PRIMITIVE_BOUNDING_BOX_EXT";
1282		case GL_DRAW_INDIRECT_BUFFER_BINDING:						return "GL_DRAW_INDIRECT_BUFFER_BINDING";
1283		case GL_MAX_SAMPLE_MASK_WORDS:								return "GL_MAX_SAMPLE_MASK_WORDS";
1284		case GL_PROGRAM_PIPELINE_BINDING:							return "GL_PROGRAM_PIPELINE_BINDING";
1285		case GL_ATOMIC_COUNTER_BUFFER_BINDING:						return "GL_ATOMIC_COUNTER_BUFFER_BINDING";
1286		case GL_SHADER_STORAGE_BUFFER_BINDING:						return "GL_SHADER_STORAGE_BUFFER_BINDING";
1287		case GL_DISPATCH_INDIRECT_BUFFER_BINDING:					return "GL_DISPATCH_INDIRECT_BUFFER_BINDING";
1288		case GL_MAX_FRAMEBUFFER_WIDTH:								return "GL_MAX_FRAMEBUFFER_WIDTH";
1289		case GL_MAX_FRAMEBUFFER_HEIGHT:								return "GL_MAX_FRAMEBUFFER_HEIGHT";
1290		case GL_MAX_FRAMEBUFFER_SAMPLES:							return "GL_MAX_FRAMEBUFFER_SAMPLES";
1291		case GL_MAX_COMPUTE_SHARED_MEMORY_SIZE:						return "GL_MAX_COMPUTE_SHARED_MEMORY_SIZE";
1292		case GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET:					return "GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET";
1293		case GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET:					return "GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET";
1294		case GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS:					return "GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS";
1295		case GL_MAX_UNIFORM_LOCATIONS:								return "GL_MAX_UNIFORM_LOCATIONS";
1296		case GL_MAX_DEBUG_MESSAGE_LENGTH:							return "GL_MAX_DEBUG_MESSAGE_LENGTH";
1297		case GL_MAX_DEBUG_LOGGED_MESSAGES:							return "GL_MAX_DEBUG_LOGGED_MESSAGES";
1298		case GL_MAX_DEBUG_GROUP_STACK_DEPTH:						return "GL_MAX_DEBUG_GROUP_STACK_DEPTH";
1299		case GL_MAX_LABEL_LENGTH:									return "GL_MAX_LABEL_LENGTH";
1300		case GL_CONTEXT_FLAGS:										return "GL_CONTEXT_FLAGS";
1301		case GL_DEBUG_LOGGED_MESSAGES:								return "GL_DEBUG_LOGGED_MESSAGES";
1302		case GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH:					return "GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH";
1303		case GL_DEBUG_GROUP_STACK_DEPTH:							return "GL_DEBUG_GROUP_STACK_DEPTH";
1304		case GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS:			return "GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS";
1305		case GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT:					return "GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT";
1306		case GL_TEXTURE_BUFFER_BINDING:								return "GL_TEXTURE_BUFFER_BINDING";
1307		case GL_TEXTURE_BINDING_BUFFER:								return "GL_TEXTURE_BINDING_BUFFER";
1308		case GL_MAX_TEXTURE_BUFFER_SIZE:							return "GL_MAX_TEXTURE_BUFFER_SIZE";
1309		case GL_MAX_PATCH_VERTICES:									return "GL_MAX_PATCH_VERTICES";
1310		case GL_MAX_TESS_GEN_LEVEL:									return "GL_MAX_TESS_GEN_LEVEL";
1311		case GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS:				return "GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS";
1312		case GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS:				return "GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS";
1313		case GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS:				return "GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS";
1314		case GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS:			return "GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS";
1315		case GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS:					return "GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS";
1316		case GL_MAX_TESS_PATCH_COMPONENTS:							return "GL_MAX_TESS_PATCH_COMPONENTS";
1317		case GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS:			return "GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS";
1318		case GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS:				return "GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS";
1319		case GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS:					return "GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS";
1320		case GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS:					return "GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS";
1321		case GL_MAX_TESS_CONTROL_INPUT_COMPONENTS:					return "GL_MAX_TESS_CONTROL_INPUT_COMPONENTS";
1322		case GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS:				return "GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS";
1323		case GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS:			return "GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS";
1324		case GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS:			return "GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS";
1325		case GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS:					return "GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS";
1326		case GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS:				return "GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS";
1327		case GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS:					return "GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS";
1328		case GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS:					return "GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS";
1329		case GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS:	return "GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS";
1330		case GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS:			return "GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS";
1331		case GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS:		return "GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS";
1332		case GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS:				return "GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS";
1333		case GL_PATCH_VERTICES:										return "GL_PATCH_VERTICES";
1334		case GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED:			return "GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED";
1335		case GL_TEXTURE_2D:											return "GL_TEXTURE_2D";
1336		case GL_CULL_FACE:											return "GL_CULL_FACE";
1337		case GL_BLEND:												return "GL_BLEND";
1338		case GL_DITHER:												return "GL_DITHER";
1339		case GL_STENCIL_TEST:										return "GL_STENCIL_TEST";
1340		case GL_DEPTH_TEST:											return "GL_DEPTH_TEST";
1341		case GL_SCISSOR_TEST:										return "GL_SCISSOR_TEST";
1342		case GL_POLYGON_OFFSET_FILL:								return "GL_POLYGON_OFFSET_FILL";
1343		case GL_SAMPLE_ALPHA_TO_COVERAGE:							return "GL_SAMPLE_ALPHA_TO_COVERAGE";
1344		case GL_SAMPLE_COVERAGE:									return "GL_SAMPLE_COVERAGE";
1345		case GL_PRIMITIVE_RESTART_FIXED_INDEX:						return "GL_PRIMITIVE_RESTART_FIXED_INDEX";
1346		case GL_RASTERIZER_DISCARD:									return "GL_RASTERIZER_DISCARD";
1347		case GL_FRAMEBUFFER_SRGB:									return "GL_FRAMEBUFFER_SRGB";
1348		case GL_SAMPLE_SHADING:										return "GL_SAMPLE_SHADING";
1349		case GL_DEPTH_CLAMP:										return "GL_DEPTH_CLAMP";
1350		case GL_PRIMITIVE_RESTART:									return "GL_PRIMITIVE_RESTART";
1351		case GL_SAMPLE_MASK:										return "GL_SAMPLE_MASK";
1352		case GL_DEBUG_OUTPUT:										return "GL_DEBUG_OUTPUT";
1353		case GL_DEBUG_OUTPUT_SYNCHRONOUS:							return "GL_DEBUG_OUTPUT_SYNCHRONOUS";
1354		case GL_BLEND_ADVANCED_COHERENT_KHR:						return "GL_BLEND_ADVANCED_COHERENT_KHR";
1355		default:													return DE_NULL;
1356	}
1357}
1358
1359const char* getGettableIndexedStateName (int value)
1360{
1361	switch (value)
1362	{
1363		case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:	return "GL_TRANSFORM_FEEDBACK_BUFFER_BINDING";
1364		case GL_UNIFORM_BUFFER_BINDING:				return "GL_UNIFORM_BUFFER_BINDING";
1365		case GL_TRANSFORM_FEEDBACK_BUFFER_START:	return "GL_TRANSFORM_FEEDBACK_BUFFER_START";
1366		case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE:		return "GL_TRANSFORM_FEEDBACK_BUFFER_SIZE";
1367		case GL_UNIFORM_BUFFER_START:				return "GL_UNIFORM_BUFFER_START";
1368		case GL_UNIFORM_BUFFER_SIZE:				return "GL_UNIFORM_BUFFER_SIZE";
1369		case GL_SAMPLE_MASK_VALUE:					return "GL_SAMPLE_MASK_VALUE";
1370		case GL_VERTEX_BINDING_OFFSET:				return "GL_VERTEX_BINDING_OFFSET";
1371		case GL_VERTEX_BINDING_STRIDE:				return "GL_VERTEX_BINDING_STRIDE";
1372		case GL_VERTEX_BINDING_DIVISOR:				return "GL_VERTEX_BINDING_DIVISOR";
1373		case GL_VERTEX_BINDING_BUFFER:				return "GL_VERTEX_BINDING_BUFFER";
1374		case GL_MAX_COMPUTE_WORK_GROUP_COUNT:		return "GL_MAX_COMPUTE_WORK_GROUP_COUNT";
1375		case GL_MAX_COMPUTE_WORK_GROUP_SIZE:		return "GL_MAX_COMPUTE_WORK_GROUP_SIZE";
1376		case GL_ATOMIC_COUNTER_BUFFER_BINDING:		return "GL_ATOMIC_COUNTER_BUFFER_BINDING";
1377		case GL_ATOMIC_COUNTER_BUFFER_START:		return "GL_ATOMIC_COUNTER_BUFFER_START";
1378		case GL_ATOMIC_COUNTER_BUFFER_SIZE:			return "GL_ATOMIC_COUNTER_BUFFER_SIZE";
1379		case GL_SHADER_STORAGE_BUFFER_BINDING:		return "GL_SHADER_STORAGE_BUFFER_BINDING";
1380		case GL_SHADER_STORAGE_BUFFER_START:		return "GL_SHADER_STORAGE_BUFFER_START";
1381		case GL_SHADER_STORAGE_BUFFER_SIZE:			return "GL_SHADER_STORAGE_BUFFER_SIZE";
1382		case GL_IMAGE_BINDING_NAME:					return "GL_IMAGE_BINDING_NAME";
1383		case GL_IMAGE_BINDING_LEVEL:				return "GL_IMAGE_BINDING_LEVEL";
1384		case GL_IMAGE_BINDING_LAYERED:				return "GL_IMAGE_BINDING_LAYERED";
1385		case GL_IMAGE_BINDING_LAYER:				return "GL_IMAGE_BINDING_LAYER";
1386		case GL_IMAGE_BINDING_ACCESS:				return "GL_IMAGE_BINDING_ACCESS";
1387		case GL_IMAGE_BINDING_FORMAT:				return "GL_IMAGE_BINDING_FORMAT";
1388		case GL_BLEND_EQUATION_RGB:					return "GL_BLEND_EQUATION_RGB";
1389		case GL_BLEND_EQUATION_ALPHA:				return "GL_BLEND_EQUATION_ALPHA";
1390		case GL_BLEND_SRC_RGB:						return "GL_BLEND_SRC_RGB";
1391		case GL_BLEND_SRC_ALPHA:					return "GL_BLEND_SRC_ALPHA";
1392		case GL_BLEND_DST_RGB:						return "GL_BLEND_DST_RGB";
1393		case GL_BLEND_DST_ALPHA:					return "GL_BLEND_DST_ALPHA";
1394		case GL_COLOR_WRITEMASK:					return "GL_COLOR_WRITEMASK";
1395		default:									return DE_NULL;
1396	}
1397}
1398
1399const char* getGettableStringName (int value)
1400{
1401	switch (value)
1402	{
1403		case GL_EXTENSIONS:					return "GL_EXTENSIONS";
1404		case GL_RENDERER:					return "GL_RENDERER";
1405		case GL_SHADING_LANGUAGE_VERSION:	return "GL_SHADING_LANGUAGE_VERSION";
1406		case GL_VENDOR:						return "GL_VENDOR";
1407		case GL_VERSION:					return "GL_VERSION";
1408		default:							return DE_NULL;
1409	}
1410}
1411
1412const char* getPointerStateName (int value)
1413{
1414	switch (value)
1415	{
1416		case GL_DEBUG_CALLBACK_FUNCTION:	return "GL_DEBUG_CALLBACK_FUNCTION";
1417		case GL_DEBUG_CALLBACK_USER_PARAM:	return "GL_DEBUG_CALLBACK_USER_PARAM";
1418		default:							return DE_NULL;
1419	}
1420}
1421
1422const char* getInternalFormatParameterName (int value)
1423{
1424	switch (value)
1425	{
1426		case GL_NUM_SAMPLE_COUNTS:	return "GL_NUM_SAMPLE_COUNTS";
1427		case GL_SAMPLES:			return "GL_SAMPLES";
1428		default:					return DE_NULL;
1429	}
1430}
1431
1432const char* getInternalFormatTargetName (int value)
1433{
1434	switch (value)
1435	{
1436		case GL_RENDERBUFFER:					return "GL_RENDERBUFFER";
1437		case GL_TEXTURE_2D_MULTISAMPLE:			return "GL_TEXTURE_2D_MULTISAMPLE";
1438		case GL_TEXTURE_2D_MULTISAMPLE_ARRAY:	return "GL_TEXTURE_2D_MULTISAMPLE_ARRAY";
1439		case GL_TEXTURE_2D:						return "GL_TEXTURE_2D";
1440		case GL_TEXTURE_3D:						return "GL_TEXTURE_3D";
1441		case GL_TEXTURE_2D_ARRAY:				return "GL_TEXTURE_2D_ARRAY";
1442		case GL_TEXTURE_CUBE_MAP:				return "GL_TEXTURE_CUBE_MAP";
1443		default:								return DE_NULL;
1444	}
1445}
1446
1447const char* getMultisampleParameterName (int value)
1448{
1449	switch (value)
1450	{
1451		case GL_SAMPLE_POSITION:	return "GL_SAMPLE_POSITION";
1452		default:					return DE_NULL;
1453	}
1454}
1455
1456const char* getQueryTargetName (int value)
1457{
1458	switch (value)
1459	{
1460		case GL_SAMPLES_PASSED:							return "GL_SAMPLES_PASSED";
1461		case GL_ANY_SAMPLES_PASSED:						return "GL_ANY_SAMPLES_PASSED";
1462		case GL_PRIMITIVES_GENERATED:					return "GL_PRIMITIVES_GENERATED";
1463		case GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:	return "GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN";
1464		case GL_TIME_ELAPSED:							return "GL_TIME_ELAPSED";
1465		default:										return DE_NULL;
1466	}
1467}
1468
1469const char* getQueryParamName (int value)
1470{
1471	switch (value)
1472	{
1473		case GL_CURRENT_QUERY:		return "GL_CURRENT_QUERY";
1474		case GL_QUERY_COUNTER_BITS:	return "GL_QUERY_COUNTER_BITS";
1475		default:					return DE_NULL;
1476	}
1477}
1478
1479const char* getQueryObjectParamName (int value)
1480{
1481	switch (value)
1482	{
1483		case GL_QUERY_RESULT:			return "GL_QUERY_RESULT";
1484		case GL_QUERY_RESULT_AVAILABLE:	return "GL_QUERY_RESULT_AVAILABLE";
1485		default:						return DE_NULL;
1486	}
1487}
1488
1489const char* getImageAccessName (int value)
1490{
1491	switch (value)
1492	{
1493		case GL_READ_ONLY:	return "GL_READ_ONLY";
1494		case GL_WRITE_ONLY:	return "GL_WRITE_ONLY";
1495		case GL_READ_WRITE:	return "GL_READ_WRITE";
1496		default:			return DE_NULL;
1497	}
1498}
1499
1500const char* getProgramInterfaceName (int value)
1501{
1502	switch (value)
1503	{
1504		case GL_UNIFORM:					return "GL_UNIFORM";
1505		case GL_UNIFORM_BLOCK:				return "GL_UNIFORM_BLOCK";
1506		case GL_ATOMIC_COUNTER_BUFFER:		return "GL_ATOMIC_COUNTER_BUFFER";
1507		case GL_PROGRAM_INPUT:				return "GL_PROGRAM_INPUT";
1508		case GL_PROGRAM_OUTPUT:				return "GL_PROGRAM_OUTPUT";
1509		case GL_TRANSFORM_FEEDBACK_VARYING:	return "GL_TRANSFORM_FEEDBACK_VARYING";
1510		case GL_BUFFER_VARIABLE:			return "GL_BUFFER_VARIABLE";
1511		case GL_SHADER_STORAGE_BLOCK:		return "GL_SHADER_STORAGE_BLOCK";
1512		default:							return DE_NULL;
1513	}
1514}
1515
1516const char* getProgramResourcePropertyName (int value)
1517{
1518	switch (value)
1519	{
1520		case GL_ACTIVE_VARIABLES:						return "GL_ACTIVE_VARIABLES";
1521		case GL_BUFFER_BINDING:							return "GL_BUFFER_BINDING";
1522		case GL_NUM_ACTIVE_VARIABLES:					return "GL_NUM_ACTIVE_VARIABLES";
1523		case GL_ARRAY_SIZE:								return "GL_ARRAY_SIZE";
1524		case GL_ARRAY_STRIDE:							return "GL_ARRAY_STRIDE";
1525		case GL_BLOCK_INDEX:							return "GL_BLOCK_INDEX";
1526		case GL_IS_ROW_MAJOR:							return "GL_IS_ROW_MAJOR";
1527		case GL_MATRIX_STRIDE:							return "GL_MATRIX_STRIDE";
1528		case GL_ATOMIC_COUNTER_BUFFER_INDEX:			return "GL_ATOMIC_COUNTER_BUFFER_INDEX";
1529		case GL_BUFFER_DATA_SIZE:						return "GL_BUFFER_DATA_SIZE";
1530		case GL_LOCATION:								return "GL_LOCATION";
1531		case GL_NAME_LENGTH:							return "GL_NAME_LENGTH";
1532		case GL_OFFSET:									return "GL_OFFSET";
1533		case GL_REFERENCED_BY_VERTEX_SHADER:			return "GL_REFERENCED_BY_VERTEX_SHADER";
1534		case GL_REFERENCED_BY_FRAGMENT_SHADER:			return "GL_REFERENCED_BY_FRAGMENT_SHADER";
1535		case GL_REFERENCED_BY_COMPUTE_SHADER:			return "GL_REFERENCED_BY_COMPUTE_SHADER";
1536		case GL_REFERENCED_BY_GEOMETRY_SHADER:			return "GL_REFERENCED_BY_GEOMETRY_SHADER";
1537		case GL_REFERENCED_BY_TESS_CONTROL_SHADER:		return "GL_REFERENCED_BY_TESS_CONTROL_SHADER";
1538		case GL_REFERENCED_BY_TESS_EVALUATION_SHADER:	return "GL_REFERENCED_BY_TESS_EVALUATION_SHADER";
1539		case GL_TOP_LEVEL_ARRAY_SIZE:					return "GL_TOP_LEVEL_ARRAY_SIZE";
1540		case GL_TOP_LEVEL_ARRAY_STRIDE:					return "GL_TOP_LEVEL_ARRAY_STRIDE";
1541		case GL_TYPE:									return "GL_TYPE";
1542		case GL_IS_PER_PATCH:							return "GL_IS_PER_PATCH";
1543		default:										return DE_NULL;
1544	}
1545}
1546
1547const char* getPrecisionFormatTypeName (int value)
1548{
1549	switch (value)
1550	{
1551		case GL_LOW_FLOAT:		return "GL_LOW_FLOAT";
1552		case GL_MEDIUM_FLOAT:	return "GL_MEDIUM_FLOAT";
1553		case GL_HIGH_FLOAT:		return "GL_HIGH_FLOAT";
1554		case GL_LOW_INT:		return "GL_LOW_INT";
1555		case GL_MEDIUM_INT:		return "GL_MEDIUM_INT";
1556		case GL_HIGH_INT:		return "GL_HIGH_INT";
1557		default:				return DE_NULL;
1558	}
1559}
1560
1561const char* getTransformFeedbackTargetName (int value)
1562{
1563	switch (value)
1564	{
1565		case GL_TRANSFORM_FEEDBACK:	return "GL_TRANSFORM_FEEDBACK";
1566		default:					return DE_NULL;
1567	}
1568}
1569
1570const char* getProvokingVertexName (int value)
1571{
1572	switch (value)
1573	{
1574		case GL_FIRST_VERTEX_CONVENTION:	return "GL_FIRST_VERTEX_CONVENTION";
1575		case GL_LAST_VERTEX_CONVENTION:		return "GL_LAST_VERTEX_CONVENTION";
1576		case GL_UNDEFINED_VERTEX:			return "GL_UNDEFINED_VERTEX";
1577		default:							return DE_NULL;
1578	}
1579}
1580
1581const char* getDebugMessageSourceName (int value)
1582{
1583	switch (value)
1584	{
1585		case GL_DEBUG_SOURCE_API:				return "GL_DEBUG_SOURCE_API";
1586		case GL_DEBUG_SOURCE_WINDOW_SYSTEM:		return "GL_DEBUG_SOURCE_WINDOW_SYSTEM";
1587		case GL_DEBUG_SOURCE_SHADER_COMPILER:	return "GL_DEBUG_SOURCE_SHADER_COMPILER";
1588		case GL_DEBUG_SOURCE_THIRD_PARTY:		return "GL_DEBUG_SOURCE_THIRD_PARTY";
1589		case GL_DEBUG_SOURCE_APPLICATION:		return "GL_DEBUG_SOURCE_APPLICATION";
1590		case GL_DEBUG_SOURCE_OTHER:				return "GL_DEBUG_SOURCE_OTHER";
1591		case GL_DONT_CARE:						return "GL_DONT_CARE";
1592		default:								return DE_NULL;
1593	}
1594}
1595
1596const char* getDebugMessageTypeName (int value)
1597{
1598	switch (value)
1599	{
1600		case GL_DEBUG_TYPE_ERROR:				return "GL_DEBUG_TYPE_ERROR";
1601		case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR:	return "GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR";
1602		case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR:	return "GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR";
1603		case GL_DEBUG_TYPE_PORTABILITY:			return "GL_DEBUG_TYPE_PORTABILITY";
1604		case GL_DEBUG_TYPE_PERFORMANCE:			return "GL_DEBUG_TYPE_PERFORMANCE";
1605		case GL_DEBUG_TYPE_OTHER:				return "GL_DEBUG_TYPE_OTHER";
1606		case GL_DEBUG_TYPE_MARKER:				return "GL_DEBUG_TYPE_MARKER";
1607		case GL_DEBUG_TYPE_PUSH_GROUP:			return "GL_DEBUG_TYPE_PUSH_GROUP";
1608		case GL_DEBUG_TYPE_POP_GROUP:			return "GL_DEBUG_TYPE_POP_GROUP";
1609		case GL_DONT_CARE:						return "GL_DONT_CARE";
1610		default:								return DE_NULL;
1611	}
1612}
1613
1614const char* getDebugMessageSeverityName (int value)
1615{
1616	switch (value)
1617	{
1618		case GL_DEBUG_SEVERITY_HIGH:			return "GL_DEBUG_SEVERITY_HIGH";
1619		case GL_DEBUG_SEVERITY_MEDIUM:			return "GL_DEBUG_SEVERITY_MEDIUM";
1620		case GL_DEBUG_SEVERITY_LOW:				return "GL_DEBUG_SEVERITY_LOW";
1621		case GL_DEBUG_SEVERITY_NOTIFICATION:	return "GL_DEBUG_SEVERITY_NOTIFICATION";
1622		case GL_DONT_CARE:						return "GL_DONT_CARE";
1623		default:								return DE_NULL;
1624	}
1625}
1626
1627const char* getPipelineParamName (int value)
1628{
1629	switch (value)
1630	{
1631		case GL_ACTIVE_PROGRAM:			return "GL_ACTIVE_PROGRAM";
1632		case GL_INFO_LOG_LENGTH:		return "GL_INFO_LOG_LENGTH";
1633		case GL_VALIDATE_STATUS:		return "GL_VALIDATE_STATUS";
1634		case GL_VERTEX_SHADER:			return "GL_VERTEX_SHADER";
1635		case GL_FRAGMENT_SHADER:		return "GL_FRAGMENT_SHADER";
1636		case GL_COMPUTE_SHADER:			return "GL_COMPUTE_SHADER";
1637		case GL_GEOMETRY_SHADER:		return "GL_GEOMETRY_SHADER";
1638		case GL_TESS_CONTROL_SHADER:	return "GL_TESS_CONTROL_SHADER";
1639		case GL_TESS_EVALUATION_SHADER:	return "GL_TESS_EVALUATION_SHADER";
1640		default:						return DE_NULL;
1641	}
1642}
1643
1644const char* getPatchParamName (int value)
1645{
1646	switch (value)
1647	{
1648		case GL_PATCH_VERTICES:	return "GL_PATCH_VERTICES";
1649		default:				return DE_NULL;
1650	}
1651}
1652
1653tcu::Format::Bitfield<16> getBufferMaskStr (int value)
1654{
1655	static const tcu::Format::BitDesc s_desc[] =
1656	{
1657		tcu::Format::BitDesc(GL_DEPTH_BUFFER_BIT,	"GL_DEPTH_BUFFER_BIT"),
1658		tcu::Format::BitDesc(GL_STENCIL_BUFFER_BIT,	"GL_STENCIL_BUFFER_BIT"),
1659		tcu::Format::BitDesc(GL_COLOR_BUFFER_BIT,	"GL_COLOR_BUFFER_BIT"),
1660	};
1661	return tcu::Format::Bitfield<16>(value, &s_desc[0], &s_desc[DE_LENGTH_OF_ARRAY(s_desc)]);
1662}
1663
1664tcu::Format::Bitfield<16> getBufferMapFlagsStr (int value)
1665{
1666	static const tcu::Format::BitDesc s_desc[] =
1667	{
1668		tcu::Format::BitDesc(GL_MAP_READ_BIT,				"GL_MAP_READ_BIT"),
1669		tcu::Format::BitDesc(GL_MAP_WRITE_BIT,				"GL_MAP_WRITE_BIT"),
1670		tcu::Format::BitDesc(GL_MAP_INVALIDATE_RANGE_BIT,	"GL_MAP_INVALIDATE_RANGE_BIT"),
1671		tcu::Format::BitDesc(GL_MAP_INVALIDATE_BUFFER_BIT,	"GL_MAP_INVALIDATE_BUFFER_BIT"),
1672		tcu::Format::BitDesc(GL_MAP_FLUSH_EXPLICIT_BIT,		"GL_MAP_FLUSH_EXPLICIT_BIT"),
1673		tcu::Format::BitDesc(GL_MAP_UNSYNCHRONIZED_BIT,		"GL_MAP_UNSYNCHRONIZED_BIT"),
1674	};
1675	return tcu::Format::Bitfield<16>(value, &s_desc[0], &s_desc[DE_LENGTH_OF_ARRAY(s_desc)]);
1676}
1677
1678tcu::Format::Bitfield<16> getMemoryBarrierFlagsStr (int value)
1679{
1680	static const tcu::Format::BitDesc s_desc[] =
1681	{
1682		tcu::Format::BitDesc(GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT,	"GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT"),
1683		tcu::Format::BitDesc(GL_ELEMENT_ARRAY_BARRIER_BIT,			"GL_ELEMENT_ARRAY_BARRIER_BIT"),
1684		tcu::Format::BitDesc(GL_UNIFORM_BARRIER_BIT,				"GL_UNIFORM_BARRIER_BIT"),
1685		tcu::Format::BitDesc(GL_TEXTURE_FETCH_BARRIER_BIT,			"GL_TEXTURE_FETCH_BARRIER_BIT"),
1686		tcu::Format::BitDesc(GL_SHADER_IMAGE_ACCESS_BARRIER_BIT,	"GL_SHADER_IMAGE_ACCESS_BARRIER_BIT"),
1687		tcu::Format::BitDesc(GL_COMMAND_BARRIER_BIT,				"GL_COMMAND_BARRIER_BIT"),
1688		tcu::Format::BitDesc(GL_PIXEL_BUFFER_BARRIER_BIT,			"GL_PIXEL_BUFFER_BARRIER_BIT"),
1689		tcu::Format::BitDesc(GL_TEXTURE_UPDATE_BARRIER_BIT,			"GL_TEXTURE_UPDATE_BARRIER_BIT"),
1690		tcu::Format::BitDesc(GL_BUFFER_UPDATE_BARRIER_BIT,			"GL_BUFFER_UPDATE_BARRIER_BIT"),
1691		tcu::Format::BitDesc(GL_FRAMEBUFFER_BARRIER_BIT,			"GL_FRAMEBUFFER_BARRIER_BIT"),
1692		tcu::Format::BitDesc(GL_TRANSFORM_FEEDBACK_BARRIER_BIT,		"GL_TRANSFORM_FEEDBACK_BARRIER_BIT"),
1693		tcu::Format::BitDesc(GL_ATOMIC_COUNTER_BARRIER_BIT,			"GL_ATOMIC_COUNTER_BARRIER_BIT"),
1694	};
1695	return tcu::Format::Bitfield<16>(value, &s_desc[0], &s_desc[DE_LENGTH_OF_ARRAY(s_desc)]);
1696}
1697
1698tcu::Format::Bitfield<16> getShaderTypeMaskStr (int value)
1699{
1700	static const tcu::Format::BitDesc s_desc[] =
1701	{
1702		tcu::Format::BitDesc(GL_VERTEX_SHADER_BIT,			"GL_VERTEX_SHADER_BIT"),
1703		tcu::Format::BitDesc(GL_FRAGMENT_SHADER_BIT,		"GL_FRAGMENT_SHADER_BIT"),
1704		tcu::Format::BitDesc(GL_COMPUTE_SHADER_BIT,			"GL_COMPUTE_SHADER_BIT"),
1705		tcu::Format::BitDesc(GL_GEOMETRY_SHADER_BIT,		"GL_GEOMETRY_SHADER_BIT"),
1706		tcu::Format::BitDesc(GL_TESS_CONTROL_SHADER_BIT,	"GL_TESS_CONTROL_SHADER_BIT"),
1707		tcu::Format::BitDesc(GL_TESS_EVALUATION_SHADER_BIT,	"GL_TESS_EVALUATION_SHADER_BIT"),
1708	};
1709	return tcu::Format::Bitfield<16>(value, &s_desc[0], &s_desc[DE_LENGTH_OF_ARRAY(s_desc)]);
1710}
1711