1 // Copyright (c) 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 // This file is auto-generated from
6 // gpu/command_buffer/build_gles2_cmd_buffer.py
7 // It's formatted by clang-format using chromium coding style:
8 // clang-format -i -style=chromium filename
11 #ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_VALIDATION_IMPLEMENTATION_AUTOGEN_H_
12 #define GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_VALIDATION_IMPLEMENTATION_AUTOGEN_H_
14 static const GLenum valid_attachment_table[] = {
15 GL_COLOR_ATTACHMENT0, GL_DEPTH_ATTACHMENT, GL_STENCIL_ATTACHMENT, };
17 static const GLenum valid_backbuffer_attachment_table[] = {
18 GL_COLOR_EXT, GL_DEPTH_EXT, GL_STENCIL_EXT, };
20 static const GLenum valid_blit_filter_table[] = {GL_NEAREST, GL_LINEAR, };
22 static const GLenum valid_buffer_parameter_table[] = {GL_BUFFER_SIZE,
25 static const GLenum valid_buffer_target_table[] = {GL_ARRAY_BUFFER,
26 GL_ELEMENT_ARRAY_BUFFER, };
28 static const GLenum valid_buffer_usage_table[] = {
29 GL_STREAM_DRAW, GL_STATIC_DRAW, GL_DYNAMIC_DRAW, };
31 static const GLenum valid_capability_table[] = {
32 GL_BLEND, GL_CULL_FACE, GL_DEPTH_TEST,
33 GL_DITHER, GL_POLYGON_OFFSET_FILL, GL_SAMPLE_ALPHA_TO_COVERAGE,
34 GL_SAMPLE_COVERAGE, GL_SCISSOR_TEST, GL_STENCIL_TEST, };
36 static const GLenum valid_cmp_function_table[] = {
37 GL_NEVER, GL_LESS, GL_EQUAL, GL_LEQUAL,
38 GL_GREATER, GL_NOTEQUAL, GL_GEQUAL, GL_ALWAYS, };
40 static const GLenum valid_draw_mode_table[] = {
41 GL_POINTS, GL_LINE_STRIP, GL_LINE_LOOP, GL_LINES,
42 GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_TRIANGLES, };
44 static const GLenum valid_dst_blend_factor_table[] = {
46 GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR,
47 GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR,
48 GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA,
49 GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA,
50 GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR,
51 GL_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_ALPHA, };
53 static const GLenum valid_equation_table[] = {GL_FUNC_ADD, GL_FUNC_SUBTRACT,
54 GL_FUNC_REVERSE_SUBTRACT, };
56 static const GLenum valid_face_mode_table[] = {GL_CW, GL_CCW, };
58 static const GLenum valid_face_type_table[] = {GL_FRONT, GL_BACK,
61 static const GLboolean valid_false_only_table[] = {false, };
63 static const GLenum valid_frame_buffer_parameter_table[] = {
64 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE,
65 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME,
66 GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL,
67 GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE, };
69 static const GLenum valid_frame_buffer_target_table[] = {GL_FRAMEBUFFER, };
71 static const GLenum valid_g_l_state_table[] = {
73 GL_ALIASED_LINE_WIDTH_RANGE,
74 GL_ALIASED_POINT_SIZE_RANGE,
76 GL_ARRAY_BUFFER_BINDING,
78 GL_COMPRESSED_TEXTURE_FORMATS,
82 GL_ELEMENT_ARRAY_BUFFER_BINDING,
83 GL_FRAMEBUFFER_BINDING,
84 GL_GENERATE_MIPMAP_HINT,
86 GL_IMPLEMENTATION_COLOR_READ_FORMAT,
87 GL_IMPLEMENTATION_COLOR_READ_TYPE,
88 GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS,
89 GL_MAX_CUBE_MAP_TEXTURE_SIZE,
90 GL_MAX_FRAGMENT_UNIFORM_VECTORS,
91 GL_MAX_RENDERBUFFER_SIZE,
92 GL_MAX_TEXTURE_IMAGE_UNITS,
94 GL_MAX_VARYING_VECTORS,
95 GL_MAX_VERTEX_ATTRIBS,
96 GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS,
97 GL_MAX_VERTEX_UNIFORM_VECTORS,
99 GL_NUM_COMPRESSED_TEXTURE_FORMATS,
100 GL_NUM_SHADER_BINARY_FORMATS,
103 GL_RENDERBUFFER_BINDING,
105 GL_SAMPLE_COVERAGE_INVERT,
106 GL_SAMPLE_COVERAGE_VALUE,
109 GL_SHADER_BINARY_FORMATS,
113 GL_TEXTURE_BINDING_2D,
114 GL_TEXTURE_BINDING_CUBE_MAP,
116 GL_UNPACK_FLIP_Y_CHROMIUM,
117 GL_UNPACK_PREMULTIPLY_ALPHA_CHROMIUM,
118 GL_UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM,
119 #if defined(OS_CHROMEOS)
120 GL_BIND_GENERATES_RESOURCE_CHROMIUM,
122 GL_VERTEX_ARRAY_BINDING_OES,
125 GL_BLEND_EQUATION_RGB,
126 GL_BLEND_EQUATION_ALPHA,
131 GL_COLOR_CLEAR_VALUE,
132 GL_DEPTH_CLEAR_VALUE,
133 GL_STENCIL_CLEAR_VALUE,
140 GL_GENERATE_MIPMAP_HINT,
144 GL_POLYGON_OFFSET_FACTOR,
145 GL_POLYGON_OFFSET_UNITS,
146 GL_SAMPLE_COVERAGE_VALUE,
147 GL_SAMPLE_COVERAGE_INVERT,
151 GL_STENCIL_VALUE_MASK,
152 GL_STENCIL_BACK_FUNC,
154 GL_STENCIL_BACK_VALUE_MASK,
155 GL_STENCIL_WRITEMASK,
156 GL_STENCIL_BACK_WRITEMASK,
158 GL_STENCIL_PASS_DEPTH_FAIL,
159 GL_STENCIL_PASS_DEPTH_PASS,
160 GL_STENCIL_BACK_FAIL,
161 GL_STENCIL_BACK_PASS_DEPTH_FAIL,
162 GL_STENCIL_BACK_PASS_DEPTH_PASS,
168 GL_POLYGON_OFFSET_FILL,
169 GL_SAMPLE_ALPHA_TO_COVERAGE,
174 static const GLenum valid_get_max_index_type_table[] = {
175 GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT, GL_UNSIGNED_INT, };
177 static const GLenum valid_get_tex_param_target_table[] = {
178 GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP, };
180 static const GLenum valid_hint_mode_table[] = {GL_FASTEST, GL_NICEST,
183 static const GLenum valid_hint_target_table[] = {GL_GENERATE_MIPMAP_HINT, };
185 static const GLenum valid_index_type_table[] = {GL_UNSIGNED_BYTE,
186 GL_UNSIGNED_SHORT, };
188 static const GLenum valid_pixel_store_table[] = {
191 GL_UNPACK_FLIP_Y_CHROMIUM,
192 GL_UNPACK_PREMULTIPLY_ALPHA_CHROMIUM,
193 GL_UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM, };
195 static const GLint valid_pixel_store_alignment_table[] = {1, 2, 4, 8, };
197 static const GLenum valid_pixel_type_table[] = {
198 GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT_5_6_5, GL_UNSIGNED_SHORT_4_4_4_4,
199 GL_UNSIGNED_SHORT_5_5_5_1, };
201 static const GLenum valid_program_parameter_table[] = {
202 GL_DELETE_STATUS, GL_LINK_STATUS,
203 GL_VALIDATE_STATUS, GL_INFO_LOG_LENGTH,
204 GL_ATTACHED_SHADERS, GL_ACTIVE_ATTRIBUTES,
205 GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, GL_ACTIVE_UNIFORMS,
206 GL_ACTIVE_UNIFORM_MAX_LENGTH, };
208 static const GLenum valid_query_object_parameter_table[] = {
209 GL_QUERY_RESULT_EXT, GL_QUERY_RESULT_AVAILABLE_EXT, };
211 static const GLenum valid_query_parameter_table[] = {GL_CURRENT_QUERY_EXT, };
213 static const GLenum valid_query_target_table[] = {
214 GL_ANY_SAMPLES_PASSED_EXT,
215 GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT,
216 GL_COMMANDS_ISSUED_CHROMIUM,
217 GL_LATENCY_QUERY_CHROMIUM,
218 GL_ASYNC_PIXEL_UNPACK_COMPLETED_CHROMIUM,
219 GL_ASYNC_PIXEL_PACK_COMPLETED_CHROMIUM, };
221 static const GLenum valid_read_pixel_format_table[] = {GL_ALPHA, GL_RGB,
224 static const GLenum valid_read_pixel_type_table[] = {
225 GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT_5_6_5, GL_UNSIGNED_SHORT_4_4_4_4,
226 GL_UNSIGNED_SHORT_5_5_5_1, };
228 static const GLenum valid_render_buffer_format_table[] = {
229 GL_RGBA4, GL_RGB565, GL_RGB5_A1, GL_DEPTH_COMPONENT16, GL_STENCIL_INDEX8, };
231 static const GLenum valid_render_buffer_parameter_table[] = {
232 GL_RENDERBUFFER_RED_SIZE, GL_RENDERBUFFER_GREEN_SIZE,
233 GL_RENDERBUFFER_BLUE_SIZE, GL_RENDERBUFFER_ALPHA_SIZE,
234 GL_RENDERBUFFER_DEPTH_SIZE, GL_RENDERBUFFER_STENCIL_SIZE,
235 GL_RENDERBUFFER_WIDTH, GL_RENDERBUFFER_HEIGHT,
236 GL_RENDERBUFFER_INTERNAL_FORMAT, };
238 static const GLenum valid_render_buffer_target_table[] = {GL_RENDERBUFFER, };
240 static const GLenum valid_reset_status_table[] = {
241 GL_GUILTY_CONTEXT_RESET_ARB, GL_INNOCENT_CONTEXT_RESET_ARB,
242 GL_UNKNOWN_CONTEXT_RESET_ARB, };
244 static const GLenum valid_shader_parameter_table[] = {
245 GL_SHADER_TYPE, GL_DELETE_STATUS,
246 GL_COMPILE_STATUS, GL_INFO_LOG_LENGTH,
247 GL_SHADER_SOURCE_LENGTH, GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE, };
249 static const GLenum valid_shader_precision_table[] = {
250 GL_LOW_FLOAT, GL_MEDIUM_FLOAT, GL_HIGH_FLOAT,
251 GL_LOW_INT, GL_MEDIUM_INT, GL_HIGH_INT, };
253 static const GLenum valid_shader_type_table[] = {GL_VERTEX_SHADER,
254 GL_FRAGMENT_SHADER, };
256 static const GLenum valid_src_blend_factor_table[] = {
258 GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR,
259 GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR,
260 GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA,
261 GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA,
262 GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR,
263 GL_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_ALPHA,
264 GL_SRC_ALPHA_SATURATE, };
266 static const GLenum valid_stencil_op_table[] = {
267 GL_KEEP, GL_ZERO, GL_REPLACE, GL_INCR,
268 GL_INCR_WRAP, GL_DECR, GL_DECR_WRAP, GL_INVERT, };
270 static const GLenum valid_string_type_table[] = {
271 GL_VENDOR, GL_RENDERER, GL_VERSION,
272 GL_SHADING_LANGUAGE_VERSION, GL_EXTENSIONS, };
274 static const GLenum valid_texture_bind_target_table[] = {GL_TEXTURE_2D,
275 GL_TEXTURE_CUBE_MAP, };
277 static const GLint valid_texture_border_table[] = {0, };
279 static const GLenum valid_texture_format_table[] = {
280 GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_RGB, GL_RGBA, };
282 static const GLenum valid_texture_internal_format_table[] = {
283 GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_RGB, GL_RGBA, };
285 static const GLenum valid_texture_internal_format_storage_table[] = {
286 GL_RGB565, GL_RGBA4, GL_RGB5_A1, GL_ALPHA8_EXT,
287 GL_LUMINANCE8_EXT, GL_LUMINANCE8_ALPHA8_EXT, GL_RGB8_OES, GL_RGBA8_OES, };
289 static const GLenum valid_texture_mag_filter_mode_table[] = {GL_NEAREST,
292 static const GLenum valid_texture_min_filter_mode_table[] = {
293 GL_NEAREST, GL_LINEAR,
294 GL_NEAREST_MIPMAP_NEAREST, GL_LINEAR_MIPMAP_NEAREST,
295 GL_NEAREST_MIPMAP_LINEAR, GL_LINEAR_MIPMAP_LINEAR, };
297 static const GLenum valid_texture_parameter_table[] = {
298 GL_TEXTURE_MAG_FILTER, GL_TEXTURE_MIN_FILTER, GL_TEXTURE_POOL_CHROMIUM,
299 GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T, };
301 static const GLenum valid_texture_pool_table[] = {
302 GL_TEXTURE_POOL_MANAGED_CHROMIUM, GL_TEXTURE_POOL_UNMANAGED_CHROMIUM, };
304 static const GLenum valid_texture_target_table[] = {
305 GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP_POSITIVE_X,
306 GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GL_TEXTURE_CUBE_MAP_POSITIVE_Y,
307 GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, GL_TEXTURE_CUBE_MAP_POSITIVE_Z,
308 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, };
310 static const GLenum valid_texture_usage_table[] = {
311 GL_NONE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, };
313 static const GLenum valid_texture_wrap_mode_table[] = {
314 GL_CLAMP_TO_EDGE, GL_MIRRORED_REPEAT, GL_REPEAT, };
316 static const GLint valid_vertex_attrib_size_table[] = {1, 2, 3, 4, };
318 static const GLenum valid_vertex_attrib_type_table[] = {
319 GL_BYTE, GL_UNSIGNED_BYTE, GL_SHORT, GL_UNSIGNED_SHORT, GL_FLOAT, };
321 static const GLenum valid_vertex_attribute_table[] = {
322 GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING,
323 GL_VERTEX_ATTRIB_ARRAY_ENABLED, GL_VERTEX_ATTRIB_ARRAY_SIZE,
324 GL_VERTEX_ATTRIB_ARRAY_STRIDE, GL_VERTEX_ATTRIB_ARRAY_TYPE,
325 GL_CURRENT_VERTEX_ATTRIB, };
327 static const GLenum valid_vertex_pointer_table[] = {
328 GL_VERTEX_ATTRIB_ARRAY_POINTER, };
330 static const GLint valid_zero_only_table[] = {0, };
332 Validators::Validators()
333 : attachment(valid_attachment_table, arraysize(valid_attachment_table)),
334 backbuffer_attachment(valid_backbuffer_attachment_table,
335 arraysize(valid_backbuffer_attachment_table)),
336 blit_filter(valid_blit_filter_table, arraysize(valid_blit_filter_table)),
337 buffer_parameter(valid_buffer_parameter_table,
338 arraysize(valid_buffer_parameter_table)),
339 buffer_target(valid_buffer_target_table,
340 arraysize(valid_buffer_target_table)),
341 buffer_usage(valid_buffer_usage_table,
342 arraysize(valid_buffer_usage_table)),
343 capability(valid_capability_table, arraysize(valid_capability_table)),
344 cmp_function(valid_cmp_function_table,
345 arraysize(valid_cmp_function_table)),
346 compressed_texture_format(),
347 draw_mode(valid_draw_mode_table, arraysize(valid_draw_mode_table)),
348 dst_blend_factor(valid_dst_blend_factor_table,
349 arraysize(valid_dst_blend_factor_table)),
350 equation(valid_equation_table, arraysize(valid_equation_table)),
351 face_mode(valid_face_mode_table, arraysize(valid_face_mode_table)),
352 face_type(valid_face_type_table, arraysize(valid_face_type_table)),
353 false_only(valid_false_only_table, arraysize(valid_false_only_table)),
354 frame_buffer_parameter(valid_frame_buffer_parameter_table,
355 arraysize(valid_frame_buffer_parameter_table)),
356 frame_buffer_target(valid_frame_buffer_target_table,
357 arraysize(valid_frame_buffer_target_table)),
358 g_l_state(valid_g_l_state_table, arraysize(valid_g_l_state_table)),
359 get_max_index_type(valid_get_max_index_type_table,
360 arraysize(valid_get_max_index_type_table)),
361 get_tex_param_target(valid_get_tex_param_target_table,
362 arraysize(valid_get_tex_param_target_table)),
363 hint_mode(valid_hint_mode_table, arraysize(valid_hint_mode_table)),
364 hint_target(valid_hint_target_table, arraysize(valid_hint_target_table)),
365 index_type(valid_index_type_table, arraysize(valid_index_type_table)),
366 pixel_store(valid_pixel_store_table, arraysize(valid_pixel_store_table)),
367 pixel_store_alignment(valid_pixel_store_alignment_table,
368 arraysize(valid_pixel_store_alignment_table)),
369 pixel_type(valid_pixel_type_table, arraysize(valid_pixel_type_table)),
370 program_parameter(valid_program_parameter_table,
371 arraysize(valid_program_parameter_table)),
372 query_object_parameter(valid_query_object_parameter_table,
373 arraysize(valid_query_object_parameter_table)),
374 query_parameter(valid_query_parameter_table,
375 arraysize(valid_query_parameter_table)),
376 query_target(valid_query_target_table,
377 arraysize(valid_query_target_table)),
378 read_pixel_format(valid_read_pixel_format_table,
379 arraysize(valid_read_pixel_format_table)),
380 read_pixel_type(valid_read_pixel_type_table,
381 arraysize(valid_read_pixel_type_table)),
382 render_buffer_format(valid_render_buffer_format_table,
383 arraysize(valid_render_buffer_format_table)),
384 render_buffer_parameter(valid_render_buffer_parameter_table,
385 arraysize(valid_render_buffer_parameter_table)),
386 render_buffer_target(valid_render_buffer_target_table,
387 arraysize(valid_render_buffer_target_table)),
388 reset_status(valid_reset_status_table,
389 arraysize(valid_reset_status_table)),
390 shader_binary_format(),
391 shader_parameter(valid_shader_parameter_table,
392 arraysize(valid_shader_parameter_table)),
393 shader_precision(valid_shader_precision_table,
394 arraysize(valid_shader_precision_table)),
395 shader_type(valid_shader_type_table, arraysize(valid_shader_type_table)),
396 src_blend_factor(valid_src_blend_factor_table,
397 arraysize(valid_src_blend_factor_table)),
398 stencil_op(valid_stencil_op_table, arraysize(valid_stencil_op_table)),
399 string_type(valid_string_type_table, arraysize(valid_string_type_table)),
400 texture_bind_target(valid_texture_bind_target_table,
401 arraysize(valid_texture_bind_target_table)),
402 texture_border(valid_texture_border_table,
403 arraysize(valid_texture_border_table)),
404 texture_format(valid_texture_format_table,
405 arraysize(valid_texture_format_table)),
406 texture_internal_format(valid_texture_internal_format_table,
407 arraysize(valid_texture_internal_format_table)),
408 texture_internal_format_storage(
409 valid_texture_internal_format_storage_table,
410 arraysize(valid_texture_internal_format_storage_table)),
411 texture_mag_filter_mode(valid_texture_mag_filter_mode_table,
412 arraysize(valid_texture_mag_filter_mode_table)),
413 texture_min_filter_mode(valid_texture_min_filter_mode_table,
414 arraysize(valid_texture_min_filter_mode_table)),
415 texture_parameter(valid_texture_parameter_table,
416 arraysize(valid_texture_parameter_table)),
417 texture_pool(valid_texture_pool_table,
418 arraysize(valid_texture_pool_table)),
419 texture_target(valid_texture_target_table,
420 arraysize(valid_texture_target_table)),
421 texture_usage(valid_texture_usage_table,
422 arraysize(valid_texture_usage_table)),
423 texture_wrap_mode(valid_texture_wrap_mode_table,
424 arraysize(valid_texture_wrap_mode_table)),
425 vertex_attrib_size(valid_vertex_attrib_size_table,
426 arraysize(valid_vertex_attrib_size_table)),
427 vertex_attrib_type(valid_vertex_attrib_type_table,
428 arraysize(valid_vertex_attrib_type_table)),
429 vertex_attribute(valid_vertex_attribute_table,
430 arraysize(valid_vertex_attribute_table)),
431 vertex_pointer(valid_vertex_pointer_table,
432 arraysize(valid_vertex_pointer_table)),
433 zero_only(valid_zero_only_table, arraysize(valid_zero_only_table)) {}
435 #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_VALIDATION_IMPLEMENTATION_AUTOGEN_H_