1 // Copyright 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.
4
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
9 // DO NOT EDIT!
10
11 #ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_VALIDATION_IMPLEMENTATION_AUTOGEN_H_
12 #define GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_VALIDATION_IMPLEMENTATION_AUTOGEN_H_
13
14 static const GLenum valid_attachment_table[] = {
15 GL_COLOR_ATTACHMENT0,
16 GL_DEPTH_ATTACHMENT,
17 GL_STENCIL_ATTACHMENT,
18 };
19
20 static const GLenum valid_attachment_table_es3[] = {
21 GL_DEPTH_STENCIL_ATTACHMENT,
22 };
23
24 static const GLenum valid_attachment_query_table[] = {
25 GL_COLOR_ATTACHMENT0,
26 GL_DEPTH_ATTACHMENT,
27 GL_STENCIL_ATTACHMENT,
28 };
29
30 static const GLenum valid_attachment_query_table_es3[] = {
31 GL_DEPTH_STENCIL_ATTACHMENT,
32 GL_COLOR_EXT,
33 GL_DEPTH_EXT,
34 GL_STENCIL_EXT,
35 };
36
IsValid(const GLenum value)37 bool Validators::BackbufferAttachmentValidator::IsValid(
38 const GLenum value) const {
39 switch (value) {
40 case GL_COLOR_EXT:
41 case GL_DEPTH_EXT:
42 case GL_STENCIL_EXT:
43 return true;
44 }
45 return false;
46 }
47
IsValid(const GLenum value)48 bool Validators::BlitFilterValidator::IsValid(const GLenum value) const {
49 switch (value) {
50 case GL_NEAREST:
51 case GL_LINEAR:
52 return true;
53 }
54 return false;
55 }
56
IsValid(const GLenum value)57 bool Validators::BufferModeValidator::IsValid(const GLenum value) const {
58 switch (value) {
59 case GL_INTERLEAVED_ATTRIBS:
60 case GL_SEPARATE_ATTRIBS:
61 return true;
62 }
63 return false;
64 }
65
BufferParameterValidator()66 Validators::BufferParameterValidator::BufferParameterValidator()
67 : is_es3_(false) {}
IsValid(const GLenum value)68 bool Validators::BufferParameterValidator::IsValid(const GLenum value) const {
69 switch (value) {
70 case GL_BUFFER_SIZE:
71 case GL_BUFFER_USAGE:
72 return true;
73 case GL_BUFFER_ACCESS_FLAGS:
74 case GL_BUFFER_MAPPED:
75 return is_es3_;
76 }
77 return false;
78 }
79
IsValid(const GLenum value)80 bool Validators::BufferParameter64Validator::IsValid(const GLenum value) const {
81 switch (value) {
82 case GL_BUFFER_SIZE:
83 case GL_BUFFER_MAP_LENGTH:
84 case GL_BUFFER_MAP_OFFSET:
85 return true;
86 }
87 return false;
88 }
89
BufferTargetValidator()90 Validators::BufferTargetValidator::BufferTargetValidator() : is_es3_(false) {}
IsValid(const GLenum value)91 bool Validators::BufferTargetValidator::IsValid(const GLenum value) const {
92 switch (value) {
93 case GL_ARRAY_BUFFER:
94 case GL_ELEMENT_ARRAY_BUFFER:
95 return true;
96 case GL_COPY_READ_BUFFER:
97 case GL_COPY_WRITE_BUFFER:
98 case GL_PIXEL_PACK_BUFFER:
99 case GL_PIXEL_UNPACK_BUFFER:
100 case GL_TRANSFORM_FEEDBACK_BUFFER:
101 case GL_UNIFORM_BUFFER:
102 return is_es3_;
103 }
104 return false;
105 }
106
BufferUsageValidator()107 Validators::BufferUsageValidator::BufferUsageValidator() : is_es3_(false) {}
IsValid(const GLenum value)108 bool Validators::BufferUsageValidator::IsValid(const GLenum value) const {
109 switch (value) {
110 case GL_STREAM_DRAW:
111 case GL_STATIC_DRAW:
112 case GL_DYNAMIC_DRAW:
113 return true;
114 case GL_STREAM_READ:
115 case GL_STREAM_COPY:
116 case GL_STATIC_READ:
117 case GL_STATIC_COPY:
118 case GL_DYNAMIC_READ:
119 case GL_DYNAMIC_COPY:
120 return is_es3_;
121 }
122 return false;
123 }
124
125 static const GLenum valid_bufferfi_table[] = {
126 GL_DEPTH_STENCIL,
127 };
128
IsValid(const GLenum value)129 bool Validators::BufferfvValidator::IsValid(const GLenum value) const {
130 switch (value) {
131 case GL_COLOR:
132 case GL_DEPTH:
133 return true;
134 }
135 return false;
136 }
137
IsValid(const GLenum value)138 bool Validators::BufferivValidator::IsValid(const GLenum value) const {
139 switch (value) {
140 case GL_COLOR:
141 case GL_STENCIL:
142 return true;
143 }
144 return false;
145 }
146
147 static const GLenum valid_bufferuiv_table[] = {
148 GL_COLOR,
149 };
150
151 static const GLenum valid_capability_table[] = {
152 GL_BLEND, GL_CULL_FACE, GL_DEPTH_TEST,
153 GL_DITHER, GL_POLYGON_OFFSET_FILL, GL_SAMPLE_ALPHA_TO_COVERAGE,
154 GL_SAMPLE_COVERAGE, GL_SCISSOR_TEST, GL_STENCIL_TEST,
155 };
156
157 static const GLenum valid_capability_table_es3[] = {
158 GL_RASTERIZER_DISCARD,
159 GL_PRIMITIVE_RESTART_FIXED_INDEX,
160 };
161
IsValid(const GLenum value)162 bool Validators::CmpFunctionValidator::IsValid(const GLenum value) const {
163 switch (value) {
164 case GL_NEVER:
165 case GL_LESS:
166 case GL_EQUAL:
167 case GL_LEQUAL:
168 case GL_GREATER:
169 case GL_NOTEQUAL:
170 case GL_GEQUAL:
171 case GL_ALWAYS:
172 return true;
173 }
174 return false;
175 }
176
177 static const GLenum valid_coverage_modulation_components_table[] = {
178 GL_RGB,
179 GL_RGBA,
180 GL_ALPHA,
181 GL_NONE,
182 };
183
IsValid(const GLenum value)184 bool Validators::DrawModeValidator::IsValid(const GLenum value) const {
185 switch (value) {
186 case GL_POINTS:
187 case GL_LINE_STRIP:
188 case GL_LINE_LOOP:
189 case GL_LINES:
190 case GL_TRIANGLE_STRIP:
191 case GL_TRIANGLE_FAN:
192 case GL_TRIANGLES:
193 return true;
194 }
195 return false;
196 }
197
198 static const GLenum valid_dst_blend_factor_table[] = {
199 GL_ZERO, GL_ONE,
200 GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR,
201 GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR,
202 GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA,
203 GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA,
204 GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR,
205 GL_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_ALPHA,
206 };
207
208 static const GLenum valid_dst_blend_factor_table_es3[] = {
209 GL_SRC_ALPHA_SATURATE,
210 };
211
212 static const GLenum valid_equation_table[] = {
213 GL_FUNC_ADD,
214 GL_FUNC_SUBTRACT,
215 GL_FUNC_REVERSE_SUBTRACT,
216 };
217
218 static const GLenum valid_equation_table_es3[] = {
219 GL_MIN,
220 GL_MAX,
221 };
222
IsValid(const GLenum value)223 bool Validators::FaceModeValidator::IsValid(const GLenum value) const {
224 switch (value) {
225 case GL_CW:
226 case GL_CCW:
227 return true;
228 }
229 return false;
230 }
231
IsValid(const GLenum value)232 bool Validators::FaceTypeValidator::IsValid(const GLenum value) const {
233 switch (value) {
234 case GL_FRONT:
235 case GL_BACK:
236 case GL_FRONT_AND_BACK:
237 return true;
238 }
239 return false;
240 }
241
242 static const GLenum valid_framebuffer_attachment_parameter_table[] = {
243 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE,
244 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME,
245 GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL,
246 GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE,
247 };
248
249 static const GLenum valid_framebuffer_attachment_parameter_table_es3[] = {
250 GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE,
251 GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE,
252 GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE,
253 GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE,
254 GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE,
255 GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE,
256 GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE,
257 GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING,
258 GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER,
259 };
260
261 static const GLenum valid_framebuffer_target_table[] = {
262 GL_FRAMEBUFFER,
263 };
264
265 static const GLenum valid_framebuffer_target_table_es3[] = {
266 GL_DRAW_FRAMEBUFFER,
267 GL_READ_FRAMEBUFFER,
268 };
269
270 static const GLenum valid_g_l_state_table[] = {
271 GL_ACTIVE_TEXTURE,
272 GL_ALIASED_LINE_WIDTH_RANGE,
273 GL_ALIASED_POINT_SIZE_RANGE,
274 GL_ALPHA_BITS,
275 GL_ARRAY_BUFFER_BINDING,
276 GL_BLUE_BITS,
277 GL_COMPRESSED_TEXTURE_FORMATS,
278 GL_CURRENT_PROGRAM,
279 GL_DEPTH_BITS,
280 GL_DEPTH_RANGE,
281 GL_ELEMENT_ARRAY_BUFFER_BINDING,
282 GL_FRAMEBUFFER_BINDING,
283 GL_GENERATE_MIPMAP_HINT,
284 GL_GREEN_BITS,
285 GL_IMPLEMENTATION_COLOR_READ_FORMAT,
286 GL_IMPLEMENTATION_COLOR_READ_TYPE,
287 GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS,
288 GL_MAX_CUBE_MAP_TEXTURE_SIZE,
289 GL_MAX_FRAGMENT_UNIFORM_VECTORS,
290 GL_MAX_RENDERBUFFER_SIZE,
291 GL_MAX_TEXTURE_IMAGE_UNITS,
292 GL_MAX_TEXTURE_SIZE,
293 GL_MAX_VARYING_VECTORS,
294 GL_MAX_VERTEX_ATTRIBS,
295 GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS,
296 GL_MAX_VERTEX_UNIFORM_VECTORS,
297 GL_MAX_VIEWPORT_DIMS,
298 GL_NUM_COMPRESSED_TEXTURE_FORMATS,
299 GL_NUM_SHADER_BINARY_FORMATS,
300 GL_PACK_ALIGNMENT,
301 GL_RED_BITS,
302 GL_RENDERBUFFER_BINDING,
303 GL_SAMPLE_BUFFERS,
304 GL_SAMPLE_COVERAGE_INVERT,
305 GL_SAMPLE_COVERAGE_VALUE,
306 GL_SAMPLES,
307 GL_SCISSOR_BOX,
308 GL_SHADER_BINARY_FORMATS,
309 GL_SHADER_COMPILER,
310 GL_SUBPIXEL_BITS,
311 GL_STENCIL_BITS,
312 GL_TEXTURE_BINDING_2D,
313 GL_TEXTURE_BINDING_CUBE_MAP,
314 GL_TEXTURE_FILTERING_HINT_CHROMIUM,
315 GL_UNPACK_ALIGNMENT,
316 GL_BIND_GENERATES_RESOURCE_CHROMIUM,
317 GL_VERTEX_ARRAY_BINDING_OES,
318 GL_VIEWPORT,
319 GL_BLEND_COLOR,
320 GL_BLEND_EQUATION_RGB,
321 GL_BLEND_EQUATION_ALPHA,
322 GL_BLEND_SRC_RGB,
323 GL_BLEND_DST_RGB,
324 GL_BLEND_SRC_ALPHA,
325 GL_BLEND_DST_ALPHA,
326 GL_COLOR_CLEAR_VALUE,
327 GL_DEPTH_CLEAR_VALUE,
328 GL_STENCIL_CLEAR_VALUE,
329 GL_COLOR_WRITEMASK,
330 GL_CULL_FACE_MODE,
331 GL_DEPTH_FUNC,
332 GL_DEPTH_WRITEMASK,
333 GL_FRONT_FACE,
334 GL_LINE_WIDTH,
335 GL_POLYGON_OFFSET_FACTOR,
336 GL_POLYGON_OFFSET_UNITS,
337 GL_STENCIL_FUNC,
338 GL_STENCIL_REF,
339 GL_STENCIL_VALUE_MASK,
340 GL_STENCIL_BACK_FUNC,
341 GL_STENCIL_BACK_REF,
342 GL_STENCIL_BACK_VALUE_MASK,
343 GL_STENCIL_WRITEMASK,
344 GL_STENCIL_BACK_WRITEMASK,
345 GL_STENCIL_FAIL,
346 GL_STENCIL_PASS_DEPTH_FAIL,
347 GL_STENCIL_PASS_DEPTH_PASS,
348 GL_STENCIL_BACK_FAIL,
349 GL_STENCIL_BACK_PASS_DEPTH_FAIL,
350 GL_STENCIL_BACK_PASS_DEPTH_PASS,
351 GL_BLEND,
352 GL_CULL_FACE,
353 GL_DEPTH_TEST,
354 GL_DITHER,
355 GL_POLYGON_OFFSET_FILL,
356 GL_SAMPLE_ALPHA_TO_COVERAGE,
357 GL_SAMPLE_COVERAGE,
358 GL_SCISSOR_TEST,
359 GL_STENCIL_TEST,
360 GL_RASTERIZER_DISCARD,
361 GL_PRIMITIVE_RESTART_FIXED_INDEX,
362 };
363
364 static const GLenum valid_g_l_state_table_es3[] = {
365 GL_COPY_READ_BUFFER_BINDING,
366 GL_COPY_WRITE_BUFFER_BINDING,
367 GL_DRAW_BUFFER0,
368 GL_DRAW_BUFFER1,
369 GL_DRAW_BUFFER2,
370 GL_DRAW_BUFFER3,
371 GL_DRAW_BUFFER4,
372 GL_DRAW_BUFFER5,
373 GL_DRAW_BUFFER6,
374 GL_DRAW_BUFFER7,
375 GL_DRAW_BUFFER8,
376 GL_DRAW_BUFFER9,
377 GL_DRAW_BUFFER10,
378 GL_DRAW_BUFFER11,
379 GL_DRAW_BUFFER12,
380 GL_DRAW_BUFFER13,
381 GL_DRAW_BUFFER14,
382 GL_DRAW_BUFFER15,
383 GL_DRAW_FRAMEBUFFER_BINDING,
384 GL_FRAGMENT_SHADER_DERIVATIVE_HINT,
385 GL_GPU_DISJOINT_EXT,
386 GL_MAJOR_VERSION,
387 GL_MAX_3D_TEXTURE_SIZE,
388 GL_MAX_ARRAY_TEXTURE_LAYERS,
389 GL_MAX_COLOR_ATTACHMENTS,
390 GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS,
391 GL_MAX_COMBINED_UNIFORM_BLOCKS,
392 GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS,
393 GL_MAX_DRAW_BUFFERS,
394 GL_MAX_ELEMENT_INDEX,
395 GL_MAX_ELEMENTS_INDICES,
396 GL_MAX_ELEMENTS_VERTICES,
397 GL_MAX_FRAGMENT_INPUT_COMPONENTS,
398 GL_MAX_FRAGMENT_UNIFORM_BLOCKS,
399 GL_MAX_FRAGMENT_UNIFORM_COMPONENTS,
400 GL_MAX_PROGRAM_TEXEL_OFFSET,
401 GL_MAX_SAMPLES,
402 GL_MAX_SERVER_WAIT_TIMEOUT,
403 GL_MAX_TEXTURE_LOD_BIAS,
404 GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS,
405 GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS,
406 GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS,
407 GL_MAX_UNIFORM_BLOCK_SIZE,
408 GL_MAX_UNIFORM_BUFFER_BINDINGS,
409 GL_MAX_VARYING_COMPONENTS,
410 GL_MAX_VERTEX_OUTPUT_COMPONENTS,
411 GL_MAX_VERTEX_UNIFORM_BLOCKS,
412 GL_MAX_VERTEX_UNIFORM_COMPONENTS,
413 GL_MIN_PROGRAM_TEXEL_OFFSET,
414 GL_MINOR_VERSION,
415 GL_NUM_EXTENSIONS,
416 GL_NUM_PROGRAM_BINARY_FORMATS,
417 GL_PACK_ROW_LENGTH,
418 GL_PACK_SKIP_PIXELS,
419 GL_PACK_SKIP_ROWS,
420 GL_PIXEL_PACK_BUFFER_BINDING,
421 GL_PIXEL_UNPACK_BUFFER_BINDING,
422 GL_PROGRAM_BINARY_FORMATS,
423 GL_READ_BUFFER,
424 GL_READ_FRAMEBUFFER_BINDING,
425 GL_SAMPLER_BINDING,
426 GL_TIMESTAMP_EXT,
427 GL_TEXTURE_BINDING_2D_ARRAY,
428 GL_TEXTURE_BINDING_3D,
429 GL_TRANSFORM_FEEDBACK_BINDING,
430 GL_TRANSFORM_FEEDBACK_ACTIVE,
431 GL_TRANSFORM_FEEDBACK_BUFFER_BINDING,
432 GL_TRANSFORM_FEEDBACK_PAUSED,
433 GL_UNIFORM_BUFFER_BINDING,
434 GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT,
435 GL_UNPACK_IMAGE_HEIGHT,
436 GL_UNPACK_ROW_LENGTH,
437 GL_UNPACK_SKIP_IMAGES,
438 GL_UNPACK_SKIP_PIXELS,
439 GL_UNPACK_SKIP_ROWS,
440 GL_BLEND_EQUATION_RGB,
441 GL_BLEND_EQUATION_ALPHA,
442 GL_BLEND_SRC_RGB,
443 GL_BLEND_SRC_ALPHA,
444 GL_BLEND_DST_RGB,
445 GL_BLEND_DST_ALPHA,
446 GL_COLOR_WRITEMASK,
447 };
448
IsValid(const GLenum value)449 bool Validators::GetMaxIndexTypeValidator::IsValid(const GLenum value) const {
450 switch (value) {
451 case GL_UNSIGNED_BYTE:
452 case GL_UNSIGNED_SHORT:
453 case GL_UNSIGNED_INT:
454 return true;
455 }
456 return false;
457 }
458
459 static const GLenum valid_get_tex_param_target_table[] = {
460 GL_TEXTURE_2D,
461 GL_TEXTURE_CUBE_MAP,
462 };
463
464 static const GLenum valid_get_tex_param_target_table_es3[] = {
465 GL_TEXTURE_2D_ARRAY,
466 GL_TEXTURE_3D,
467 };
468
IsValid(const GLenum value)469 bool Validators::HintModeValidator::IsValid(const GLenum value) const {
470 switch (value) {
471 case GL_FASTEST:
472 case GL_NICEST:
473 case GL_DONT_CARE:
474 return true;
475 }
476 return false;
477 }
478
479 static const GLenum valid_hint_target_table[] = {
480 GL_GENERATE_MIPMAP_HINT,
481 GL_TEXTURE_FILTERING_HINT_CHROMIUM,
482 };
483
484 static const GLenum valid_hint_target_table_es3[] = {
485 GL_FRAGMENT_SHADER_DERIVATIVE_HINT,
486 };
487
488 static const GLenum valid_image_internal_format_table[] = {
489 GL_RGB,
490 GL_RGB_YCRCB_420_CHROMIUM,
491 GL_RGB_YCBCR_422_CHROMIUM,
492 GL_RGB_YCBCR_420V_CHROMIUM,
493 GL_RGB_YCBCR_P010_CHROMIUM,
494 GL_RGBA,
495 };
496
497 static const GLenum valid_index_type_table[] = {
498 GL_UNSIGNED_BYTE,
499 GL_UNSIGNED_SHORT,
500 };
501
502 static const GLenum valid_index_type_table_es3[] = {
503 GL_UNSIGNED_INT,
504 };
505
IsValid(const GLenum value)506 bool Validators::IndexedBufferTargetValidator::IsValid(
507 const GLenum value) const {
508 switch (value) {
509 case GL_TRANSFORM_FEEDBACK_BUFFER:
510 case GL_UNIFORM_BUFFER:
511 return true;
512 }
513 return false;
514 }
515
516 static const GLenum valid_indexed_g_l_state_table[] = {
517 GL_TRANSFORM_FEEDBACK_BUFFER_BINDING,
518 GL_TRANSFORM_FEEDBACK_BUFFER_SIZE,
519 GL_TRANSFORM_FEEDBACK_BUFFER_START,
520 GL_UNIFORM_BUFFER_BINDING,
521 GL_UNIFORM_BUFFER_SIZE,
522 GL_UNIFORM_BUFFER_START,
523 GL_BLEND_EQUATION_RGB,
524 GL_BLEND_EQUATION_ALPHA,
525 GL_BLEND_SRC_RGB,
526 GL_BLEND_SRC_ALPHA,
527 GL_BLEND_DST_RGB,
528 GL_BLEND_DST_ALPHA,
529 GL_COLOR_WRITEMASK,
530 };
531
IsValid(const GLenum value)532 bool Validators::InternalFormatParameterValidator::IsValid(
533 const GLenum value) const {
534 switch (value) {
535 case GL_NUM_SAMPLE_COUNTS:
536 case GL_SAMPLES:
537 return true;
538 }
539 return false;
540 }
541
IsValid(const GLenum value)542 bool Validators::MapBufferAccessValidator::IsValid(const GLenum value) const {
543 switch (value) {
544 case GL_MAP_READ_BIT:
545 case GL_MAP_WRITE_BIT:
546 case GL_MAP_INVALIDATE_RANGE_BIT:
547 case GL_MAP_INVALIDATE_BUFFER_BIT:
548 case GL_MAP_FLUSH_EXPLICIT_BIT:
549 case GL_MAP_UNSYNCHRONIZED_BIT:
550 return true;
551 }
552 return false;
553 }
554
555 static const GLenum valid_pixel_store_table[] = {
556 GL_PACK_ALIGNMENT,
557 GL_UNPACK_ALIGNMENT,
558 };
559
560 static const GLenum valid_pixel_store_table_es3[] = {
561 GL_PACK_ROW_LENGTH, GL_PACK_SKIP_PIXELS, GL_PACK_SKIP_ROWS,
562 GL_UNPACK_ROW_LENGTH, GL_UNPACK_IMAGE_HEIGHT, GL_UNPACK_SKIP_PIXELS,
563 GL_UNPACK_SKIP_ROWS, GL_UNPACK_SKIP_IMAGES,
564 };
565
IsValid(const GLint value)566 bool Validators::PixelStoreAlignmentValidator::IsValid(
567 const GLint value) const {
568 switch (value) {
569 case 1:
570 case 2:
571 case 4:
572 case 8:
573 return true;
574 }
575 return false;
576 }
577
578 static const GLenum valid_pixel_type_table[] = {
579 GL_UNSIGNED_BYTE,
580 GL_UNSIGNED_SHORT_5_6_5,
581 GL_UNSIGNED_SHORT_4_4_4_4,
582 GL_UNSIGNED_SHORT_5_5_5_1,
583 };
584
585 static const GLenum valid_pixel_type_table_es3[] = {
586 GL_BYTE,
587 GL_UNSIGNED_SHORT,
588 GL_SHORT,
589 GL_UNSIGNED_INT,
590 GL_INT,
591 GL_HALF_FLOAT,
592 GL_FLOAT,
593 GL_UNSIGNED_INT_2_10_10_10_REV,
594 GL_UNSIGNED_INT_10F_11F_11F_REV,
595 GL_UNSIGNED_INT_5_9_9_9_REV,
596 GL_UNSIGNED_INT_24_8,
597 GL_FLOAT_32_UNSIGNED_INT_24_8_REV,
598 };
599
600 static const GLenum valid_program_parameter_table[] = {
601 GL_DELETE_STATUS,
602 GL_LINK_STATUS,
603 GL_VALIDATE_STATUS,
604 GL_INFO_LOG_LENGTH,
605 GL_ATTACHED_SHADERS,
606 GL_ACTIVE_ATTRIBUTES,
607 GL_ACTIVE_ATTRIBUTE_MAX_LENGTH,
608 GL_ACTIVE_UNIFORMS,
609 GL_ACTIVE_UNIFORM_MAX_LENGTH,
610 };
611
612 static const GLenum valid_program_parameter_table_es3[] = {
613 GL_ACTIVE_UNIFORM_BLOCKS,
614 GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH,
615 GL_TRANSFORM_FEEDBACK_BUFFER_MODE,
616 GL_TRANSFORM_FEEDBACK_VARYINGS,
617 GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH,
618 };
619
IsValid(const GLenum value)620 bool Validators::QueryObjectParameterValidator::IsValid(
621 const GLenum value) const {
622 switch (value) {
623 case GL_QUERY_RESULT_EXT:
624 case GL_QUERY_RESULT_AVAILABLE_EXT:
625 case GL_QUERY_RESULT_AVAILABLE_NO_FLUSH_CHROMIUM_EXT:
626 return true;
627 }
628 return false;
629 }
630
IsValid(const GLenum value)631 bool Validators::QueryTargetValidator::IsValid(const GLenum value) const {
632 switch (value) {
633 case GL_SAMPLES_PASSED_ARB:
634 case GL_ANY_SAMPLES_PASSED_EXT:
635 case GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT:
636 case GL_COMMANDS_ISSUED_CHROMIUM:
637 case GL_COMMANDS_ISSUED_TIMESTAMP_CHROMIUM:
638 case GL_LATENCY_QUERY_CHROMIUM:
639 case GL_ASYNC_PIXEL_PACK_COMPLETED_CHROMIUM:
640 case GL_COMMANDS_COMPLETED_CHROMIUM:
641 case GL_READBACK_SHADOW_COPIES_UPDATED_CHROMIUM:
642 case GL_PROGRAM_COMPLETION_QUERY_CHROMIUM:
643 return true;
644 }
645 return false;
646 }
647
648 static const GLenum valid_read_buffer_table[] = {
649 GL_NONE,
650 GL_BACK,
651 GL_COLOR_ATTACHMENT0,
652 GL_COLOR_ATTACHMENT1,
653 GL_COLOR_ATTACHMENT2,
654 GL_COLOR_ATTACHMENT3,
655 GL_COLOR_ATTACHMENT4,
656 GL_COLOR_ATTACHMENT5,
657 GL_COLOR_ATTACHMENT6,
658 GL_COLOR_ATTACHMENT7,
659 GL_COLOR_ATTACHMENT8,
660 GL_COLOR_ATTACHMENT9,
661 GL_COLOR_ATTACHMENT10,
662 GL_COLOR_ATTACHMENT11,
663 GL_COLOR_ATTACHMENT12,
664 GL_COLOR_ATTACHMENT13,
665 GL_COLOR_ATTACHMENT14,
666 GL_COLOR_ATTACHMENT15,
667 };
668
669 static const GLenum valid_read_pixel_format_table[] = {
670 GL_ALPHA,
671 GL_RGB,
672 GL_RGBA,
673 };
674
675 static const GLenum valid_read_pixel_format_table_es3[] = {
676 GL_RED, GL_RED_INTEGER, GL_RG,
677 GL_RG_INTEGER, GL_RGB_INTEGER, GL_RGBA_INTEGER,
678 };
679
680 static const GLenum valid_read_pixel_type_table[] = {
681 GL_UNSIGNED_BYTE,
682 GL_UNSIGNED_SHORT_5_6_5,
683 GL_UNSIGNED_SHORT_4_4_4_4,
684 GL_UNSIGNED_SHORT_5_5_5_1,
685 };
686
687 static const GLenum valid_read_pixel_type_table_es3[] = {
688 GL_BYTE, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT,
689 GL_INT, GL_HALF_FLOAT, GL_FLOAT, GL_UNSIGNED_INT_2_10_10_10_REV,
690 };
691
692 static const GLenum valid_render_buffer_format_table[] = {
693 GL_RGBA4, GL_RGB565, GL_RGB5_A1, GL_DEPTH_COMPONENT16, GL_STENCIL_INDEX8,
694 };
695
696 static const GLenum valid_render_buffer_format_table_es3[] = {
697 GL_R8,
698 GL_R8UI,
699 GL_R8I,
700 GL_R16UI,
701 GL_R16I,
702 GL_R32UI,
703 GL_R32I,
704 GL_RG8,
705 GL_RG8UI,
706 GL_RG8I,
707 GL_RG16UI,
708 GL_RG16I,
709 GL_RG32UI,
710 GL_RG32I,
711 GL_RGB8,
712 GL_RGBA8,
713 GL_SRGB8_ALPHA8,
714 GL_RGB10_A2,
715 GL_RGBA8UI,
716 GL_RGBA8I,
717 GL_RGB10_A2UI,
718 GL_RGBA16UI,
719 GL_RGBA16I,
720 GL_RGBA32UI,
721 GL_RGBA32I,
722 GL_DEPTH_COMPONENT24,
723 GL_DEPTH_COMPONENT32F,
724 GL_DEPTH24_STENCIL8,
725 GL_DEPTH32F_STENCIL8,
726 };
727
728 static const GLenum valid_render_buffer_parameter_table[] = {
729 GL_RENDERBUFFER_RED_SIZE, GL_RENDERBUFFER_GREEN_SIZE,
730 GL_RENDERBUFFER_BLUE_SIZE, GL_RENDERBUFFER_ALPHA_SIZE,
731 GL_RENDERBUFFER_DEPTH_SIZE, GL_RENDERBUFFER_STENCIL_SIZE,
732 GL_RENDERBUFFER_WIDTH, GL_RENDERBUFFER_HEIGHT,
733 GL_RENDERBUFFER_INTERNAL_FORMAT,
734 };
735
736 static const GLenum valid_render_buffer_parameter_table_es3[] = {
737 GL_RENDERBUFFER_SAMPLES,
738 };
739
740 static const GLenum valid_render_buffer_target_table[] = {
741 GL_RENDERBUFFER,
742 };
743
IsValid(const GLenum value)744 bool Validators::ResetStatusValidator::IsValid(const GLenum value) const {
745 switch (value) {
746 case GL_GUILTY_CONTEXT_RESET_ARB:
747 case GL_INNOCENT_CONTEXT_RESET_ARB:
748 case GL_UNKNOWN_CONTEXT_RESET_ARB:
749 return true;
750 }
751 return false;
752 }
753
754 static const GLenum valid_sampler_parameter_table[] = {
755 GL_TEXTURE_MAG_FILTER, GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MIN_LOD,
756 GL_TEXTURE_MAX_LOD, GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T,
757 GL_TEXTURE_WRAP_R, GL_TEXTURE_COMPARE_MODE, GL_TEXTURE_COMPARE_FUNC,
758 };
759
760 static const GLenum valid_shader_parameter_table[] = {
761 GL_SHADER_TYPE, GL_DELETE_STATUS,
762 GL_COMPILE_STATUS, GL_INFO_LOG_LENGTH,
763 GL_SHADER_SOURCE_LENGTH, GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE,
764 };
765
IsValid(const GLenum value)766 bool Validators::ShaderPrecisionValidator::IsValid(const GLenum value) const {
767 switch (value) {
768 case GL_LOW_FLOAT:
769 case GL_MEDIUM_FLOAT:
770 case GL_HIGH_FLOAT:
771 case GL_LOW_INT:
772 case GL_MEDIUM_INT:
773 case GL_HIGH_INT:
774 return true;
775 }
776 return false;
777 }
778
IsValid(const GLenum value)779 bool Validators::ShaderTypeValidator::IsValid(const GLenum value) const {
780 switch (value) {
781 case GL_VERTEX_SHADER:
782 case GL_FRAGMENT_SHADER:
783 return true;
784 }
785 return false;
786 }
787
IsValid(const GLenum value)788 bool Validators::SharedImageAccessModeValidator::IsValid(
789 const GLenum value) const {
790 switch (value) {
791 case GL_SHARED_IMAGE_ACCESS_MODE_OVERLAY_CHROMIUM:
792 case GL_SHARED_IMAGE_ACCESS_MODE_READWRITE_CHROMIUM:
793 case GL_SHARED_IMAGE_ACCESS_MODE_READ_CHROMIUM:
794 return true;
795 }
796 return false;
797 }
798
799 static const GLenum valid_src_blend_factor_table[] = {
800 GL_ZERO,
801 GL_ONE,
802 GL_SRC_COLOR,
803 GL_ONE_MINUS_SRC_COLOR,
804 GL_DST_COLOR,
805 GL_ONE_MINUS_DST_COLOR,
806 GL_SRC_ALPHA,
807 GL_ONE_MINUS_SRC_ALPHA,
808 GL_DST_ALPHA,
809 GL_ONE_MINUS_DST_ALPHA,
810 GL_CONSTANT_COLOR,
811 GL_ONE_MINUS_CONSTANT_COLOR,
812 GL_CONSTANT_ALPHA,
813 GL_ONE_MINUS_CONSTANT_ALPHA,
814 GL_SRC_ALPHA_SATURATE,
815 };
816
IsValid(const GLenum value)817 bool Validators::StencilOpValidator::IsValid(const GLenum value) const {
818 switch (value) {
819 case GL_KEEP:
820 case GL_ZERO:
821 case GL_REPLACE:
822 case GL_INCR:
823 case GL_INCR_WRAP:
824 case GL_DECR:
825 case GL_DECR_WRAP:
826 case GL_INVERT:
827 return true;
828 }
829 return false;
830 }
831
IsValid(const GLenum value)832 bool Validators::StringTypeValidator::IsValid(const GLenum value) const {
833 switch (value) {
834 case GL_VENDOR:
835 case GL_RENDERER:
836 case GL_VERSION:
837 case GL_SHADING_LANGUAGE_VERSION:
838 case GL_EXTENSIONS:
839 return true;
840 }
841 return false;
842 }
843
IsValid(const GLbitfield value)844 bool Validators::SwapBuffersFlagsValidator::IsValid(
845 const GLbitfield value) const {
846 switch (value) {
847 case 0:
848 case gpu::SwapBuffersFlags::kVSyncParams:
849 return true;
850 }
851 return false;
852 }
853
854 static const GLbitfield valid_sync_flush_flags_table[] = {
855 GL_SYNC_FLUSH_COMMANDS_BIT,
856 0,
857 };
858
IsValid(const GLenum value)859 bool Validators::SyncParameterValidator::IsValid(const GLenum value) const {
860 switch (value) {
861 case GL_SYNC_STATUS:
862 case GL_OBJECT_TYPE:
863 case GL_SYNC_CONDITION:
864 case GL_SYNC_FLAGS:
865 return true;
866 }
867 return false;
868 }
869
IsValid(const GLenum value)870 bool Validators::Texture3DTargetValidator::IsValid(const GLenum value) const {
871 switch (value) {
872 case GL_TEXTURE_3D:
873 case GL_TEXTURE_2D_ARRAY:
874 return true;
875 }
876 return false;
877 }
878
879 static const GLenum valid_texture_bind_target_table[] = {
880 GL_TEXTURE_2D,
881 GL_TEXTURE_CUBE_MAP,
882 };
883
884 static const GLenum valid_texture_bind_target_table_es3[] = {
885 GL_TEXTURE_3D,
886 GL_TEXTURE_2D_ARRAY,
887 };
888
IsValid(const GLenum value)889 bool Validators::TextureCompareFuncValidator::IsValid(
890 const GLenum value) const {
891 switch (value) {
892 case GL_LEQUAL:
893 case GL_GEQUAL:
894 case GL_LESS:
895 case GL_GREATER:
896 case GL_EQUAL:
897 case GL_NOTEQUAL:
898 case GL_ALWAYS:
899 case GL_NEVER:
900 return true;
901 }
902 return false;
903 }
904
905 static const GLenum valid_texture_compare_mode_table[] = {
906 GL_NONE,
907 GL_COMPARE_REF_TO_TEXTURE,
908 };
909
910 static const GLenum valid_texture_depth_renderable_internal_format_table_es3[] =
911 {
912 GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24, GL_DEPTH_COMPONENT32F,
913 GL_DEPTH24_STENCIL8, GL_DEPTH32F_STENCIL8,
914 };
915
916 static const GLenum valid_texture_fbo_target_table[] = {
917 GL_TEXTURE_2D,
918 GL_TEXTURE_CUBE_MAP_POSITIVE_X,
919 GL_TEXTURE_CUBE_MAP_NEGATIVE_X,
920 GL_TEXTURE_CUBE_MAP_POSITIVE_Y,
921 GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
922 GL_TEXTURE_CUBE_MAP_POSITIVE_Z,
923 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,
924 };
925
926 static const GLenum valid_texture_format_table[] = {
927 GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_RGB, GL_RGBA,
928 };
929
930 static const GLenum valid_texture_format_table_es3[] = {
931 GL_RED,
932 GL_RED_INTEGER,
933 GL_RG,
934 GL_RG_INTEGER,
935 GL_RGB_INTEGER,
936 GL_RGBA_INTEGER,
937 GL_DEPTH_COMPONENT,
938 GL_DEPTH_STENCIL,
939 };
940
941 static const GLenum valid_texture_internal_format_table[] = {
942 GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_RGB, GL_RGBA,
943 };
944
945 static const GLenum valid_texture_internal_format_table_es3[] = {
946 GL_R8,
947 GL_R8_SNORM,
948 GL_R16F,
949 GL_R32F,
950 GL_R8UI,
951 GL_R8I,
952 GL_R16UI,
953 GL_R16I,
954 GL_R32UI,
955 GL_R32I,
956 GL_RG8,
957 GL_RG8_SNORM,
958 GL_RG16F,
959 GL_RG32F,
960 GL_RG8UI,
961 GL_RG8I,
962 GL_RG16UI,
963 GL_RG16I,
964 GL_RG32UI,
965 GL_RG32I,
966 GL_RGB8,
967 GL_SRGB8,
968 GL_RGB565,
969 GL_RGB8_SNORM,
970 GL_R11F_G11F_B10F,
971 GL_RGB9_E5,
972 GL_RGB16F,
973 GL_RGB32F,
974 GL_RGB8UI,
975 GL_RGB8I,
976 GL_RGB16UI,
977 GL_RGB16I,
978 GL_RGB32UI,
979 GL_RGB32I,
980 GL_RGBA8,
981 GL_SRGB8_ALPHA8,
982 GL_RGBA8_SNORM,
983 GL_RGB5_A1,
984 GL_RGBA4,
985 GL_RGB10_A2,
986 GL_RGBA16F,
987 GL_RGBA32F,
988 GL_RGBA8UI,
989 GL_RGBA8I,
990 GL_RGB10_A2UI,
991 GL_RGBA16UI,
992 GL_RGBA16I,
993 GL_RGBA32UI,
994 GL_RGBA32I,
995 GL_DEPTH_COMPONENT16,
996 GL_DEPTH_COMPONENT24,
997 GL_DEPTH_COMPONENT32F,
998 GL_DEPTH24_STENCIL8,
999 GL_DEPTH32F_STENCIL8,
1000 };
1001
1002 static const GLenum valid_texture_internal_format_storage_table[] = {
1003 GL_RGB565, GL_RGBA4, GL_RGB5_A1,
1004 GL_ALPHA8_EXT, GL_LUMINANCE8_EXT, GL_LUMINANCE8_ALPHA8_EXT,
1005 GL_RGB8_OES, GL_RGBA8_OES,
1006 };
1007
1008 static const GLenum valid_texture_internal_format_storage_table_es3[] = {
1009 GL_R8,
1010 GL_R8_SNORM,
1011 GL_R16F,
1012 GL_R32F,
1013 GL_R8UI,
1014 GL_R8I,
1015 GL_R16UI,
1016 GL_R16I,
1017 GL_R32UI,
1018 GL_R32I,
1019 GL_RG8,
1020 GL_RG8_SNORM,
1021 GL_RG16F,
1022 GL_RG32F,
1023 GL_RG8UI,
1024 GL_RG8I,
1025 GL_RG16UI,
1026 GL_RG16I,
1027 GL_RG32UI,
1028 GL_RG32I,
1029 GL_RGB8,
1030 GL_SRGB8,
1031 GL_RGB8_SNORM,
1032 GL_R11F_G11F_B10F,
1033 GL_RGB9_E5,
1034 GL_RGB16F,
1035 GL_RGB32F,
1036 GL_RGB8UI,
1037 GL_RGB8I,
1038 GL_RGB16UI,
1039 GL_RGB16I,
1040 GL_RGB32UI,
1041 GL_RGB32I,
1042 GL_RGBA8,
1043 GL_SRGB8_ALPHA8,
1044 GL_RGBA8_SNORM,
1045 GL_RGB10_A2,
1046 GL_RGBA16F,
1047 GL_RGBA32F,
1048 GL_RGBA8UI,
1049 GL_RGBA8I,
1050 GL_RGB10_A2UI,
1051 GL_RGBA16UI,
1052 GL_RGBA16I,
1053 GL_RGBA32UI,
1054 GL_RGBA32I,
1055 GL_DEPTH_COMPONENT16,
1056 GL_DEPTH_COMPONENT24,
1057 GL_DEPTH_COMPONENT32F,
1058 GL_DEPTH24_STENCIL8,
1059 GL_DEPTH32F_STENCIL8,
1060 };
1061
1062 static const GLenum deprecated_texture_internal_format_storage_table_es3[] = {
1063 GL_ALPHA8_EXT, GL_LUMINANCE8_EXT, GL_LUMINANCE8_ALPHA8_EXT,
1064 GL_ALPHA16F_EXT, GL_LUMINANCE16F_EXT, GL_LUMINANCE_ALPHA16F_EXT,
1065 GL_ALPHA32F_EXT, GL_LUMINANCE32F_EXT, GL_LUMINANCE_ALPHA32F_EXT,
1066 };
1067
IsValid(const GLenum value)1068 bool Validators::TextureMagFilterModeValidator::IsValid(
1069 const GLenum value) const {
1070 switch (value) {
1071 case GL_NEAREST:
1072 case GL_LINEAR:
1073 return true;
1074 }
1075 return false;
1076 }
1077
IsValid(const GLenum value)1078 bool Validators::TextureMinFilterModeValidator::IsValid(
1079 const GLenum value) const {
1080 switch (value) {
1081 case GL_NEAREST:
1082 case GL_LINEAR:
1083 case GL_NEAREST_MIPMAP_NEAREST:
1084 case GL_LINEAR_MIPMAP_NEAREST:
1085 case GL_NEAREST_MIPMAP_LINEAR:
1086 case GL_LINEAR_MIPMAP_LINEAR:
1087 return true;
1088 }
1089 return false;
1090 }
1091
1092 static const GLenum valid_texture_parameter_table[] = {
1093 GL_TEXTURE_MAG_FILTER,
1094 GL_TEXTURE_MIN_FILTER,
1095 GL_TEXTURE_WRAP_S,
1096 GL_TEXTURE_WRAP_T,
1097 };
1098
1099 static const GLenum valid_texture_parameter_table_es3[] = {
1100 GL_TEXTURE_BASE_LEVEL, GL_TEXTURE_COMPARE_FUNC,
1101 GL_TEXTURE_COMPARE_MODE, GL_TEXTURE_IMMUTABLE_FORMAT,
1102 GL_TEXTURE_IMMUTABLE_LEVELS, GL_TEXTURE_MAX_LEVEL,
1103 GL_TEXTURE_MAX_LOD, GL_TEXTURE_MIN_LOD,
1104 GL_TEXTURE_WRAP_R,
1105 };
1106
1107 static const GLenum
1108 valid_texture_sized_color_renderable_internal_format_table[] = {
1109 GL_R8, GL_R8UI, GL_R8I, GL_R16UI, GL_R16I,
1110 GL_R32UI, GL_R32I, GL_RG8, GL_RG8UI, GL_RG8I,
1111 GL_RG16UI, GL_RG16I, GL_RG32UI, GL_RG32I, GL_RGB8,
1112 GL_RGB565, GL_RGBA8, GL_SRGB8_ALPHA8, GL_RGB5_A1, GL_RGBA4,
1113 GL_RGB10_A2, GL_RGBA8UI, GL_RGBA8I, GL_RGB10_A2UI, GL_RGBA16UI,
1114 GL_RGBA16I, GL_RGBA32UI, GL_RGBA32I,
1115 };
1116
1117 static const GLenum
1118 valid_texture_sized_texture_filterable_internal_format_table[] = {
1119 GL_R8,
1120 GL_R8_SNORM,
1121 GL_R16F,
1122 GL_RG8,
1123 GL_RG8_SNORM,
1124 GL_RG16F,
1125 GL_RGB8,
1126 GL_SRGB8,
1127 GL_RGB565,
1128 GL_RGB8_SNORM,
1129 GL_R11F_G11F_B10F,
1130 GL_RGB9_E5,
1131 GL_RGB16F,
1132 GL_RGBA8,
1133 GL_SRGB8_ALPHA8,
1134 GL_RGBA8_SNORM,
1135 GL_RGB5_A1,
1136 GL_RGBA4,
1137 GL_RGB10_A2,
1138 GL_RGBA16F,
1139 GL_RGB_YCRCB_420_CHROMIUM,
1140 GL_RGB_YCBCR_422_CHROMIUM,
1141 GL_RGB_YCBCR_420V_CHROMIUM,
1142 GL_RGB_YCBCR_P010_CHROMIUM,
1143 GL_R16_EXT,
1144 };
1145
IsValid(const GLenum value)1146 bool Validators::TextureSrgbDecodeExtValidator::IsValid(
1147 const GLenum value) const {
1148 switch (value) {
1149 case GL_DECODE_EXT:
1150 case GL_SKIP_DECODE_EXT:
1151 return true;
1152 }
1153 return false;
1154 }
1155
1156 static const GLenum
1157 valid_texture_stencil_renderable_internal_format_table_es3[] = {
1158 GL_STENCIL_INDEX8,
1159 GL_DEPTH24_STENCIL8,
1160 GL_DEPTH32F_STENCIL8,
1161 };
1162
IsValid(const GLenum value)1163 bool Validators::TextureSwizzleValidator::IsValid(const GLenum value) const {
1164 switch (value) {
1165 case GL_RED:
1166 case GL_GREEN:
1167 case GL_BLUE:
1168 case GL_ALPHA:
1169 case GL_ZERO:
1170 case GL_ONE:
1171 return true;
1172 }
1173 return false;
1174 }
1175
1176 static const GLenum valid_texture_target_table[] = {
1177 GL_TEXTURE_2D,
1178 GL_TEXTURE_CUBE_MAP_POSITIVE_X,
1179 GL_TEXTURE_CUBE_MAP_NEGATIVE_X,
1180 GL_TEXTURE_CUBE_MAP_POSITIVE_Y,
1181 GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
1182 GL_TEXTURE_CUBE_MAP_POSITIVE_Z,
1183 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,
1184 };
1185
1186 static const GLenum valid_texture_unsized_internal_format_table[] = {
1187 GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_RGB, GL_RGBA,
1188 };
1189
IsValid(const GLenum value)1190 bool Validators::TextureUsageValidator::IsValid(const GLenum value) const {
1191 switch (value) {
1192 case GL_NONE:
1193 case GL_FRAMEBUFFER_ATTACHMENT_ANGLE:
1194 return true;
1195 }
1196 return false;
1197 }
1198
IsValid(const GLenum value)1199 bool Validators::TextureWrapModeValidator::IsValid(const GLenum value) const {
1200 switch (value) {
1201 case GL_CLAMP_TO_EDGE:
1202 case GL_MIRRORED_REPEAT:
1203 case GL_REPEAT:
1204 return true;
1205 }
1206 return false;
1207 }
1208
1209 static const GLenum valid_transform_feedback_bind_target_table[] = {
1210 GL_TRANSFORM_FEEDBACK,
1211 };
1212
IsValid(const GLenum value)1213 bool Validators::TransformFeedbackPrimitiveModeValidator::IsValid(
1214 const GLenum value) const {
1215 switch (value) {
1216 case GL_POINTS:
1217 case GL_LINES:
1218 case GL_TRIANGLES:
1219 return true;
1220 }
1221 return false;
1222 }
1223
IsValid(const GLenum value)1224 bool Validators::UniformBlockParameterValidator::IsValid(
1225 const GLenum value) const {
1226 switch (value) {
1227 case GL_UNIFORM_BLOCK_BINDING:
1228 case GL_UNIFORM_BLOCK_DATA_SIZE:
1229 case GL_UNIFORM_BLOCK_NAME_LENGTH:
1230 case GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS:
1231 case GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES:
1232 case GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER:
1233 case GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER:
1234 return true;
1235 }
1236 return false;
1237 }
1238
IsValid(const GLenum value)1239 bool Validators::UniformParameterValidator::IsValid(const GLenum value) const {
1240 switch (value) {
1241 case GL_UNIFORM_SIZE:
1242 case GL_UNIFORM_TYPE:
1243 case GL_UNIFORM_NAME_LENGTH:
1244 case GL_UNIFORM_BLOCK_INDEX:
1245 case GL_UNIFORM_OFFSET:
1246 case GL_UNIFORM_ARRAY_STRIDE:
1247 case GL_UNIFORM_MATRIX_STRIDE:
1248 case GL_UNIFORM_IS_ROW_MAJOR:
1249 return true;
1250 }
1251 return false;
1252 }
1253
IsValid(const GLenum value)1254 bool Validators::VertexAttribITypeValidator::IsValid(const GLenum value) const {
1255 switch (value) {
1256 case GL_BYTE:
1257 case GL_UNSIGNED_BYTE:
1258 case GL_SHORT:
1259 case GL_UNSIGNED_SHORT:
1260 case GL_INT:
1261 case GL_UNSIGNED_INT:
1262 return true;
1263 }
1264 return false;
1265 }
1266
1267 static const GLenum valid_vertex_attrib_type_table[] = {
1268 GL_BYTE, GL_UNSIGNED_BYTE, GL_SHORT, GL_UNSIGNED_SHORT, GL_FLOAT,
1269 };
1270
1271 static const GLenum valid_vertex_attrib_type_table_es3[] = {
1272 GL_INT,
1273 GL_UNSIGNED_INT,
1274 GL_HALF_FLOAT,
1275 GL_INT_2_10_10_10_REV,
1276 GL_UNSIGNED_INT_2_10_10_10_REV,
1277 };
1278
1279 static const GLenum valid_vertex_attribute_table[] = {
1280 GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING,
1281 GL_VERTEX_ATTRIB_ARRAY_ENABLED, GL_VERTEX_ATTRIB_ARRAY_SIZE,
1282 GL_VERTEX_ATTRIB_ARRAY_STRIDE, GL_VERTEX_ATTRIB_ARRAY_TYPE,
1283 GL_CURRENT_VERTEX_ATTRIB,
1284 };
1285
1286 static const GLenum valid_vertex_attribute_table_es3[] = {
1287 GL_VERTEX_ATTRIB_ARRAY_INTEGER,
1288 GL_VERTEX_ATTRIB_ARRAY_DIVISOR,
1289 };
1290
1291 static const GLenum valid_vertex_pointer_table[] = {
1292 GL_VERTEX_ATTRIB_ARRAY_POINTER,
1293 };
1294
IsValid(const GLenum value)1295 bool Validators::WindowRectanglesModeValidator::IsValid(
1296 const GLenum value) const {
1297 switch (value) {
1298 case GL_INCLUSIVE_EXT:
1299 case GL_EXCLUSIVE_EXT:
1300 return true;
1301 }
1302 return false;
1303 }
1304
Validators()1305 Validators::Validators()
1306 : attachment(valid_attachment_table, base::size(valid_attachment_table)),
1307 attachment_query(valid_attachment_query_table,
1308 base::size(valid_attachment_query_table)),
1309 bufferfi(valid_bufferfi_table, base::size(valid_bufferfi_table)),
1310 bufferuiv(valid_bufferuiv_table, base::size(valid_bufferuiv_table)),
1311 capability(valid_capability_table, base::size(valid_capability_table)),
1312 compressed_texture_format(),
1313 coverage_modulation_components(
1314 valid_coverage_modulation_components_table,
1315 base::size(valid_coverage_modulation_components_table)),
1316 dst_blend_factor(valid_dst_blend_factor_table,
1317 base::size(valid_dst_blend_factor_table)),
1318 equation(valid_equation_table, base::size(valid_equation_table)),
1319 framebuffer_attachment_parameter(
1320 valid_framebuffer_attachment_parameter_table,
1321 base::size(valid_framebuffer_attachment_parameter_table)),
1322 framebuffer_parameter(),
1323 framebuffer_target(valid_framebuffer_target_table,
1324 base::size(valid_framebuffer_target_table)),
1325 g_l_state(valid_g_l_state_table, base::size(valid_g_l_state_table)),
1326 get_tex_param_target(valid_get_tex_param_target_table,
1327 base::size(valid_get_tex_param_target_table)),
1328 hint_target(valid_hint_target_table, base::size(valid_hint_target_table)),
1329 image_internal_format(valid_image_internal_format_table,
1330 base::size(valid_image_internal_format_table)),
1331 index_type(valid_index_type_table, base::size(valid_index_type_table)),
1332 indexed_g_l_state(valid_indexed_g_l_state_table,
1333 base::size(valid_indexed_g_l_state_table)),
1334 pixel_store(valid_pixel_store_table, base::size(valid_pixel_store_table)),
1335 pixel_type(valid_pixel_type_table, base::size(valid_pixel_type_table)),
1336 program_parameter(valid_program_parameter_table,
1337 base::size(valid_program_parameter_table)),
1338 read_buffer(valid_read_buffer_table, base::size(valid_read_buffer_table)),
1339 read_pixel_format(valid_read_pixel_format_table,
1340 base::size(valid_read_pixel_format_table)),
1341 read_pixel_type(valid_read_pixel_type_table,
1342 base::size(valid_read_pixel_type_table)),
1343 render_buffer_format(valid_render_buffer_format_table,
1344 base::size(valid_render_buffer_format_table)),
1345 render_buffer_parameter(valid_render_buffer_parameter_table,
1346 base::size(valid_render_buffer_parameter_table)),
1347 render_buffer_target(valid_render_buffer_target_table,
1348 base::size(valid_render_buffer_target_table)),
1349 sampler_parameter(valid_sampler_parameter_table,
1350 base::size(valid_sampler_parameter_table)),
1351 shader_binary_format(),
1352 shader_parameter(valid_shader_parameter_table,
1353 base::size(valid_shader_parameter_table)),
1354 src_blend_factor(valid_src_blend_factor_table,
1355 base::size(valid_src_blend_factor_table)),
1356 sync_flush_flags(valid_sync_flush_flags_table,
1357 base::size(valid_sync_flush_flags_table)),
1358 texture_bind_target(valid_texture_bind_target_table,
1359 base::size(valid_texture_bind_target_table)),
1360 texture_compare_mode(valid_texture_compare_mode_table,
1361 base::size(valid_texture_compare_mode_table)),
1362 texture_depth_renderable_internal_format(),
1363 texture_fbo_target(valid_texture_fbo_target_table,
1364 base::size(valid_texture_fbo_target_table)),
1365 texture_format(valid_texture_format_table,
1366 base::size(valid_texture_format_table)),
1367 texture_internal_format(valid_texture_internal_format_table,
1368 base::size(valid_texture_internal_format_table)),
1369 texture_internal_format_storage(
1370 valid_texture_internal_format_storage_table,
1371 base::size(valid_texture_internal_format_storage_table)),
1372 texture_parameter(valid_texture_parameter_table,
1373 base::size(valid_texture_parameter_table)),
1374 texture_sized_color_renderable_internal_format(
1375 valid_texture_sized_color_renderable_internal_format_table,
1376 base::size(
1377 valid_texture_sized_color_renderable_internal_format_table)),
1378 texture_sized_texture_filterable_internal_format(
1379 valid_texture_sized_texture_filterable_internal_format_table,
1380 base::size(
1381 valid_texture_sized_texture_filterable_internal_format_table)),
1382 texture_stencil_renderable_internal_format(),
1383 texture_target(valid_texture_target_table,
1384 base::size(valid_texture_target_table)),
1385 texture_unsized_internal_format(
1386 valid_texture_unsized_internal_format_table,
1387 base::size(valid_texture_unsized_internal_format_table)),
1388 transform_feedback_bind_target(
1389 valid_transform_feedback_bind_target_table,
1390 base::size(valid_transform_feedback_bind_target_table)),
1391 vertex_attrib_type(valid_vertex_attrib_type_table,
1392 base::size(valid_vertex_attrib_type_table)),
1393 vertex_attribute(valid_vertex_attribute_table,
1394 base::size(valid_vertex_attribute_table)),
1395 vertex_pointer(valid_vertex_pointer_table,
1396 base::size(valid_vertex_pointer_table)) {}
1397
UpdateValuesES3()1398 void Validators::UpdateValuesES3() {
1399 attachment.AddValues(valid_attachment_table_es3,
1400 base::size(valid_attachment_table_es3));
1401 attachment_query.AddValues(valid_attachment_query_table_es3,
1402 base::size(valid_attachment_query_table_es3));
1403 buffer_parameter.SetIsES3(true);
1404 buffer_target.SetIsES3(true);
1405 buffer_usage.SetIsES3(true);
1406 capability.AddValues(valid_capability_table_es3,
1407 base::size(valid_capability_table_es3));
1408 dst_blend_factor.AddValues(valid_dst_blend_factor_table_es3,
1409 base::size(valid_dst_blend_factor_table_es3));
1410 equation.AddValues(valid_equation_table_es3,
1411 base::size(valid_equation_table_es3));
1412 framebuffer_attachment_parameter.AddValues(
1413 valid_framebuffer_attachment_parameter_table_es3,
1414 base::size(valid_framebuffer_attachment_parameter_table_es3));
1415 framebuffer_target.AddValues(valid_framebuffer_target_table_es3,
1416 base::size(valid_framebuffer_target_table_es3));
1417 g_l_state.AddValues(valid_g_l_state_table_es3,
1418 base::size(valid_g_l_state_table_es3));
1419 get_tex_param_target.AddValues(
1420 valid_get_tex_param_target_table_es3,
1421 base::size(valid_get_tex_param_target_table_es3));
1422 hint_target.AddValues(valid_hint_target_table_es3,
1423 base::size(valid_hint_target_table_es3));
1424 index_type.AddValues(valid_index_type_table_es3,
1425 base::size(valid_index_type_table_es3));
1426 pixel_store.AddValues(valid_pixel_store_table_es3,
1427 base::size(valid_pixel_store_table_es3));
1428 pixel_type.AddValues(valid_pixel_type_table_es3,
1429 base::size(valid_pixel_type_table_es3));
1430 program_parameter.AddValues(valid_program_parameter_table_es3,
1431 base::size(valid_program_parameter_table_es3));
1432 read_pixel_format.AddValues(valid_read_pixel_format_table_es3,
1433 base::size(valid_read_pixel_format_table_es3));
1434 read_pixel_type.AddValues(valid_read_pixel_type_table_es3,
1435 base::size(valid_read_pixel_type_table_es3));
1436 render_buffer_format.AddValues(
1437 valid_render_buffer_format_table_es3,
1438 base::size(valid_render_buffer_format_table_es3));
1439 render_buffer_parameter.AddValues(
1440 valid_render_buffer_parameter_table_es3,
1441 base::size(valid_render_buffer_parameter_table_es3));
1442 texture_bind_target.AddValues(
1443 valid_texture_bind_target_table_es3,
1444 base::size(valid_texture_bind_target_table_es3));
1445 texture_depth_renderable_internal_format.AddValues(
1446 valid_texture_depth_renderable_internal_format_table_es3,
1447 base::size(valid_texture_depth_renderable_internal_format_table_es3));
1448 texture_format.AddValues(valid_texture_format_table_es3,
1449 base::size(valid_texture_format_table_es3));
1450 texture_internal_format.AddValues(
1451 valid_texture_internal_format_table_es3,
1452 base::size(valid_texture_internal_format_table_es3));
1453 texture_internal_format_storage.RemoveValues(
1454 deprecated_texture_internal_format_storage_table_es3,
1455 base::size(deprecated_texture_internal_format_storage_table_es3));
1456 texture_internal_format_storage.AddValues(
1457 valid_texture_internal_format_storage_table_es3,
1458 base::size(valid_texture_internal_format_storage_table_es3));
1459 texture_parameter.AddValues(valid_texture_parameter_table_es3,
1460 base::size(valid_texture_parameter_table_es3));
1461 texture_stencil_renderable_internal_format.AddValues(
1462 valid_texture_stencil_renderable_internal_format_table_es3,
1463 base::size(valid_texture_stencil_renderable_internal_format_table_es3));
1464 vertex_attrib_type.AddValues(valid_vertex_attrib_type_table_es3,
1465 base::size(valid_vertex_attrib_type_table_es3));
1466 vertex_attribute.AddValues(valid_vertex_attribute_table_es3,
1467 base::size(valid_vertex_attribute_table_es3));
1468 }
1469
UpdateETCCompressedTextureFormats()1470 void Validators::UpdateETCCompressedTextureFormats() {
1471 compressed_texture_format.AddValue(GL_COMPRESSED_R11_EAC);
1472 compressed_texture_format.AddValue(GL_COMPRESSED_SIGNED_R11_EAC);
1473 compressed_texture_format.AddValue(GL_COMPRESSED_RG11_EAC);
1474 compressed_texture_format.AddValue(GL_COMPRESSED_SIGNED_RG11_EAC);
1475 compressed_texture_format.AddValue(GL_COMPRESSED_RGB8_ETC2);
1476 compressed_texture_format.AddValue(GL_COMPRESSED_SRGB8_ETC2);
1477 compressed_texture_format.AddValue(
1478 GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2);
1479 compressed_texture_format.AddValue(
1480 GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2);
1481 compressed_texture_format.AddValue(GL_COMPRESSED_RGBA8_ETC2_EAC);
1482 compressed_texture_format.AddValue(GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC);
1483 texture_internal_format_storage.AddValue(GL_COMPRESSED_R11_EAC);
1484 texture_internal_format_storage.AddValue(GL_COMPRESSED_SIGNED_R11_EAC);
1485 texture_internal_format_storage.AddValue(GL_COMPRESSED_RG11_EAC);
1486 texture_internal_format_storage.AddValue(GL_COMPRESSED_SIGNED_RG11_EAC);
1487 texture_internal_format_storage.AddValue(GL_COMPRESSED_RGB8_ETC2);
1488 texture_internal_format_storage.AddValue(GL_COMPRESSED_SRGB8_ETC2);
1489 texture_internal_format_storage.AddValue(
1490 GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2);
1491 texture_internal_format_storage.AddValue(
1492 GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2);
1493 texture_internal_format_storage.AddValue(GL_COMPRESSED_RGBA8_ETC2_EAC);
1494 texture_internal_format_storage.AddValue(GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC);
1495 }
1496
1497 #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_VALIDATION_IMPLEMENTATION_AUTOGEN_H_
1498