Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(96)

Side by Side Diff: gpu/command_buffer/build_gles2_cmd_buffer.py

Issue 169603002: Add initial support for NV_path_rendering extension to gpu command buffer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address review comment Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gpu/GLES2/gl2extchromium.h ('k') | gpu/command_buffer/client/gles2_c_lib_autogen.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """code generator for GLES2 command buffers.""" 6 """code generator for GLES2 command buffers."""
7 7
8 import itertools 8 import itertools
9 import os 9 import os
10 import os.path 10 import os.path
(...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 'expected': 'kViewportWidth', 499 'expected': 'kViewportWidth',
500 }, 500 },
501 { 501 {
502 'name': 'viewport_height', 502 'name': 'viewport_height',
503 'type': 'GLsizei', 503 'type': 'GLsizei',
504 'default': '1', 504 'default': '1',
505 'expected': 'kViewportHeight', 505 'expected': 'kViewportHeight',
506 }, 506 },
507 ], 507 ],
508 }, 508 },
509 'MatrixValuesCHROMIUM': {
510 'type': 'NamedParameter',
511 'func': 'MatrixLoadfEXT',
512 'states': [
513 { 'enum': 'GL_PATH_MODELVIEW_MATRIX_CHROMIUM',
514 'enum_set': 'GL_PATH_MODELVIEW_CHROMIUM',
515 'name': 'modelview_matrix',
516 'type': 'GLfloat',
517 'default': [
518 '1.0f', '0.0f','0.0f','0.0f',
519 '0.0f', '1.0f','0.0f','0.0f',
520 '0.0f', '0.0f','1.0f','0.0f',
521 '0.0f', '0.0f','0.0f','1.0f',
522 ],
523 'extension_flag': 'chromium_path_rendering',
524 },
525 { 'enum': 'GL_PATH_PROJECTION_MATRIX_CHROMIUM',
526 'enum_set': 'GL_PATH_PROJECTION_CHROMIUM',
527 'name': 'projection_matrix',
528 'type': 'GLfloat',
529 'default': [
530 '1.0f', '0.0f','0.0f','0.0f',
531 '0.0f', '1.0f','0.0f','0.0f',
532 '0.0f', '0.0f','1.0f','0.0f',
533 '0.0f', '0.0f','0.0f','1.0f',
534 ],
535 'extension_flag': 'chromium_path_rendering',
536 },
537 ],
538 },
509 } 539 }
510 540
511 # Named type info object represents a named type that is used in OpenGL call 541 # Named type info object represents a named type that is used in OpenGL call
512 # arguments. Each named type defines a set of valid OpenGL call arguments. The 542 # arguments. Each named type defines a set of valid OpenGL call arguments. The
513 # named types are used in 'cmd_buffer_functions.txt'. 543 # named types are used in 'cmd_buffer_functions.txt'.
514 # type: The actual GL type of the named type. 544 # type: The actual GL type of the named type.
515 # valid: The list of values that are valid for both the client and the service. 545 # valid: The list of values that are valid for both the client and the service.
516 # invalid: Examples of invalid values for the type. At least these values 546 # invalid: Examples of invalid values for the type. At least these values
517 # should be tested to be invalid. 547 # should be tested to be invalid.
518 # is_complete: The list of valid values of type are final and will not be 548 # is_complete: The list of valid values of type are final and will not be
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
832 }, 862 },
833 'FrameBufferParameter': { 863 'FrameBufferParameter': {
834 'type': 'GLenum', 864 'type': 'GLenum',
835 'valid': [ 865 'valid': [
836 'GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE', 866 'GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE',
837 'GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME', 867 'GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME',
838 'GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL', 868 'GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL',
839 'GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE', 869 'GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE',
840 ], 870 ],
841 }, 871 },
872 'MatrixMode': {
873 'type': 'GLenum',
874 'valid': [
875 'GL_PATH_PROJECTION_CHROMIUM',
876 'GL_PATH_MODELVIEW_CHROMIUM',
877 ],
878 },
842 'ProgramParameter': { 879 'ProgramParameter': {
843 'type': 'GLenum', 880 'type': 'GLenum',
844 'valid': [ 881 'valid': [
845 'GL_DELETE_STATUS', 882 'GL_DELETE_STATUS',
846 'GL_LINK_STATUS', 883 'GL_LINK_STATUS',
847 'GL_VALIDATE_STATUS', 884 'GL_VALIDATE_STATUS',
848 'GL_INFO_LOG_LENGTH', 885 'GL_INFO_LOG_LENGTH',
849 'GL_ATTACHED_SHADERS', 886 'GL_ATTACHED_SHADERS',
850 'GL_ACTIVE_ATTRIBUTES', 887 'GL_ACTIVE_ATTRIBUTES',
851 'GL_ACTIVE_ATTRIBUTE_MAX_LENGTH', 888 'GL_ACTIVE_ATTRIBUTE_MAX_LENGTH',
(...skipping 1725 matching lines...) Expand 10 before | Expand all | Expand 10 after
2577 'chromium': True, 2614 'chromium': True,
2578 }, 2615 },
2579 'ScheduleOverlayPlaneCHROMIUM': { 2616 'ScheduleOverlayPlaneCHROMIUM': {
2580 'type': 'Custom', 2617 'type': 'Custom',
2581 'impl_func': True, 2618 'impl_func': True,
2582 'unit_test': False, 2619 'unit_test': False,
2583 'client_test': False, 2620 'client_test': False,
2584 'extension': True, 2621 'extension': True,
2585 'chromium': True, 2622 'chromium': True,
2586 }, 2623 },
2624 'MatrixLoadfCHROMIUM': {
2625 'type': 'PUT',
2626 'count': 16,
2627 'data_type': 'GLfloat',
2628 'decoder_func': 'DoMatrixLoadfCHROMIUM',
2629 'gl_test_func': 'glMatrixLoadfEXT',
2630 'chromium': True,
2631 'extension': True,
2632 'extension_flag': 'chromium_path_rendering',
2633 },
2634 'MatrixLoadIdentityCHROMIUM': {
2635 'decoder_func': 'DoMatrixLoadIdentityCHROMIUM',
2636 'gl_test_func': 'glMatrixLoadIdentityEXT',
2637 'chromium': True,
2638 'extension': True,
2639 'extension_flag': 'chromium_path_rendering',
2640 },
2587 } 2641 }
2588 2642
2589 2643
2590 def Grouper(n, iterable, fillvalue=None): 2644 def Grouper(n, iterable, fillvalue=None):
2591 """Collect data into fixed-length chunks or blocks""" 2645 """Collect data into fixed-length chunks or blocks"""
2592 args = [iter(iterable)] * n 2646 args = [iter(iterable)] * n
2593 return itertools.izip_longest(fillvalue=fillvalue, *args) 2647 return itertools.izip_longest(fillvalue=fillvalue, *args)
2594 2648
2595 2649
2596 def SplitWords(input_string): 2650 def SplitWords(input_string):
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
2646 uppercase_words = [ 'img', 'ext', 'arb', 'chromium', 'oes', 'amd', 'bgra8888', 2700 uppercase_words = [ 'img', 'ext', 'arb', 'chromium', 'oes', 'amd', 'bgra8888',
2647 'egl', 'atc', 'etc1', 'angle'] 2701 'egl', 'atc', 'etc1', 'angle']
2648 parts = extension_flag.split('_') 2702 parts = extension_flag.split('_')
2649 return "_".join( 2703 return "_".join(
2650 [part.upper() if part in uppercase_words else part for part in parts]) 2704 [part.upper() if part in uppercase_words else part for part in parts])
2651 2705
2652 def ToCamelCase(input_string): 2706 def ToCamelCase(input_string):
2653 """converts ABC_underscore_case to ABCUnderscoreCase.""" 2707 """converts ABC_underscore_case to ABCUnderscoreCase."""
2654 return ''.join(w[0].upper() + w[1:] for w in input_string.split('_')) 2708 return ''.join(w[0].upper() + w[1:] for w in input_string.split('_'))
2655 2709
2710 def GetGLGetTypeConversion(result_type, value_type, value):
2711 """Makes a gl compatible type conversion string for accessing state variables.
2712
2713 Useful when accessing state variables through glGetXXX calls.
2714 glGet documetation (for example, the manual pages):
2715 [...] If glGetIntegerv is called, [...] most floating-point values are
2716 rounded to the nearest integer value. [...]
2717
2718 Args:
2719 result_type: the gl type to be obtained
2720 value_type: the GL type of the state variable
2721 value: the name of the state variable
2722
2723 Returns:
2724 String that converts the state variable to desired GL type according to GL
2725 rules.
2726 """
2727
2728 if result_type == 'GLint':
2729 if value_type == 'GLfloat':
2730 return 'static_cast<GLint>(round(%s))' % value
2731 return 'static_cast<%s>(%s)' % (result_type, value)
2732
2656 class CWriter(object): 2733 class CWriter(object):
2657 """Writes to a file formatting it for Google's style guidelines.""" 2734 """Writes to a file formatting it for Google's style guidelines."""
2658 2735
2659 def __init__(self, filename): 2736 def __init__(self, filename):
2660 self.filename = filename 2737 self.filename = filename
2661 self.content = [] 2738 self.content = []
2662 2739
2663 def Write(self, string): 2740 def Write(self, string):
2664 """Writes a string to a file spliting if it's > 80 characters.""" 2741 """Writes a string to a file spliting if it's > 80 characters."""
2665 lines = string.splitlines() 2742 lines = string.splitlines()
(...skipping 4795 matching lines...) Expand 10 before | Expand all | Expand 10 after
7461 file.Write("struct EnableFlags {\n") 7538 file.Write("struct EnableFlags {\n")
7462 file.Write(" EnableFlags();\n") 7539 file.Write(" EnableFlags();\n")
7463 for capability in _CAPABILITY_FLAGS: 7540 for capability in _CAPABILITY_FLAGS:
7464 file.Write(" bool %s;\n" % capability['name']) 7541 file.Write(" bool %s;\n" % capability['name'])
7465 file.Write(" bool cached_%s;\n" % capability['name']) 7542 file.Write(" bool cached_%s;\n" % capability['name'])
7466 file.Write("};\n\n") 7543 file.Write("};\n\n")
7467 7544
7468 for state_name in sorted(_STATES.keys()): 7545 for state_name in sorted(_STATES.keys()):
7469 state = _STATES[state_name] 7546 state = _STATES[state_name]
7470 for item in state['states']: 7547 for item in state['states']:
7471 file.Write("%s %s;\n" % (item['type'], item['name'])) 7548 if isinstance(item['default'], list):
7549 file.Write("%s %s[%d];\n" % (item['type'], item['name'],
7550 len(item['default'])))
7551 else:
7552 file.Write("%s %s;\n" % (item['type'], item['name']))
7553
7472 if item.get('cached', False): 7554 if item.get('cached', False):
7473 file.Write("%s cached_%s;\n" % (item['type'], item['name'])) 7555 if isinstance(item['default'], list):
7556 file.Write("%s cached_%s[%d];\n" % (item['type'], item['name'],
7557 len(item['default'])))
7558 else:
7559 file.Write("%s cached_%s;\n" % (item['type'], item['name']))
7560
7474 file.Write("\n") 7561 file.Write("\n")
7475 7562
7476 file.Write(""" 7563 file.Write("""
7477 inline void SetDeviceCapabilityState(GLenum cap, bool enable) { 7564 inline void SetDeviceCapabilityState(GLenum cap, bool enable) {
7478 switch (cap) { 7565 switch (cap) {
7479 """) 7566 """)
7480 for capability in _CAPABILITY_FLAGS: 7567 for capability in _CAPABILITY_FLAGS:
7481 file.Write("""\ 7568 file.Write("""\
7482 case GL_%s: 7569 case GL_%s:
7483 """ % capability['name'].upper()) 7570 """ % capability['name'].upper())
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
7531 file.Write(" *num_written = %d;\n" % len(state['states'])) 7618 file.Write(" *num_written = %d;\n" % len(state['states']))
7532 file.Write(" if (params) {\n") 7619 file.Write(" if (params) {\n")
7533 for ndx,item in enumerate(state['states']): 7620 for ndx,item in enumerate(state['states']):
7534 file.Write(" params[%d] = static_cast<%s>(%s);\n" % 7621 file.Write(" params[%d] = static_cast<%s>(%s);\n" %
7535 (ndx, gl_type, item['name'])) 7622 (ndx, gl_type, item['name']))
7536 file.Write(" }\n") 7623 file.Write(" }\n")
7537 file.Write(" return true;\n") 7624 file.Write(" return true;\n")
7538 else: 7625 else:
7539 for item in state['states']: 7626 for item in state['states']:
7540 file.Write(" case %s:\n" % item['enum']) 7627 file.Write(" case %s:\n" % item['enum'])
7541 file.Write(" *num_written = 1;\n") 7628 if isinstance(item['default'], list):
7542 file.Write(" if (params) {\n") 7629 item_len = len(item['default'])
7543 file.Write(" params[0] = static_cast<%s>(%s);\n" % 7630 file.Write(" *num_written = %d;\n" % item_len)
7544 (gl_type, item['name'])) 7631 file.Write(" if (params) {\n")
7632 if item['type'] == gl_type:
7633 file.Write(" memcpy(params, %s, sizeof(%s) * %d);\n" %
7634 (item['name'], item['type'], item_len))
7635 else:
7636 file.Write(" for (size_t i = 0; i < %s; ++i) {\n" %
7637 item_len)
7638 file.Write(" params[i] = %s;\n" %
7639 (GetGLGetTypeConversion(gl_type, item['type'],
7640 "%s[i]" % item['name'])))
7641 file.Write(" }\n");
7642 else:
7643 file.Write(" *num_written = 1;\n")
7644 file.Write(" if (params) {\n")
7645 file.Write(" params[0] = %s;\n" %
7646 (GetGLGetTypeConversion(gl_type, item['type'],
7647 item['name'])))
7545 file.Write(" }\n") 7648 file.Write(" }\n")
7546 file.Write(" return true;\n") 7649 file.Write(" return true;\n")
7547 for capability in _CAPABILITY_FLAGS: 7650 for capability in _CAPABILITY_FLAGS:
7548 file.Write(" case GL_%s:\n" % capability['name'].upper()) 7651 file.Write(" case GL_%s:\n" % capability['name'].upper())
7549 file.Write(" *num_written = 1;\n") 7652 file.Write(" *num_written = 1;\n")
7550 file.Write(" if (params) {\n") 7653 file.Write(" if (params) {\n")
7551 file.Write( 7654 file.Write(
7552 " params[0] = static_cast<%s>(enable_flags.%s);\n" % 7655 " params[0] = static_cast<%s>(enable_flags.%s);\n" %
7553 (gl_type, capability['name'])) 7656 (gl_type, capability['name']))
7554 file.Write(" }\n") 7657 file.Write(" }\n")
(...skipping 18 matching lines...) Expand all
7573 (capability['name'], 7676 (capability['name'],
7574 ('false', 'true')['default' in capability])) 7677 ('false', 'true')['default' in capability]))
7575 file.Write("ContextState::EnableFlags::EnableFlags()\n : %s {\n}\n" % 7678 file.Write("ContextState::EnableFlags::EnableFlags()\n : %s {\n}\n" %
7576 ",\n ".join(code)) 7679 ",\n ".join(code))
7577 file.Write("\n") 7680 file.Write("\n")
7578 7681
7579 file.Write("void ContextState::Initialize() {\n") 7682 file.Write("void ContextState::Initialize() {\n")
7580 for state_name in sorted(_STATES.keys()): 7683 for state_name in sorted(_STATES.keys()):
7581 state = _STATES[state_name] 7684 state = _STATES[state_name]
7582 for item in state['states']: 7685 for item in state['states']:
7583 file.Write(" %s = %s;\n" % (item['name'], item['default'])) 7686 if isinstance(item['default'], list):
7687 for ndx, value in enumerate(item['default']):
7688 file.Write(" %s[%d] = %s;\n" % (item['name'], ndx, value))
7689 else:
7690 file.Write(" %s = %s;\n" % (item['name'], item['default']))
7584 if item.get('cached', False): 7691 if item.get('cached', False):
7585 file.Write(" cached_%s = %s;\n" % (item['name'], item['default'])) 7692 if isinstance(item['default'], list):
7693 for ndx, value in enumerate(item['default']):
7694 file.Write(" cached_%s[%d] = %s;\n" % (item['name'], ndx, value))
7695 else:
7696 file.Write(" cached_%s = %s;\n" % (item['name'], item['default']))
7586 file.Write("}\n") 7697 file.Write("}\n")
7587 7698
7588 file.Write(""" 7699 file.Write("""
7589 void ContextState::InitCapabilities(const ContextState* prev_state) const { 7700 void ContextState::InitCapabilities(const ContextState* prev_state) const {
7590 """) 7701 """)
7591 def WriteCapabilities(test_prev): 7702 def WriteCapabilities(test_prev):
7592 for capability in _CAPABILITY_FLAGS: 7703 for capability in _CAPABILITY_FLAGS:
7593 capability_name = capability['name'] 7704 capability_name = capability['name']
7594 if test_prev: 7705 if test_prev:
7595 file.Write(""" if (prev_state->enable_flags.cached_%s != 7706 file.Write(""" if (prev_state->enable_flags.cached_%s !=
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
7629 if test_prev: 7740 if test_prev:
7630 file.Write(")\n") 7741 file.Write(")\n")
7631 file.Write( 7742 file.Write(
7632 " gl%s(%s, %s);\n" % 7743 " gl%s(%s, %s);\n" %
7633 (state['func'], ('GL_FRONT', 'GL_BACK')[ndx], ", ".join(args))) 7744 (state['func'], ('GL_FRONT', 'GL_BACK')[ndx], ", ".join(args)))
7634 elif state['type'] == 'NamedParameter': 7745 elif state['type'] == 'NamedParameter':
7635 for item in state['states']: 7746 for item in state['states']:
7636 item_name = CachedStateName(item) 7747 item_name = CachedStateName(item)
7637 7748
7638 if 'extension_flag' in item: 7749 if 'extension_flag' in item:
7639 file.Write(" if (feature_info_->feature_flags().%s)\n " % 7750 file.Write(" if (feature_info_->feature_flags().%s) {\n " %
7640 item['extension_flag']) 7751 item['extension_flag'])
7641 if test_prev: 7752 if test_prev:
7642 file.Write(" if (prev_state->%s != %s)\n" % 7753 if isinstance(item['default'], list):
7643 (item_name, item_name)) 7754 file.Write(" if (memcmp(prev_state->%s, %s, "
7755 "sizeof(%s) * %d)) {\n" %
7756 (item_name, item_name, item['type'],
7757 len(item['default'])))
7758 else:
7759 file.Write(" if (prev_state->%s != %s) {\n " %
7760 (item_name, item_name))
7644 file.Write(" gl%s(%s, %s);\n" % 7761 file.Write(" gl%s(%s, %s);\n" %
7645 (state['func'], item['enum'], item_name)) 7762 (state['func'],
7763 (item['enum_set']
7764 if 'enum_set' in item else item['enum']),
7765 item['name']))
7766 if test_prev:
7767 if 'extension_flag' in item:
7768 file.Write(" ")
7769 file.Write(" }")
7770 if 'extension_flag' in item:
7771 file.Write(" }")
7646 else: 7772 else:
7647 if 'extension_flag' in state: 7773 if 'extension_flag' in state:
7648 file.Write(" if (feature_info_->feature_flags().%s)\n " % 7774 file.Write(" if (feature_info_->feature_flags().%s)\n " %
7649 state['extension_flag']) 7775 state['extension_flag'])
7650 if test_prev: 7776 if test_prev:
7651 file.Write(" if (") 7777 file.Write(" if (")
7652 args = [] 7778 args = []
7653 for place, item in enumerate(state['states']): 7779 for place, item in enumerate(state['states']):
7654 item_name = CachedStateName(item) 7780 item_name = CachedStateName(item)
7655 args.append('%s' % item_name) 7781 args.append('%s' % item_name)
7656 if test_prev: 7782 if test_prev:
7657 if place > 0: 7783 if place > 0:
7658 file.Write(' ||\n') 7784 file.Write(' ||\n')
7659 file.Write("(%s != prev_state->%s)" % 7785 file.Write("(%s != prev_state->%s)" %
7660 (item_name, item_name)) 7786 (item_name, item_name))
7661 if test_prev: 7787 if test_prev:
7662 file.Write(" )\n") 7788 file.Write(" )\n")
7663 file.Write(" gl%s(%s);\n" % (state['func'], ", ".join(args))) 7789 file.Write(" gl%s(%s);\n" % (state['func'], ", ".join(args)))
7664 7790
7665 file.Write(" if (prev_state) {") 7791 file.Write(" if (prev_state) {")
7666 WriteStates(True) 7792 WriteStates(True)
7667 file.Write(" } else {") 7793 file.Write(" } else {")
7668 WriteStates(False) 7794 WriteStates(False)
7669 file.Write(" }") 7795 file.Write(" }")
7670
7671 file.Write("}\n") 7796 file.Write("}\n")
7672 7797
7673 file.Write("""bool ContextState::GetEnabled(GLenum cap) const { 7798 file.Write("""bool ContextState::GetEnabled(GLenum cap) const {
7674 switch (cap) { 7799 switch (cap) {
7675 """) 7800 """)
7676 for capability in _CAPABILITY_FLAGS: 7801 for capability in _CAPABILITY_FLAGS:
7677 file.Write(" case GL_%s:\n" % capability['name'].upper()) 7802 file.Write(" case GL_%s:\n" % capability['name'].upper())
7678 file.Write(" return enable_flags.%s;\n" % capability['name']) 7803 file.Write(" return enable_flags.%s;\n" % capability['name'])
7679 file.Write(""" default: 7804 file.Write(""" default:
7680 NOTREACHED(); 7805 NOTREACHED();
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
7847 " EXPECT_CALL(*gl_, %s(%s, %s))\n" % 7972 " EXPECT_CALL(*gl_, %s(%s, %s))\n" %
7848 (state['func'], ('GL_FRONT', 'GL_BACK')[ndx], ", ".join(args))) 7973 (state['func'], ('GL_FRONT', 'GL_BACK')[ndx], ", ".join(args)))
7849 file.Write(" .Times(1)\n") 7974 file.Write(" .Times(1)\n")
7850 file.Write(" .RetiresOnSaturation();\n") 7975 file.Write(" .RetiresOnSaturation();\n")
7851 elif state['type'] == 'NamedParameter': 7976 elif state['type'] == 'NamedParameter':
7852 for item in state['states']: 7977 for item in state['states']:
7853 if 'extension_flag' in item: 7978 if 'extension_flag' in item:
7854 file.Write(" if (group_->feature_info()->feature_flags().%s) {\n" % 7979 file.Write(" if (group_->feature_info()->feature_flags().%s) {\n" %
7855 item['extension_flag']) 7980 item['extension_flag'])
7856 file.Write(" ") 7981 file.Write(" ")
7982 expect_value = item['default']
7983 if isinstance(expect_value, list):
7984 # TODO: Currently we do not check array values.
7985 expect_value = "_"
7857 7986
7858 file.Write( 7987 file.Write(
7859 " EXPECT_CALL(*gl_, %s(%s, %s))\n" % 7988 " EXPECT_CALL(*gl_, %s(%s, %s))\n" %
7860 (state['func'], item['enum'], item['default'])) 7989 (state['func'],
7990 (item['enum_set']
7991 if 'enum_set' in item else item['enum']),
7992 expect_value))
7861 file.Write(" .Times(1)\n") 7993 file.Write(" .Times(1)\n")
7862 file.Write(" .RetiresOnSaturation();\n") 7994 file.Write(" .RetiresOnSaturation();\n")
7863 if 'extension_flag' in item: 7995 if 'extension_flag' in item:
7864 file.Write(" }\n") 7996 file.Write(" }\n")
7865 else: 7997 else:
7866 if 'extension_flag' in state: 7998 if 'extension_flag' in state:
7867 file.Write(" if (group_->feature_info()->feature_flags().%s) {\n" % 7999 file.Write(" if (group_->feature_info()->feature_flags().%s) {\n" %
7868 state['extension_flag']) 8000 state['extension_flag'])
7869 file.Write(" ") 8001 file.Write(" ")
7870 args = [] 8002 args = []
7871 for item in state['states']: 8003 for item in state['states']:
7872 if 'expected' in item: 8004 if 'expected' in item:
7873 args.append(item['expected']) 8005 args.append(item['expected'])
7874 else: 8006 else:
7875 args.append(item['default']) 8007 args.append(item['default'])
8008 # TODO: Currently we do not check array values.
8009 args = ["_" if isinstance(arg, list) else arg for arg in args]
7876 file.Write(" EXPECT_CALL(*gl_, %s(%s))\n" % 8010 file.Write(" EXPECT_CALL(*gl_, %s(%s))\n" %
7877 (state['func'], ", ".join(args))) 8011 (state['func'], ", ".join(args)))
7878 file.Write(" .Times(1)\n") 8012 file.Write(" .Times(1)\n")
7879 file.Write(" .RetiresOnSaturation();\n") 8013 file.Write(" .RetiresOnSaturation();\n")
7880 if 'extension_flag' in state: 8014 if 'extension_flag' in state:
7881 file.Write(" }\n") 8015 file.Write(" }\n")
7882 file.Write("""} 8016 file.Write("""}
7883 """) 8017 """)
7884 file.Close() 8018 file.Close()
7885 8019
(...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after
8345 parser.add_option( 8479 parser.add_option(
8346 "-v", "--verbose", action="store_true", 8480 "-v", "--verbose", action="store_true",
8347 help="prints more output.") 8481 help="prints more output.")
8348 8482
8349 (options, args) = parser.parse_args(args=argv) 8483 (options, args) = parser.parse_args(args=argv)
8350 8484
8351 # Add in states and capabilites to GLState 8485 # Add in states and capabilites to GLState
8352 gl_state_valid = _NAMED_TYPE_INFO['GLState']['valid'] 8486 gl_state_valid = _NAMED_TYPE_INFO['GLState']['valid']
8353 for state_name in sorted(_STATES.keys()): 8487 for state_name in sorted(_STATES.keys()):
8354 state = _STATES[state_name] 8488 state = _STATES[state_name]
8489 if 'extension_flag' in state:
8490 continue
8355 if 'enum' in state: 8491 if 'enum' in state:
8356 if not state['enum'] in gl_state_valid: 8492 if not state['enum'] in gl_state_valid:
8357 gl_state_valid.append(state['enum']) 8493 gl_state_valid.append(state['enum'])
8358 else: 8494 else:
8359 for item in state['states']: 8495 for item in state['states']:
8360 if 'extension_flag' in item: 8496 if 'extension_flag' in item:
8361 continue 8497 continue
8362 if not item['enum'] in gl_state_valid: 8498 if not item['enum'] in gl_state_valid:
8363 gl_state_valid.append(item['enum']) 8499 gl_state_valid.append(item['enum'])
8364 for capability in _CAPABILITY_FLAGS: 8500 for capability in _CAPABILITY_FLAGS:
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
8463 "ppapi/shared_impl/ppb_opengles2_shared.cc"]) 8599 "ppapi/shared_impl/ppb_opengles2_shared.cc"])
8464 8600
8465 if gen.errors > 0: 8601 if gen.errors > 0:
8466 print "%d errors" % gen.errors 8602 print "%d errors" % gen.errors
8467 return 1 8603 return 1
8468 return 0 8604 return 0
8469 8605
8470 8606
8471 if __name__ == '__main__': 8607 if __name__ == '__main__':
8472 sys.exit(main(sys.argv[1:])) 8608 sys.exit(main(sys.argv[1:]))
OLDNEW
« no previous file with comments | « gpu/GLES2/gl2extchromium.h ('k') | gpu/command_buffer/client/gles2_c_lib_autogen.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698