OLD | NEW |
---|---|
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 461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
472 'expected': 'kViewportWidth', | 472 'expected': 'kViewportWidth', |
473 }, | 473 }, |
474 { | 474 { |
475 'name': 'viewport_height', | 475 'name': 'viewport_height', |
476 'type': 'GLsizei', | 476 'type': 'GLsizei', |
477 'default': '1', | 477 'default': '1', |
478 'expected': 'kViewportHeight', | 478 'expected': 'kViewportHeight', |
479 }, | 479 }, |
480 ], | 480 ], |
481 }, | 481 }, |
482 'MatrixMode': { | |
483 'type': 'Normal', | |
484 'func': 'MatrixMode', | |
485 'enum': 'GL_MATRIX_MODE', | |
486 'extension_flag': 'nv_path_rendering', | |
487 'states': [ | |
488 { | |
489 'name': 'matrix_mode', | |
490 'type': 'GLenum', | |
491 'default': 'GL_MODELVIEW', | |
492 } | |
493 ], | |
494 }, | |
482 } | 495 } |
483 | 496 |
484 # This is a list of enum names and their valid values. It is used to map | 497 # This is a list of enum names and their valid values. It is used to map |
485 # GLenum arguments to a specific set of valid values. | 498 # GLenum arguments to a specific set of valid values. |
486 _ENUM_LISTS = { | 499 _ENUM_LISTS = { |
487 'BlitFilter': { | 500 'BlitFilter': { |
488 'type': 'GLenum', | 501 'type': 'GLenum', |
489 'valid': [ | 502 'valid': [ |
490 'GL_NEAREST', | 503 'GL_NEAREST', |
491 'GL_LINEAR', | 504 'GL_LINEAR', |
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
798 }, | 811 }, |
799 'FrameBufferParameter': { | 812 'FrameBufferParameter': { |
800 'type': 'GLenum', | 813 'type': 'GLenum', |
801 'valid': [ | 814 'valid': [ |
802 'GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE', | 815 'GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE', |
803 'GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME', | 816 'GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME', |
804 'GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL', | 817 'GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL', |
805 'GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE', | 818 'GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE', |
806 ], | 819 ], |
807 }, | 820 }, |
821 'MatrixMode': { | |
822 'type': 'GLenum', | |
823 'valid': [ | |
824 'GL_PROJECTION', | |
825 'GL_MODELVIEW', | |
826 ], | |
827 }, | |
808 'ProgramParameter': { | 828 'ProgramParameter': { |
809 'type': 'GLenum', | 829 'type': 'GLenum', |
810 'valid': [ | 830 'valid': [ |
811 'GL_DELETE_STATUS', | 831 'GL_DELETE_STATUS', |
812 'GL_LINK_STATUS', | 832 'GL_LINK_STATUS', |
813 'GL_VALIDATE_STATUS', | 833 'GL_VALIDATE_STATUS', |
814 'GL_INFO_LOG_LENGTH', | 834 'GL_INFO_LOG_LENGTH', |
815 'GL_ATTACHED_SHADERS', | 835 'GL_ATTACHED_SHADERS', |
816 'GL_ACTIVE_ATTRIBUTES', | 836 'GL_ACTIVE_ATTRIBUTES', |
817 'GL_ACTIVE_ATTRIBUTE_MAX_LENGTH', | 837 'GL_ACTIVE_ATTRIBUTE_MAX_LENGTH', |
(...skipping 1713 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2531 'extension': True, | 2551 'extension': True, |
2532 'chromium': True, | 2552 'chromium': True, |
2533 'trace_level': 1, | 2553 'trace_level': 1, |
2534 }, | 2554 }, |
2535 'DiscardBackbufferCHROMIUM': { | 2555 'DiscardBackbufferCHROMIUM': { |
2536 'type': 'Custom', | 2556 'type': 'Custom', |
2537 'impl_func': True, | 2557 'impl_func': True, |
2538 'extension': True, | 2558 'extension': True, |
2539 'chromium': True, | 2559 'chromium': True, |
2540 }, | 2560 }, |
2561 'MatrixMode': { | |
2562 'type': 'StateSet', | |
2563 'state': 'MatrixMode', | |
2564 'extension': True, | |
2565 }, | |
2566 'LoadMatrixf': { | |
2567 'type': 'PUT', | |
2568 'count': 16, | |
2569 'data_type': 'GLfloat', | |
2570 'valid_args': { | |
2571 0: '1.1', | |
2572 }, | |
2573 'extension': True, | |
2574 }, | |
jbauman
2014/04/11 22:25:25
LoadIdentity (CHROMIUM) should be added here and s
Kimmo Kinnunen
2014/04/15 16:16:58
Done.
| |
2541 } | 2575 } |
2542 | 2576 |
2543 | 2577 |
2544 def Grouper(n, iterable, fillvalue=None): | 2578 def Grouper(n, iterable, fillvalue=None): |
2545 """Collect data into fixed-length chunks or blocks""" | 2579 """Collect data into fixed-length chunks or blocks""" |
2546 args = [iter(iterable)] * n | 2580 args = [iter(iterable)] * n |
2547 return itertools.izip_longest(fillvalue=fillvalue, *args) | 2581 return itertools.izip_longest(fillvalue=fillvalue, *args) |
2548 | 2582 |
2549 | 2583 |
2550 def SplitWords(input_string): | 2584 def SplitWords(input_string): |
(...skipping 23 matching lines...) Expand all Loading... | |
2574 """Makes a lower-case identifier from words. | 2608 """Makes a lower-case identifier from words. |
2575 | 2609 |
2576 Args: | 2610 Args: |
2577 words: a list of lower-case words. | 2611 words: a list of lower-case words. |
2578 | 2612 |
2579 Returns: | 2613 Returns: |
2580 the lower-case identifier. | 2614 the lower-case identifier. |
2581 """ | 2615 """ |
2582 return '_'.join(words) | 2616 return '_'.join(words) |
2583 | 2617 |
2584 | |
2585 def ToUnderscore(input_string): | 2618 def ToUnderscore(input_string): |
2586 """converts CamelCase to camel_case.""" | 2619 """converts CamelCase to camel_case.""" |
2587 words = SplitWords(input_string) | 2620 words = SplitWords(input_string) |
2588 return Lower(words) | 2621 return Lower(words) |
2589 | 2622 |
2623 def MakeListPrefixString(iterable_or_str): | |
2624 """Return a string which is comma-separted concatenation of the | |
2625 strings in the iterable_or_str. if iterable_or_str is a string, | |
2626 return it with a comma appended.""" | |
2627 if isinstance(iterable_or_str, basestring): | |
2628 result = iterable_or_str | |
2629 else: | |
2630 result = ", ".join(iterable_or_str) | |
2631 if not result: | |
2632 return "" | |
2633 return result + ", " | |
2590 | 2634 |
2591 class CWriter(object): | 2635 class CWriter(object): |
2592 """Writes to a file formatting it for Google's style guidelines.""" | 2636 """Writes to a file formatting it for Google's style guidelines.""" |
2593 | 2637 |
2594 def __init__(self, filename): | 2638 def __init__(self, filename): |
2595 self.filename = filename | 2639 self.filename = filename |
2596 self.file_num = 0 | 2640 self.file_num = 0 |
2597 self.content = [] | 2641 self.content = [] |
2598 | 2642 |
2599 def SetFileNum(self, num): | 2643 def SetFileNum(self, num): |
(...skipping 2106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4706 """ | 4750 """ |
4707 self.WriteInvalidUnitTest(func, file, invalid_test, extra) | 4751 self.WriteInvalidUnitTest(func, file, invalid_test, extra) |
4708 | 4752 |
4709 def WriteImmediateServiceUnitTest(self, func, file): | 4753 def WriteImmediateServiceUnitTest(self, func, file): |
4710 """Writes the service unit test for a command.""" | 4754 """Writes the service unit test for a command.""" |
4711 valid_test = """ | 4755 valid_test = """ |
4712 TEST_F(%(test_name)s, %(name)sValidArgs) { | 4756 TEST_F(%(test_name)s, %(name)sValidArgs) { |
4713 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); | 4757 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); |
4714 SpecializedSetup<cmds::%(name)s, 0>(true); | 4758 SpecializedSetup<cmds::%(name)s, 0>(true); |
4715 %(data_type)s temp[%(data_count)s] = { %(data_value)s, }; | 4759 %(data_type)s temp[%(data_count)s] = { %(data_value)s, }; |
4716 cmd.Init(%(gl_args)s, &temp[0]); | 4760 cmd.Init(%(gl_args)s&temp[0]); |
4717 EXPECT_CALL( | 4761 EXPECT_CALL( |
4718 *gl_, | 4762 *gl_, |
4719 %(gl_func_name)s(%(gl_args)s, %(data_ref)sreinterpret_cast< | 4763 %(gl_func_name)s(%(gl_args)s%(data_ref)sreinterpret_cast< |
4720 %(data_type)s*>(ImmediateDataAddress(&cmd)))); | 4764 %(data_type)s*>(ImmediateDataAddress(&cmd)))); |
4721 EXPECT_EQ(error::kNoError, | 4765 EXPECT_EQ(error::kNoError, |
4722 ExecuteImmediateCmd(cmd, sizeof(temp))); | 4766 ExecuteImmediateCmd(cmd, sizeof(temp))); |
4723 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4767 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
4724 } | 4768 } |
4725 """ | 4769 """ |
4726 gl_arg_strings = [] | 4770 gl_arg_strings = [] |
4727 gl_any_strings = [] | 4771 gl_any_strings = [] |
4728 for count, arg in enumerate(func.GetOriginalArgs()[0:-1]): | 4772 for count, arg in enumerate(func.GetOriginalArgs()[0:-1]): |
4729 gl_arg_strings.append(arg.GetValidGLArg(func, count, 0)) | 4773 gl_arg_strings.append(arg.GetValidGLArg(func, count, 0)) |
4730 gl_any_strings.append("_") | 4774 gl_any_strings.append("_") |
4775 | |
4776 gl_any_strings.append("_") | |
4731 extra = { | 4777 extra = { |
4732 'data_ref': ("*" if func.GetInfo('first_element_only') else ""), | 4778 'data_ref': ("*" if func.GetInfo('first_element_only') else ""), |
4733 'data_type': func.GetInfo('data_type'), | 4779 'data_type': func.GetInfo('data_type'), |
4734 'data_count': func.GetInfo('count'), | 4780 'data_count': func.GetInfo('count'), |
4735 'data_value': func.GetInfo('data_value') or '0', | 4781 'data_value': func.GetInfo('data_value') or '0', |
4736 'gl_args': ", ".join(gl_arg_strings), | 4782 'gl_args': MakeListPrefixString(gl_arg_strings), |
4737 'gl_any_args': ", ".join(gl_any_strings), | 4783 'gl_any_args': ", ".join(gl_any_strings), |
4738 } | 4784 } |
4739 self.WriteValidUnitTest(func, file, valid_test, extra) | 4785 self.WriteValidUnitTest(func, file, valid_test, extra) |
4740 | 4786 |
4741 invalid_test = """ | 4787 invalid_test = """ |
4742 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { | 4788 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
4743 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); | 4789 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); |
4744 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_any_args)s, _)).Times(0); | 4790 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_any_args)s)).Times(0); |
4745 SpecializedSetup<cmds::%(name)s, 0>(false); | 4791 SpecializedSetup<cmds::%(name)s, 0>(false); |
4746 %(data_type)s temp[%(data_count)s] = { %(data_value)s, }; | 4792 %(data_type)s temp[%(data_count)s] = { %(data_value)s, }; |
4747 cmd.Init(%(all_but_last_args)s, &temp[0]); | 4793 cmd.Init(%(all_but_last_args)s, &temp[0]); |
4748 EXPECT_EQ(error::%(parse_result)s, | 4794 EXPECT_EQ(error::%(parse_result)s, |
4749 ExecuteImmediateCmd(cmd, sizeof(temp)));%(gl_error_test)s | 4795 ExecuteImmediateCmd(cmd, sizeof(temp)));%(gl_error_test)s |
4750 } | 4796 } |
4751 """ | 4797 """ |
4752 self.WriteInvalidUnitTest(func, file, invalid_test, extra) | 4798 self.WriteInvalidUnitTest(func, file, invalid_test, extra) |
4753 | 4799 |
4754 def WriteGetDataSizeCode(self, func, file): | 4800 def WriteGetDataSizeCode(self, func, file): |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4797 %(type)s data[%(count)d] = {0}; | 4843 %(type)s data[%(count)d] = {0}; |
4798 struct Cmds { | 4844 struct Cmds { |
4799 cmds::%(name)sImmediate cmd; | 4845 cmds::%(name)sImmediate cmd; |
4800 %(type)s data[%(count)d]; | 4846 %(type)s data[%(count)d]; |
4801 }; | 4847 }; |
4802 | 4848 |
4803 for (int jj = 0; jj < %(count)d; ++jj) { | 4849 for (int jj = 0; jj < %(count)d; ++jj) { |
4804 data[jj] = static_cast<%(type)s>(jj); | 4850 data[jj] = static_cast<%(type)s>(jj); |
4805 } | 4851 } |
4806 Cmds expected; | 4852 Cmds expected; |
4807 expected.cmd.Init(%(cmd_args)s, &data[0]); | 4853 expected.cmd.Init(%(cmd_args)s&data[0]); |
4808 gl_->%(name)s(%(args)s, &data[0]); | 4854 gl_->%(name)s(%(args)s&data[0]); |
4809 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); | 4855 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); |
4810 } | 4856 } |
4811 """ | 4857 """ |
4812 cmd_arg_strings = [] | 4858 cmd_arg_strings = [] |
4813 for count, arg in enumerate(func.GetCmdArgs()[0:-2]): | 4859 for count, arg in enumerate(func.GetCmdArgs()[0:-2]): |
4814 cmd_arg_strings.append(arg.GetValidClientSideCmdArg(func, count, 0)) | 4860 cmd_arg_strings.append(arg.GetValidClientSideCmdArg(func, count, 0)) |
4815 gl_arg_strings = [] | 4861 gl_arg_strings = [] |
4816 for count, arg in enumerate(func.GetOriginalArgs()[0:-1]): | 4862 for count, arg in enumerate(func.GetOriginalArgs()[0:-1]): |
4817 gl_arg_strings.append(arg.GetValidClientSideArg(func, count, 0)) | 4863 gl_arg_strings.append(arg.GetValidClientSideArg(func, count, 0)) |
4818 file.Write(code % { | 4864 file.Write(code % { |
4819 'name': func.name, | 4865 'name': func.name, |
4820 'type': func.GetInfo('data_type'), | 4866 'type': func.GetInfo('data_type'), |
4821 'count': func.GetInfo('count'), | 4867 'count': func.GetInfo('count'), |
4822 'args': ", ".join(gl_arg_strings), | 4868 'args': MakeListPrefixString(gl_arg_strings), |
4823 'cmd_args': ", ".join(cmd_arg_strings), | 4869 'cmd_args': MakeListPrefixString(cmd_arg_strings), |
4824 }) | 4870 }) |
4825 | 4871 |
4826 def WriteImmediateCmdComputeSize(self, func, file): | 4872 def WriteImmediateCmdComputeSize(self, func, file): |
4827 """Overrriden from TypeHandler.""" | 4873 """Overrriden from TypeHandler.""" |
4828 file.Write(" static uint32 ComputeDataSize() {\n") | 4874 file.Write(" static uint32 ComputeDataSize() {\n") |
4829 file.Write(" return static_cast<uint32>(\n") | 4875 file.Write(" return static_cast<uint32>(\n") |
4830 file.Write(" sizeof(%s) * %d); // NOLINT\n" % | 4876 file.Write(" sizeof(%s) * %d); // NOLINT\n" % |
4831 (func.info.data_type, func.info.count)) | 4877 (func.info.data_type, func.info.count)) |
4832 file.Write(" }\n") | 4878 file.Write(" }\n") |
4833 file.Write("\n") | 4879 file.Write("\n") |
4834 file.Write(" static uint32 ComputeSize() {\n") | 4880 file.Write(" static uint32 ComputeSize() {\n") |
4835 file.Write(" return static_cast<uint32>(\n") | 4881 file.Write(" return static_cast<uint32>(\n") |
4836 file.Write( | 4882 file.Write( |
4837 " sizeof(ValueType) + ComputeDataSize()); // NOLINT\n") | 4883 " sizeof(ValueType) + ComputeDataSize()); // NOLINT\n") |
4838 file.Write(" }\n") | 4884 file.Write(" }\n") |
4839 file.Write("\n") | 4885 file.Write("\n") |
4840 | 4886 |
4841 def WriteImmediateCmdSetHeader(self, func, file): | 4887 def WriteImmediateCmdSetHeader(self, func, file): |
4842 """Overrriden from TypeHandler.""" | 4888 """Overrriden from TypeHandler.""" |
4843 file.Write(" void SetHeader() {\n") | 4889 file.Write(" void SetHeader() {\n") |
4844 file.Write( | 4890 file.Write( |
4845 " header.SetCmdByTotalSize<ValueType>(ComputeSize());\n") | 4891 " header.SetCmdByTotalSize<ValueType>(ComputeSize());\n") |
4846 file.Write(" }\n") | 4892 file.Write(" }\n") |
4847 file.Write("\n") | 4893 file.Write("\n") |
4848 | 4894 |
4849 def WriteImmediateCmdInit(self, func, file): | 4895 def WriteImmediateCmdInit(self, func, file): |
4850 """Overrriden from TypeHandler.""" | 4896 """Overrriden from TypeHandler.""" |
4897 gl_args = func.MakeTypedCmdArgString("_") | |
4851 last_arg = func.GetLastOriginalArg() | 4898 last_arg = func.GetLastOriginalArg() |
4852 file.Write(" void Init(%s, %s _%s) {\n" % | 4899 file.Write(" void Init(%s%s _%s) {\n" % |
4853 (func.MakeTypedCmdArgString("_"), | 4900 (MakeListPrefixString(gl_args), last_arg.type, last_arg.name)) |
4854 last_arg.type, last_arg.name)) | |
4855 file.Write(" SetHeader();\n") | 4901 file.Write(" SetHeader();\n") |
4856 args = func.GetCmdArgs() | 4902 args = func.GetCmdArgs() |
4857 for arg in args: | 4903 for arg in args: |
4858 file.Write(" %s = _%s;\n" % (arg.name, arg.name)) | 4904 file.Write(" %s = _%s;\n" % (arg.name, arg.name)) |
4859 file.Write(" memcpy(ImmediateDataAddress(this),\n") | 4905 file.Write(" memcpy(ImmediateDataAddress(this),\n") |
4860 file.Write(" _%s, ComputeDataSize());\n" % last_arg.name) | 4906 file.Write(" _%s, ComputeDataSize());\n" % last_arg.name) |
4861 file.Write(" }\n") | 4907 file.Write(" }\n") |
4862 file.Write("\n") | 4908 file.Write("\n") |
4863 | 4909 |
4864 def WriteImmediateCmdSet(self, func, file): | 4910 def WriteImmediateCmdSet(self, func, file): |
4865 """Overrriden from TypeHandler.""" | 4911 """Overrriden from TypeHandler.""" |
4866 last_arg = func.GetLastOriginalArg() | 4912 last_arg = func.GetLastOriginalArg() |
4867 copy_args = func.MakeCmdArgString("_", False) | 4913 copy_args = func.MakeCmdArgString("_", False) |
4868 file.Write(" void* Set(void* cmd%s, %s _%s) {\n" % | 4914 file.Write(" void* Set(void* cmd%s, %s _%s) {\n" % |
4869 (func.MakeTypedCmdArgString("_", True), | 4915 (func.MakeTypedCmdArgString("_", True), |
4870 last_arg.type, last_arg.name)) | 4916 last_arg.type, last_arg.name)) |
4871 file.Write(" static_cast<ValueType*>(cmd)->Init(%s, _%s);\n" % | 4917 file.Write(" static_cast<ValueType*>(cmd)->Init(%s_%s);\n" % |
4872 (copy_args, last_arg.name)) | 4918 (MakeListPrefixString(copy_args), last_arg.name)) |
4873 file.Write(" const uint32 size = ComputeSize();\n") | 4919 file.Write(" const uint32 size = ComputeSize();\n") |
4874 file.Write(" return NextImmediateCmdAddressTotalSize<ValueType>(" | 4920 file.Write(" return NextImmediateCmdAddressTotalSize<ValueType>(" |
4875 "cmd, size);\n") | 4921 "cmd, size);\n") |
4876 file.Write(" }\n") | 4922 file.Write(" }\n") |
4877 file.Write("\n") | 4923 file.Write("\n") |
4878 | 4924 |
4879 def WriteImmediateCmdHelper(self, func, file): | 4925 def WriteImmediateCmdHelper(self, func, file): |
4880 """Overrriden from TypeHandler.""" | 4926 """Overrriden from TypeHandler.""" |
4881 code = """ void %(name)s(%(typed_args)s) { | 4927 code = """ void %(name)s(%(typed_args)s) { |
4882 const uint32 size = gles2::cmds::%(name)s::ComputeSize(); | 4928 const uint32 size = gles2::cmds::%(name)s::ComputeSize(); |
(...skipping 2302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
7185 for item in state['states']: | 7231 for item in state['states']: |
7186 if 'extension_flag' in item: | 7232 if 'extension_flag' in item: |
7187 file.Write(" if (feature_info_->feature_flags().%s)\n " % | 7233 file.Write(" if (feature_info_->feature_flags().%s)\n " % |
7188 item['extension_flag']) | 7234 item['extension_flag']) |
7189 file.Write(" gl%s(%s, %s);\n" % | 7235 file.Write(" gl%s(%s, %s);\n" % |
7190 (state['func'], item['enum'], item['name'])) | 7236 (state['func'], item['enum'], item['name'])) |
7191 else: | 7237 else: |
7192 args = [] | 7238 args = [] |
7193 for item in state['states']: | 7239 for item in state['states']: |
7194 args.append('%s' % item['name']) | 7240 args.append('%s' % item['name']) |
7241 if 'extension_flag' in state: | |
7242 file.Write(" if (feature_info_->feature_flags().%s)\n " % | |
7243 state['extension_flag']) | |
7195 file.Write(" gl%s(%s);\n" % (state['func'], ", ".join(args))) | 7244 file.Write(" gl%s(%s);\n" % (state['func'], ", ".join(args))) |
7196 file.Write("}\n") | 7245 file.Write("}\n") |
7197 | 7246 |
7198 file.Write("""bool ContextState::GetEnabled(GLenum cap) const { | 7247 file.Write("""bool ContextState::GetEnabled(GLenum cap) const { |
7199 switch (cap) { | 7248 switch (cap) { |
7200 """) | 7249 """) |
7201 for capability in _CAPABILITY_FLAGS: | 7250 for capability in _CAPABILITY_FLAGS: |
7202 file.Write(" case GL_%s:\n" % capability['name'].upper()) | 7251 file.Write(" case GL_%s:\n" % capability['name'].upper()) |
7203 file.Write(" return enable_flags.%s;\n" % capability['name']) | 7252 file.Write(" return enable_flags.%s;\n" % capability['name']) |
7204 file.Write(""" default: | 7253 file.Write(""" default: |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
7358 elif state['type'] == 'NamedParameter': | 7407 elif state['type'] == 'NamedParameter': |
7359 for item in state['states']: | 7408 for item in state['states']: |
7360 if 'extension_flag' in item: | 7409 if 'extension_flag' in item: |
7361 continue | 7410 continue |
7362 file.Write( | 7411 file.Write( |
7363 " EXPECT_CALL(*gl_, %s(%s, %s))\n" % | 7412 " EXPECT_CALL(*gl_, %s(%s, %s))\n" % |
7364 (state['func'], item['enum'], item['default'])) | 7413 (state['func'], item['enum'], item['default'])) |
7365 file.Write(" .Times(1)\n") | 7414 file.Write(" .Times(1)\n") |
7366 file.Write(" .RetiresOnSaturation();\n") | 7415 file.Write(" .RetiresOnSaturation();\n") |
7367 else: | 7416 else: |
7417 if 'extension_flag' in state: | |
7418 continue | |
7368 args = [] | 7419 args = [] |
7369 for item in state['states']: | 7420 for item in state['states']: |
7370 if 'expected' in item: | 7421 if 'expected' in item: |
7371 args.append(item['expected']) | 7422 args.append(item['expected']) |
7372 else: | 7423 else: |
7373 args.append(item['default']) | 7424 args.append(item['default']) |
7374 file.Write(" EXPECT_CALL(*gl_, %s(%s))\n" % | 7425 file.Write(" EXPECT_CALL(*gl_, %s(%s))\n" % |
7375 (state['func'], ", ".join(args))) | 7426 (state['func'], ", ".join(args))) |
7376 file.Write(" .Times(1)\n") | 7427 file.Write(" .Times(1)\n") |
7377 file.Write(" .RetiresOnSaturation();\n") | 7428 file.Write(" .RetiresOnSaturation();\n") |
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
7803 "empty. Use this if you want the result stored under gen.") | 7854 "empty. Use this if you want the result stored under gen.") |
7804 parser.add_option( | 7855 parser.add_option( |
7805 "-v", "--verbose", action="store_true", | 7856 "-v", "--verbose", action="store_true", |
7806 help="prints more output.") | 7857 help="prints more output.") |
7807 | 7858 |
7808 (options, args) = parser.parse_args(args=argv) | 7859 (options, args) = parser.parse_args(args=argv) |
7809 | 7860 |
7810 # Add in states and capabilites to GLState | 7861 # Add in states and capabilites to GLState |
7811 for state_name in sorted(_STATES.keys()): | 7862 for state_name in sorted(_STATES.keys()): |
7812 state = _STATES[state_name] | 7863 state = _STATES[state_name] |
7864 if 'extension_flag' in state: | |
7865 continue | |
7813 if 'enum' in state: | 7866 if 'enum' in state: |
7814 _ENUM_LISTS['GLState']['valid'].append(state['enum']) | 7867 _ENUM_LISTS['GLState']['valid'].append(state['enum']) |
7815 else: | 7868 else: |
7816 for item in state['states']: | 7869 for item in state['states']: |
7817 if 'extension_flag' in item: | 7870 if 'extension_flag' in item: |
7818 continue | 7871 continue |
7819 _ENUM_LISTS['GLState']['valid'].append(item['enum']) | 7872 _ENUM_LISTS['GLState']['valid'].append(item['enum']) |
7820 for capability in _CAPABILITY_FLAGS: | 7873 for capability in _CAPABILITY_FLAGS: |
7821 _ENUM_LISTS['GLState']['valid'].append("GL_%s" % capability['name'].upper()) | 7874 _ENUM_LISTS['GLState']['valid'].append("GL_%s" % capability['name'].upper()) |
7822 | 7875 |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
7906 "ppapi/shared_impl/ppb_opengles2_shared.cc"]) | 7959 "ppapi/shared_impl/ppb_opengles2_shared.cc"]) |
7907 | 7960 |
7908 if gen.errors > 0: | 7961 if gen.errors > 0: |
7909 print "%d errors" % gen.errors | 7962 print "%d errors" % gen.errors |
7910 return 1 | 7963 return 1 |
7911 return 0 | 7964 return 0 |
7912 | 7965 |
7913 | 7966 |
7914 if __name__ == '__main__': | 7967 if __name__ == '__main__': |
7915 sys.exit(main(sys.argv[1:])) | 7968 sys.exit(main(sys.argv[1:])) |
OLD | NEW |