| 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 2580 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2591 file.Write(" %s(%s);\n" % | 2591 file.Write(" %s(%s);\n" % |
| 2592 (func.GetGLFunctionName(), func.MakeOriginalArgString(""))) | 2592 (func.GetGLFunctionName(), func.MakeOriginalArgString(""))) |
| 2593 | 2593 |
| 2594 def WriteCmdSizeTest(self, func, file): | 2594 def WriteCmdSizeTest(self, func, file): |
| 2595 """Writes the size test for a command.""" | 2595 """Writes the size test for a command.""" |
| 2596 file.Write(" EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);\n") | 2596 file.Write(" EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);\n") |
| 2597 | 2597 |
| 2598 def WriteFormatTest(self, func, file): | 2598 def WriteFormatTest(self, func, file): |
| 2599 """Writes a format test for a command.""" | 2599 """Writes a format test for a command.""" |
| 2600 file.Write("TEST_F(GLES2FormatTest, %s) {\n" % func.name) | 2600 file.Write("TEST_F(GLES2FormatTest, %s) {\n" % func.name) |
| 2601 file.Write(" %s& cmd = *GetBufferAs<%s>();\n" % (func.name, func.name)) | 2601 file.Write(" cmds::%s& cmd = *GetBufferAs<cmds::%s>();\n" % |
| 2602 (func.name, func.name)) |
| 2602 file.Write(" void* next_cmd = cmd.Set(\n") | 2603 file.Write(" void* next_cmd = cmd.Set(\n") |
| 2603 file.Write(" &cmd") | 2604 file.Write(" &cmd") |
| 2604 args = func.GetCmdArgs() | 2605 args = func.GetCmdArgs() |
| 2605 for value, arg in enumerate(args): | 2606 for value, arg in enumerate(args): |
| 2606 file.Write(",\n static_cast<%s>(%d)" % (arg.type, value + 11)) | 2607 file.Write(",\n static_cast<%s>(%d)" % (arg.type, value + 11)) |
| 2607 file.Write(");\n") | 2608 file.Write(");\n") |
| 2608 file.Write(" EXPECT_EQ(static_cast<uint32>(%s::kCmdId),\n" % func.name) | 2609 file.Write(" EXPECT_EQ(static_cast<uint32>(cmds::%s::kCmdId),\n" % |
| 2610 func.name) |
| 2609 file.Write(" cmd.header.command);\n") | 2611 file.Write(" cmd.header.command);\n") |
| 2610 func.type_handler.WriteCmdSizeTest(func, file) | 2612 func.type_handler.WriteCmdSizeTest(func, file) |
| 2611 for value, arg in enumerate(args): | 2613 for value, arg in enumerate(args): |
| 2612 file.Write(" EXPECT_EQ(static_cast<%s>(%d), cmd.%s);\n" % | 2614 file.Write(" EXPECT_EQ(static_cast<%s>(%d), cmd.%s);\n" % |
| 2613 (arg.type, value + 11, arg.name)) | 2615 (arg.type, value + 11, arg.name)) |
| 2614 file.Write(" CheckBytesWrittenMatchesExpectedSize(\n") | 2616 file.Write(" CheckBytesWrittenMatchesExpectedSize(\n") |
| 2615 file.Write(" next_cmd, sizeof(cmd));\n") | 2617 file.Write(" next_cmd, sizeof(cmd));\n") |
| 2616 file.Write("}\n") | 2618 file.Write("}\n") |
| 2617 file.Write("\n") | 2619 file.Write("\n") |
| 2618 | 2620 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 2641 def WriteBucketHandlerImplementation (self, func, file): | 2643 def WriteBucketHandlerImplementation (self, func, file): |
| 2642 """Writes the handler impl for the bucket version of a command.""" | 2644 """Writes the handler impl for the bucket version of a command.""" |
| 2643 file.Write(" %s(%s);\n" % | 2645 file.Write(" %s(%s);\n" % |
| 2644 (func.GetGLFunctionName(), func.MakeOriginalArgString(""))) | 2646 (func.GetGLFunctionName(), func.MakeOriginalArgString(""))) |
| 2645 | 2647 |
| 2646 def WriteServiceImplementation(self, func, file): | 2648 def WriteServiceImplementation(self, func, file): |
| 2647 """Writes the service implementation for a command.""" | 2649 """Writes the service implementation for a command.""" |
| 2648 file.Write( | 2650 file.Write( |
| 2649 "error::Error GLES2DecoderImpl::Handle%s(\n" % func.name) | 2651 "error::Error GLES2DecoderImpl::Handle%s(\n" % func.name) |
| 2650 file.Write( | 2652 file.Write( |
| 2651 " uint32 immediate_data_size, const gles2::%s& c) {\n" % func.name) | 2653 " uint32 immediate_data_size, const gles2::cmds::%s& c) {\n" % |
| 2654 func.name) |
| 2652 self.WriteHandlerDeferReadWrite(func, file); | 2655 self.WriteHandlerDeferReadWrite(func, file); |
| 2653 if len(func.GetOriginalArgs()) > 0: | 2656 if len(func.GetOriginalArgs()) > 0: |
| 2654 last_arg = func.GetLastOriginalArg() | 2657 last_arg = func.GetLastOriginalArg() |
| 2655 all_but_last_arg = func.GetOriginalArgs()[:-1] | 2658 all_but_last_arg = func.GetOriginalArgs()[:-1] |
| 2656 for arg in all_but_last_arg: | 2659 for arg in all_but_last_arg: |
| 2657 arg.WriteGetCode(file) | 2660 arg.WriteGetCode(file) |
| 2658 self.WriteGetDataSizeCode(func, file) | 2661 self.WriteGetDataSizeCode(func, file) |
| 2659 last_arg.WriteGetCode(file) | 2662 last_arg.WriteGetCode(file) |
| 2660 func.WriteHandlerValidation(file) | 2663 func.WriteHandlerValidation(file) |
| 2661 func.WriteHandlerImplementation(file) | 2664 func.WriteHandlerImplementation(file) |
| 2662 file.Write(" return error::kNoError;\n") | 2665 file.Write(" return error::kNoError;\n") |
| 2663 file.Write("}\n") | 2666 file.Write("}\n") |
| 2664 file.Write("\n") | 2667 file.Write("\n") |
| 2665 | 2668 |
| 2666 def WriteImmediateServiceImplementation(self, func, file): | 2669 def WriteImmediateServiceImplementation(self, func, file): |
| 2667 """Writes the service implementation for an immediate version of command.""" | 2670 """Writes the service implementation for an immediate version of command.""" |
| 2668 file.Write( | 2671 file.Write( |
| 2669 "error::Error GLES2DecoderImpl::Handle%s(\n" % func.name) | 2672 "error::Error GLES2DecoderImpl::Handle%s(\n" % func.name) |
| 2670 file.Write( | 2673 file.Write( |
| 2671 " uint32 immediate_data_size, const gles2::%s& c) {\n" % func.name) | 2674 " uint32 immediate_data_size, const gles2::cmds::%s& c) {\n" % |
| 2675 func.name) |
| 2672 self.WriteHandlerDeferReadWrite(func, file); | 2676 self.WriteHandlerDeferReadWrite(func, file); |
| 2673 last_arg = func.GetLastOriginalArg() | 2677 last_arg = func.GetLastOriginalArg() |
| 2674 all_but_last_arg = func.GetOriginalArgs()[:-1] | 2678 all_but_last_arg = func.GetOriginalArgs()[:-1] |
| 2675 for arg in all_but_last_arg: | 2679 for arg in all_but_last_arg: |
| 2676 arg.WriteGetCode(file) | 2680 arg.WriteGetCode(file) |
| 2677 self.WriteGetDataSizeCode(func, file) | 2681 self.WriteGetDataSizeCode(func, file) |
| 2678 last_arg.WriteGetCode(file) | 2682 last_arg.WriteGetCode(file) |
| 2679 func.WriteHandlerValidation(file) | 2683 func.WriteHandlerValidation(file) |
| 2680 func.WriteHandlerImplementation(file) | 2684 func.WriteHandlerImplementation(file) |
| 2681 file.Write(" return error::kNoError;\n") | 2685 file.Write(" return error::kNoError;\n") |
| 2682 file.Write("}\n") | 2686 file.Write("}\n") |
| 2683 file.Write("\n") | 2687 file.Write("\n") |
| 2684 | 2688 |
| 2685 def WriteBucketServiceImplementation(self, func, file): | 2689 def WriteBucketServiceImplementation(self, func, file): |
| 2686 """Writes the service implementation for a bucket version of command.""" | 2690 """Writes the service implementation for a bucket version of command.""" |
| 2687 file.Write( | 2691 file.Write( |
| 2688 "error::Error GLES2DecoderImpl::Handle%s(\n" % func.name) | 2692 "error::Error GLES2DecoderImpl::Handle%s(\n" % func.name) |
| 2689 file.Write( | 2693 file.Write( |
| 2690 " uint32 immediate_data_size, const gles2::%s& c) {\n" % func.name) | 2694 " uint32 immediate_data_size, const gles2::cmds::%s& c) {\n" % |
| 2695 func.name) |
| 2691 self.WriteHandlerDeferReadWrite(func, file); | 2696 self.WriteHandlerDeferReadWrite(func, file); |
| 2692 last_arg = func.GetLastOriginalArg() | 2697 last_arg = func.GetLastOriginalArg() |
| 2693 all_but_last_arg = func.GetOriginalArgs()[:-1] | 2698 all_but_last_arg = func.GetOriginalArgs()[:-1] |
| 2694 for arg in all_but_last_arg: | 2699 for arg in all_but_last_arg: |
| 2695 arg.WriteGetCode(file) | 2700 arg.WriteGetCode(file) |
| 2696 self.WriteGetDataSizeCode(func, file) | 2701 self.WriteGetDataSizeCode(func, file) |
| 2697 last_arg.WriteGetCode(file) | 2702 last_arg.WriteGetCode(file) |
| 2698 func.WriteHandlerValidation(file) | 2703 func.WriteHandlerValidation(file) |
| 2699 func.WriteHandlerImplementation(file) | 2704 func.WriteHandlerImplementation(file) |
| 2700 file.Write(" return error::kNoError;\n") | 2705 file.Write(" return error::kNoError;\n") |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2773 'gl_error_test': gl_error_test, | 2778 'gl_error_test': gl_error_test, |
| 2774 } | 2779 } |
| 2775 vars.update(extra) | 2780 vars.update(extra) |
| 2776 file.Write(test % vars) | 2781 file.Write(test % vars) |
| 2777 | 2782 |
| 2778 def WriteServiceUnitTest(self, func, file): | 2783 def WriteServiceUnitTest(self, func, file): |
| 2779 """Writes the service unit test for a command.""" | 2784 """Writes the service unit test for a command.""" |
| 2780 valid_test = """ | 2785 valid_test = """ |
| 2781 TEST_F(%(test_name)s, %(name)sValidArgs) { | 2786 TEST_F(%(test_name)s, %(name)sValidArgs) { |
| 2782 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)); | 2787 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)); |
| 2783 SpecializedSetup<%(name)s, 0>(true); | 2788 SpecializedSetup<cmds::%(name)s, 0>(true); |
| 2784 %(name)s cmd; | 2789 cmds::%(name)s cmd; |
| 2785 cmd.Init(%(args)s); | 2790 cmd.Init(%(args)s); |
| 2786 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2791 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2787 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 2792 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 2788 } | 2793 } |
| 2789 """ | 2794 """ |
| 2790 self.WriteValidUnitTest(func, file, valid_test) | 2795 self.WriteValidUnitTest(func, file, valid_test) |
| 2791 | 2796 |
| 2792 invalid_test = """ | 2797 invalid_test = """ |
| 2793 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { | 2798 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| 2794 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); | 2799 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); |
| 2795 SpecializedSetup<%(name)s, 0>(false); | 2800 SpecializedSetup<cmds::%(name)s, 0>(false); |
| 2796 %(name)s cmd; | 2801 cmds::%(name)s cmd; |
| 2797 cmd.Init(%(args)s); | 2802 cmd.Init(%(args)s); |
| 2798 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s | 2803 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s |
| 2799 } | 2804 } |
| 2800 """ | 2805 """ |
| 2801 self.WriteInvalidUnitTest(func, file, invalid_test) | 2806 self.WriteInvalidUnitTest(func, file, invalid_test) |
| 2802 | 2807 |
| 2803 def WriteImmediateServiceUnitTest(self, func, file): | 2808 def WriteImmediateServiceUnitTest(self, func, file): |
| 2804 """Writes the service unit test for an immediate command.""" | 2809 """Writes the service unit test for an immediate command.""" |
| 2805 file.Write("// TODO(gman): %s\n" % func.name) | 2810 file.Write("// TODO(gman): %s\n" % func.name) |
| 2806 | 2811 |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2928 file.Write("}\n") | 2933 file.Write("}\n") |
| 2929 | 2934 |
| 2930 def WriteGLES2ImplementationUnitTest(self, func, file): | 2935 def WriteGLES2ImplementationUnitTest(self, func, file): |
| 2931 """Writes the GLES2 Implemention unit test.""" | 2936 """Writes the GLES2 Implemention unit test.""" |
| 2932 client_test = func.GetInfo('client_test') | 2937 client_test = func.GetInfo('client_test') |
| 2933 if (func.can_auto_generate and | 2938 if (func.can_auto_generate and |
| 2934 (client_test == None or client_test == True)): | 2939 (client_test == None or client_test == True)): |
| 2935 code = """ | 2940 code = """ |
| 2936 TEST_F(GLES2ImplementationTest, %(name)s) { | 2941 TEST_F(GLES2ImplementationTest, %(name)s) { |
| 2937 struct Cmds { | 2942 struct Cmds { |
| 2938 %(name)s cmd; | 2943 cmds::%(name)s cmd; |
| 2939 }; | 2944 }; |
| 2940 Cmds expected; | 2945 Cmds expected; |
| 2941 expected.cmd.Init(%(cmd_args)s); | 2946 expected.cmd.Init(%(cmd_args)s); |
| 2942 | 2947 |
| 2943 gl_->%(name)s(%(args)s); | 2948 gl_->%(name)s(%(args)s); |
| 2944 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); | 2949 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); |
| 2945 } | 2950 } |
| 2946 """ | 2951 """ |
| 2947 cmd_arg_strings = [] | 2952 cmd_arg_strings = [] |
| 2948 for count, arg in enumerate(func.GetCmdArgs()): | 2953 for count, arg in enumerate(func.GetCmdArgs()): |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2989 """Writes the Init function for the immediate version of a command.""" | 2994 """Writes the Init function for the immediate version of a command.""" |
| 2990 raise NotImplementedError(func.name) | 2995 raise NotImplementedError(func.name) |
| 2991 | 2996 |
| 2992 def WriteImmediateCmdSet(self, func, file): | 2997 def WriteImmediateCmdSet(self, func, file): |
| 2993 """Writes the Set function for the immediate version of a command.""" | 2998 """Writes the Set function for the immediate version of a command.""" |
| 2994 raise NotImplementedError(func.name) | 2999 raise NotImplementedError(func.name) |
| 2995 | 3000 |
| 2996 def WriteCmdHelper(self, func, file): | 3001 def WriteCmdHelper(self, func, file): |
| 2997 """Writes the cmd helper definition for a cmd.""" | 3002 """Writes the cmd helper definition for a cmd.""" |
| 2998 code = """ void %(name)s(%(typed_args)s) { | 3003 code = """ void %(name)s(%(typed_args)s) { |
| 2999 gles2::%(name)s* c = GetCmdSpace<gles2::%(name)s>(); | 3004 gles2::cmds::%(name)s* c = GetCmdSpace<gles2::cmds::%(name)s>(); |
| 3000 if (c) { | 3005 if (c) { |
| 3001 c->Init(%(args)s); | 3006 c->Init(%(args)s); |
| 3002 } | 3007 } |
| 3003 } | 3008 } |
| 3004 | 3009 |
| 3005 """ | 3010 """ |
| 3006 file.Write(code % { | 3011 file.Write(code % { |
| 3007 "name": func.name, | 3012 "name": func.name, |
| 3008 "typed_args": func.MakeTypedCmdArgString(""), | 3013 "typed_args": func.MakeTypedCmdArgString(""), |
| 3009 "args": func.MakeCmdArgString(""), | 3014 "args": func.MakeCmdArgString(""), |
| 3010 }) | 3015 }) |
| 3011 | 3016 |
| 3012 def WriteImmediateCmdHelper(self, func, file): | 3017 def WriteImmediateCmdHelper(self, func, file): |
| 3013 """Writes the cmd helper definition for the immediate version of a cmd.""" | 3018 """Writes the cmd helper definition for the immediate version of a cmd.""" |
| 3014 code = """ void %(name)s(%(typed_args)s) { | 3019 code = """ void %(name)s(%(typed_args)s) { |
| 3015 const uint32 s = 0; // TODO(gman): compute correct size | 3020 const uint32 s = 0; // TODO(gman): compute correct size |
| 3016 gles2::%(name)s* c = | 3021 gles2::cmds::%(name)s* c = |
| 3017 GetImmediateCmdSpaceTotalSize<gles2::%(name)s>(s); | 3022 GetImmediateCmdSpaceTotalSize<gles2::cmds::%(name)s>(s); |
| 3018 if (c) { | 3023 if (c) { |
| 3019 c->Init(%(args)s); | 3024 c->Init(%(args)s); |
| 3020 } | 3025 } |
| 3021 } | 3026 } |
| 3022 | 3027 |
| 3023 """ | 3028 """ |
| 3024 file.Write(code % { | 3029 file.Write(code % { |
| 3025 "name": func.name, | 3030 "name": func.name, |
| 3026 "typed_args": func.MakeTypedCmdArgString(""), | 3031 "typed_args": func.MakeTypedCmdArgString(""), |
| 3027 "args": func.MakeCmdArgString(""), | 3032 "args": func.MakeCmdArgString(""), |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3069 """Overrriden from TypeHandler.""" | 3074 """Overrriden from TypeHandler.""" |
| 3070 TypeHandler.WriteServiceUnitTest(self, func, file) | 3075 TypeHandler.WriteServiceUnitTest(self, func, file) |
| 3071 state_name = func.GetInfo('state') | 3076 state_name = func.GetInfo('state') |
| 3072 state = _STATES[state_name] | 3077 state = _STATES[state_name] |
| 3073 states = state['states'] | 3078 states = state['states'] |
| 3074 for ndx,item in enumerate(states): | 3079 for ndx,item in enumerate(states): |
| 3075 if 'range_checks' in item: | 3080 if 'range_checks' in item: |
| 3076 for check_ndx, range_check in enumerate(item['range_checks']): | 3081 for check_ndx, range_check in enumerate(item['range_checks']): |
| 3077 valid_test = """ | 3082 valid_test = """ |
| 3078 TEST_F(%(test_name)s, %(name)sInvalidValue%(ndx)d_%(check_ndx)d) { | 3083 TEST_F(%(test_name)s, %(name)sInvalidValue%(ndx)d_%(check_ndx)d) { |
| 3079 SpecializedSetup<%(name)s, 0>(false); | 3084 SpecializedSetup<cmds::%(name)s, 0>(false); |
| 3080 %(name)s cmd; | 3085 cmds::%(name)s cmd; |
| 3081 cmd.Init(%(args)s); | 3086 cmd.Init(%(args)s); |
| 3082 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3087 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3083 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 3088 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 3084 } | 3089 } |
| 3085 """ | 3090 """ |
| 3086 name = func.name | 3091 name = func.name |
| 3087 arg_strings = [] | 3092 arg_strings = [] |
| 3088 for count, arg in enumerate(func.GetOriginalArgs()): | 3093 for count, arg in enumerate(func.GetOriginalArgs()): |
| 3089 arg_strings.append(arg.GetValidArg(func, count, 0)) | 3094 arg_strings.append(arg.GetValidArg(func, count, 0)) |
| 3090 arg_strings[ndx] = range_check['test_value'] | 3095 arg_strings[ndx] = range_check['test_value'] |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3275 if func.return_type != "void": | 3280 if func.return_type != "void": |
| 3276 file.Write(" return 0;\n") | 3281 file.Write(" return 0;\n") |
| 3277 file.Write("}\n") | 3282 file.Write("}\n") |
| 3278 file.Write("\n") | 3283 file.Write("\n") |
| 3279 | 3284 |
| 3280 def WriteServiceImplementation(self, func, file): | 3285 def WriteServiceImplementation(self, func, file): |
| 3281 """Overrriden from TypeHandler.""" | 3286 """Overrriden from TypeHandler.""" |
| 3282 file.Write( | 3287 file.Write( |
| 3283 "error::Error GLES2DecoderImpl::Handle%s(\n" % func.name) | 3288 "error::Error GLES2DecoderImpl::Handle%s(\n" % func.name) |
| 3284 file.Write( | 3289 file.Write( |
| 3285 " uint32 immediate_data_size, const gles2::%s& c) {\n" % func.name) | 3290 " uint32 immediate_data_size, const gles2::cmds::%s& c) {\n" % |
| 3291 func.name) |
| 3286 file.Write(" // TODO: for now this is a no-op\n") | 3292 file.Write(" // TODO: for now this is a no-op\n") |
| 3287 file.Write( | 3293 file.Write( |
| 3288 " SetGLError(GL_INVALID_OPERATION, \"gl%s\", \"not implemented\");\n" % | 3294 " SetGLError(GL_INVALID_OPERATION, \"gl%s\", \"not implemented\");\n" % |
| 3289 func.name) | 3295 func.name) |
| 3290 file.Write(" return error::kNoError;\n") | 3296 file.Write(" return error::kNoError;\n") |
| 3291 file.Write("}\n") | 3297 file.Write("}\n") |
| 3292 file.Write("\n") | 3298 file.Write("\n") |
| 3293 | 3299 |
| 3294 | 3300 |
| 3295 class HandWrittenHandler(CustomHandler): | 3301 class HandWrittenHandler(CustomHandler): |
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3541 def __init__(self): | 3547 def __init__(self): |
| 3542 TypeHandler.__init__(self) | 3548 TypeHandler.__init__(self) |
| 3543 | 3549 |
| 3544 def WriteServiceUnitTest(self, func, file): | 3550 def WriteServiceUnitTest(self, func, file): |
| 3545 """Overrriden from TypeHandler.""" | 3551 """Overrriden from TypeHandler.""" |
| 3546 | 3552 |
| 3547 if len(func.GetOriginalArgs()) == 1: | 3553 if len(func.GetOriginalArgs()) == 1: |
| 3548 valid_test = """ | 3554 valid_test = """ |
| 3549 TEST_F(%(test_name)s, %(name)sValidArgs) { | 3555 TEST_F(%(test_name)s, %(name)sValidArgs) { |
| 3550 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)); | 3556 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)); |
| 3551 SpecializedSetup<%(name)s, 0>(true); | 3557 SpecializedSetup<cmds::%(name)s, 0>(true); |
| 3552 %(name)s cmd; | 3558 cmds::%(name)s cmd; |
| 3553 cmd.Init(%(args)s); | 3559 cmd.Init(%(args)s); |
| 3554 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3560 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3555 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3561 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 3556 } | 3562 } |
| 3557 | 3563 |
| 3558 TEST_F(%(test_name)s, %(name)sValidArgsNewId) { | 3564 TEST_F(%(test_name)s, %(name)sValidArgsNewId) { |
| 3559 EXPECT_CALL(*gl_, %(gl_func_name)s(kNewServiceId)); | 3565 EXPECT_CALL(*gl_, %(gl_func_name)s(kNewServiceId)); |
| 3560 EXPECT_CALL(*gl_, %(gl_gen_func_name)s(1, _)) | 3566 EXPECT_CALL(*gl_, %(gl_gen_func_name)s(1, _)) |
| 3561 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); | 3567 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); |
| 3562 SpecializedSetup<%(name)s, 0>(true); | 3568 SpecializedSetup<cmds::%(name)s, 0>(true); |
| 3563 %(name)s cmd; | 3569 cmds::%(name)s cmd; |
| 3564 cmd.Init(kNewClientId); | 3570 cmd.Init(kNewClientId); |
| 3565 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3571 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3566 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3572 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 3567 EXPECT_TRUE(Get%(resource_type)sInfo(kNewClientId) != NULL); | 3573 EXPECT_TRUE(Get%(resource_type)s(kNewClientId) != NULL); |
| 3568 } | 3574 } |
| 3569 """ | 3575 """ |
| 3570 gen_func_names = { | 3576 gen_func_names = { |
| 3571 } | 3577 } |
| 3572 self.WriteValidUnitTest(func, file, valid_test, { | 3578 self.WriteValidUnitTest(func, file, valid_test, { |
| 3573 'resource_type': func.GetOriginalArgs()[0].resource_type, | 3579 'resource_type': func.GetOriginalArgs()[0].resource_type, |
| 3574 'gl_gen_func_name': func.GetInfo("gen_func"), | 3580 'gl_gen_func_name': func.GetInfo("gen_func"), |
| 3575 }) | 3581 }) |
| 3576 else: | 3582 else: |
| 3577 valid_test = """ | 3583 valid_test = """ |
| 3578 TEST_F(%(test_name)s, %(name)sValidArgs) { | 3584 TEST_F(%(test_name)s, %(name)sValidArgs) { |
| 3579 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)); | 3585 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)); |
| 3580 SpecializedSetup<%(name)s, 0>(true); | 3586 SpecializedSetup<cmds::%(name)s, 0>(true); |
| 3581 %(name)s cmd; | 3587 cmds::%(name)s cmd; |
| 3582 cmd.Init(%(args)s); | 3588 cmd.Init(%(args)s); |
| 3583 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3589 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3584 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3590 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 3585 } | 3591 } |
| 3586 | 3592 |
| 3587 TEST_F(%(test_name)s, %(name)sValidArgsNewId) { | 3593 TEST_F(%(test_name)s, %(name)sValidArgsNewId) { |
| 3588 EXPECT_CALL(*gl_, %(gl_func_name)s(%(first_gl_arg)s, kNewServiceId)); | 3594 EXPECT_CALL(*gl_, %(gl_func_name)s(%(first_gl_arg)s, kNewServiceId)); |
| 3589 EXPECT_CALL(*gl_, %(gl_gen_func_name)s(1, _)) | 3595 EXPECT_CALL(*gl_, %(gl_gen_func_name)s(1, _)) |
| 3590 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); | 3596 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); |
| 3591 SpecializedSetup<%(name)s, 0>(true); | 3597 SpecializedSetup<cmds::%(name)s, 0>(true); |
| 3592 %(name)s cmd; | 3598 cmds::%(name)s cmd; |
| 3593 cmd.Init(%(first_arg)s, kNewClientId); | 3599 cmd.Init(%(first_arg)s, kNewClientId); |
| 3594 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3600 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3595 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3601 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 3596 EXPECT_TRUE(Get%(resource_type)sInfo(kNewClientId) != NULL); | 3602 EXPECT_TRUE(Get%(resource_type)s(kNewClientId) != NULL); |
| 3597 } | 3603 } |
| 3598 """ | 3604 """ |
| 3599 gen_func_names = { | 3605 gen_func_names = { |
| 3600 } | 3606 } |
| 3601 self.WriteValidUnitTest(func, file, valid_test, { | 3607 self.WriteValidUnitTest(func, file, valid_test, { |
| 3602 'first_arg': func.GetOriginalArgs()[0].GetValidArg(func, 0, 0), | 3608 'first_arg': func.GetOriginalArgs()[0].GetValidArg(func, 0, 0), |
| 3603 'first_gl_arg': func.GetOriginalArgs()[0].GetValidGLArg(func, 0, 0), | 3609 'first_gl_arg': func.GetOriginalArgs()[0].GetValidGLArg(func, 0, 0), |
| 3604 'resource_type': func.GetOriginalArgs()[1].resource_type, | 3610 'resource_type': func.GetOriginalArgs()[1].resource_type, |
| 3605 'gl_gen_func_name': func.GetInfo("gen_func"), | 3611 'gl_gen_func_name': func.GetInfo("gen_func"), |
| 3606 }) | 3612 }) |
| 3607 | 3613 |
| 3608 invalid_test = """ | 3614 invalid_test = """ |
| 3609 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { | 3615 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| 3610 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); | 3616 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); |
| 3611 SpecializedSetup<%(name)s, 0>(false); | 3617 SpecializedSetup<cmds::%(name)s, 0>(false); |
| 3612 %(name)s cmd; | 3618 cmds::%(name)s cmd; |
| 3613 cmd.Init(%(args)s); | 3619 cmd.Init(%(args)s); |
| 3614 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s | 3620 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s |
| 3615 } | 3621 } |
| 3616 """ | 3622 """ |
| 3617 self.WriteInvalidUnitTest(func, file, invalid_test) | 3623 self.WriteInvalidUnitTest(func, file, invalid_test) |
| 3618 | 3624 |
| 3619 def WriteGLES2Implementation(self, func, file): | 3625 def WriteGLES2Implementation(self, func, file): |
| 3620 """Writes the GLES2 Implemention.""" | 3626 """Writes the GLES2 Implemention.""" |
| 3621 | 3627 |
| 3622 impl_func = func.GetInfo('impl_func') | 3628 impl_func = func.GetInfo('impl_func') |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3663 }) | 3669 }) |
| 3664 | 3670 |
| 3665 def WriteGLES2ImplementationUnitTest(self, func, file): | 3671 def WriteGLES2ImplementationUnitTest(self, func, file): |
| 3666 """Overrriden from TypeHandler.""" | 3672 """Overrriden from TypeHandler.""" |
| 3667 client_test = func.GetInfo('client_test') | 3673 client_test = func.GetInfo('client_test') |
| 3668 if client_test == False: | 3674 if client_test == False: |
| 3669 return | 3675 return |
| 3670 code = """ | 3676 code = """ |
| 3671 TEST_F(GLES2ImplementationTest, %(name)s) { | 3677 TEST_F(GLES2ImplementationTest, %(name)s) { |
| 3672 struct Cmds { | 3678 struct Cmds { |
| 3673 %(name)s cmd; | 3679 cmds::%(name)s cmd; |
| 3674 }; | 3680 }; |
| 3675 Cmds expected; | 3681 Cmds expected; |
| 3676 expected.cmd.Init(%(cmd_args)s); | 3682 expected.cmd.Init(%(cmd_args)s); |
| 3677 | 3683 |
| 3678 gl_->%(name)s(%(args)s); | 3684 gl_->%(name)s(%(args)s); |
| 3679 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); | 3685 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); |
| 3680 ClearCommands(); | 3686 ClearCommands(); |
| 3681 gl_->%(name)s(%(args)s); | 3687 gl_->%(name)s(%(args)s); |
| 3682 EXPECT_TRUE(NoCommandsWritten()); | 3688 EXPECT_TRUE(NoCommandsWritten()); |
| 3683 } | 3689 } |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3764 | 3770 |
| 3765 """ | 3771 """ |
| 3766 file.Write(code % args) | 3772 file.Write(code % args) |
| 3767 | 3773 |
| 3768 def WriteGLES2ImplementationUnitTest(self, func, file): | 3774 def WriteGLES2ImplementationUnitTest(self, func, file): |
| 3769 """Overrriden from TypeHandler.""" | 3775 """Overrriden from TypeHandler.""" |
| 3770 code = """ | 3776 code = """ |
| 3771 TEST_F(GLES2ImplementationTest, %(name)s) { | 3777 TEST_F(GLES2ImplementationTest, %(name)s) { |
| 3772 GLuint ids[2] = { 0, }; | 3778 GLuint ids[2] = { 0, }; |
| 3773 struct Cmds { | 3779 struct Cmds { |
| 3774 %(name)sImmediate gen; | 3780 cmds::%(name)sImmediate gen; |
| 3775 GLuint data[2]; | 3781 GLuint data[2]; |
| 3776 }; | 3782 }; |
| 3777 Cmds expected; | 3783 Cmds expected; |
| 3778 expected.gen.Init(arraysize(ids), &ids[0]); | 3784 expected.gen.Init(arraysize(ids), &ids[0]); |
| 3779 expected.data[0] = k%(types)sStartId; | 3785 expected.data[0] = k%(types)sStartId; |
| 3780 expected.data[1] = k%(types)sStartId + 1; | 3786 expected.data[1] = k%(types)sStartId + 1; |
| 3781 gl_->%(name)s(arraysize(ids), &ids[0]); | 3787 gl_->%(name)s(arraysize(ids), &ids[0]); |
| 3782 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); | 3788 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); |
| 3783 EXPECT_EQ(k%(types)sStartId, ids[0]); | 3789 EXPECT_EQ(k%(types)sStartId, ids[0]); |
| 3784 EXPECT_EQ(k%(types)sStartId + 1, ids[1]); | 3790 EXPECT_EQ(k%(types)sStartId + 1, ids[1]); |
| 3785 } | 3791 } |
| 3786 """ | 3792 """ |
| 3787 file.Write(code % { | 3793 file.Write(code % { |
| 3788 'name': func.name, | 3794 'name': func.name, |
| 3789 'types': func.GetInfo('resource_types'), | 3795 'types': func.GetInfo('resource_types'), |
| 3790 }) | 3796 }) |
| 3791 | 3797 |
| 3792 def WriteServiceUnitTest(self, func, file): | 3798 def WriteServiceUnitTest(self, func, file): |
| 3793 """Overrriden from TypeHandler.""" | 3799 """Overrriden from TypeHandler.""" |
| 3794 valid_test = """ | 3800 valid_test = """ |
| 3795 TEST_F(%(test_name)s, %(name)sValidArgs) { | 3801 TEST_F(%(test_name)s, %(name)sValidArgs) { |
| 3796 EXPECT_CALL(*gl_, %(gl_func_name)s(1, _)) | 3802 EXPECT_CALL(*gl_, %(gl_func_name)s(1, _)) |
| 3797 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); | 3803 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); |
| 3798 GetSharedMemoryAs<GLuint*>()[0] = kNewClientId; | 3804 GetSharedMemoryAs<GLuint*>()[0] = kNewClientId; |
| 3799 SpecializedSetup<%(name)s, 0>(true); | 3805 SpecializedSetup<cmds::%(name)s, 0>(true); |
| 3800 %(name)s cmd; | 3806 cmds::%(name)s cmd; |
| 3801 cmd.Init(%(args)s); | 3807 cmd.Init(%(args)s); |
| 3802 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3808 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3803 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3809 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 3804 EXPECT_TRUE(Get%(resource_name)sInfo(kNewClientId) != NULL); | 3810 EXPECT_TRUE(Get%(resource_name)s(kNewClientId) != NULL); |
| 3805 } | 3811 } |
| 3806 """ | 3812 """ |
| 3807 self.WriteValidUnitTest(func, file, valid_test, { | 3813 self.WriteValidUnitTest(func, file, valid_test, { |
| 3808 'resource_name': func.GetInfo('resource_type'), | 3814 'resource_name': func.GetInfo('resource_type'), |
| 3809 }) | 3815 }) |
| 3810 invalid_test = """ | 3816 invalid_test = """ |
| 3811 TEST_F(%(test_name)s, %(name)sInvalidArgs) { | 3817 TEST_F(%(test_name)s, %(name)sInvalidArgs) { |
| 3812 EXPECT_CALL(*gl_, %(gl_func_name)s(_, _)).Times(0); | 3818 EXPECT_CALL(*gl_, %(gl_func_name)s(_, _)).Times(0); |
| 3813 GetSharedMemoryAs<GLuint*>()[0] = client_%(resource_name)s_id_; | 3819 GetSharedMemoryAs<GLuint*>()[0] = client_%(resource_name)s_id_; |
| 3814 SpecializedSetup<%(name)s, 0>(false); | 3820 SpecializedSetup<cmds::%(name)s, 0>(false); |
| 3815 %(name)s cmd; | 3821 cmds::%(name)s cmd; |
| 3816 cmd.Init(%(args)s); | 3822 cmd.Init(%(args)s); |
| 3817 EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd)); | 3823 EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd)); |
| 3818 } | 3824 } |
| 3819 """ | 3825 """ |
| 3820 self.WriteValidUnitTest(func, file, invalid_test, { | 3826 self.WriteValidUnitTest(func, file, invalid_test, { |
| 3821 'resource_name': func.GetInfo('resource_type').lower(), | 3827 'resource_name': func.GetInfo('resource_type').lower(), |
| 3822 }) | 3828 }) |
| 3823 | 3829 |
| 3824 def WriteImmediateServiceUnitTest(self, func, file): | 3830 def WriteImmediateServiceUnitTest(self, func, file): |
| 3825 """Overrriden from TypeHandler.""" | 3831 """Overrriden from TypeHandler.""" |
| 3826 valid_test = """ | 3832 valid_test = """ |
| 3827 TEST_F(%(test_name)s, %(name)sValidArgs) { | 3833 TEST_F(%(test_name)s, %(name)sValidArgs) { |
| 3828 EXPECT_CALL(*gl_, %(gl_func_name)s(1, _)) | 3834 EXPECT_CALL(*gl_, %(gl_func_name)s(1, _)) |
| 3829 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); | 3835 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); |
| 3830 %(name)s* cmd = GetImmediateAs<%(name)s>(); | 3836 cmds::%(name)s* cmd = GetImmediateAs<cmds::%(name)s>(); |
| 3831 GLuint temp = kNewClientId; | 3837 GLuint temp = kNewClientId; |
| 3832 SpecializedSetup<%(name)s, 0>(true); | 3838 SpecializedSetup<cmds::%(name)s, 0>(true); |
| 3833 cmd->Init(1, &temp); | 3839 cmd->Init(1, &temp); |
| 3834 EXPECT_EQ(error::kNoError, | 3840 EXPECT_EQ(error::kNoError, |
| 3835 ExecuteImmediateCmd(*cmd, sizeof(temp))); | 3841 ExecuteImmediateCmd(*cmd, sizeof(temp))); |
| 3836 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3842 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 3837 EXPECT_TRUE(Get%(resource_name)sInfo(kNewClientId) != NULL); | 3843 EXPECT_TRUE(Get%(resource_name)s(kNewClientId) != NULL); |
| 3838 } | 3844 } |
| 3839 """ | 3845 """ |
| 3840 self.WriteValidUnitTest(func, file, valid_test, { | 3846 self.WriteValidUnitTest(func, file, valid_test, { |
| 3841 'resource_name': func.GetInfo('resource_type'), | 3847 'resource_name': func.GetInfo('resource_type'), |
| 3842 }) | 3848 }) |
| 3843 invalid_test = """ | 3849 invalid_test = """ |
| 3844 TEST_F(%(test_name)s, %(name)sInvalidArgs) { | 3850 TEST_F(%(test_name)s, %(name)sInvalidArgs) { |
| 3845 EXPECT_CALL(*gl_, %(gl_func_name)s(_, _)).Times(0); | 3851 EXPECT_CALL(*gl_, %(gl_func_name)s(_, _)).Times(0); |
| 3846 %(name)s* cmd = GetImmediateAs<%(name)s>(); | 3852 cmds::%(name)s* cmd = GetImmediateAs<cmds::%(name)s>(); |
| 3847 SpecializedSetup<%(name)s, 0>(false); | 3853 SpecializedSetup<cmds::%(name)s, 0>(false); |
| 3848 cmd->Init(1, &client_%(resource_name)s_id_); | 3854 cmd->Init(1, &client_%(resource_name)s_id_); |
| 3849 EXPECT_EQ(error::kInvalidArguments, | 3855 EXPECT_EQ(error::kInvalidArguments, |
| 3850 ExecuteImmediateCmd(*cmd, sizeof(&client_%(resource_name)s_id_))); | 3856 ExecuteImmediateCmd(*cmd, sizeof(&client_%(resource_name)s_id_))); |
| 3851 } | 3857 } |
| 3852 """ | 3858 """ |
| 3853 self.WriteValidUnitTest(func, file, invalid_test, { | 3859 self.WriteValidUnitTest(func, file, invalid_test, { |
| 3854 'resource_name': func.GetInfo('resource_type').lower(), | 3860 'resource_name': func.GetInfo('resource_type').lower(), |
| 3855 }) | 3861 }) |
| 3856 | 3862 |
| 3857 def WriteImmediateCmdComputeSize(self, func, file): | 3863 def WriteImmediateCmdComputeSize(self, func, file): |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3900 (copy_args, last_arg.name)) | 3906 (copy_args, last_arg.name)) |
| 3901 file.Write(" const uint32 size = ComputeSize(_n);\n") | 3907 file.Write(" const uint32 size = ComputeSize(_n);\n") |
| 3902 file.Write(" return NextImmediateCmdAddressTotalSize<ValueType>(" | 3908 file.Write(" return NextImmediateCmdAddressTotalSize<ValueType>(" |
| 3903 "cmd, size);\n") | 3909 "cmd, size);\n") |
| 3904 file.Write(" }\n") | 3910 file.Write(" }\n") |
| 3905 file.Write("\n") | 3911 file.Write("\n") |
| 3906 | 3912 |
| 3907 def WriteImmediateCmdHelper(self, func, file): | 3913 def WriteImmediateCmdHelper(self, func, file): |
| 3908 """Overrriden from TypeHandler.""" | 3914 """Overrriden from TypeHandler.""" |
| 3909 code = """ void %(name)s(%(typed_args)s) { | 3915 code = """ void %(name)s(%(typed_args)s) { |
| 3910 const uint32 size = gles2::%(name)s::ComputeSize(n); | 3916 const uint32 size = gles2::cmds::%(name)s::ComputeSize(n); |
| 3911 gles2::%(name)s* c = | 3917 gles2::cmds::%(name)s* c = |
| 3912 GetImmediateCmdSpaceTotalSize<gles2::%(name)s>(size); | 3918 GetImmediateCmdSpaceTotalSize<gles2::cmds::%(name)s>(size); |
| 3913 if (c) { | 3919 if (c) { |
| 3914 c->Init(%(args)s); | 3920 c->Init(%(args)s); |
| 3915 } | 3921 } |
| 3916 } | 3922 } |
| 3917 | 3923 |
| 3918 """ | 3924 """ |
| 3919 file.Write(code % { | 3925 file.Write(code % { |
| 3920 "name": func.name, | 3926 "name": func.name, |
| 3921 "typed_args": func.MakeTypedOriginalArgString(""), | 3927 "typed_args": func.MakeTypedOriginalArgString(""), |
| 3922 "args": func.MakeOriginalArgString(""), | 3928 "args": func.MakeOriginalArgString(""), |
| 3923 }) | 3929 }) |
| 3924 | 3930 |
| 3925 def WriteImmediateFormatTest(self, func, file): | 3931 def WriteImmediateFormatTest(self, func, file): |
| 3926 """Overrriden from TypeHandler.""" | 3932 """Overrriden from TypeHandler.""" |
| 3927 file.Write("TEST_F(GLES2FormatTest, %s) {\n" % func.name) | 3933 file.Write("TEST_F(GLES2FormatTest, %s) {\n" % func.name) |
| 3928 file.Write(" static GLuint ids[] = { 12, 23, 34, };\n") | 3934 file.Write(" static GLuint ids[] = { 12, 23, 34, };\n") |
| 3929 file.Write(" %s& cmd = *GetBufferAs<%s>();\n" % (func.name, func.name)) | 3935 file.Write(" cmds::%s& cmd = *GetBufferAs<cmds::%s>();\n" % |
| 3936 (func.name, func.name)) |
| 3930 file.Write(" void* next_cmd = cmd.Set(\n") | 3937 file.Write(" void* next_cmd = cmd.Set(\n") |
| 3931 file.Write(" &cmd, static_cast<GLsizei>(arraysize(ids)), ids);\n") | 3938 file.Write(" &cmd, static_cast<GLsizei>(arraysize(ids)), ids);\n") |
| 3932 file.Write(" EXPECT_EQ(static_cast<uint32>(%s::kCmdId),\n" % func.name) | 3939 file.Write(" EXPECT_EQ(static_cast<uint32>(cmds::%s::kCmdId),\n" % |
| 3940 func.name) |
| 3933 file.Write(" cmd.header.command);\n") | 3941 file.Write(" cmd.header.command);\n") |
| 3934 file.Write(" EXPECT_EQ(sizeof(cmd) +\n") | 3942 file.Write(" EXPECT_EQ(sizeof(cmd) +\n") |
| 3935 file.Write(" RoundSizeToMultipleOfEntries(cmd.n * 4u),\n") | 3943 file.Write(" RoundSizeToMultipleOfEntries(cmd.n * 4u),\n") |
| 3936 file.Write(" cmd.header.size * 4u);\n") | 3944 file.Write(" cmd.header.size * 4u);\n") |
| 3937 file.Write(" EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);\n"); | 3945 file.Write(" EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);\n"); |
| 3938 file.Write(" CheckBytesWrittenMatchesExpectedSize(\n") | 3946 file.Write(" CheckBytesWrittenMatchesExpectedSize(\n") |
| 3939 file.Write(" next_cmd, sizeof(cmd) +\n") | 3947 file.Write(" next_cmd, sizeof(cmd) +\n") |
| 3940 file.Write(" RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));\n") | 3948 file.Write(" RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));\n") |
| 3941 file.Write(" // TODO(gman): Check that ids were inserted;\n") | 3949 file.Write(" // TODO(gman): Check that ids were inserted;\n") |
| 3942 file.Write("}\n") | 3950 file.Write("}\n") |
| 3943 file.Write("\n") | 3951 file.Write("\n") |
| 3944 | 3952 |
| 3945 | 3953 |
| 3946 class CreateHandler(TypeHandler): | 3954 class CreateHandler(TypeHandler): |
| 3947 """Handler for glCreate___ type functions.""" | 3955 """Handler for glCreate___ type functions.""" |
| 3948 | 3956 |
| 3949 def __init__(self): | 3957 def __init__(self): |
| 3950 TypeHandler.__init__(self) | 3958 TypeHandler.__init__(self) |
| 3951 | 3959 |
| 3952 def InitFunction(self, func): | 3960 def InitFunction(self, func): |
| 3953 """Overrriden from TypeHandler.""" | 3961 """Overrriden from TypeHandler.""" |
| 3954 func.AddCmdArg(Argument("client_id", 'uint32')) | 3962 func.AddCmdArg(Argument("client_id", 'uint32')) |
| 3955 | 3963 |
| 3956 def WriteServiceUnitTest(self, func, file): | 3964 def WriteServiceUnitTest(self, func, file): |
| 3957 """Overrriden from TypeHandler.""" | 3965 """Overrriden from TypeHandler.""" |
| 3958 valid_test = """ | 3966 valid_test = """ |
| 3959 TEST_F(%(test_name)s, %(name)sValidArgs) { | 3967 TEST_F(%(test_name)s, %(name)sValidArgs) { |
| 3960 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)) | 3968 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)) |
| 3961 .WillOnce(Return(kNewServiceId)); | 3969 .WillOnce(Return(kNewServiceId)); |
| 3962 SpecializedSetup<%(name)s, 0>(true); | 3970 SpecializedSetup<cmds::%(name)s, 0>(true); |
| 3963 %(name)s cmd; | 3971 cmds::%(name)s cmd; |
| 3964 cmd.Init(%(args)s%(comma)skNewClientId); | 3972 cmd.Init(%(args)s%(comma)skNewClientId); |
| 3965 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3973 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3966 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3974 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 3967 EXPECT_TRUE(Get%(resource_type)sInfo(kNewClientId) != NULL); | 3975 EXPECT_TRUE(Get%(resource_type)s(kNewClientId) != NULL); |
| 3968 } | 3976 } |
| 3969 """ | 3977 """ |
| 3970 comma = "" | 3978 comma = "" |
| 3971 if len(func.GetOriginalArgs()): | 3979 if len(func.GetOriginalArgs()): |
| 3972 comma =", " | 3980 comma =", " |
| 3973 self.WriteValidUnitTest(func, file, valid_test, { | 3981 self.WriteValidUnitTest(func, file, valid_test, { |
| 3974 'comma': comma, | 3982 'comma': comma, |
| 3975 'resource_type': func.name[6:], | 3983 'resource_type': func.name[6:], |
| 3976 }) | 3984 }) |
| 3977 invalid_test = """ | 3985 invalid_test = """ |
| 3978 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { | 3986 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| 3979 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); | 3987 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); |
| 3980 SpecializedSetup<%(name)s, 0>(false); | 3988 SpecializedSetup<cmds::%(name)s, 0>(false); |
| 3981 %(name)s cmd; | 3989 cmds::%(name)s cmd; |
| 3982 cmd.Init(%(args)s%(comma)skNewClientId); | 3990 cmd.Init(%(args)s%(comma)skNewClientId); |
| 3983 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));%(gl_error_test)s | 3991 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));%(gl_error_test)s |
| 3984 } | 3992 } |
| 3985 """ | 3993 """ |
| 3986 self.WriteInvalidUnitTest(func, file, invalid_test, { | 3994 self.WriteInvalidUnitTest(func, file, invalid_test, { |
| 3987 'comma': comma, | 3995 'comma': comma, |
| 3988 }) | 3996 }) |
| 3989 | 3997 |
| 3990 def WriteHandlerImplementation (self, func, file): | 3998 def WriteHandlerImplementation (self, func, file): |
| 3991 """Overrriden from TypeHandler.""" | 3999 """Overrriden from TypeHandler.""" |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4061 } | 4069 } |
| 4062 """ | 4070 """ |
| 4063 file.Write(code) | 4071 file.Write(code) |
| 4064 | 4072 |
| 4065 def WriteGLES2ImplementationUnitTest(self, func, file): | 4073 def WriteGLES2ImplementationUnitTest(self, func, file): |
| 4066 """Overrriden from TypeHandler.""" | 4074 """Overrriden from TypeHandler.""" |
| 4067 code = """ | 4075 code = """ |
| 4068 TEST_F(GLES2ImplementationTest, %(name)s) { | 4076 TEST_F(GLES2ImplementationTest, %(name)s) { |
| 4069 GLuint ids[2] = { k%(types)sStartId, k%(types)sStartId + 1 }; | 4077 GLuint ids[2] = { k%(types)sStartId, k%(types)sStartId + 1 }; |
| 4070 struct Cmds { | 4078 struct Cmds { |
| 4071 %(name)sImmediate del; | 4079 cmds::%(name)sImmediate del; |
| 4072 GLuint data[2]; | 4080 GLuint data[2]; |
| 4073 }; | 4081 }; |
| 4074 Cmds expected; | 4082 Cmds expected; |
| 4075 expected.del.Init(arraysize(ids), &ids[0]); | 4083 expected.del.Init(arraysize(ids), &ids[0]); |
| 4076 expected.data[0] = k%(types)sStartId; | 4084 expected.data[0] = k%(types)sStartId; |
| 4077 expected.data[1] = k%(types)sStartId + 1; | 4085 expected.data[1] = k%(types)sStartId + 1; |
| 4078 gl_->%(name)s(arraysize(ids), &ids[0]); | 4086 gl_->%(name)s(arraysize(ids), &ids[0]); |
| 4079 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); | 4087 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); |
| 4080 } | 4088 } |
| 4081 """ | 4089 """ |
| 4082 file.Write(code % { | 4090 file.Write(code % { |
| 4083 'name': func.name, | 4091 'name': func.name, |
| 4084 'types': func.GetInfo('resource_types'), | 4092 'types': func.GetInfo('resource_types'), |
| 4085 }) | 4093 }) |
| 4086 | 4094 |
| 4087 def WriteServiceUnitTest(self, func, file): | 4095 def WriteServiceUnitTest(self, func, file): |
| 4088 """Overrriden from TypeHandler.""" | 4096 """Overrriden from TypeHandler.""" |
| 4089 valid_test = """ | 4097 valid_test = """ |
| 4090 TEST_F(%(test_name)s, %(name)sValidArgs) { | 4098 TEST_F(%(test_name)s, %(name)sValidArgs) { |
| 4091 EXPECT_CALL( | 4099 EXPECT_CALL( |
| 4092 *gl_, | 4100 *gl_, |
| 4093 %(gl_func_name)s(1, Pointee(kService%(upper_resource_name)sId))) | 4101 %(gl_func_name)s(1, Pointee(kService%(upper_resource_name)sId))) |
| 4094 .Times(1); | 4102 .Times(1); |
| 4095 GetSharedMemoryAs<GLuint*>()[0] = client_%(resource_name)s_id_; | 4103 GetSharedMemoryAs<GLuint*>()[0] = client_%(resource_name)s_id_; |
| 4096 SpecializedSetup<%(name)s, 0>(true); | 4104 SpecializedSetup<cmds::%(name)s, 0>(true); |
| 4097 %(name)s cmd; | 4105 cmds::%(name)s cmd; |
| 4098 cmd.Init(%(args)s); | 4106 cmd.Init(%(args)s); |
| 4099 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 4107 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 4100 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4108 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4101 EXPECT_TRUE( | 4109 EXPECT_TRUE( |
| 4102 Get%(upper_resource_name)sInfo(client_%(resource_name)s_id_) == NULL); | 4110 Get%(upper_resource_name)s(client_%(resource_name)s_id_) == NULL); |
| 4103 } | 4111 } |
| 4104 """ | 4112 """ |
| 4105 self.WriteValidUnitTest(func, file, valid_test, { | 4113 self.WriteValidUnitTest(func, file, valid_test, { |
| 4106 'resource_name': func.GetInfo('resource_type').lower(), | 4114 'resource_name': func.GetInfo('resource_type').lower(), |
| 4107 'upper_resource_name': func.GetInfo('resource_type'), | 4115 'upper_resource_name': func.GetInfo('resource_type'), |
| 4108 }) | 4116 }) |
| 4109 invalid_test = """ | 4117 invalid_test = """ |
| 4110 TEST_F(%(test_name)s, %(name)sInvalidArgs) { | 4118 TEST_F(%(test_name)s, %(name)sInvalidArgs) { |
| 4111 GetSharedMemoryAs<GLuint*>()[0] = kInvalidClientId; | 4119 GetSharedMemoryAs<GLuint*>()[0] = kInvalidClientId; |
| 4112 SpecializedSetup<%(name)s, 0>(false); | 4120 SpecializedSetup<cmds::%(name)s, 0>(false); |
| 4113 %(name)s cmd; | 4121 cmds::%(name)s cmd; |
| 4114 cmd.Init(%(args)s); | 4122 cmd.Init(%(args)s); |
| 4115 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 4123 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 4116 } | 4124 } |
| 4117 """ | 4125 """ |
| 4118 self.WriteValidUnitTest(func, file, invalid_test) | 4126 self.WriteValidUnitTest(func, file, invalid_test) |
| 4119 | 4127 |
| 4120 def WriteImmediateServiceUnitTest(self, func, file): | 4128 def WriteImmediateServiceUnitTest(self, func, file): |
| 4121 """Overrriden from TypeHandler.""" | 4129 """Overrriden from TypeHandler.""" |
| 4122 valid_test = """ | 4130 valid_test = """ |
| 4123 TEST_F(%(test_name)s, %(name)sValidArgs) { | 4131 TEST_F(%(test_name)s, %(name)sValidArgs) { |
| 4124 EXPECT_CALL( | 4132 EXPECT_CALL( |
| 4125 *gl_, | 4133 *gl_, |
| 4126 %(gl_func_name)s(1, Pointee(kService%(upper_resource_name)sId))) | 4134 %(gl_func_name)s(1, Pointee(kService%(upper_resource_name)sId))) |
| 4127 .Times(1); | 4135 .Times(1); |
| 4128 %(name)s& cmd = *GetImmediateAs<%(name)s>(); | 4136 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); |
| 4129 SpecializedSetup<%(name)s, 0>(true); | 4137 SpecializedSetup<cmds::%(name)s, 0>(true); |
| 4130 cmd.Init(1, &client_%(resource_name)s_id_); | 4138 cmd.Init(1, &client_%(resource_name)s_id_); |
| 4131 EXPECT_EQ(error::kNoError, | 4139 EXPECT_EQ(error::kNoError, |
| 4132 ExecuteImmediateCmd(cmd, sizeof(client_%(resource_name)s_id_))); | 4140 ExecuteImmediateCmd(cmd, sizeof(client_%(resource_name)s_id_))); |
| 4133 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4141 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4134 EXPECT_TRUE( | 4142 EXPECT_TRUE( |
| 4135 Get%(upper_resource_name)sInfo(client_%(resource_name)s_id_) == NULL); | 4143 Get%(upper_resource_name)s(client_%(resource_name)s_id_) == NULL); |
| 4136 } | 4144 } |
| 4137 """ | 4145 """ |
| 4138 self.WriteValidUnitTest(func, file, valid_test, { | 4146 self.WriteValidUnitTest(func, file, valid_test, { |
| 4139 'resource_name': func.GetInfo('resource_type').lower(), | 4147 'resource_name': func.GetInfo('resource_type').lower(), |
| 4140 'upper_resource_name': func.GetInfo('resource_type'), | 4148 'upper_resource_name': func.GetInfo('resource_type'), |
| 4141 }) | 4149 }) |
| 4142 invalid_test = """ | 4150 invalid_test = """ |
| 4143 TEST_F(%(test_name)s, %(name)sInvalidArgs) { | 4151 TEST_F(%(test_name)s, %(name)sInvalidArgs) { |
| 4144 %(name)s& cmd = *GetImmediateAs<%(name)s>(); | 4152 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); |
| 4145 SpecializedSetup<%(name)s, 0>(false); | 4153 SpecializedSetup<cmds::%(name)s, 0>(false); |
| 4146 GLuint temp = kInvalidClientId; | 4154 GLuint temp = kInvalidClientId; |
| 4147 cmd.Init(1, &temp); | 4155 cmd.Init(1, &temp); |
| 4148 EXPECT_EQ(error::kNoError, | 4156 EXPECT_EQ(error::kNoError, |
| 4149 ExecuteImmediateCmd(cmd, sizeof(temp))); | 4157 ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 4150 } | 4158 } |
| 4151 """ | 4159 """ |
| 4152 self.WriteValidUnitTest(func, file, invalid_test) | 4160 self.WriteValidUnitTest(func, file, invalid_test) |
| 4153 | 4161 |
| 4154 def WriteHandlerImplementation (self, func, file): | 4162 def WriteHandlerImplementation (self, func, file): |
| 4155 """Overrriden from TypeHandler.""" | 4163 """Overrriden from TypeHandler.""" |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4246 (copy_args, last_arg.name)) | 4254 (copy_args, last_arg.name)) |
| 4247 file.Write(" const uint32 size = ComputeSize(_n);\n") | 4255 file.Write(" const uint32 size = ComputeSize(_n);\n") |
| 4248 file.Write(" return NextImmediateCmdAddressTotalSize<ValueType>(" | 4256 file.Write(" return NextImmediateCmdAddressTotalSize<ValueType>(" |
| 4249 "cmd, size);\n") | 4257 "cmd, size);\n") |
| 4250 file.Write(" }\n") | 4258 file.Write(" }\n") |
| 4251 file.Write("\n") | 4259 file.Write("\n") |
| 4252 | 4260 |
| 4253 def WriteImmediateCmdHelper(self, func, file): | 4261 def WriteImmediateCmdHelper(self, func, file): |
| 4254 """Overrriden from TypeHandler.""" | 4262 """Overrriden from TypeHandler.""" |
| 4255 code = """ void %(name)s(%(typed_args)s) { | 4263 code = """ void %(name)s(%(typed_args)s) { |
| 4256 const uint32 size = gles2::%(name)s::ComputeSize(n); | 4264 const uint32 size = gles2::cmds::%(name)s::ComputeSize(n); |
| 4257 gles2::%(name)s* c = | 4265 gles2::cmds::%(name)s* c = |
| 4258 GetImmediateCmdSpaceTotalSize<gles2::%(name)s>(size); | 4266 GetImmediateCmdSpaceTotalSize<gles2::cmds::%(name)s>(size); |
| 4259 if (c) { | 4267 if (c) { |
| 4260 c->Init(%(args)s); | 4268 c->Init(%(args)s); |
| 4261 } | 4269 } |
| 4262 } | 4270 } |
| 4263 | 4271 |
| 4264 """ | 4272 """ |
| 4265 file.Write(code % { | 4273 file.Write(code % { |
| 4266 "name": func.name, | 4274 "name": func.name, |
| 4267 "typed_args": func.MakeTypedOriginalArgString(""), | 4275 "typed_args": func.MakeTypedOriginalArgString(""), |
| 4268 "args": func.MakeOriginalArgString(""), | 4276 "args": func.MakeOriginalArgString(""), |
| 4269 }) | 4277 }) |
| 4270 | 4278 |
| 4271 def WriteImmediateFormatTest(self, func, file): | 4279 def WriteImmediateFormatTest(self, func, file): |
| 4272 """Overrriden from TypeHandler.""" | 4280 """Overrriden from TypeHandler.""" |
| 4273 file.Write("TEST_F(GLES2FormatTest, %s) {\n" % func.name) | 4281 file.Write("TEST_F(GLES2FormatTest, %s) {\n" % func.name) |
| 4274 file.Write(" static GLuint ids[] = { 12, 23, 34, };\n") | 4282 file.Write(" static GLuint ids[] = { 12, 23, 34, };\n") |
| 4275 file.Write(" %s& cmd = *GetBufferAs<%s>();\n" % (func.name, func.name)) | 4283 file.Write(" cmds::%s& cmd = *GetBufferAs<cmds::%s>();\n" % |
| 4284 (func.name, func.name)) |
| 4276 file.Write(" void* next_cmd = cmd.Set(\n") | 4285 file.Write(" void* next_cmd = cmd.Set(\n") |
| 4277 file.Write(" &cmd, static_cast<GLsizei>(arraysize(ids)), ids);\n") | 4286 file.Write(" &cmd, static_cast<GLsizei>(arraysize(ids)), ids);\n") |
| 4278 file.Write(" EXPECT_EQ(static_cast<uint32>(%s::kCmdId),\n" % func.name) | 4287 file.Write(" EXPECT_EQ(static_cast<uint32>(cmds::%s::kCmdId),\n" % |
| 4288 func.name) |
| 4279 file.Write(" cmd.header.command);\n") | 4289 file.Write(" cmd.header.command);\n") |
| 4280 file.Write(" EXPECT_EQ(sizeof(cmd) +\n") | 4290 file.Write(" EXPECT_EQ(sizeof(cmd) +\n") |
| 4281 file.Write(" RoundSizeToMultipleOfEntries(cmd.n * 4u),\n") | 4291 file.Write(" RoundSizeToMultipleOfEntries(cmd.n * 4u),\n") |
| 4282 file.Write(" cmd.header.size * 4u);\n") | 4292 file.Write(" cmd.header.size * 4u);\n") |
| 4283 file.Write(" EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);\n"); | 4293 file.Write(" EXPECT_EQ(static_cast<GLsizei>(arraysize(ids)), cmd.n);\n"); |
| 4284 file.Write(" CheckBytesWrittenMatchesExpectedSize(\n") | 4294 file.Write(" CheckBytesWrittenMatchesExpectedSize(\n") |
| 4285 file.Write(" next_cmd, sizeof(cmd) +\n") | 4295 file.Write(" next_cmd, sizeof(cmd) +\n") |
| 4286 file.Write(" RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));\n") | 4296 file.Write(" RoundSizeToMultipleOfEntries(arraysize(ids) * 4u));\n") |
| 4287 file.Write(" // TODO(gman): Check that ids were inserted;\n") | 4297 file.Write(" // TODO(gman): Check that ids were inserted;\n") |
| 4288 file.Write("}\n") | 4298 file.Write("}\n") |
| 4289 file.Write("\n") | 4299 file.Write("\n") |
| 4290 | 4300 |
| 4291 | 4301 |
| 4292 class GETnHandler(TypeHandler): | 4302 class GETnHandler(TypeHandler): |
| 4293 """Handler for GETn for glGetBooleanv, glGetFloatv, ... type functions.""" | 4303 """Handler for GETn for glGetBooleanv, glGetFloatv, ... type functions.""" |
| 4294 | 4304 |
| 4295 def __init__(self): | 4305 def __init__(self): |
| 4296 TypeHandler.__init__(self) | 4306 TypeHandler.__init__(self) |
| 4297 | 4307 |
| 4298 def AddImmediateFunction(self, generator, func): | 4308 def AddImmediateFunction(self, generator, func): |
| 4299 """Overrriden from TypeHandler.""" | 4309 """Overrriden from TypeHandler.""" |
| 4300 pass | 4310 pass |
| 4301 | 4311 |
| 4302 def WriteServiceImplementation(self, func, file): | 4312 def WriteServiceImplementation(self, func, file): |
| 4303 """Overrriden from TypeHandler.""" | 4313 """Overrriden from TypeHandler.""" |
| 4304 file.Write( | 4314 file.Write( |
| 4305 "error::Error GLES2DecoderImpl::Handle%s(\n" % func.name) | 4315 "error::Error GLES2DecoderImpl::Handle%s(\n" % func.name) |
| 4306 file.Write( | 4316 file.Write( |
| 4307 " uint32 immediate_data_size, const gles2::%s& c) {\n" % func.name) | 4317 " uint32 immediate_data_size, const gles2::cmds::%s& c) {\n" % |
| 4318 func.name) |
| 4308 last_arg = func.GetLastOriginalArg() | 4319 last_arg = func.GetLastOriginalArg() |
| 4309 | 4320 |
| 4310 all_but_last_args = func.GetOriginalArgs()[:-1] | 4321 all_but_last_args = func.GetOriginalArgs()[:-1] |
| 4311 for arg in all_but_last_args: | 4322 for arg in all_but_last_args: |
| 4312 arg.WriteGetCode(file) | 4323 arg.WriteGetCode(file) |
| 4313 | 4324 |
| 4314 code = """ typedef %(func_name)s::Result Result; | 4325 code = """ typedef cmds::%(func_name)s::Result Result; |
| 4315 GLsizei num_values = 0; | 4326 GLsizei num_values = 0; |
| 4316 GetNumValuesReturnedForGLGet(pname, &num_values); | 4327 GetNumValuesReturnedForGLGet(pname, &num_values); |
| 4317 Result* result = GetSharedMemoryAs<Result*>( | 4328 Result* result = GetSharedMemoryAs<Result*>( |
| 4318 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); | 4329 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); |
| 4319 %(last_arg_type)s params = result ? result->GetData() : NULL; | 4330 %(last_arg_type)s params = result ? result->GetData() : NULL; |
| 4320 """ | 4331 """ |
| 4321 file.Write(code % { | 4332 file.Write(code % { |
| 4322 'last_arg_type': last_arg.type, | 4333 'last_arg_type': last_arg.type, |
| 4323 'func_name': func.name, | 4334 'func_name': func.name, |
| 4324 }) | 4335 }) |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4357 arg.WriteClientSideValidationCode(file, func) | 4368 arg.WriteClientSideValidationCode(file, func) |
| 4358 all_but_last_args = func.GetOriginalArgs()[:-1] | 4369 all_but_last_args = func.GetOriginalArgs()[:-1] |
| 4359 arg_string = ( | 4370 arg_string = ( |
| 4360 ", ".join(["%s" % arg.name for arg in all_but_last_args])) | 4371 ", ".join(["%s" % arg.name for arg in all_but_last_args])) |
| 4361 all_arg_string = ( | 4372 all_arg_string = ( |
| 4362 ", ".join(["%s" % arg.name for arg in func.GetOriginalArgs()])) | 4373 ", ".join(["%s" % arg.name for arg in func.GetOriginalArgs()])) |
| 4363 self.WriteTraceEvent(func, file) | 4374 self.WriteTraceEvent(func, file) |
| 4364 code = """ if (%(func_name)sHelper(%(all_arg_string)s)) { | 4375 code = """ if (%(func_name)sHelper(%(all_arg_string)s)) { |
| 4365 return; | 4376 return; |
| 4366 } | 4377 } |
| 4367 typedef %(func_name)s::Result Result; | 4378 typedef cmds::%(func_name)s::Result Result; |
| 4368 Result* result = GetResultAs<Result*>(); | 4379 Result* result = GetResultAs<Result*>(); |
| 4369 if (!result) { | 4380 if (!result) { |
| 4370 return; | 4381 return; |
| 4371 } | 4382 } |
| 4372 result->SetNumResults(0); | 4383 result->SetNumResults(0); |
| 4373 helper_->%(func_name)s(%(arg_string)s, | 4384 helper_->%(func_name)s(%(arg_string)s, |
| 4374 GetResultShmId(), GetResultShmOffset()); | 4385 GetResultShmId(), GetResultShmOffset()); |
| 4375 WaitForCmd(); | 4386 WaitForCmd(); |
| 4376 result->CopyResult(params); | 4387 result->CopyResult(params); |
| 4377 GPU_CLIENT_LOG_CODE_BLOCK({ | 4388 GPU_CLIENT_LOG_CODE_BLOCK({ |
| 4378 for (int32 i = 0; i < result->GetNumResults(); ++i) { | 4389 for (int32 i = 0; i < result->GetNumResults(); ++i) { |
| 4379 GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]); | 4390 GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]); |
| 4380 } | 4391 } |
| 4381 }); | 4392 }); |
| 4382 CheckGLError(); | 4393 CheckGLError(); |
| 4383 } | 4394 } |
| 4384 """ | 4395 """ |
| 4385 file.Write(code % { | 4396 file.Write(code % { |
| 4386 'func_name': func.name, | 4397 'func_name': func.name, |
| 4387 'arg_string': arg_string, | 4398 'arg_string': arg_string, |
| 4388 'all_arg_string': all_arg_string, | 4399 'all_arg_string': all_arg_string, |
| 4389 }) | 4400 }) |
| 4390 | 4401 |
| 4391 def WriteGLES2ImplementationUnitTest(self, func, file): | 4402 def WriteGLES2ImplementationUnitTest(self, func, file): |
| 4392 """Writes the GLES2 Implemention unit test.""" | 4403 """Writes the GLES2 Implemention unit test.""" |
| 4393 code = """ | 4404 code = """ |
| 4394 TEST_F(GLES2ImplementationTest, %(name)s) { | 4405 TEST_F(GLES2ImplementationTest, %(name)s) { |
| 4395 struct Cmds { | 4406 struct Cmds { |
| 4396 %(name)s cmd; | 4407 cmds::%(name)s cmd; |
| 4397 }; | 4408 }; |
| 4398 typedef %(name)s::Result Result; | 4409 typedef cmds::%(name)s::Result Result; |
| 4399 Result::Type result = 0; | 4410 Result::Type result = 0; |
| 4400 Cmds expected; | 4411 Cmds expected; |
| 4401 ExpectedMemoryInfo result1 = GetExpectedResultMemory(4); | 4412 ExpectedMemoryInfo result1 = GetExpectedResultMemory(4); |
| 4402 expected.cmd.Init(%(cmd_args)s, result1.id, result1.offset); | 4413 expected.cmd.Init(%(cmd_args)s, result1.id, result1.offset); |
| 4403 EXPECT_CALL(*command_buffer(), OnFlush()) | 4414 EXPECT_CALL(*command_buffer(), OnFlush()) |
| 4404 .WillOnce(SetMemory(result1.ptr, SizedResultHelper<Result::Type>(1))) | 4415 .WillOnce(SetMemory(result1.ptr, SizedResultHelper<Result::Type>(1))) |
| 4405 .RetiresOnSaturation(); | 4416 .RetiresOnSaturation(); |
| 4406 gl_->%(name)s(%(args)s, &result); | 4417 gl_->%(name)s(%(args)s, &result); |
| 4407 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); | 4418 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); |
| 4408 EXPECT_EQ(static_cast<Result::Type>(1), result); | 4419 EXPECT_EQ(static_cast<Result::Type>(1), result); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 4423 }) | 4434 }) |
| 4424 | 4435 |
| 4425 def WriteServiceUnitTest(self, func, file): | 4436 def WriteServiceUnitTest(self, func, file): |
| 4426 """Overrriden from TypeHandler.""" | 4437 """Overrriden from TypeHandler.""" |
| 4427 valid_test = """ | 4438 valid_test = """ |
| 4428 TEST_F(%(test_name)s, %(name)sValidArgs) { | 4439 TEST_F(%(test_name)s, %(name)sValidArgs) { |
| 4429 EXPECT_CALL(*gl_, GetError()) | 4440 EXPECT_CALL(*gl_, GetError()) |
| 4430 .WillOnce(Return(GL_NO_ERROR)) | 4441 .WillOnce(Return(GL_NO_ERROR)) |
| 4431 .WillOnce(Return(GL_NO_ERROR)) | 4442 .WillOnce(Return(GL_NO_ERROR)) |
| 4432 .RetiresOnSaturation(); | 4443 .RetiresOnSaturation(); |
| 4433 SpecializedSetup<%(name)s, 0>(true); | 4444 SpecializedSetup<cmds::%(name)s, 0>(true); |
| 4434 typedef %(name)s::Result Result; | 4445 typedef cmds::%(name)s::Result Result; |
| 4435 Result* result = static_cast<Result*>(shared_memory_address_); | 4446 Result* result = static_cast<Result*>(shared_memory_address_); |
| 4436 EXPECT_CALL(*gl_, %(gl_func_name)s(%(local_gl_args)s)); | 4447 EXPECT_CALL(*gl_, %(gl_func_name)s(%(local_gl_args)s)); |
| 4437 result->size = 0; | 4448 result->size = 0; |
| 4438 %(name)s cmd; | 4449 cmds::%(name)s cmd; |
| 4439 cmd.Init(%(args)s); | 4450 cmd.Init(%(args)s); |
| 4440 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 4451 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 4441 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned( | 4452 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned( |
| 4442 %(valid_pname)s), | 4453 %(valid_pname)s), |
| 4443 result->GetNumResults()); | 4454 result->GetNumResults()); |
| 4444 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4455 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4445 } | 4456 } |
| 4446 """ | 4457 """ |
| 4447 gl_arg_strings = [] | 4458 gl_arg_strings = [] |
| 4448 valid_pname = '' | 4459 valid_pname = '' |
| 4449 for count, arg in enumerate(func.GetOriginalArgs()[:-1]): | 4460 for count, arg in enumerate(func.GetOriginalArgs()[:-1]): |
| 4450 arg_value = arg.GetValidGLArg(func, count, 0) | 4461 arg_value = arg.GetValidGLArg(func, count, 0) |
| 4451 gl_arg_strings.append(arg_value) | 4462 gl_arg_strings.append(arg_value) |
| 4452 if arg.name == 'pname': | 4463 if arg.name == 'pname': |
| 4453 valid_pname = arg_value | 4464 valid_pname = arg_value |
| 4454 if func.GetInfo('gl_test_func') == 'glGetIntegerv': | 4465 if func.GetInfo('gl_test_func') == 'glGetIntegerv': |
| 4455 gl_arg_strings.append("_") | 4466 gl_arg_strings.append("_") |
| 4456 else: | 4467 else: |
| 4457 gl_arg_strings.append("result->GetData()") | 4468 gl_arg_strings.append("result->GetData()") |
| 4458 | 4469 |
| 4459 self.WriteValidUnitTest(func, file, valid_test, { | 4470 self.WriteValidUnitTest(func, file, valid_test, { |
| 4460 'local_gl_args': ", ".join(gl_arg_strings), | 4471 'local_gl_args': ", ".join(gl_arg_strings), |
| 4461 'valid_pname': valid_pname, | 4472 'valid_pname': valid_pname, |
| 4462 }) | 4473 }) |
| 4463 | 4474 |
| 4464 invalid_test = """ | 4475 invalid_test = """ |
| 4465 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { | 4476 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| 4466 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); | 4477 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); |
| 4467 SpecializedSetup<%(name)s, 0>(false); | 4478 SpecializedSetup<cmds::%(name)s, 0>(false); |
| 4468 %(name)s::Result* result = | 4479 cmds::%(name)s::Result* result = |
| 4469 static_cast<%(name)s::Result*>(shared_memory_address_); | 4480 static_cast<cmds::%(name)s::Result*>(shared_memory_address_); |
| 4470 result->size = 0; | 4481 result->size = 0; |
| 4471 %(name)s cmd; | 4482 cmds::%(name)s cmd; |
| 4472 cmd.Init(%(args)s); | 4483 cmd.Init(%(args)s); |
| 4473 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd)); | 4484 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd)); |
| 4474 EXPECT_EQ(0u, result->size);%(gl_error_test)s | 4485 EXPECT_EQ(0u, result->size);%(gl_error_test)s |
| 4475 } | 4486 } |
| 4476 """ | 4487 """ |
| 4477 self.WriteInvalidUnitTest(func, file, invalid_test) | 4488 self.WriteInvalidUnitTest(func, file, invalid_test) |
| 4478 | 4489 |
| 4479 | 4490 |
| 4480 class PUTHandler(TypeHandler): | 4491 class PUTHandler(TypeHandler): |
| 4481 """Handler for glTexParameter_v, glVertexAttrib_v functions.""" | 4492 """Handler for glTexParameter_v, glVertexAttrib_v functions.""" |
| 4482 | 4493 |
| 4483 def __init__(self): | 4494 def __init__(self): |
| 4484 TypeHandler.__init__(self) | 4495 TypeHandler.__init__(self) |
| 4485 | 4496 |
| 4486 def WriteServiceUnitTest(self, func, file): | 4497 def WriteServiceUnitTest(self, func, file): |
| 4487 """Writes the service unit test for a command.""" | 4498 """Writes the service unit test for a command.""" |
| 4488 valid_test = """ | 4499 valid_test = """ |
| 4489 TEST_F(%(test_name)s, %(name)sValidArgs) { | 4500 TEST_F(%(test_name)s, %(name)sValidArgs) { |
| 4490 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)); | 4501 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)); |
| 4491 SpecializedSetup<%(name)s, 0>(true); | 4502 SpecializedSetup<cmds::%(name)s, 0>(true); |
| 4492 %(name)s cmd; | 4503 cmds::%(name)s cmd; |
| 4493 cmd.Init(%(args)s); | 4504 cmd.Init(%(args)s); |
| 4494 GetSharedMemoryAs<%(data_type)s*>()[0] = %(data_value)s; | 4505 GetSharedMemoryAs<%(data_type)s*>()[0] = %(data_value)s; |
| 4495 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 4506 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 4496 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4507 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4497 } | 4508 } |
| 4498 """ | 4509 """ |
| 4499 extra = { | 4510 extra = { |
| 4500 'data_type': func.GetInfo('data_type'), | 4511 'data_type': func.GetInfo('data_type'), |
| 4501 'data_value': func.GetInfo('data_value') or '0', | 4512 'data_value': func.GetInfo('data_value') or '0', |
| 4502 } | 4513 } |
| 4503 self.WriteValidUnitTest(func, file, valid_test, extra) | 4514 self.WriteValidUnitTest(func, file, valid_test, extra) |
| 4504 | 4515 |
| 4505 invalid_test = """ | 4516 invalid_test = """ |
| 4506 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { | 4517 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| 4507 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); | 4518 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); |
| 4508 SpecializedSetup<%(name)s, 0>(false); | 4519 SpecializedSetup<cmds::%(name)s, 0>(false); |
| 4509 %(name)s cmd; | 4520 cmds::%(name)s cmd; |
| 4510 cmd.Init(%(args)s); | 4521 cmd.Init(%(args)s); |
| 4511 GetSharedMemoryAs<%(data_type)s*>()[0] = %(data_value)s; | 4522 GetSharedMemoryAs<%(data_type)s*>()[0] = %(data_value)s; |
| 4512 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s | 4523 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s |
| 4513 } | 4524 } |
| 4514 """ | 4525 """ |
| 4515 self.WriteInvalidUnitTest(func, file, invalid_test, extra) | 4526 self.WriteInvalidUnitTest(func, file, invalid_test, extra) |
| 4516 | 4527 |
| 4517 def WriteImmediateServiceUnitTest(self, func, file): | 4528 def WriteImmediateServiceUnitTest(self, func, file): |
| 4518 """Writes the service unit test for a command.""" | 4529 """Writes the service unit test for a command.""" |
| 4519 valid_test = """ | 4530 valid_test = """ |
| 4520 TEST_F(%(test_name)s, %(name)sValidArgs) { | 4531 TEST_F(%(test_name)s, %(name)sValidArgs) { |
| 4521 %(name)s& cmd = *GetImmediateAs<%(name)s>(); | 4532 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); |
| 4522 EXPECT_CALL( | 4533 EXPECT_CALL( |
| 4523 *gl_, | 4534 *gl_, |
| 4524 %(gl_func_name)s(%(gl_args)s, | 4535 %(gl_func_name)s(%(gl_args)s, |
| 4525 reinterpret_cast<%(data_type)s*>(ImmediateDataAddress(&cmd)))); | 4536 reinterpret_cast<%(data_type)s*>(ImmediateDataAddress(&cmd)))); |
| 4526 SpecializedSetup<%(name)s, 0>(true); | 4537 SpecializedSetup<cmds::%(name)s, 0>(true); |
| 4527 %(data_type)s temp[%(data_count)s] = { %(data_value)s, }; | 4538 %(data_type)s temp[%(data_count)s] = { %(data_value)s, }; |
| 4528 cmd.Init(%(gl_args)s, &temp[0]); | 4539 cmd.Init(%(gl_args)s, &temp[0]); |
| 4529 EXPECT_EQ(error::kNoError, | 4540 EXPECT_EQ(error::kNoError, |
| 4530 ExecuteImmediateCmd(cmd, sizeof(temp))); | 4541 ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 4531 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4542 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4532 } | 4543 } |
| 4533 """ | 4544 """ |
| 4534 gl_arg_strings = [] | 4545 gl_arg_strings = [] |
| 4535 gl_any_strings = [] | 4546 gl_any_strings = [] |
| 4536 for count, arg in enumerate(func.GetOriginalArgs()[0:-1]): | 4547 for count, arg in enumerate(func.GetOriginalArgs()[0:-1]): |
| 4537 gl_arg_strings.append(arg.GetValidGLArg(func, count, 0)) | 4548 gl_arg_strings.append(arg.GetValidGLArg(func, count, 0)) |
| 4538 gl_any_strings.append("_") | 4549 gl_any_strings.append("_") |
| 4539 extra = { | 4550 extra = { |
| 4540 'data_type': func.GetInfo('data_type'), | 4551 'data_type': func.GetInfo('data_type'), |
| 4541 'data_count': func.GetInfo('count'), | 4552 'data_count': func.GetInfo('count'), |
| 4542 'data_value': func.GetInfo('data_value') or '0', | 4553 'data_value': func.GetInfo('data_value') or '0', |
| 4543 'gl_args': ", ".join(gl_arg_strings), | 4554 'gl_args': ", ".join(gl_arg_strings), |
| 4544 'gl_any_args': ", ".join(gl_any_strings), | 4555 'gl_any_args': ", ".join(gl_any_strings), |
| 4545 } | 4556 } |
| 4546 self.WriteValidUnitTest(func, file, valid_test, extra) | 4557 self.WriteValidUnitTest(func, file, valid_test, extra) |
| 4547 | 4558 |
| 4548 invalid_test = """ | 4559 invalid_test = """ |
| 4549 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { | 4560 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| 4550 %(name)s& cmd = *GetImmediateAs<%(name)s>(); | 4561 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); |
| 4551 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_any_args)s, _)).Times(0); | 4562 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_any_args)s, _)).Times(0); |
| 4552 SpecializedSetup<%(name)s, 0>(false); | 4563 SpecializedSetup<cmds::%(name)s, 0>(false); |
| 4553 %(data_type)s temp[%(data_count)s] = { %(data_value)s, }; | 4564 %(data_type)s temp[%(data_count)s] = { %(data_value)s, }; |
| 4554 cmd.Init(%(all_but_last_args)s, &temp[0]); | 4565 cmd.Init(%(all_but_last_args)s, &temp[0]); |
| 4555 EXPECT_EQ(error::%(parse_result)s, | 4566 EXPECT_EQ(error::%(parse_result)s, |
| 4556 ExecuteImmediateCmd(cmd, sizeof(temp)));%(gl_error_test)s | 4567 ExecuteImmediateCmd(cmd, sizeof(temp)));%(gl_error_test)s |
| 4557 } | 4568 } |
| 4558 """ | 4569 """ |
| 4559 self.WriteInvalidUnitTest(func, file, invalid_test, extra) | 4570 self.WriteInvalidUnitTest(func, file, invalid_test, extra) |
| 4560 | 4571 |
| 4561 def WriteGetDataSizeCode(self, func, file): | 4572 def WriteGetDataSizeCode(self, func, file): |
| 4562 """Overrriden from TypeHandler.""" | 4573 """Overrriden from TypeHandler.""" |
| (...skipping 26 matching lines...) Expand all Loading... |
| 4589 (func.name, func.MakeOriginalArgString(""))) | 4600 (func.name, func.MakeOriginalArgString(""))) |
| 4590 file.Write(" CheckGLError();\n") | 4601 file.Write(" CheckGLError();\n") |
| 4591 file.Write("}\n") | 4602 file.Write("}\n") |
| 4592 file.Write("\n") | 4603 file.Write("\n") |
| 4593 | 4604 |
| 4594 def WriteGLES2ImplementationUnitTest(self, func, file): | 4605 def WriteGLES2ImplementationUnitTest(self, func, file): |
| 4595 """Writes the GLES2 Implemention unit test.""" | 4606 """Writes the GLES2 Implemention unit test.""" |
| 4596 code = """ | 4607 code = """ |
| 4597 TEST_F(GLES2ImplementationTest, %(name)s) { | 4608 TEST_F(GLES2ImplementationTest, %(name)s) { |
| 4598 struct Cmds { | 4609 struct Cmds { |
| 4599 %(name)sImmediate cmd; | 4610 cmds::%(name)sImmediate cmd; |
| 4600 %(type)s data[%(count)d]; | 4611 %(type)s data[%(count)d]; |
| 4601 }; | 4612 }; |
| 4602 | 4613 |
| 4603 Cmds expected; | 4614 Cmds expected; |
| 4604 for (int jj = 0; jj < %(count)d; ++jj) { | 4615 for (int jj = 0; jj < %(count)d; ++jj) { |
| 4605 expected.data[jj] = static_cast<%(type)s>(jj); | 4616 expected.data[jj] = static_cast<%(type)s>(jj); |
| 4606 } | 4617 } |
| 4607 expected.cmd.Init(%(cmd_args)s, &expected.data[0]); | 4618 expected.cmd.Init(%(cmd_args)s, &expected.data[0]); |
| 4608 gl_->%(name)s(%(args)s, &expected.data[0]); | 4619 gl_->%(name)s(%(args)s, &expected.data[0]); |
| 4609 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); | 4620 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4672 (copy_args, last_arg.name)) | 4683 (copy_args, last_arg.name)) |
| 4673 file.Write(" const uint32 size = ComputeSize();\n") | 4684 file.Write(" const uint32 size = ComputeSize();\n") |
| 4674 file.Write(" return NextImmediateCmdAddressTotalSize<ValueType>(" | 4685 file.Write(" return NextImmediateCmdAddressTotalSize<ValueType>(" |
| 4675 "cmd, size);\n") | 4686 "cmd, size);\n") |
| 4676 file.Write(" }\n") | 4687 file.Write(" }\n") |
| 4677 file.Write("\n") | 4688 file.Write("\n") |
| 4678 | 4689 |
| 4679 def WriteImmediateCmdHelper(self, func, file): | 4690 def WriteImmediateCmdHelper(self, func, file): |
| 4680 """Overrriden from TypeHandler.""" | 4691 """Overrriden from TypeHandler.""" |
| 4681 code = """ void %(name)s(%(typed_args)s) { | 4692 code = """ void %(name)s(%(typed_args)s) { |
| 4682 const uint32 size = gles2::%(name)s::ComputeSize(); | 4693 const uint32 size = gles2::cmds::%(name)s::ComputeSize(); |
| 4683 gles2::%(name)s* c = | 4694 gles2::cmds::%(name)s* c = |
| 4684 GetImmediateCmdSpaceTotalSize<gles2::%(name)s>(size); | 4695 GetImmediateCmdSpaceTotalSize<gles2::cmds::%(name)s>(size); |
| 4685 if (c) { | 4696 if (c) { |
| 4686 c->Init(%(args)s); | 4697 c->Init(%(args)s); |
| 4687 } | 4698 } |
| 4688 } | 4699 } |
| 4689 | 4700 |
| 4690 """ | 4701 """ |
| 4691 file.Write(code % { | 4702 file.Write(code % { |
| 4692 "name": func.name, | 4703 "name": func.name, |
| 4693 "typed_args": func.MakeTypedOriginalArgString(""), | 4704 "typed_args": func.MakeTypedOriginalArgString(""), |
| 4694 "args": func.MakeOriginalArgString(""), | 4705 "args": func.MakeOriginalArgString(""), |
| 4695 }) | 4706 }) |
| 4696 | 4707 |
| 4697 def WriteImmediateFormatTest(self, func, file): | 4708 def WriteImmediateFormatTest(self, func, file): |
| 4698 """Overrriden from TypeHandler.""" | 4709 """Overrriden from TypeHandler.""" |
| 4699 file.Write("TEST_F(GLES2FormatTest, %s) {\n" % func.name) | 4710 file.Write("TEST_F(GLES2FormatTest, %s) {\n" % func.name) |
| 4700 file.Write(" const int kSomeBaseValueToTestWith = 51;\n") | 4711 file.Write(" const int kSomeBaseValueToTestWith = 51;\n") |
| 4701 file.Write(" static %s data[] = {\n" % func.info.data_type) | 4712 file.Write(" static %s data[] = {\n" % func.info.data_type) |
| 4702 for v in range(0, func.info.count): | 4713 for v in range(0, func.info.count): |
| 4703 file.Write(" static_cast<%s>(kSomeBaseValueToTestWith + %d),\n" % | 4714 file.Write(" static_cast<%s>(kSomeBaseValueToTestWith + %d),\n" % |
| 4704 (func.info.data_type, v)) | 4715 (func.info.data_type, v)) |
| 4705 file.Write(" };\n") | 4716 file.Write(" };\n") |
| 4706 file.Write(" %s& cmd = *GetBufferAs<%s>();\n" % (func.name, func.name)) | 4717 file.Write(" cmds::%s& cmd = *GetBufferAs<cmds::%s>();\n" % |
| 4718 (func.name, func.name)) |
| 4707 file.Write(" void* next_cmd = cmd.Set(\n") | 4719 file.Write(" void* next_cmd = cmd.Set(\n") |
| 4708 file.Write(" &cmd") | 4720 file.Write(" &cmd") |
| 4709 args = func.GetCmdArgs() | 4721 args = func.GetCmdArgs() |
| 4710 for value, arg in enumerate(args): | 4722 for value, arg in enumerate(args): |
| 4711 file.Write(",\n static_cast<%s>(%d)" % (arg.type, value + 11)) | 4723 file.Write(",\n static_cast<%s>(%d)" % (arg.type, value + 11)) |
| 4712 file.Write(",\n data);\n") | 4724 file.Write(",\n data);\n") |
| 4713 args = func.GetCmdArgs() | 4725 args = func.GetCmdArgs() |
| 4714 file.Write(" EXPECT_EQ(static_cast<uint32>(%s::kCmdId),\n" % func.name) | 4726 file.Write(" EXPECT_EQ(static_cast<uint32>(cmds::%s::kCmdId),\n" |
| 4727 % func.name) |
| 4715 file.Write(" cmd.header.command);\n") | 4728 file.Write(" cmd.header.command);\n") |
| 4716 file.Write(" EXPECT_EQ(sizeof(cmd) +\n") | 4729 file.Write(" EXPECT_EQ(sizeof(cmd) +\n") |
| 4717 file.Write(" RoundSizeToMultipleOfEntries(sizeof(data)),\n") | 4730 file.Write(" RoundSizeToMultipleOfEntries(sizeof(data)),\n") |
| 4718 file.Write(" cmd.header.size * 4u);\n") | 4731 file.Write(" cmd.header.size * 4u);\n") |
| 4719 for value, arg in enumerate(args): | 4732 for value, arg in enumerate(args): |
| 4720 file.Write(" EXPECT_EQ(static_cast<%s>(%d), cmd.%s);\n" % | 4733 file.Write(" EXPECT_EQ(static_cast<%s>(%d), cmd.%s);\n" % |
| 4721 (arg.type, value + 11, arg.name)) | 4734 (arg.type, value + 11, arg.name)) |
| 4722 file.Write(" CheckBytesWrittenMatchesExpectedSize(\n") | 4735 file.Write(" CheckBytesWrittenMatchesExpectedSize(\n") |
| 4723 file.Write(" next_cmd, sizeof(cmd) +\n") | 4736 file.Write(" next_cmd, sizeof(cmd) +\n") |
| 4724 file.Write(" RoundSizeToMultipleOfEntries(sizeof(data)));\n") | 4737 file.Write(" RoundSizeToMultipleOfEntries(sizeof(data)));\n") |
| 4725 file.Write(" // TODO(gman): Check that data was inserted;\n") | 4738 file.Write(" // TODO(gman): Check that data was inserted;\n") |
| 4726 file.Write("}\n") | 4739 file.Write("}\n") |
| 4727 file.Write("\n") | 4740 file.Write("\n") |
| 4728 | 4741 |
| 4729 | 4742 |
| 4730 class PUTnHandler(TypeHandler): | 4743 class PUTnHandler(TypeHandler): |
| 4731 """Handler for PUTn 'glUniform__v' type functions.""" | 4744 """Handler for PUTn 'glUniform__v' type functions.""" |
| 4732 | 4745 |
| 4733 def __init__(self): | 4746 def __init__(self): |
| 4734 TypeHandler.__init__(self) | 4747 TypeHandler.__init__(self) |
| 4735 | 4748 |
| 4736 def WriteServiceUnitTest(self, func, file): | 4749 def WriteServiceUnitTest(self, func, file): |
| 4737 """Overridden from TypeHandler.""" | 4750 """Overridden from TypeHandler.""" |
| 4738 TypeHandler.WriteServiceUnitTest(self, func, file) | 4751 TypeHandler.WriteServiceUnitTest(self, func, file) |
| 4739 | 4752 |
| 4740 valid_test = """ | 4753 valid_test = """ |
| 4741 TEST_F(%(test_name)s, %(name)sValidArgsCountTooLarge) { | 4754 TEST_F(%(test_name)s, %(name)sValidArgsCountTooLarge) { |
| 4742 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)); | 4755 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)); |
| 4743 SpecializedSetup<%(name)s, 0>(true); | 4756 SpecializedSetup<cmds::%(name)s, 0>(true); |
| 4744 %(name)s cmd; | 4757 cmds::%(name)s cmd; |
| 4745 cmd.Init(%(args)s); | 4758 cmd.Init(%(args)s); |
| 4746 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 4759 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 4747 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4760 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4748 } | 4761 } |
| 4749 """ | 4762 """ |
| 4750 gl_arg_strings = [] | 4763 gl_arg_strings = [] |
| 4751 arg_strings = [] | 4764 arg_strings = [] |
| 4752 for count, arg in enumerate(func.GetOriginalArgs()): | 4765 for count, arg in enumerate(func.GetOriginalArgs()): |
| 4753 # hardcoded to match unit tests. | 4766 # hardcoded to match unit tests. |
| 4754 if count == 0: | 4767 if count == 0: |
| (...skipping 12 matching lines...) Expand all Loading... |
| 4767 extra = { | 4780 extra = { |
| 4768 'gl_args': ", ".join(gl_arg_strings), | 4781 'gl_args': ", ".join(gl_arg_strings), |
| 4769 'args': ", ".join(arg_strings), | 4782 'args': ", ".join(arg_strings), |
| 4770 } | 4783 } |
| 4771 self.WriteValidUnitTest(func, file, valid_test, extra) | 4784 self.WriteValidUnitTest(func, file, valid_test, extra) |
| 4772 | 4785 |
| 4773 def WriteImmediateServiceUnitTest(self, func, file): | 4786 def WriteImmediateServiceUnitTest(self, func, file): |
| 4774 """Overridden from TypeHandler.""" | 4787 """Overridden from TypeHandler.""" |
| 4775 valid_test = """ | 4788 valid_test = """ |
| 4776 TEST_F(%(test_name)s, %(name)sValidArgs) { | 4789 TEST_F(%(test_name)s, %(name)sValidArgs) { |
| 4777 %(name)s& cmd = *GetImmediateAs<%(name)s>(); | 4790 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); |
| 4778 EXPECT_CALL( | 4791 EXPECT_CALL( |
| 4779 *gl_, | 4792 *gl_, |
| 4780 %(gl_func_name)s(%(gl_args)s, | 4793 %(gl_func_name)s(%(gl_args)s, |
| 4781 reinterpret_cast<%(data_type)s*>(ImmediateDataAddress(&cmd)))); | 4794 reinterpret_cast<%(data_type)s*>(ImmediateDataAddress(&cmd)))); |
| 4782 SpecializedSetup<%(name)s, 0>(true); | 4795 SpecializedSetup<cmds::%(name)s, 0>(true); |
| 4783 %(data_type)s temp[%(data_count)s * 2] = { 0, }; | 4796 %(data_type)s temp[%(data_count)s * 2] = { 0, }; |
| 4784 cmd.Init(%(args)s, &temp[0]); | 4797 cmd.Init(%(args)s, &temp[0]); |
| 4785 EXPECT_EQ(error::kNoError, | 4798 EXPECT_EQ(error::kNoError, |
| 4786 ExecuteImmediateCmd(cmd, sizeof(temp))); | 4799 ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 4787 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4800 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4788 } | 4801 } |
| 4789 """ | 4802 """ |
| 4790 gl_arg_strings = [] | 4803 gl_arg_strings = [] |
| 4791 gl_any_strings = [] | 4804 gl_any_strings = [] |
| 4792 arg_strings = [] | 4805 arg_strings = [] |
| 4793 for count, arg in enumerate(func.GetOriginalArgs()[0:-1]): | 4806 for count, arg in enumerate(func.GetOriginalArgs()[0:-1]): |
| 4794 gl_arg_strings.append(arg.GetValidGLArg(func, count, 0)) | 4807 gl_arg_strings.append(arg.GetValidGLArg(func, count, 0)) |
| 4795 gl_any_strings.append("_") | 4808 gl_any_strings.append("_") |
| 4796 arg_strings.append(arg.GetValidArg(func, count, 0)) | 4809 arg_strings.append(arg.GetValidArg(func, count, 0)) |
| 4797 extra = { | 4810 extra = { |
| 4798 'data_type': func.GetInfo('data_type'), | 4811 'data_type': func.GetInfo('data_type'), |
| 4799 'data_count': func.GetInfo('count'), | 4812 'data_count': func.GetInfo('count'), |
| 4800 'args': ", ".join(arg_strings), | 4813 'args': ", ".join(arg_strings), |
| 4801 'gl_args': ", ".join(gl_arg_strings), | 4814 'gl_args': ", ".join(gl_arg_strings), |
| 4802 'gl_any_args': ", ".join(gl_any_strings), | 4815 'gl_any_args': ", ".join(gl_any_strings), |
| 4803 } | 4816 } |
| 4804 self.WriteValidUnitTest(func, file, valid_test, extra) | 4817 self.WriteValidUnitTest(func, file, valid_test, extra) |
| 4805 | 4818 |
| 4806 invalid_test = """ | 4819 invalid_test = """ |
| 4807 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { | 4820 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| 4808 %(name)s& cmd = *GetImmediateAs<%(name)s>(); | 4821 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); |
| 4809 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_any_args)s, _)).Times(0); | 4822 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_any_args)s, _)).Times(0); |
| 4810 SpecializedSetup<%(name)s, 0>(false); | 4823 SpecializedSetup<cmds::%(name)s, 0>(false); |
| 4811 %(data_type)s temp[%(data_count)s * 2] = { 0, }; | 4824 %(data_type)s temp[%(data_count)s * 2] = { 0, }; |
| 4812 cmd.Init(%(all_but_last_args)s, &temp[0]); | 4825 cmd.Init(%(all_but_last_args)s, &temp[0]); |
| 4813 EXPECT_EQ(error::%(parse_result)s, | 4826 EXPECT_EQ(error::%(parse_result)s, |
| 4814 ExecuteImmediateCmd(cmd, sizeof(temp)));%(gl_error_test)s | 4827 ExecuteImmediateCmd(cmd, sizeof(temp)));%(gl_error_test)s |
| 4815 } | 4828 } |
| 4816 """ | 4829 """ |
| 4817 self.WriteInvalidUnitTest(func, file, invalid_test, extra) | 4830 self.WriteInvalidUnitTest(func, file, invalid_test, extra) |
| 4818 | 4831 |
| 4819 def WriteGetDataSizeCode(self, func, file): | 4832 def WriteGetDataSizeCode(self, func, file): |
| 4820 """Overrriden from TypeHandler.""" | 4833 """Overrriden from TypeHandler.""" |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4853 (func.name, func.MakeOriginalArgString(""))) | 4866 (func.name, func.MakeOriginalArgString(""))) |
| 4854 file.Write(" CheckGLError();\n") | 4867 file.Write(" CheckGLError();\n") |
| 4855 file.Write("}\n") | 4868 file.Write("}\n") |
| 4856 file.Write("\n") | 4869 file.Write("\n") |
| 4857 | 4870 |
| 4858 def WriteGLES2ImplementationUnitTest(self, func, file): | 4871 def WriteGLES2ImplementationUnitTest(self, func, file): |
| 4859 """Writes the GLES2 Implemention unit test.""" | 4872 """Writes the GLES2 Implemention unit test.""" |
| 4860 code = """ | 4873 code = """ |
| 4861 TEST_F(GLES2ImplementationTest, %(name)s) { | 4874 TEST_F(GLES2ImplementationTest, %(name)s) { |
| 4862 struct Cmds { | 4875 struct Cmds { |
| 4863 %(name)sImmediate cmd; | 4876 cmds::%(name)sImmediate cmd; |
| 4864 %(type)s data[2][%(count)d]; | 4877 %(type)s data[2][%(count)d]; |
| 4865 }; | 4878 }; |
| 4866 | 4879 |
| 4867 Cmds expected; | 4880 Cmds expected; |
| 4868 for (int ii = 0; ii < 2; ++ii) { | 4881 for (int ii = 0; ii < 2; ++ii) { |
| 4869 for (int jj = 0; jj < %(count)d; ++jj) { | 4882 for (int jj = 0; jj < %(count)d; ++jj) { |
| 4870 expected.data[ii][jj] = static_cast<%(type)s>(ii * %(count)d + jj); | 4883 expected.data[ii][jj] = static_cast<%(type)s>(ii * %(count)d + jj); |
| 4871 } | 4884 } |
| 4872 } | 4885 } |
| 4873 expected.cmd.Init(%(cmd_args)s, &expected.data[0][0]); | 4886 expected.cmd.Init(%(cmd_args)s, &expected.data[0][0]); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4938 (copy_args, last_arg.name)) | 4951 (copy_args, last_arg.name)) |
| 4939 file.Write(" const uint32 size = ComputeSize(_count);\n") | 4952 file.Write(" const uint32 size = ComputeSize(_count);\n") |
| 4940 file.Write(" return NextImmediateCmdAddressTotalSize<ValueType>(" | 4953 file.Write(" return NextImmediateCmdAddressTotalSize<ValueType>(" |
| 4941 "cmd, size);\n") | 4954 "cmd, size);\n") |
| 4942 file.Write(" }\n") | 4955 file.Write(" }\n") |
| 4943 file.Write("\n") | 4956 file.Write("\n") |
| 4944 | 4957 |
| 4945 def WriteImmediateCmdHelper(self, func, file): | 4958 def WriteImmediateCmdHelper(self, func, file): |
| 4946 """Overrriden from TypeHandler.""" | 4959 """Overrriden from TypeHandler.""" |
| 4947 code = """ void %(name)s(%(typed_args)s) { | 4960 code = """ void %(name)s(%(typed_args)s) { |
| 4948 const uint32 size = gles2::%(name)s::ComputeSize(count); | 4961 const uint32 size = gles2::cmds::%(name)s::ComputeSize(count); |
| 4949 gles2::%(name)s* c = | 4962 gles2::cmds::%(name)s* c = |
| 4950 GetImmediateCmdSpaceTotalSize<gles2::%(name)s>(size); | 4963 GetImmediateCmdSpaceTotalSize<gles2::cmds::%(name)s>(size); |
| 4951 if (c) { | 4964 if (c) { |
| 4952 c->Init(%(args)s); | 4965 c->Init(%(args)s); |
| 4953 } | 4966 } |
| 4954 } | 4967 } |
| 4955 | 4968 |
| 4956 """ | 4969 """ |
| 4957 file.Write(code % { | 4970 file.Write(code % { |
| 4958 "name": func.name, | 4971 "name": func.name, |
| 4959 "typed_args": func.MakeTypedOriginalArgString(""), | 4972 "typed_args": func.MakeTypedOriginalArgString(""), |
| 4960 "args": func.MakeOriginalArgString(""), | 4973 "args": func.MakeOriginalArgString(""), |
| 4961 }) | 4974 }) |
| 4962 | 4975 |
| 4963 def WriteImmediateFormatTest(self, func, file): | 4976 def WriteImmediateFormatTest(self, func, file): |
| 4964 """Overrriden from TypeHandler.""" | 4977 """Overrriden from TypeHandler.""" |
| 4965 file.Write("TEST_F(GLES2FormatTest, %s) {\n" % func.name) | 4978 file.Write("TEST_F(GLES2FormatTest, %s) {\n" % func.name) |
| 4966 file.Write(" const int kSomeBaseValueToTestWith = 51;\n") | 4979 file.Write(" const int kSomeBaseValueToTestWith = 51;\n") |
| 4967 file.Write(" static %s data[] = {\n" % func.info.data_type) | 4980 file.Write(" static %s data[] = {\n" % func.info.data_type) |
| 4968 for v in range(0, func.info.count * 2): | 4981 for v in range(0, func.info.count * 2): |
| 4969 file.Write(" static_cast<%s>(kSomeBaseValueToTestWith + %d),\n" % | 4982 file.Write(" static_cast<%s>(kSomeBaseValueToTestWith + %d),\n" % |
| 4970 (func.info.data_type, v)) | 4983 (func.info.data_type, v)) |
| 4971 file.Write(" };\n") | 4984 file.Write(" };\n") |
| 4972 file.Write(" %s& cmd = *GetBufferAs<%s>();\n" % (func.name, func.name)) | 4985 file.Write(" cmds::%s& cmd = *GetBufferAs<cmds::%s>();\n" % |
| 4986 (func.name, func.name)) |
| 4973 file.Write(" const GLsizei kNumElements = 2;\n") | 4987 file.Write(" const GLsizei kNumElements = 2;\n") |
| 4974 file.Write(" const size_t kExpectedCmdSize =\n") | 4988 file.Write(" const size_t kExpectedCmdSize =\n") |
| 4975 file.Write(" sizeof(cmd) + kNumElements * sizeof(%s) * %d;\n" % | 4989 file.Write(" sizeof(cmd) + kNumElements * sizeof(%s) * %d;\n" % |
| 4976 (func.info.data_type, func.info.count)) | 4990 (func.info.data_type, func.info.count)) |
| 4977 file.Write(" void* next_cmd = cmd.Set(\n") | 4991 file.Write(" void* next_cmd = cmd.Set(\n") |
| 4978 file.Write(" &cmd") | 4992 file.Write(" &cmd") |
| 4979 args = func.GetCmdArgs() | 4993 args = func.GetCmdArgs() |
| 4980 for value, arg in enumerate(args): | 4994 for value, arg in enumerate(args): |
| 4981 file.Write(",\n static_cast<%s>(%d)" % (arg.type, value + 1)) | 4995 file.Write(",\n static_cast<%s>(%d)" % (arg.type, value + 1)) |
| 4982 file.Write(",\n data);\n") | 4996 file.Write(",\n data);\n") |
| 4983 args = func.GetCmdArgs() | 4997 args = func.GetCmdArgs() |
| 4984 file.Write(" EXPECT_EQ(static_cast<uint32>(%s::kCmdId),\n" % func.name) | 4998 file.Write(" EXPECT_EQ(static_cast<uint32>(cmds::%s::kCmdId),\n" % |
| 4999 func.name) |
| 4985 file.Write(" cmd.header.command);\n") | 5000 file.Write(" cmd.header.command);\n") |
| 4986 file.Write(" EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);\n") | 5001 file.Write(" EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);\n") |
| 4987 for value, arg in enumerate(args): | 5002 for value, arg in enumerate(args): |
| 4988 file.Write(" EXPECT_EQ(static_cast<%s>(%d), cmd.%s);\n" % | 5003 file.Write(" EXPECT_EQ(static_cast<%s>(%d), cmd.%s);\n" % |
| 4989 (arg.type, value + 1, arg.name)) | 5004 (arg.type, value + 1, arg.name)) |
| 4990 file.Write(" CheckBytesWrittenMatchesExpectedSize(\n") | 5005 file.Write(" CheckBytesWrittenMatchesExpectedSize(\n") |
| 4991 file.Write(" next_cmd, sizeof(cmd) +\n") | 5006 file.Write(" next_cmd, sizeof(cmd) +\n") |
| 4992 file.Write(" RoundSizeToMultipleOfEntries(sizeof(data)));\n") | 5007 file.Write(" RoundSizeToMultipleOfEntries(sizeof(data)));\n") |
| 4993 file.Write(" // TODO(gman): Check that data was inserted;\n") | 5008 file.Write(" // TODO(gman): Check that data was inserted;\n") |
| 4994 file.Write("}\n") | 5009 file.Write("}\n") |
| (...skipping 24 matching lines...) Expand all Loading... |
| 5019 'location': args[0].name, | 5034 'location': args[0].name, |
| 5020 'args': func.MakeOriginalArgString(""), | 5035 'args': func.MakeOriginalArgString(""), |
| 5021 'values': values, | 5036 'values': values, |
| 5022 }) | 5037 }) |
| 5023 | 5038 |
| 5024 def WriteServiceUnitTest(self, func, file): | 5039 def WriteServiceUnitTest(self, func, file): |
| 5025 """Overrriden from TypeHandler.""" | 5040 """Overrriden from TypeHandler.""" |
| 5026 valid_test = """ | 5041 valid_test = """ |
| 5027 TEST_F(%(test_name)s, %(name)sValidArgs) { | 5042 TEST_F(%(test_name)s, %(name)sValidArgs) { |
| 5028 EXPECT_CALL(*gl_, %(name)sv(%(local_args)s)); | 5043 EXPECT_CALL(*gl_, %(name)sv(%(local_args)s)); |
| 5029 SpecializedSetup<%(name)s, 0>(true); | 5044 SpecializedSetup<cmds::%(name)s, 0>(true); |
| 5030 %(name)s cmd; | 5045 cmds::%(name)s cmd; |
| 5031 cmd.Init(%(args)s); | 5046 cmd.Init(%(args)s); |
| 5032 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 5047 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 5033 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 5048 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 5034 } | 5049 } |
| 5035 """ | 5050 """ |
| 5036 args = func.GetOriginalArgs() | 5051 args = func.GetOriginalArgs() |
| 5037 local_args = "%s, 1, _" % args[0].GetValidGLArg(func, 0, 0) | 5052 local_args = "%s, 1, _" % args[0].GetValidGLArg(func, 0, 0) |
| 5038 self.WriteValidUnitTest(func, file, valid_test, { | 5053 self.WriteValidUnitTest(func, file, valid_test, { |
| 5039 'name': func.name, | 5054 'name': func.name, |
| 5040 'count': func.GetInfo('count'), | 5055 'count': func.GetInfo('count'), |
| 5041 'local_args': local_args, | 5056 'local_args': local_args, |
| 5042 }) | 5057 }) |
| 5043 | 5058 |
| 5044 invalid_test = """ | 5059 invalid_test = """ |
| 5045 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { | 5060 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| 5046 EXPECT_CALL(*gl_, %(name)sv(_, _, _).Times(0); | 5061 EXPECT_CALL(*gl_, %(name)sv(_, _, _).Times(0); |
| 5047 SpecializedSetup<%(name)s, 0>(false); | 5062 SpecializedSetup<cmds::%(name)s, 0>(false); |
| 5048 %(name)s cmd; | 5063 cmds::%(name)s cmd; |
| 5049 cmd.Init(%(args)s); | 5064 cmd.Init(%(args)s); |
| 5050 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s | 5065 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s |
| 5051 } | 5066 } |
| 5052 """ | 5067 """ |
| 5053 self.WriteInvalidUnitTest(func, file, invalid_test, { | 5068 self.WriteInvalidUnitTest(func, file, invalid_test, { |
| 5054 'name': func.GetInfo('name'), | 5069 'name': func.GetInfo('name'), |
| 5055 'count': func.GetInfo('count'), | 5070 'count': func.GetInfo('count'), |
| 5056 }) | 5071 }) |
| 5057 | 5072 |
| 5058 | 5073 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5108 func.MakeOriginalArgString("_")) | 5123 func.MakeOriginalArgString("_")) |
| 5109 file.Write(" return NextImmediateCmdAddress<ValueType>(" | 5124 file.Write(" return NextImmediateCmdAddress<ValueType>(" |
| 5110 "cmd, _data_size);\n") | 5125 "cmd, _data_size);\n") |
| 5111 file.Write(" }\n") | 5126 file.Write(" }\n") |
| 5112 file.Write("\n") | 5127 file.Write("\n") |
| 5113 | 5128 |
| 5114 def WriteImmediateCmdHelper(self, func, file): | 5129 def WriteImmediateCmdHelper(self, func, file): |
| 5115 """Overrriden from TypeHandler.""" | 5130 """Overrriden from TypeHandler.""" |
| 5116 code = """ void %(name)s(%(typed_args)s) { | 5131 code = """ void %(name)s(%(typed_args)s) { |
| 5117 const uint32 data_size = strlen(name); | 5132 const uint32 data_size = strlen(name); |
| 5118 gles2::%(name)s* c = GetImmediateCmdSpace<gles2::%(name)s>(data_size); | 5133 gles2::cmds::%(name)s* c = |
| 5134 GetImmediateCmdSpace<gles2::cmds::%(name)s>(data_size); |
| 5119 if (c) { | 5135 if (c) { |
| 5120 c->Init(%(args)s, data_size); | 5136 c->Init(%(args)s, data_size); |
| 5121 } | 5137 } |
| 5122 } | 5138 } |
| 5123 | 5139 |
| 5124 """ | 5140 """ |
| 5125 file.Write(code % { | 5141 file.Write(code % { |
| 5126 "name": func.name, | 5142 "name": func.name, |
| 5127 "typed_args": func.MakeTypedOriginalArgString(""), | 5143 "typed_args": func.MakeTypedOriginalArgString(""), |
| 5128 "args": func.MakeOriginalArgString(""), | 5144 "args": func.MakeOriginalArgString(""), |
| 5129 }) | 5145 }) |
| 5130 | 5146 |
| 5131 | 5147 |
| 5132 def WriteImmediateFormatTest(self, func, file): | 5148 def WriteImmediateFormatTest(self, func, file): |
| 5133 """Overrriden from TypeHandler.""" | 5149 """Overrriden from TypeHandler.""" |
| 5134 init_code = [] | 5150 init_code = [] |
| 5135 check_code = [] | 5151 check_code = [] |
| 5136 all_but_last_arg = func.GetCmdArgs()[:-1] | 5152 all_but_last_arg = func.GetCmdArgs()[:-1] |
| 5137 for value, arg in enumerate(all_but_last_arg): | 5153 for value, arg in enumerate(all_but_last_arg): |
| 5138 init_code.append(" static_cast<%s>(%d)," % (arg.type, value + 11)) | 5154 init_code.append(" static_cast<%s>(%d)," % (arg.type, value + 11)) |
| 5139 for value, arg in enumerate(all_but_last_arg): | 5155 for value, arg in enumerate(all_but_last_arg): |
| 5140 check_code.append(" EXPECT_EQ(static_cast<%s>(%d), cmd.%s);" % | 5156 check_code.append(" EXPECT_EQ(static_cast<%s>(%d), cmd.%s);" % |
| 5141 (arg.type, value + 11, arg.name)) | 5157 (arg.type, value + 11, arg.name)) |
| 5142 code = """ | 5158 code = """ |
| 5143 TEST_F(GLES2FormatTest, %(func_name)s) { | 5159 TEST_F(GLES2FormatTest, %(func_name)s) { |
| 5144 %(func_name)s& cmd = *GetBufferAs<%(func_name)s>(); | 5160 cmds::%(func_name)s& cmd = *GetBufferAs<cmds::%(func_name)s>(); |
| 5145 static const char* const test_str = \"test string\"; | 5161 static const char* const test_str = \"test string\"; |
| 5146 void* next_cmd = cmd.Set( | 5162 void* next_cmd = cmd.Set( |
| 5147 &cmd, | 5163 &cmd, |
| 5148 %(init_code)s | 5164 %(init_code)s |
| 5149 test_str, | 5165 test_str, |
| 5150 strlen(test_str)); | 5166 strlen(test_str)); |
| 5151 EXPECT_EQ(static_cast<uint32>(%(func_name)s::kCmdId), | 5167 EXPECT_EQ(static_cast<uint32>(cmds::%(func_name)s::kCmdId), |
| 5152 cmd.header.command); | 5168 cmd.header.command); |
| 5153 EXPECT_EQ(sizeof(cmd) + | 5169 EXPECT_EQ(sizeof(cmd) + |
| 5154 RoundSizeToMultipleOfEntries(strlen(test_str)), | 5170 RoundSizeToMultipleOfEntries(strlen(test_str)), |
| 5155 cmd.header.size * 4u); | 5171 cmd.header.size * 4u); |
| 5156 EXPECT_EQ(static_cast<char*>(next_cmd), | 5172 EXPECT_EQ(static_cast<char*>(next_cmd), |
| 5157 reinterpret_cast<char*>(&cmd) + sizeof(cmd) + | 5173 reinterpret_cast<char*>(&cmd) + sizeof(cmd) + |
| 5158 RoundSizeToMultipleOfEntries(strlen(test_str))); | 5174 RoundSizeToMultipleOfEntries(strlen(test_str))); |
| 5159 %(check_code)s | 5175 %(check_code)s |
| 5160 EXPECT_EQ(static_cast<uint32>(strlen(test_str)), cmd.data_size); | 5176 EXPECT_EQ(static_cast<uint32>(strlen(test_str)), cmd.data_size); |
| 5161 EXPECT_EQ(0, memcmp(test_str, ImmediateDataAddress(&cmd), strlen(test_str))); | 5177 EXPECT_EQ(0, memcmp(test_str, ImmediateDataAddress(&cmd), strlen(test_str))); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 5188 """Overrriden from TypeHandler.""" | 5204 """Overrriden from TypeHandler.""" |
| 5189 pass | 5205 pass |
| 5190 | 5206 |
| 5191 def AddBucketFunction(self, generator, func): | 5207 def AddBucketFunction(self, generator, func): |
| 5192 """Overrriden from TypeHandler.""" | 5208 """Overrriden from TypeHandler.""" |
| 5193 pass | 5209 pass |
| 5194 | 5210 |
| 5195 def WriteServiceImplementation(self, func, file): | 5211 def WriteServiceImplementation(self, func, file): |
| 5196 """Overrriden from TypeHandler.""" | 5212 """Overrriden from TypeHandler.""" |
| 5197 file.Write("""error::Error GLES2DecoderImpl::Handle%(name)s( | 5213 file.Write("""error::Error GLES2DecoderImpl::Handle%(name)s( |
| 5198 uint32 immediate_data_size, const gles2::%(name)s& c) { | 5214 uint32 immediate_data_size, const gles2::cmds::%(name)s& c) { |
| 5199 GLuint bucket_id = static_cast<GLuint>(c.%(bucket_id)s); | 5215 GLuint bucket_id = static_cast<GLuint>(c.%(bucket_id)s); |
| 5200 Bucket* bucket = GetBucket(bucket_id); | 5216 Bucket* bucket = GetBucket(bucket_id); |
| 5201 if (!bucket || bucket->size() == 0) { | 5217 if (!bucket || bucket->size() == 0) { |
| 5202 return error::kInvalidArguments; | 5218 return error::kInvalidArguments; |
| 5203 } | 5219 } |
| 5204 std::string str; | 5220 std::string str; |
| 5205 if (!bucket->GetAsString(&str)) { | 5221 if (!bucket->GetAsString(&str)) { |
| 5206 return error::kInvalidArguments; | 5222 return error::kInvalidArguments; |
| 5207 } | 5223 } |
| 5208 %(gl_func_name)s(0, str.c_str()); | 5224 %(gl_func_name)s(0, str.c_str()); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 5227 func.AddCmdArg(Argument("result_shm_id", 'uint32')) | 5243 func.AddCmdArg(Argument("result_shm_id", 'uint32')) |
| 5228 func.AddCmdArg(Argument("result_shm_offset", 'uint32')) | 5244 func.AddCmdArg(Argument("result_shm_offset", 'uint32')) |
| 5229 if func.GetInfo('result') == None: | 5245 if func.GetInfo('result') == None: |
| 5230 func.AddInfo('result', ['uint32']) | 5246 func.AddInfo('result', ['uint32']) |
| 5231 | 5247 |
| 5232 def WriteServiceUnitTest(self, func, file): | 5248 def WriteServiceUnitTest(self, func, file): |
| 5233 """Overrriden from TypeHandler.""" | 5249 """Overrriden from TypeHandler.""" |
| 5234 valid_test = """ | 5250 valid_test = """ |
| 5235 TEST_F(%(test_name)s, %(name)sValidArgs) { | 5251 TEST_F(%(test_name)s, %(name)sValidArgs) { |
| 5236 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)); | 5252 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)); |
| 5237 SpecializedSetup<%(name)s, 0>(true); | 5253 SpecializedSetup<cmds::%(name)s, 0>(true); |
| 5238 %(name)s cmd; | 5254 cmds::%(name)s cmd; |
| 5239 cmd.Init(%(args)s%(comma)sshared_memory_id_, shared_memory_offset_); | 5255 cmd.Init(%(args)s%(comma)sshared_memory_id_, shared_memory_offset_); |
| 5240 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 5256 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 5241 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 5257 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 5242 } | 5258 } |
| 5243 """ | 5259 """ |
| 5244 comma = "" | 5260 comma = "" |
| 5245 if len(func.GetOriginalArgs()): | 5261 if len(func.GetOriginalArgs()): |
| 5246 comma =", " | 5262 comma =", " |
| 5247 self.WriteValidUnitTest(func, file, valid_test, { | 5263 self.WriteValidUnitTest(func, file, valid_test, { |
| 5248 'comma': comma, | 5264 'comma': comma, |
| 5249 }) | 5265 }) |
| 5250 | 5266 |
| 5251 invalid_test = """ | 5267 invalid_test = """ |
| 5252 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { | 5268 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| 5253 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); | 5269 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); |
| 5254 SpecializedSetup<%(name)s, 0>(false); | 5270 SpecializedSetup<cmds::%(name)s, 0>(false); |
| 5255 %(name)s cmd; | 5271 cmds::%(name)s cmd; |
| 5256 cmd.Init(%(args)s%(comma)sshared_memory_id_, shared_memory_offset_); | 5272 cmd.Init(%(args)s%(comma)sshared_memory_id_, shared_memory_offset_); |
| 5257 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s | 5273 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s |
| 5258 } | 5274 } |
| 5259 """ | 5275 """ |
| 5260 self.WriteInvalidUnitTest(func, file, invalid_test, { | 5276 self.WriteInvalidUnitTest(func, file, invalid_test, { |
| 5261 'comma': comma, | 5277 'comma': comma, |
| 5262 }) | 5278 }) |
| 5263 | 5279 |
| 5264 invalid_test = """ | 5280 invalid_test = """ |
| 5265 TEST_F(%(test_name)s, %(name)sInvalidArgsBadSharedMemoryId) { | 5281 TEST_F(%(test_name)s, %(name)sInvalidArgsBadSharedMemoryId) { |
| 5266 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); | 5282 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); |
| 5267 SpecializedSetup<%(name)s, 0>(false); | 5283 SpecializedSetup<cmds::%(name)s, 0>(false); |
| 5268 %(name)s cmd; | 5284 cmds::%(name)s cmd; |
| 5269 cmd.Init(%(args)s%(comma)skInvalidSharedMemoryId, shared_memory_offset_); | 5285 cmd.Init(%(args)s%(comma)skInvalidSharedMemoryId, shared_memory_offset_); |
| 5270 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); | 5286 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); |
| 5271 cmd.Init(%(args)s%(comma)sshared_memory_id_, kInvalidSharedMemoryOffset); | 5287 cmd.Init(%(args)s%(comma)sshared_memory_id_, kInvalidSharedMemoryOffset); |
| 5272 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); | 5288 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); |
| 5273 } | 5289 } |
| 5274 """ | 5290 """ |
| 5275 self.WriteValidUnitTest(func, file, invalid_test, { | 5291 self.WriteValidUnitTest(func, file, invalid_test, { |
| 5276 'comma': comma, | 5292 'comma': comma, |
| 5277 }) | 5293 }) |
| 5278 | 5294 |
| 5279 def WriteServiceImplementation(self, func, file): | 5295 def WriteServiceImplementation(self, func, file): |
| 5280 """Overrriden from TypeHandler.""" | 5296 """Overrriden from TypeHandler.""" |
| 5281 file.Write( | 5297 file.Write( |
| 5282 "error::Error GLES2DecoderImpl::Handle%s(\n" % func.name) | 5298 "error::Error GLES2DecoderImpl::Handle%s(\n" % func.name) |
| 5283 file.Write( | 5299 file.Write( |
| 5284 " uint32 immediate_data_size, const gles2::%s& c) {\n" % func.name) | 5300 " uint32 immediate_data_size, const gles2::cmds::%s& c) {\n" % |
| 5301 func.name) |
| 5285 args = func.GetOriginalArgs() | 5302 args = func.GetOriginalArgs() |
| 5286 for arg in args: | 5303 for arg in args: |
| 5287 arg.WriteGetCode(file) | 5304 arg.WriteGetCode(file) |
| 5288 | 5305 |
| 5289 code = """ typedef %(func_name)s::Result Result; | 5306 code = """ typedef cmds::%(func_name)s::Result Result; |
| 5290 Result* result_dst = GetSharedMemoryAs<Result*>( | 5307 Result* result_dst = GetSharedMemoryAs<Result*>( |
| 5291 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); | 5308 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); |
| 5292 if (!result_dst) { | 5309 if (!result_dst) { |
| 5293 return error::kOutOfBounds; | 5310 return error::kOutOfBounds; |
| 5294 } | 5311 } |
| 5295 """ | 5312 """ |
| 5296 file.Write(code % {'func_name': func.name}) | 5313 file.Write(code % {'func_name': func.name}) |
| 5297 func.WriteHandlerValidation(file) | 5314 func.WriteHandlerValidation(file) |
| 5298 file.Write(" *result_dst = %s(%s);\n" % | 5315 file.Write(" *result_dst = %s(%s);\n" % |
| 5299 (func.GetGLFunctionName(), func.MakeOriginalArgString(""))) | 5316 (func.GetGLFunctionName(), func.MakeOriginalArgString(""))) |
| 5300 file.Write(" return error::kNoError;\n") | 5317 file.Write(" return error::kNoError;\n") |
| 5301 file.Write("}\n") | 5318 file.Write("}\n") |
| 5302 file.Write("\n") | 5319 file.Write("\n") |
| 5303 | 5320 |
| 5304 def WriteGLES2Implementation(self, func, file): | 5321 def WriteGLES2Implementation(self, func, file): |
| 5305 """Overrriden from TypeHandler.""" | 5322 """Overrriden from TypeHandler.""" |
| 5306 impl_func = func.GetInfo('impl_func') | 5323 impl_func = func.GetInfo('impl_func') |
| 5307 if impl_func == None or impl_func == True: | 5324 if impl_func == None or impl_func == True: |
| 5308 error_value = func.GetInfo("error_value") or "GL_FALSE" | 5325 error_value = func.GetInfo("error_value") or "GL_FALSE" |
| 5309 file.Write("%s GLES2Implementation::%s(%s) {\n" % | 5326 file.Write("%s GLES2Implementation::%s(%s) {\n" % |
| 5310 (func.return_type, func.original_name, | 5327 (func.return_type, func.original_name, |
| 5311 func.MakeTypedOriginalArgString(""))) | 5328 func.MakeTypedOriginalArgString(""))) |
| 5312 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") | 5329 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") |
| 5313 self.WriteTraceEvent(func, file) | 5330 self.WriteTraceEvent(func, file) |
| 5314 func.WriteDestinationInitalizationValidation(file) | 5331 func.WriteDestinationInitalizationValidation(file) |
| 5315 self.WriteClientGLCallLog(func, file) | 5332 self.WriteClientGLCallLog(func, file) |
| 5316 file.Write(" typedef %s::Result Result;\n" % func.name) | 5333 file.Write(" typedef cmds::%s::Result Result;\n" % func.name) |
| 5317 file.Write(" Result* result = GetResultAs<Result*>();\n") | 5334 file.Write(" Result* result = GetResultAs<Result*>();\n") |
| 5318 file.Write(" if (!result) {\n") | 5335 file.Write(" if (!result) {\n") |
| 5319 file.Write(" return %s;\n" % error_value) | 5336 file.Write(" return %s;\n" % error_value) |
| 5320 file.Write(" }\n") | 5337 file.Write(" }\n") |
| 5321 file.Write(" *result = 0;\n") | 5338 file.Write(" *result = 0;\n") |
| 5322 arg_string = func.MakeOriginalArgString("") | 5339 arg_string = func.MakeOriginalArgString("") |
| 5323 comma = "" | 5340 comma = "" |
| 5324 if len(arg_string) > 0: | 5341 if len(arg_string) > 0: |
| 5325 comma = ", " | 5342 comma = ", " |
| 5326 file.Write( | 5343 file.Write( |
| 5327 " helper_->%s(%s%sGetResultShmId(), GetResultShmOffset());\n" % | 5344 " helper_->%s(%s%sGetResultShmId(), GetResultShmOffset());\n" % |
| 5328 (func.name, arg_string, comma)) | 5345 (func.name, arg_string, comma)) |
| 5329 file.Write(" WaitForCmd();\n") | 5346 file.Write(" WaitForCmd();\n") |
| 5330 file.Write(" %s result_value = *result;\n" % func.return_type) | 5347 file.Write(" %s result_value = *result;\n" % func.return_type) |
| 5331 file.Write(' GPU_CLIENT_LOG("returned " << result_value);\n') | 5348 file.Write(' GPU_CLIENT_LOG("returned " << result_value);\n') |
| 5332 file.Write(" CheckGLError();\n") | 5349 file.Write(" CheckGLError();\n") |
| 5333 file.Write(" return result_value;\n") | 5350 file.Write(" return result_value;\n") |
| 5334 file.Write("}\n") | 5351 file.Write("}\n") |
| 5335 file.Write("\n") | 5352 file.Write("\n") |
| 5336 | 5353 |
| 5337 def WriteGLES2ImplementationUnitTest(self, func, file): | 5354 def WriteGLES2ImplementationUnitTest(self, func, file): |
| 5338 """Overrriden from TypeHandler.""" | 5355 """Overrriden from TypeHandler.""" |
| 5339 client_test = func.GetInfo('client_test') | 5356 client_test = func.GetInfo('client_test') |
| 5340 if client_test == None or client_test == True: | 5357 if client_test == None or client_test == True: |
| 5341 code = """ | 5358 code = """ |
| 5342 TEST_F(GLES2ImplementationTest, %(name)s) { | 5359 TEST_F(GLES2ImplementationTest, %(name)s) { |
| 5343 struct Cmds { | 5360 struct Cmds { |
| 5344 %(name)s cmd; | 5361 cmds::%(name)s cmd; |
| 5345 }; | 5362 }; |
| 5346 | 5363 |
| 5347 typedef %(name)s::Result Result; | 5364 typedef cmds::%(name)s::Result Result; |
| 5348 Cmds expected; | 5365 Cmds expected; |
| 5349 ExpectedMemoryInfo result1 = | 5366 ExpectedMemoryInfo result1 = |
| 5350 GetExpectedResultMemory(sizeof(%(name)s::Result)); | 5367 GetExpectedResultMemory(sizeof(cmds::%(name)s::Result)); |
| 5351 expected.cmd.Init(1, result1.id, result1.offset); | 5368 expected.cmd.Init(1, result1.id, result1.offset); |
| 5352 | 5369 |
| 5353 EXPECT_CALL(*command_buffer(), OnFlush()) | 5370 EXPECT_CALL(*command_buffer(), OnFlush()) |
| 5354 .WillOnce(SetMemory(result1.ptr, uint32(1))) | 5371 .WillOnce(SetMemory(result1.ptr, uint32(1))) |
| 5355 .RetiresOnSaturation(); | 5372 .RetiresOnSaturation(); |
| 5356 | 5373 |
| 5357 GLboolean result = gl_->%(name)s(1); | 5374 GLboolean result = gl_->%(name)s(1); |
| 5358 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); | 5375 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); |
| 5359 EXPECT_TRUE(result); | 5376 EXPECT_TRUE(result); |
| 5360 } | 5377 } |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5427 file.Write(code_1 % str_args) | 5444 file.Write(code_1 % str_args) |
| 5428 func.WriteDestinationInitalizationValidation(file) | 5445 func.WriteDestinationInitalizationValidation(file) |
| 5429 file.Write(code_2 % str_args) | 5446 file.Write(code_2 % str_args) |
| 5430 | 5447 |
| 5431 def WriteServiceUnitTest(self, func, file): | 5448 def WriteServiceUnitTest(self, func, file): |
| 5432 """Overrriden from TypeHandler.""" | 5449 """Overrriden from TypeHandler.""" |
| 5433 valid_test = """ | 5450 valid_test = """ |
| 5434 TEST_F(%(test_name)s, %(name)sValidArgs) { | 5451 TEST_F(%(test_name)s, %(name)sValidArgs) { |
| 5435 const char* kInfo = "hello"; | 5452 const char* kInfo = "hello"; |
| 5436 const uint32 kBucketId = 123; | 5453 const uint32 kBucketId = 123; |
| 5437 SpecializedSetup<%(name)s, 0>(true); | 5454 SpecializedSetup<cmds::%(name)s, 0>(true); |
| 5438 %(expect_len_code)s | 5455 %(expect_len_code)s |
| 5439 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)) | 5456 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)) |
| 5440 .WillOnce(DoAll(SetArgumentPointee<2>(strlen(kInfo)), | 5457 .WillOnce(DoAll(SetArgumentPointee<2>(strlen(kInfo)), |
| 5441 SetArrayArgument<3>(kInfo, kInfo + strlen(kInfo) + 1))); | 5458 SetArrayArgument<3>(kInfo, kInfo + strlen(kInfo) + 1))); |
| 5442 %(name)s cmd; | 5459 cmds::%(name)s cmd; |
| 5443 cmd.Init(%(args)s); | 5460 cmd.Init(%(args)s); |
| 5444 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 5461 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 5445 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 5462 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 5446 ASSERT_TRUE(bucket != NULL); | 5463 ASSERT_TRUE(bucket != NULL); |
| 5447 EXPECT_EQ(strlen(kInfo) + 1, bucket->size()); | 5464 EXPECT_EQ(strlen(kInfo) + 1, bucket->size()); |
| 5448 EXPECT_EQ(0, memcmp(bucket->GetData(0, bucket->size()), kInfo, | 5465 EXPECT_EQ(0, memcmp(bucket->GetData(0, bucket->size()), kInfo, |
| 5449 bucket->size())); | 5466 bucket->size())); |
| 5450 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 5467 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 5451 } | 5468 } |
| 5452 """ | 5469 """ |
| (...skipping 15 matching lines...) Expand all Loading... |
| 5468 " EXPECT_CALL(*gl_, %s(%s, %s, _))\n" | 5485 " EXPECT_CALL(*gl_, %s(%s, %s, _))\n" |
| 5469 " .WillOnce(SetArgumentPointee<2>(strlen(kInfo) + 1));") % ( | 5486 " .WillOnce(SetArgumentPointee<2>(strlen(kInfo) + 1));") % ( |
| 5470 get_len_func[2:], id_name, get_len_enum) | 5487 get_len_func[2:], id_name, get_len_enum) |
| 5471 self.WriteValidUnitTest(func, file, valid_test, sub) | 5488 self.WriteValidUnitTest(func, file, valid_test, sub) |
| 5472 | 5489 |
| 5473 invalid_test = """ | 5490 invalid_test = """ |
| 5474 TEST_F(%(test_name)s, %(name)sInvalidArgs) { | 5491 TEST_F(%(test_name)s, %(name)sInvalidArgs) { |
| 5475 const uint32 kBucketId = 123; | 5492 const uint32 kBucketId = 123; |
| 5476 EXPECT_CALL(*gl_, %(gl_func_name)s(_, _, _, _)) | 5493 EXPECT_CALL(*gl_, %(gl_func_name)s(_, _, _, _)) |
| 5477 .Times(0); | 5494 .Times(0); |
| 5478 %(name)s cmd; | 5495 cmds::%(name)s cmd; |
| 5479 cmd.Init(kInvalidClientId, kBucketId); | 5496 cmd.Init(kInvalidClientId, kBucketId); |
| 5480 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 5497 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 5481 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 5498 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 5482 } | 5499 } |
| 5483 """ | 5500 """ |
| 5484 self.WriteValidUnitTest(func, file, invalid_test) | 5501 self.WriteValidUnitTest(func, file, invalid_test) |
| 5485 | 5502 |
| 5486 def WriteServiceImplementation(self, func, file): | 5503 def WriteServiceImplementation(self, func, file): |
| 5487 """Overrriden from TypeHandler.""" | 5504 """Overrriden from TypeHandler.""" |
| 5488 pass | 5505 pass |
| (...skipping 2084 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7573 gen.WriteGLES2Header("../GLES2/gl2chromium_autogen.h") | 7590 gen.WriteGLES2Header("../GLES2/gl2chromium_autogen.h") |
| 7574 | 7591 |
| 7575 if gen.errors > 0: | 7592 if gen.errors > 0: |
| 7576 print "%d errors" % gen.errors | 7593 print "%d errors" % gen.errors |
| 7577 return 1 | 7594 return 1 |
| 7578 return 0 | 7595 return 0 |
| 7579 | 7596 |
| 7580 | 7597 |
| 7581 if __name__ == '__main__': | 7598 if __name__ == '__main__': |
| 7582 sys.exit(main(sys.argv[1:])) | 7599 sys.exit(main(sys.argv[1:])) |
| OLD | NEW |