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

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

Issue 262793002: Revert of Optimize GLES2DecoderImpl::ApplyDirtyState. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | gpu/command_buffer/service/context_state.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """code generator for GLES2 command buffers.""" 6 """code generator for GLES2 command buffers."""
7 7
8 import itertools 8 import itertools
9 import os 9 import os
10 import os.path 10 import os.path
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 71
72 # Capabilites selected with glEnable 72 # Capabilites selected with glEnable
73 _CAPABILITY_FLAGS = [ 73 _CAPABILITY_FLAGS = [
74 {'name': 'blend'}, 74 {'name': 'blend'},
75 {'name': 'cull_face'}, 75 {'name': 'cull_face'},
76 {'name': 'depth_test', 'state_flag': 'framebuffer_state_.clear_state_dirty'}, 76 {'name': 'depth_test', 'state_flag': 'framebuffer_state_.clear_state_dirty'},
77 {'name': 'dither', 'default': True}, 77 {'name': 'dither', 'default': True},
78 {'name': 'polygon_offset_fill'}, 78 {'name': 'polygon_offset_fill'},
79 {'name': 'sample_alpha_to_coverage'}, 79 {'name': 'sample_alpha_to_coverage'},
80 {'name': 'sample_coverage'}, 80 {'name': 'sample_coverage'},
81 {'name': 'scissor_test'}, 81 {'name': 'scissor_test',
82 'state_flag': 'framebuffer_state_.clear_state_dirty'},
82 {'name': 'stencil_test', 83 {'name': 'stencil_test',
83 'state_flag': 'framebuffer_state_.clear_state_dirty'}, 84 'state_flag': 'framebuffer_state_.clear_state_dirty'},
84 ] 85 ]
85 86
86 _STATES = { 87 _STATES = {
87 'ClearColor': { 88 'ClearColor': {
88 'type': 'Normal', 89 'type': 'Normal',
89 'func': 'ClearColor', 90 'func': 'ClearColor',
90 'enum': 'GL_COLOR_CLEAR_VALUE', 91 'enum': 'GL_COLOR_CLEAR_VALUE',
91 'states': [ 92 'states': [
92 {'name': 'color_clear_red', 'type': 'GLfloat', 'default': '0.0f'}, 93 {'name': 'color_clear_red', 'type': 'GLfloat', 'default': '0.0f'},
93 {'name': 'color_clear_green', 'type': 'GLfloat', 'default': '0.0f'}, 94 {'name': 'color_clear_green', 'type': 'GLfloat', 'default': '0.0f'},
94 {'name': 'color_clear_blue', 'type': 'GLfloat', 'default': '0.0f'}, 95 {'name': 'color_clear_blue', 'type': 'GLfloat', 'default': '0.0f'},
95 {'name': 'color_clear_alpha', 'type': 'GLfloat', 'default': '0.0f'}, 96 {'name': 'color_clear_alpha', 'type': 'GLfloat', 'default': '0.0f'},
96 ], 97 ],
97 }, 98 },
98 'ClearDepthf': { 99 'ClearDepthf': {
99 'type': 'Normal', 100 'type': 'Normal',
100 'func': 'ClearDepth', 101 'func': 'ClearDepth',
101 'enum': 'GL_DEPTH_CLEAR_VALUE', 102 'enum': 'GL_DEPTH_CLEAR_VALUE',
102 'states': [ 103 'states': [
103 {'name': 'depth_clear', 'type': 'GLclampf', 'default': '1.0f'}, 104 {'name': 'depth_clear', 'type': 'GLclampf', 'default': '1.0f'},
104 ], 105 ],
105 }, 106 },
106 'ColorMask': { 107 'ColorMask': {
107 'type': 'Normal', 108 'type': 'Normal',
108 'func': 'ColorMask', 109 'func': 'ColorMask',
109 'enum': 'GL_COLOR_WRITEMASK', 110 'enum': 'GL_COLOR_WRITEMASK',
110 'states': [ 111 'states': [
111 { 112 {'name': 'color_mask_red', 'type': 'GLboolean', 'default': 'true'},
112 'name': 'color_mask_red', 113 {'name': 'color_mask_green', 'type': 'GLboolean', 'default': 'true'},
113 'type': 'GLboolean', 114 {'name': 'color_mask_blue', 'type': 'GLboolean', 'default': 'true'},
114 'default': 'true', 115 {'name': 'color_mask_alpha', 'type': 'GLboolean', 'default': 'true'},
115 'cached': True
116 },
117 {
118 'name': 'color_mask_green',
119 'type': 'GLboolean',
120 'default': 'true',
121 'cached': True
122 },
123 {
124 'name': 'color_mask_blue',
125 'type': 'GLboolean',
126 'default': 'true',
127 'cached': True
128 },
129 {
130 'name': 'color_mask_alpha',
131 'type': 'GLboolean',
132 'default': 'true',
133 'cached': True
134 },
135 ], 116 ],
136 'state_flag': 'framebuffer_state_.clear_state_dirty', 117 'state_flag': 'framebuffer_state_.clear_state_dirty',
137 }, 118 },
138 'ClearStencil': { 119 'ClearStencil': {
139 'type': 'Normal', 120 'type': 'Normal',
140 'func': 'ClearStencil', 121 'func': 'ClearStencil',
141 'enum': 'GL_STENCIL_CLEAR_VALUE', 122 'enum': 'GL_STENCIL_CLEAR_VALUE',
142 'states': [ 123 'states': [
143 {'name': 'stencil_clear', 'type': 'GLint', 'default': '0'}, 124 {'name': 'stencil_clear', 'type': 'GLint', 'default': '0'},
144 ], 125 ],
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 'StencilMask': { 255 'StencilMask': {
275 'type': 'FrontBack', 256 'type': 'FrontBack',
276 'func': 'StencilMaskSeparate', 257 'func': 'StencilMaskSeparate',
277 'state_flag': 'framebuffer_state_.clear_state_dirty', 258 'state_flag': 'framebuffer_state_.clear_state_dirty',
278 'states': [ 259 'states': [
279 { 260 {
280 'name': 'stencil_front_writemask', 261 'name': 'stencil_front_writemask',
281 'type': 'GLuint', 262 'type': 'GLuint',
282 'enum': 'GL_STENCIL_WRITEMASK', 263 'enum': 'GL_STENCIL_WRITEMASK',
283 'default': '0xFFFFFFFFU', 264 'default': '0xFFFFFFFFU',
284 'cached': True,
285 }, 265 },
286 { 266 {
287 'name': 'stencil_back_writemask', 267 'name': 'stencil_back_writemask',
288 'type': 'GLuint', 268 'type': 'GLuint',
289 'enum': 'GL_STENCIL_BACK_WRITEMASK', 269 'enum': 'GL_STENCIL_BACK_WRITEMASK',
290 'default': '0xFFFFFFFFU', 270 'default': '0xFFFFFFFFU',
291 'cached': True,
292 }, 271 },
293 ], 272 ],
294 }, 273 },
295 'StencilOp': { 274 'StencilOp': {
296 'type': 'FrontBack', 275 'type': 'FrontBack',
297 'func': 'StencilOpSeparate', 276 'func': 'StencilOpSeparate',
298 'states': [ 277 'states': [
299 { 278 {
300 'name': 'stencil_front_fail_op', 279 'name': 'stencil_front_fail_op',
301 'type': 'GLenum', 280 'type': 'GLenum',
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
425 'type': 'GLfloat', 404 'type': 'GLfloat',
426 'default': '1.0f', 405 'default': '1.0f',
427 'range_checks': [{'check': "<= 0.0f", 'test_value': "0.0f"}], 406 'range_checks': [{'check': "<= 0.0f", 'test_value': "0.0f"}],
428 }], 407 }],
429 }, 408 },
430 'DepthMask': { 409 'DepthMask': {
431 'type': 'Normal', 410 'type': 'Normal',
432 'func': 'DepthMask', 411 'func': 'DepthMask',
433 'enum': 'GL_DEPTH_WRITEMASK', 412 'enum': 'GL_DEPTH_WRITEMASK',
434 'states': [ 413 'states': [
435 { 414 {'name': 'depth_mask', 'type': 'GLboolean', 'default': 'true'},
436 'name': 'depth_mask',
437 'type': 'GLboolean',
438 'default': 'true',
439 'cached': True
440 },
441 ], 415 ],
442 'state_flag': 'framebuffer_state_.clear_state_dirty', 416 'state_flag': 'framebuffer_state_.clear_state_dirty',
443 }, 417 },
444 'Scissor': { 418 'Scissor': {
445 'type': 'Normal', 419 'type': 'Normal',
446 'func': 'Scissor', 420 'func': 'Scissor',
447 'enum': 'GL_SCISSOR_BOX', 421 'enum': 'GL_SCISSOR_BOX',
448 'states': [ 422 'states': [
449 # NOTE: These defaults reset at GLES2DecoderImpl::Initialization. 423 # NOTE: These defaults reset at GLES2DecoderImpl::Initialization.
450 { 424 {
(...skipping 2164 matching lines...) Expand 10 before | Expand all | Expand 10 after
2615 the lower-case identifier. 2589 the lower-case identifier.
2616 """ 2590 """
2617 return '_'.join(words) 2591 return '_'.join(words)
2618 2592
2619 2593
2620 def ToUnderscore(input_string): 2594 def ToUnderscore(input_string):
2621 """converts CamelCase to camel_case.""" 2595 """converts CamelCase to camel_case."""
2622 words = SplitWords(input_string) 2596 words = SplitWords(input_string)
2623 return Lower(words) 2597 return Lower(words)
2624 2598
2625 def CachedStateName(item):
2626 if item.get('cached', False):
2627 return 'cached_' + item['name']
2628 return item['name']
2629
2630 2599
2631 class CWriter(object): 2600 class CWriter(object):
2632 """Writes to a file formatting it for Google's style guidelines.""" 2601 """Writes to a file formatting it for Google's style guidelines."""
2633 2602
2634 def __init__(self, filename): 2603 def __init__(self, filename):
2635 self.filename = filename 2604 self.filename = filename
2636 self.file_num = 0 2605 self.file_num = 0
2637 self.content = [] 2606 self.content = []
2638 2607
2639 def SetFileNum(self, num): 2608 def SetFileNum(self, num):
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
2977 'all_but_last_args': ", ".join(arg_strings[:-1]), 2946 'all_but_last_args': ", ".join(arg_strings[:-1]),
2978 'gl_args': ", ".join(gl_arg_strings), 2947 'gl_args': ", ".join(gl_arg_strings),
2979 'parse_result': parse_result, 2948 'parse_result': parse_result,
2980 'gl_error_test': gl_error_test, 2949 'gl_error_test': gl_error_test,
2981 } 2950 }
2982 vars.update(extra) 2951 vars.update(extra)
2983 file.Write(test % vars) 2952 file.Write(test % vars)
2984 2953
2985 def WriteServiceUnitTest(self, func, file): 2954 def WriteServiceUnitTest(self, func, file):
2986 """Writes the service unit test for a command.""" 2955 """Writes the service unit test for a command."""
2987 2956 valid_test = """
2988 if func.name == 'Enable': 2957 TEST_F(%(test_name)s, %(name)sValidArgs) {
2989 valid_test = """
2990 TEST_P(%(test_name)s, %(name)sValidArgs) {
2991 SetupExpectationsForEnableDisable(%(gl_args)s, true);
2992 SpecializedSetup<cmds::%(name)s, 0>(true);
2993 cmds::%(name)s cmd;
2994 cmd.Init(%(args)s);
2995 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
2996 EXPECT_EQ(GL_NO_ERROR, GetGLError());
2997 }
2998 """
2999 elif func.name == 'Disable':
3000 valid_test = """
3001 TEST_P(%(test_name)s, %(name)sValidArgs) {
3002 SetupExpectationsForEnableDisable(%(gl_args)s, false);
3003 SpecializedSetup<cmds::%(name)s, 0>(true);
3004 cmds::%(name)s cmd;
3005 cmd.Init(%(args)s);
3006 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
3007 EXPECT_EQ(GL_NO_ERROR, GetGLError());
3008 }
3009 """
3010 else:
3011 valid_test = """
3012 TEST_P(%(test_name)s, %(name)sValidArgs) {
3013 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)); 2958 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s));
3014 SpecializedSetup<cmds::%(name)s, 0>(true); 2959 SpecializedSetup<cmds::%(name)s, 0>(true);
3015 cmds::%(name)s cmd; 2960 cmds::%(name)s cmd;
3016 cmd.Init(%(args)s); 2961 cmd.Init(%(args)s);
3017 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 2962 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
3018 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 2963 EXPECT_EQ(GL_NO_ERROR, GetGLError());
3019 } 2964 }
3020 """ 2965 """
3021 self.WriteValidUnitTest(func, file, valid_test) 2966 self.WriteValidUnitTest(func, file, valid_test)
3022 2967
3023 invalid_test = """ 2968 invalid_test = """
3024 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { 2969 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
3025 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); 2970 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0);
3026 SpecializedSetup<cmds::%(name)s, 0>(false); 2971 SpecializedSetup<cmds::%(name)s, 0>(false);
3027 cmds::%(name)s cmd; 2972 cmds::%(name)s cmd;
3028 cmd.Init(%(args)s); 2973 cmd.Init(%(args)s);
3029 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s 2974 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s
3030 } 2975 }
3031 """ 2976 """
3032 self.WriteInvalidUnitTest(func, file, invalid_test) 2977 self.WriteInvalidUnitTest(func, file, invalid_test)
3033 2978
3034 def WriteImmediateServiceUnitTest(self, func, file): 2979 def WriteImmediateServiceUnitTest(self, func, file):
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
3286 file.Write(" }\n") 3231 file.Write(" }\n")
3287 code = [] 3232 code = []
3288 for ndx,item in enumerate(states): 3233 for ndx,item in enumerate(states):
3289 code.append("state_.%s != %s" % (item['name'], args[ndx].name)) 3234 code.append("state_.%s != %s" % (item['name'], args[ndx].name))
3290 file.Write(" if (%s) {\n" % " ||\n ".join(code)) 3235 file.Write(" if (%s) {\n" % " ||\n ".join(code))
3291 for ndx,item in enumerate(states): 3236 for ndx,item in enumerate(states):
3292 file.Write(" state_.%s = %s;\n" % (item['name'], args[ndx].name)) 3237 file.Write(" state_.%s = %s;\n" % (item['name'], args[ndx].name))
3293 if 'state_flag' in state: 3238 if 'state_flag' in state:
3294 file.Write(" %s = true;\n" % state['state_flag']) 3239 file.Write(" %s = true;\n" % state['state_flag'])
3295 if not func.GetInfo("no_gl"): 3240 if not func.GetInfo("no_gl"):
3296 for ndx,item in enumerate(states):
3297 if item.get('cached', False):
3298 file.Write(" state_.%s = %s;\n" %
3299 (CachedStateName(item), args[ndx].name))
3300 file.Write(" %s(%s);\n" % 3241 file.Write(" %s(%s);\n" %
3301 (func.GetGLFunctionName(), func.MakeOriginalArgString(""))) 3242 (func.GetGLFunctionName(), func.MakeOriginalArgString("")))
3302 file.Write(" }\n") 3243 file.Write(" }\n")
3303 3244
3304 def WriteServiceUnitTest(self, func, file): 3245 def WriteServiceUnitTest(self, func, file):
3305 """Overrriden from TypeHandler.""" 3246 """Overrriden from TypeHandler."""
3306 TypeHandler.WriteServiceUnitTest(self, func, file) 3247 TypeHandler.WriteServiceUnitTest(self, func, file)
3307 state_name = func.GetInfo('state') 3248 state_name = func.GetInfo('state')
3308 state = _STATES[state_name] 3249 state = _STATES[state_name]
3309 states = state['states'] 3250 states = state['states']
3310 for ndx,item in enumerate(states): 3251 for ndx,item in enumerate(states):
3311 if 'range_checks' in item: 3252 if 'range_checks' in item:
3312 for check_ndx, range_check in enumerate(item['range_checks']): 3253 for check_ndx, range_check in enumerate(item['range_checks']):
3313 valid_test = """ 3254 valid_test = """
3314 TEST_P(%(test_name)s, %(name)sInvalidValue%(ndx)d_%(check_ndx)d) { 3255 TEST_F(%(test_name)s, %(name)sInvalidValue%(ndx)d_%(check_ndx)d) {
3315 SpecializedSetup<cmds::%(name)s, 0>(false); 3256 SpecializedSetup<cmds::%(name)s, 0>(false);
3316 cmds::%(name)s cmd; 3257 cmds::%(name)s cmd;
3317 cmd.Init(%(args)s); 3258 cmd.Init(%(args)s);
3318 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 3259 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
3319 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 3260 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
3320 } 3261 }
3321 """ 3262 """
3322 name = func.name 3263 name = func.name
3323 arg_strings = [] 3264 arg_strings = []
3324 for count, arg in enumerate(func.GetOriginalArgs()): 3265 for count, arg in enumerate(func.GetOriginalArgs()):
(...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after
3776 """Handler for glBind___ type functions.""" 3717 """Handler for glBind___ type functions."""
3777 3718
3778 def __init__(self): 3719 def __init__(self):
3779 TypeHandler.__init__(self) 3720 TypeHandler.__init__(self)
3780 3721
3781 def WriteServiceUnitTest(self, func, file): 3722 def WriteServiceUnitTest(self, func, file):
3782 """Overrriden from TypeHandler.""" 3723 """Overrriden from TypeHandler."""
3783 3724
3784 if len(func.GetOriginalArgs()) == 1: 3725 if len(func.GetOriginalArgs()) == 1:
3785 valid_test = """ 3726 valid_test = """
3786 TEST_P(%(test_name)s, %(name)sValidArgs) { 3727 TEST_F(%(test_name)s, %(name)sValidArgs) {
3787 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)); 3728 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s));
3788 SpecializedSetup<cmds::%(name)s, 0>(true); 3729 SpecializedSetup<cmds::%(name)s, 0>(true);
3789 cmds::%(name)s cmd; 3730 cmds::%(name)s cmd;
3790 cmd.Init(%(args)s); 3731 cmd.Init(%(args)s);
3791 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 3732 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
3792 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 3733 EXPECT_EQ(GL_NO_ERROR, GetGLError());
3793 } 3734 }
3794 """ 3735 """
3795 if func.GetInfo("gen_func"): 3736 if func.GetInfo("gen_func"):
3796 valid_test += """ 3737 valid_test += """
3797 TEST_P(%(test_name)s, %(name)sValidArgsNewId) { 3738 TEST_F(%(test_name)s, %(name)sValidArgsNewId) {
3798 EXPECT_CALL(*gl_, %(gl_func_name)s(kNewServiceId)); 3739 EXPECT_CALL(*gl_, %(gl_func_name)s(kNewServiceId));
3799 EXPECT_CALL(*gl_, %(gl_gen_func_name)s(1, _)) 3740 EXPECT_CALL(*gl_, %(gl_gen_func_name)s(1, _))
3800 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 3741 .WillOnce(SetArgumentPointee<1>(kNewServiceId));
3801 SpecializedSetup<cmds::%(name)s, 0>(true); 3742 SpecializedSetup<cmds::%(name)s, 0>(true);
3802 cmds::%(name)s cmd; 3743 cmds::%(name)s cmd;
3803 cmd.Init(kNewClientId); 3744 cmd.Init(kNewClientId);
3804 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 3745 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
3805 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 3746 EXPECT_EQ(GL_NO_ERROR, GetGLError());
3806 EXPECT_TRUE(Get%(resource_type)s(kNewClientId) != NULL); 3747 EXPECT_TRUE(Get%(resource_type)s(kNewClientId) != NULL);
3807 } 3748 }
3808 """ 3749 """
3809 self.WriteValidUnitTest(func, file, valid_test, { 3750 self.WriteValidUnitTest(func, file, valid_test, {
3810 'resource_type': func.GetOriginalArgs()[0].resource_type, 3751 'resource_type': func.GetOriginalArgs()[0].resource_type,
3811 'gl_gen_func_name': func.GetInfo("gen_func"), 3752 'gl_gen_func_name': func.GetInfo("gen_func"),
3812 }) 3753 })
3813 else: 3754 else:
3814 valid_test = """ 3755 valid_test = """
3815 TEST_P(%(test_name)s, %(name)sValidArgs) { 3756 TEST_F(%(test_name)s, %(name)sValidArgs) {
3816 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)); 3757 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s));
3817 SpecializedSetup<cmds::%(name)s, 0>(true); 3758 SpecializedSetup<cmds::%(name)s, 0>(true);
3818 cmds::%(name)s cmd; 3759 cmds::%(name)s cmd;
3819 cmd.Init(%(args)s); 3760 cmd.Init(%(args)s);
3820 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 3761 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
3821 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 3762 EXPECT_EQ(GL_NO_ERROR, GetGLError());
3822 } 3763 }
3823 """ 3764 """
3824 if func.GetInfo("gen_func"): 3765 if func.GetInfo("gen_func"):
3825 valid_test += """ 3766 valid_test += """
3826 TEST_P(%(test_name)s, %(name)sValidArgsNewId) { 3767 TEST_F(%(test_name)s, %(name)sValidArgsNewId) {
3827 EXPECT_CALL(*gl_, %(gl_func_name)s(%(first_gl_arg)s, kNewServiceId)); 3768 EXPECT_CALL(*gl_, %(gl_func_name)s(%(first_gl_arg)s, kNewServiceId));
3828 EXPECT_CALL(*gl_, %(gl_gen_func_name)s(1, _)) 3769 EXPECT_CALL(*gl_, %(gl_gen_func_name)s(1, _))
3829 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 3770 .WillOnce(SetArgumentPointee<1>(kNewServiceId));
3830 SpecializedSetup<cmds::%(name)s, 0>(true); 3771 SpecializedSetup<cmds::%(name)s, 0>(true);
3831 cmds::%(name)s cmd; 3772 cmds::%(name)s cmd;
3832 cmd.Init(%(first_arg)s, kNewClientId); 3773 cmd.Init(%(first_arg)s, kNewClientId);
3833 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 3774 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
3834 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 3775 EXPECT_EQ(GL_NO_ERROR, GetGLError());
3835 EXPECT_TRUE(Get%(resource_type)s(kNewClientId) != NULL); 3776 EXPECT_TRUE(Get%(resource_type)s(kNewClientId) != NULL);
3836 } 3777 }
3837 """ 3778 """
3838 self.WriteValidUnitTest(func, file, valid_test, { 3779 self.WriteValidUnitTest(func, file, valid_test, {
3839 'first_arg': func.GetOriginalArgs()[0].GetValidArg(func, 0, 0), 3780 'first_arg': func.GetOriginalArgs()[0].GetValidArg(func, 0, 0),
3840 'first_gl_arg': func.GetOriginalArgs()[0].GetValidGLArg(func, 0, 0), 3781 'first_gl_arg': func.GetOriginalArgs()[0].GetValidGLArg(func, 0, 0),
3841 'resource_type': func.GetOriginalArgs()[1].resource_type, 3782 'resource_type': func.GetOriginalArgs()[1].resource_type,
3842 'gl_gen_func_name': func.GetInfo("gen_func"), 3783 'gl_gen_func_name': func.GetInfo("gen_func"),
3843 }) 3784 })
3844 3785
3845 invalid_test = """ 3786 invalid_test = """
3846 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { 3787 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
3847 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); 3788 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0);
3848 SpecializedSetup<cmds::%(name)s, 0>(false); 3789 SpecializedSetup<cmds::%(name)s, 0>(false);
3849 cmds::%(name)s cmd; 3790 cmds::%(name)s cmd;
3850 cmd.Init(%(args)s); 3791 cmd.Init(%(args)s);
3851 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s 3792 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s
3852 } 3793 }
3853 """ 3794 """
3854 self.WriteInvalidUnitTest(func, file, invalid_test) 3795 self.WriteInvalidUnitTest(func, file, invalid_test)
3855 3796
3856 def WriteGLES2Implementation(self, func, file): 3797 def WriteGLES2Implementation(self, func, file):
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
4023 } 3964 }
4024 """ 3965 """
4025 file.Write(code % { 3966 file.Write(code % {
4026 'name': func.name, 3967 'name': func.name,
4027 'types': func.GetInfo('resource_types'), 3968 'types': func.GetInfo('resource_types'),
4028 }) 3969 })
4029 3970
4030 def WriteServiceUnitTest(self, func, file): 3971 def WriteServiceUnitTest(self, func, file):
4031 """Overrriden from TypeHandler.""" 3972 """Overrriden from TypeHandler."""
4032 valid_test = """ 3973 valid_test = """
4033 TEST_P(%(test_name)s, %(name)sValidArgs) { 3974 TEST_F(%(test_name)s, %(name)sValidArgs) {
4034 EXPECT_CALL(*gl_, %(gl_func_name)s(1, _)) 3975 EXPECT_CALL(*gl_, %(gl_func_name)s(1, _))
4035 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 3976 .WillOnce(SetArgumentPointee<1>(kNewServiceId));
4036 GetSharedMemoryAs<GLuint*>()[0] = kNewClientId; 3977 GetSharedMemoryAs<GLuint*>()[0] = kNewClientId;
4037 SpecializedSetup<cmds::%(name)s, 0>(true); 3978 SpecializedSetup<cmds::%(name)s, 0>(true);
4038 cmds::%(name)s cmd; 3979 cmds::%(name)s cmd;
4039 cmd.Init(%(args)s); 3980 cmd.Init(%(args)s);
4040 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 3981 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
4041 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 3982 EXPECT_EQ(GL_NO_ERROR, GetGLError());
4042 EXPECT_TRUE(Get%(resource_name)s(kNewClientId) != NULL); 3983 EXPECT_TRUE(Get%(resource_name)s(kNewClientId) != NULL);
4043 } 3984 }
4044 """ 3985 """
4045 self.WriteValidUnitTest(func, file, valid_test, { 3986 self.WriteValidUnitTest(func, file, valid_test, {
4046 'resource_name': func.GetInfo('resource_type'), 3987 'resource_name': func.GetInfo('resource_type'),
4047 }) 3988 })
4048 invalid_test = """ 3989 invalid_test = """
4049 TEST_P(%(test_name)s, %(name)sInvalidArgs) { 3990 TEST_F(%(test_name)s, %(name)sInvalidArgs) {
4050 EXPECT_CALL(*gl_, %(gl_func_name)s(_, _)).Times(0); 3991 EXPECT_CALL(*gl_, %(gl_func_name)s(_, _)).Times(0);
4051 GetSharedMemoryAs<GLuint*>()[0] = client_%(resource_name)s_id_; 3992 GetSharedMemoryAs<GLuint*>()[0] = client_%(resource_name)s_id_;
4052 SpecializedSetup<cmds::%(name)s, 0>(false); 3993 SpecializedSetup<cmds::%(name)s, 0>(false);
4053 cmds::%(name)s cmd; 3994 cmds::%(name)s cmd;
4054 cmd.Init(%(args)s); 3995 cmd.Init(%(args)s);
4055 EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd)); 3996 EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd));
4056 } 3997 }
4057 """ 3998 """
4058 self.WriteValidUnitTest(func, file, invalid_test, { 3999 self.WriteValidUnitTest(func, file, invalid_test, {
4059 'resource_name': func.GetInfo('resource_type').lower(), 4000 'resource_name': func.GetInfo('resource_type').lower(),
4060 }) 4001 })
4061 4002
4062 def WriteImmediateServiceUnitTest(self, func, file): 4003 def WriteImmediateServiceUnitTest(self, func, file):
4063 """Overrriden from TypeHandler.""" 4004 """Overrriden from TypeHandler."""
4064 valid_test = """ 4005 valid_test = """
4065 TEST_P(%(test_name)s, %(name)sValidArgs) { 4006 TEST_F(%(test_name)s, %(name)sValidArgs) {
4066 EXPECT_CALL(*gl_, %(gl_func_name)s(1, _)) 4007 EXPECT_CALL(*gl_, %(gl_func_name)s(1, _))
4067 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 4008 .WillOnce(SetArgumentPointee<1>(kNewServiceId));
4068 cmds::%(name)s* cmd = GetImmediateAs<cmds::%(name)s>(); 4009 cmds::%(name)s* cmd = GetImmediateAs<cmds::%(name)s>();
4069 GLuint temp = kNewClientId; 4010 GLuint temp = kNewClientId;
4070 SpecializedSetup<cmds::%(name)s, 0>(true); 4011 SpecializedSetup<cmds::%(name)s, 0>(true);
4071 cmd->Init(1, &temp); 4012 cmd->Init(1, &temp);
4072 EXPECT_EQ(error::kNoError, 4013 EXPECT_EQ(error::kNoError,
4073 ExecuteImmediateCmd(*cmd, sizeof(temp))); 4014 ExecuteImmediateCmd(*cmd, sizeof(temp)));
4074 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 4015 EXPECT_EQ(GL_NO_ERROR, GetGLError());
4075 EXPECT_TRUE(Get%(resource_name)s(kNewClientId) != NULL); 4016 EXPECT_TRUE(Get%(resource_name)s(kNewClientId) != NULL);
4076 } 4017 }
4077 """ 4018 """
4078 self.WriteValidUnitTest(func, file, valid_test, { 4019 self.WriteValidUnitTest(func, file, valid_test, {
4079 'resource_name': func.GetInfo('resource_type'), 4020 'resource_name': func.GetInfo('resource_type'),
4080 }) 4021 })
4081 invalid_test = """ 4022 invalid_test = """
4082 TEST_P(%(test_name)s, %(name)sInvalidArgs) { 4023 TEST_F(%(test_name)s, %(name)sInvalidArgs) {
4083 EXPECT_CALL(*gl_, %(gl_func_name)s(_, _)).Times(0); 4024 EXPECT_CALL(*gl_, %(gl_func_name)s(_, _)).Times(0);
4084 cmds::%(name)s* cmd = GetImmediateAs<cmds::%(name)s>(); 4025 cmds::%(name)s* cmd = GetImmediateAs<cmds::%(name)s>();
4085 SpecializedSetup<cmds::%(name)s, 0>(false); 4026 SpecializedSetup<cmds::%(name)s, 0>(false);
4086 cmd->Init(1, &client_%(resource_name)s_id_); 4027 cmd->Init(1, &client_%(resource_name)s_id_);
4087 EXPECT_EQ(error::kInvalidArguments, 4028 EXPECT_EQ(error::kInvalidArguments,
4088 ExecuteImmediateCmd(*cmd, sizeof(&client_%(resource_name)s_id_))); 4029 ExecuteImmediateCmd(*cmd, sizeof(&client_%(resource_name)s_id_)));
4089 } 4030 }
4090 """ 4031 """
4091 self.WriteValidUnitTest(func, file, invalid_test, { 4032 self.WriteValidUnitTest(func, file, invalid_test, {
4092 'resource_name': func.GetInfo('resource_type').lower(), 4033 'resource_name': func.GetInfo('resource_type').lower(),
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
4189 def __init__(self): 4130 def __init__(self):
4190 TypeHandler.__init__(self) 4131 TypeHandler.__init__(self)
4191 4132
4192 def InitFunction(self, func): 4133 def InitFunction(self, func):
4193 """Overrriden from TypeHandler.""" 4134 """Overrriden from TypeHandler."""
4194 func.AddCmdArg(Argument("client_id", 'uint32')) 4135 func.AddCmdArg(Argument("client_id", 'uint32'))
4195 4136
4196 def WriteServiceUnitTest(self, func, file): 4137 def WriteServiceUnitTest(self, func, file):
4197 """Overrriden from TypeHandler.""" 4138 """Overrriden from TypeHandler."""
4198 valid_test = """ 4139 valid_test = """
4199 TEST_P(%(test_name)s, %(name)sValidArgs) { 4140 TEST_F(%(test_name)s, %(name)sValidArgs) {
4200 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)) 4141 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s))
4201 .WillOnce(Return(kNewServiceId)); 4142 .WillOnce(Return(kNewServiceId));
4202 SpecializedSetup<cmds::%(name)s, 0>(true); 4143 SpecializedSetup<cmds::%(name)s, 0>(true);
4203 cmds::%(name)s cmd; 4144 cmds::%(name)s cmd;
4204 cmd.Init(%(args)s%(comma)skNewClientId); 4145 cmd.Init(%(args)s%(comma)skNewClientId);
4205 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 4146 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
4206 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 4147 EXPECT_EQ(GL_NO_ERROR, GetGLError());
4207 EXPECT_TRUE(Get%(resource_type)s(kNewClientId) != NULL); 4148 EXPECT_TRUE(Get%(resource_type)s(kNewClientId) != NULL);
4208 } 4149 }
4209 """ 4150 """
4210 comma = "" 4151 comma = ""
4211 if len(func.GetOriginalArgs()): 4152 if len(func.GetOriginalArgs()):
4212 comma =", " 4153 comma =", "
4213 self.WriteValidUnitTest(func, file, valid_test, { 4154 self.WriteValidUnitTest(func, file, valid_test, {
4214 'comma': comma, 4155 'comma': comma,
4215 'resource_type': func.name[6:], 4156 'resource_type': func.name[6:],
4216 }) 4157 })
4217 invalid_test = """ 4158 invalid_test = """
4218 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { 4159 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
4219 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); 4160 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0);
4220 SpecializedSetup<cmds::%(name)s, 0>(false); 4161 SpecializedSetup<cmds::%(name)s, 0>(false);
4221 cmds::%(name)s cmd; 4162 cmds::%(name)s cmd;
4222 cmd.Init(%(args)s%(comma)skNewClientId); 4163 cmd.Init(%(args)s%(comma)skNewClientId);
4223 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));%(gl_error_test)s 4164 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));%(gl_error_test)s
4224 } 4165 }
4225 """ 4166 """
4226 self.WriteInvalidUnitTest(func, file, invalid_test, { 4167 self.WriteInvalidUnitTest(func, file, invalid_test, {
4227 'comma': comma, 4168 'comma': comma,
4228 }) 4169 })
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
4320 } 4261 }
4321 """ 4262 """
4322 file.Write(code % { 4263 file.Write(code % {
4323 'name': func.name, 4264 'name': func.name,
4324 'types': func.GetInfo('resource_types'), 4265 'types': func.GetInfo('resource_types'),
4325 }) 4266 })
4326 4267
4327 def WriteServiceUnitTest(self, func, file): 4268 def WriteServiceUnitTest(self, func, file):
4328 """Overrriden from TypeHandler.""" 4269 """Overrriden from TypeHandler."""
4329 valid_test = """ 4270 valid_test = """
4330 TEST_P(%(test_name)s, %(name)sValidArgs) { 4271 TEST_F(%(test_name)s, %(name)sValidArgs) {
4331 EXPECT_CALL( 4272 EXPECT_CALL(
4332 *gl_, 4273 *gl_,
4333 %(gl_func_name)s(1, Pointee(kService%(upper_resource_name)sId))) 4274 %(gl_func_name)s(1, Pointee(kService%(upper_resource_name)sId)))
4334 .Times(1); 4275 .Times(1);
4335 GetSharedMemoryAs<GLuint*>()[0] = client_%(resource_name)s_id_; 4276 GetSharedMemoryAs<GLuint*>()[0] = client_%(resource_name)s_id_;
4336 SpecializedSetup<cmds::%(name)s, 0>(true); 4277 SpecializedSetup<cmds::%(name)s, 0>(true);
4337 cmds::%(name)s cmd; 4278 cmds::%(name)s cmd;
4338 cmd.Init(%(args)s); 4279 cmd.Init(%(args)s);
4339 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 4280 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
4340 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 4281 EXPECT_EQ(GL_NO_ERROR, GetGLError());
4341 EXPECT_TRUE( 4282 EXPECT_TRUE(
4342 Get%(upper_resource_name)s(client_%(resource_name)s_id_) == NULL); 4283 Get%(upper_resource_name)s(client_%(resource_name)s_id_) == NULL);
4343 } 4284 }
4344 """ 4285 """
4345 self.WriteValidUnitTest(func, file, valid_test, { 4286 self.WriteValidUnitTest(func, file, valid_test, {
4346 'resource_name': func.GetInfo('resource_type').lower(), 4287 'resource_name': func.GetInfo('resource_type').lower(),
4347 'upper_resource_name': func.GetInfo('resource_type'), 4288 'upper_resource_name': func.GetInfo('resource_type'),
4348 }) 4289 })
4349 invalid_test = """ 4290 invalid_test = """
4350 TEST_P(%(test_name)s, %(name)sInvalidArgs) { 4291 TEST_F(%(test_name)s, %(name)sInvalidArgs) {
4351 GetSharedMemoryAs<GLuint*>()[0] = kInvalidClientId; 4292 GetSharedMemoryAs<GLuint*>()[0] = kInvalidClientId;
4352 SpecializedSetup<cmds::%(name)s, 0>(false); 4293 SpecializedSetup<cmds::%(name)s, 0>(false);
4353 cmds::%(name)s cmd; 4294 cmds::%(name)s cmd;
4354 cmd.Init(%(args)s); 4295 cmd.Init(%(args)s);
4355 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 4296 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
4356 } 4297 }
4357 """ 4298 """
4358 self.WriteValidUnitTest(func, file, invalid_test) 4299 self.WriteValidUnitTest(func, file, invalid_test)
4359 4300
4360 def WriteImmediateServiceUnitTest(self, func, file): 4301 def WriteImmediateServiceUnitTest(self, func, file):
4361 """Overrriden from TypeHandler.""" 4302 """Overrriden from TypeHandler."""
4362 valid_test = """ 4303 valid_test = """
4363 TEST_P(%(test_name)s, %(name)sValidArgs) { 4304 TEST_F(%(test_name)s, %(name)sValidArgs) {
4364 EXPECT_CALL( 4305 EXPECT_CALL(
4365 *gl_, 4306 *gl_,
4366 %(gl_func_name)s(1, Pointee(kService%(upper_resource_name)sId))) 4307 %(gl_func_name)s(1, Pointee(kService%(upper_resource_name)sId)))
4367 .Times(1); 4308 .Times(1);
4368 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); 4309 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>();
4369 SpecializedSetup<cmds::%(name)s, 0>(true); 4310 SpecializedSetup<cmds::%(name)s, 0>(true);
4370 cmd.Init(1, &client_%(resource_name)s_id_); 4311 cmd.Init(1, &client_%(resource_name)s_id_);
4371 EXPECT_EQ(error::kNoError, 4312 EXPECT_EQ(error::kNoError,
4372 ExecuteImmediateCmd(cmd, sizeof(client_%(resource_name)s_id_))); 4313 ExecuteImmediateCmd(cmd, sizeof(client_%(resource_name)s_id_)));
4373 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 4314 EXPECT_EQ(GL_NO_ERROR, GetGLError());
4374 EXPECT_TRUE( 4315 EXPECT_TRUE(
4375 Get%(upper_resource_name)s(client_%(resource_name)s_id_) == NULL); 4316 Get%(upper_resource_name)s(client_%(resource_name)s_id_) == NULL);
4376 } 4317 }
4377 """ 4318 """
4378 self.WriteValidUnitTest(func, file, valid_test, { 4319 self.WriteValidUnitTest(func, file, valid_test, {
4379 'resource_name': func.GetInfo('resource_type').lower(), 4320 'resource_name': func.GetInfo('resource_type').lower(),
4380 'upper_resource_name': func.GetInfo('resource_type'), 4321 'upper_resource_name': func.GetInfo('resource_type'),
4381 }) 4322 })
4382 invalid_test = """ 4323 invalid_test = """
4383 TEST_P(%(test_name)s, %(name)sInvalidArgs) { 4324 TEST_F(%(test_name)s, %(name)sInvalidArgs) {
4384 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); 4325 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>();
4385 SpecializedSetup<cmds::%(name)s, 0>(false); 4326 SpecializedSetup<cmds::%(name)s, 0>(false);
4386 GLuint temp = kInvalidClientId; 4327 GLuint temp = kInvalidClientId;
4387 cmd.Init(1, &temp); 4328 cmd.Init(1, &temp);
4388 EXPECT_EQ(error::kNoError, 4329 EXPECT_EQ(error::kNoError,
4389 ExecuteImmediateCmd(cmd, sizeof(temp))); 4330 ExecuteImmediateCmd(cmd, sizeof(temp)));
4390 } 4331 }
4391 """ 4332 """
4392 self.WriteValidUnitTest(func, file, invalid_test) 4333 self.WriteValidUnitTest(func, file, invalid_test)
4393 4334
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
4669 gl_arg_strings[0] = '123' 4610 gl_arg_strings[0] = '123'
4670 file.Write(code % { 4611 file.Write(code % {
4671 'name': func.name, 4612 'name': func.name,
4672 'args': ", ".join(gl_arg_strings), 4613 'args': ", ".join(gl_arg_strings),
4673 'cmd_args': ", ".join(cmd_arg_strings), 4614 'cmd_args': ", ".join(cmd_arg_strings),
4674 }) 4615 })
4675 4616
4676 def WriteServiceUnitTest(self, func, file): 4617 def WriteServiceUnitTest(self, func, file):
4677 """Overrriden from TypeHandler.""" 4618 """Overrriden from TypeHandler."""
4678 valid_test = """ 4619 valid_test = """
4679 TEST_P(%(test_name)s, %(name)sValidArgs) { 4620 TEST_F(%(test_name)s, %(name)sValidArgs) {
4680 EXPECT_CALL(*gl_, GetError()) 4621 EXPECT_CALL(*gl_, GetError())
4681 .WillOnce(Return(GL_NO_ERROR)) 4622 .WillOnce(Return(GL_NO_ERROR))
4682 .WillOnce(Return(GL_NO_ERROR)) 4623 .WillOnce(Return(GL_NO_ERROR))
4683 .RetiresOnSaturation(); 4624 .RetiresOnSaturation();
4684 SpecializedSetup<cmds::%(name)s, 0>(true); 4625 SpecializedSetup<cmds::%(name)s, 0>(true);
4685 typedef cmds::%(name)s::Result Result; 4626 typedef cmds::%(name)s::Result Result;
4686 Result* result = static_cast<Result*>(shared_memory_address_); 4627 Result* result = static_cast<Result*>(shared_memory_address_);
4687 EXPECT_CALL(*gl_, %(gl_func_name)s(%(local_gl_args)s)); 4628 EXPECT_CALL(*gl_, %(gl_func_name)s(%(local_gl_args)s));
4688 result->size = 0; 4629 result->size = 0;
4689 cmds::%(name)s cmd; 4630 cmds::%(name)s cmd;
(...skipping 16 matching lines...) Expand all
4706 gl_arg_strings.append("_") 4647 gl_arg_strings.append("_")
4707 else: 4648 else:
4708 gl_arg_strings.append("result->GetData()") 4649 gl_arg_strings.append("result->GetData()")
4709 4650
4710 self.WriteValidUnitTest(func, file, valid_test, { 4651 self.WriteValidUnitTest(func, file, valid_test, {
4711 'local_gl_args': ", ".join(gl_arg_strings), 4652 'local_gl_args': ", ".join(gl_arg_strings),
4712 'valid_pname': valid_pname, 4653 'valid_pname': valid_pname,
4713 }) 4654 })
4714 4655
4715 invalid_test = """ 4656 invalid_test = """
4716 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { 4657 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
4717 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); 4658 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0);
4718 SpecializedSetup<cmds::%(name)s, 0>(false); 4659 SpecializedSetup<cmds::%(name)s, 0>(false);
4719 cmds::%(name)s::Result* result = 4660 cmds::%(name)s::Result* result =
4720 static_cast<cmds::%(name)s::Result*>(shared_memory_address_); 4661 static_cast<cmds::%(name)s::Result*>(shared_memory_address_);
4721 result->size = 0; 4662 result->size = 0;
4722 cmds::%(name)s cmd; 4663 cmds::%(name)s cmd;
4723 cmd.Init(%(args)s); 4664 cmd.Init(%(args)s);
4724 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd)); 4665 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));
4725 EXPECT_EQ(0u, result->size);%(gl_error_test)s 4666 EXPECT_EQ(0u, result->size);%(gl_error_test)s
4726 } 4667 }
(...skipping 11 matching lines...) Expand all
4738 """Writes the service unit test for a command.""" 4679 """Writes the service unit test for a command."""
4739 expected_call = "EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s));" 4680 expected_call = "EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s));"
4740 if func.GetInfo("first_element_only"): 4681 if func.GetInfo("first_element_only"):
4741 gl_arg_strings = [] 4682 gl_arg_strings = []
4742 for count, arg in enumerate(func.GetOriginalArgs()): 4683 for count, arg in enumerate(func.GetOriginalArgs()):
4743 gl_arg_strings.append(arg.GetValidGLArg(func, count, 0)) 4684 gl_arg_strings.append(arg.GetValidGLArg(func, count, 0))
4744 gl_arg_strings[-1] = "*" + gl_arg_strings[-1] 4685 gl_arg_strings[-1] = "*" + gl_arg_strings[-1]
4745 expected_call = ("EXPECT_CALL(*gl_, %%(gl_func_name)s(%s));" % 4686 expected_call = ("EXPECT_CALL(*gl_, %%(gl_func_name)s(%s));" %
4746 ", ".join(gl_arg_strings)) 4687 ", ".join(gl_arg_strings))
4747 valid_test = """ 4688 valid_test = """
4748 TEST_P(%(test_name)s, %(name)sValidArgs) { 4689 TEST_F(%(test_name)s, %(name)sValidArgs) {
4749 SpecializedSetup<cmds::%(name)s, 0>(true); 4690 SpecializedSetup<cmds::%(name)s, 0>(true);
4750 cmds::%(name)s cmd; 4691 cmds::%(name)s cmd;
4751 cmd.Init(%(args)s); 4692 cmd.Init(%(args)s);
4752 GetSharedMemoryAs<%(data_type)s*>()[0] = %(data_value)s; 4693 GetSharedMemoryAs<%(data_type)s*>()[0] = %(data_value)s;
4753 %(expected_call)s 4694 %(expected_call)s
4754 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 4695 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
4755 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 4696 EXPECT_EQ(GL_NO_ERROR, GetGLError());
4756 } 4697 }
4757 """ 4698 """
4758 extra = { 4699 extra = {
4759 'data_type': func.GetInfo('data_type'), 4700 'data_type': func.GetInfo('data_type'),
4760 'data_value': func.GetInfo('data_value') or '0', 4701 'data_value': func.GetInfo('data_value') or '0',
4761 'expected_call': expected_call, 4702 'expected_call': expected_call,
4762 } 4703 }
4763 self.WriteValidUnitTest(func, file, valid_test, extra) 4704 self.WriteValidUnitTest(func, file, valid_test, extra)
4764 4705
4765 invalid_test = """ 4706 invalid_test = """
4766 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { 4707 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
4767 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); 4708 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0);
4768 SpecializedSetup<cmds::%(name)s, 0>(false); 4709 SpecializedSetup<cmds::%(name)s, 0>(false);
4769 cmds::%(name)s cmd; 4710 cmds::%(name)s cmd;
4770 cmd.Init(%(args)s); 4711 cmd.Init(%(args)s);
4771 GetSharedMemoryAs<%(data_type)s*>()[0] = %(data_value)s; 4712 GetSharedMemoryAs<%(data_type)s*>()[0] = %(data_value)s;
4772 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s 4713 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s
4773 } 4714 }
4774 """ 4715 """
4775 self.WriteInvalidUnitTest(func, file, invalid_test, extra) 4716 self.WriteInvalidUnitTest(func, file, invalid_test, extra)
4776 4717
4777 def WriteImmediateServiceUnitTest(self, func, file): 4718 def WriteImmediateServiceUnitTest(self, func, file):
4778 """Writes the service unit test for a command.""" 4719 """Writes the service unit test for a command."""
4779 valid_test = """ 4720 valid_test = """
4780 TEST_P(%(test_name)s, %(name)sValidArgs) { 4721 TEST_F(%(test_name)s, %(name)sValidArgs) {
4781 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); 4722 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>();
4782 SpecializedSetup<cmds::%(name)s, 0>(true); 4723 SpecializedSetup<cmds::%(name)s, 0>(true);
4783 %(data_type)s temp[%(data_count)s] = { %(data_value)s, }; 4724 %(data_type)s temp[%(data_count)s] = { %(data_value)s, };
4784 cmd.Init(%(gl_args)s, &temp[0]); 4725 cmd.Init(%(gl_args)s, &temp[0]);
4785 EXPECT_CALL( 4726 EXPECT_CALL(
4786 *gl_, 4727 *gl_,
4787 %(gl_func_name)s(%(gl_args)s, %(data_ref)sreinterpret_cast< 4728 %(gl_func_name)s(%(gl_args)s, %(data_ref)sreinterpret_cast<
4788 %(data_type)s*>(ImmediateDataAddress(&cmd)))); 4729 %(data_type)s*>(ImmediateDataAddress(&cmd))));
4789 EXPECT_EQ(error::kNoError, 4730 EXPECT_EQ(error::kNoError,
4790 ExecuteImmediateCmd(cmd, sizeof(temp))); 4731 ExecuteImmediateCmd(cmd, sizeof(temp)));
4791 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 4732 EXPECT_EQ(GL_NO_ERROR, GetGLError());
4792 } 4733 }
4793 """ 4734 """
4794 gl_arg_strings = [] 4735 gl_arg_strings = []
4795 gl_any_strings = [] 4736 gl_any_strings = []
4796 for count, arg in enumerate(func.GetOriginalArgs()[0:-1]): 4737 for count, arg in enumerate(func.GetOriginalArgs()[0:-1]):
4797 gl_arg_strings.append(arg.GetValidGLArg(func, count, 0)) 4738 gl_arg_strings.append(arg.GetValidGLArg(func, count, 0))
4798 gl_any_strings.append("_") 4739 gl_any_strings.append("_")
4799 extra = { 4740 extra = {
4800 'data_ref': ("*" if func.GetInfo('first_element_only') else ""), 4741 'data_ref': ("*" if func.GetInfo('first_element_only') else ""),
4801 'data_type': func.GetInfo('data_type'), 4742 'data_type': func.GetInfo('data_type'),
4802 'data_count': func.GetInfo('count'), 4743 'data_count': func.GetInfo('count'),
4803 'data_value': func.GetInfo('data_value') or '0', 4744 'data_value': func.GetInfo('data_value') or '0',
4804 'gl_args': ", ".join(gl_arg_strings), 4745 'gl_args': ", ".join(gl_arg_strings),
4805 'gl_any_args': ", ".join(gl_any_strings), 4746 'gl_any_args': ", ".join(gl_any_strings),
4806 } 4747 }
4807 self.WriteValidUnitTest(func, file, valid_test, extra) 4748 self.WriteValidUnitTest(func, file, valid_test, extra)
4808 4749
4809 invalid_test = """ 4750 invalid_test = """
4810 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { 4751 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
4811 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); 4752 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>();
4812 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_any_args)s, _)).Times(0); 4753 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_any_args)s, _)).Times(0);
4813 SpecializedSetup<cmds::%(name)s, 0>(false); 4754 SpecializedSetup<cmds::%(name)s, 0>(false);
4814 %(data_type)s temp[%(data_count)s] = { %(data_value)s, }; 4755 %(data_type)s temp[%(data_count)s] = { %(data_value)s, };
4815 cmd.Init(%(all_but_last_args)s, &temp[0]); 4756 cmd.Init(%(all_but_last_args)s, &temp[0]);
4816 EXPECT_EQ(error::%(parse_result)s, 4757 EXPECT_EQ(error::%(parse_result)s,
4817 ExecuteImmediateCmd(cmd, sizeof(temp)));%(gl_error_test)s 4758 ExecuteImmediateCmd(cmd, sizeof(temp)));%(gl_error_test)s
4818 } 4759 }
4819 """ 4760 """
4820 self.WriteInvalidUnitTest(func, file, invalid_test, extra) 4761 self.WriteInvalidUnitTest(func, file, invalid_test, extra)
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
5001 """Handler for PUTn 'glUniform__v' type functions.""" 4942 """Handler for PUTn 'glUniform__v' type functions."""
5002 4943
5003 def __init__(self): 4944 def __init__(self):
5004 TypeHandler.__init__(self) 4945 TypeHandler.__init__(self)
5005 4946
5006 def WriteServiceUnitTest(self, func, file): 4947 def WriteServiceUnitTest(self, func, file):
5007 """Overridden from TypeHandler.""" 4948 """Overridden from TypeHandler."""
5008 TypeHandler.WriteServiceUnitTest(self, func, file) 4949 TypeHandler.WriteServiceUnitTest(self, func, file)
5009 4950
5010 valid_test = """ 4951 valid_test = """
5011 TEST_P(%(test_name)s, %(name)sValidArgsCountTooLarge) { 4952 TEST_F(%(test_name)s, %(name)sValidArgsCountTooLarge) {
5012 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)); 4953 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s));
5013 SpecializedSetup<cmds::%(name)s, 0>(true); 4954 SpecializedSetup<cmds::%(name)s, 0>(true);
5014 cmds::%(name)s cmd; 4955 cmds::%(name)s cmd;
5015 cmd.Init(%(args)s); 4956 cmd.Init(%(args)s);
5016 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 4957 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
5017 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 4958 EXPECT_EQ(GL_NO_ERROR, GetGLError());
5018 } 4959 }
5019 """ 4960 """
5020 gl_arg_strings = [] 4961 gl_arg_strings = []
5021 arg_strings = [] 4962 arg_strings = []
(...skipping 14 matching lines...) Expand all
5036 arg_strings.append(arg.GetValidArg(func, count, 0)) 4977 arg_strings.append(arg.GetValidArg(func, count, 0))
5037 extra = { 4978 extra = {
5038 'gl_args': ", ".join(gl_arg_strings), 4979 'gl_args': ", ".join(gl_arg_strings),
5039 'args': ", ".join(arg_strings), 4980 'args': ", ".join(arg_strings),
5040 } 4981 }
5041 self.WriteValidUnitTest(func, file, valid_test, extra) 4982 self.WriteValidUnitTest(func, file, valid_test, extra)
5042 4983
5043 def WriteImmediateServiceUnitTest(self, func, file): 4984 def WriteImmediateServiceUnitTest(self, func, file):
5044 """Overridden from TypeHandler.""" 4985 """Overridden from TypeHandler."""
5045 valid_test = """ 4986 valid_test = """
5046 TEST_P(%(test_name)s, %(name)sValidArgs) { 4987 TEST_F(%(test_name)s, %(name)sValidArgs) {
5047 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); 4988 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>();
5048 EXPECT_CALL( 4989 EXPECT_CALL(
5049 *gl_, 4990 *gl_,
5050 %(gl_func_name)s(%(gl_args)s, 4991 %(gl_func_name)s(%(gl_args)s,
5051 reinterpret_cast<%(data_type)s*>(ImmediateDataAddress(&cmd)))); 4992 reinterpret_cast<%(data_type)s*>(ImmediateDataAddress(&cmd))));
5052 SpecializedSetup<cmds::%(name)s, 0>(true); 4993 SpecializedSetup<cmds::%(name)s, 0>(true);
5053 %(data_type)s temp[%(data_count)s * 2] = { 0, }; 4994 %(data_type)s temp[%(data_count)s * 2] = { 0, };
5054 cmd.Init(%(args)s, &temp[0]); 4995 cmd.Init(%(args)s, &temp[0]);
5055 EXPECT_EQ(error::kNoError, 4996 EXPECT_EQ(error::kNoError,
5056 ExecuteImmediateCmd(cmd, sizeof(temp))); 4997 ExecuteImmediateCmd(cmd, sizeof(temp)));
(...skipping 10 matching lines...) Expand all
5067 extra = { 5008 extra = {
5068 'data_type': func.GetInfo('data_type'), 5009 'data_type': func.GetInfo('data_type'),
5069 'data_count': func.GetInfo('count'), 5010 'data_count': func.GetInfo('count'),
5070 'args': ", ".join(arg_strings), 5011 'args': ", ".join(arg_strings),
5071 'gl_args': ", ".join(gl_arg_strings), 5012 'gl_args': ", ".join(gl_arg_strings),
5072 'gl_any_args': ", ".join(gl_any_strings), 5013 'gl_any_args': ", ".join(gl_any_strings),
5073 } 5014 }
5074 self.WriteValidUnitTest(func, file, valid_test, extra) 5015 self.WriteValidUnitTest(func, file, valid_test, extra)
5075 5016
5076 invalid_test = """ 5017 invalid_test = """
5077 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { 5018 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
5078 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); 5019 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>();
5079 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_any_args)s, _)).Times(0); 5020 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_any_args)s, _)).Times(0);
5080 SpecializedSetup<cmds::%(name)s, 0>(false); 5021 SpecializedSetup<cmds::%(name)s, 0>(false);
5081 %(data_type)s temp[%(data_count)s * 2] = { 0, }; 5022 %(data_type)s temp[%(data_count)s * 2] = { 0, };
5082 cmd.Init(%(all_but_last_args)s, &temp[0]); 5023 cmd.Init(%(all_but_last_args)s, &temp[0]);
5083 EXPECT_EQ(error::%(parse_result)s, 5024 EXPECT_EQ(error::%(parse_result)s,
5084 ExecuteImmediateCmd(cmd, sizeof(temp)));%(gl_error_test)s 5025 ExecuteImmediateCmd(cmd, sizeof(temp)));%(gl_error_test)s
5085 } 5026 }
5086 """ 5027 """
5087 self.WriteInvalidUnitTest(func, file, invalid_test, extra) 5028 self.WriteInvalidUnitTest(func, file, invalid_test, extra)
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
5297 'count': func.GetInfo('count'), 5238 'count': func.GetInfo('count'),
5298 'type': func.GetInfo('data_type'), 5239 'type': func.GetInfo('data_type'),
5299 'location': args[0].name, 5240 'location': args[0].name,
5300 'args': func.MakeOriginalArgString(""), 5241 'args': func.MakeOriginalArgString(""),
5301 'values': values, 5242 'values': values,
5302 }) 5243 })
5303 5244
5304 def WriteServiceUnitTest(self, func, file): 5245 def WriteServiceUnitTest(self, func, file):
5305 """Overrriden from TypeHandler.""" 5246 """Overrriden from TypeHandler."""
5306 valid_test = """ 5247 valid_test = """
5307 TEST_P(%(test_name)s, %(name)sValidArgs) { 5248 TEST_F(%(test_name)s, %(name)sValidArgs) {
5308 EXPECT_CALL(*gl_, %(name)sv(%(local_args)s)); 5249 EXPECT_CALL(*gl_, %(name)sv(%(local_args)s));
5309 SpecializedSetup<cmds::%(name)s, 0>(true); 5250 SpecializedSetup<cmds::%(name)s, 0>(true);
5310 cmds::%(name)s cmd; 5251 cmds::%(name)s cmd;
5311 cmd.Init(%(args)s); 5252 cmd.Init(%(args)s);
5312 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 5253 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
5313 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 5254 EXPECT_EQ(GL_NO_ERROR, GetGLError());
5314 } 5255 }
5315 """ 5256 """
5316 args = func.GetOriginalArgs() 5257 args = func.GetOriginalArgs()
5317 local_args = "%s, 1, _" % args[0].GetValidGLArg(func, 0, 0) 5258 local_args = "%s, 1, _" % args[0].GetValidGLArg(func, 0, 0)
5318 self.WriteValidUnitTest(func, file, valid_test, { 5259 self.WriteValidUnitTest(func, file, valid_test, {
5319 'name': func.name, 5260 'name': func.name,
5320 'count': func.GetInfo('count'), 5261 'count': func.GetInfo('count'),
5321 'local_args': local_args, 5262 'local_args': local_args,
5322 }) 5263 })
5323 5264
5324 invalid_test = """ 5265 invalid_test = """
5325 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { 5266 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
5326 EXPECT_CALL(*gl_, %(name)sv(_, _, _).Times(0); 5267 EXPECT_CALL(*gl_, %(name)sv(_, _, _).Times(0);
5327 SpecializedSetup<cmds::%(name)s, 0>(false); 5268 SpecializedSetup<cmds::%(name)s, 0>(false);
5328 cmds::%(name)s cmd; 5269 cmds::%(name)s cmd;
5329 cmd.Init(%(args)s); 5270 cmd.Init(%(args)s);
5330 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s 5271 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s
5331 } 5272 }
5332 """ 5273 """
5333 self.WriteInvalidUnitTest(func, file, invalid_test, { 5274 self.WriteInvalidUnitTest(func, file, invalid_test, {
5334 'name': func.GetInfo('name'), 5275 'name': func.GetInfo('name'),
5335 'count': func.GetInfo('count'), 5276 'count': func.GetInfo('count'),
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
5506 def InitFunction(self, func): 5447 def InitFunction(self, func):
5507 """Overrriden from TypeHandler.""" 5448 """Overrriden from TypeHandler."""
5508 func.AddCmdArg(Argument("result_shm_id", 'uint32')) 5449 func.AddCmdArg(Argument("result_shm_id", 'uint32'))
5509 func.AddCmdArg(Argument("result_shm_offset", 'uint32')) 5450 func.AddCmdArg(Argument("result_shm_offset", 'uint32'))
5510 if func.GetInfo('result') == None: 5451 if func.GetInfo('result') == None:
5511 func.AddInfo('result', ['uint32']) 5452 func.AddInfo('result', ['uint32'])
5512 5453
5513 def WriteServiceUnitTest(self, func, file): 5454 def WriteServiceUnitTest(self, func, file):
5514 """Overrriden from TypeHandler.""" 5455 """Overrriden from TypeHandler."""
5515 valid_test = """ 5456 valid_test = """
5516 TEST_P(%(test_name)s, %(name)sValidArgs) { 5457 TEST_F(%(test_name)s, %(name)sValidArgs) {
5517 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)); 5458 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s));
5518 SpecializedSetup<cmds::%(name)s, 0>(true); 5459 SpecializedSetup<cmds::%(name)s, 0>(true);
5519 cmds::%(name)s cmd; 5460 cmds::%(name)s cmd;
5520 cmd.Init(%(args)s%(comma)sshared_memory_id_, shared_memory_offset_); 5461 cmd.Init(%(args)s%(comma)sshared_memory_id_, shared_memory_offset_);
5521 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 5462 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
5522 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 5463 EXPECT_EQ(GL_NO_ERROR, GetGLError());
5523 } 5464 }
5524 """ 5465 """
5525 comma = "" 5466 comma = ""
5526 if len(func.GetOriginalArgs()): 5467 if len(func.GetOriginalArgs()):
5527 comma =", " 5468 comma =", "
5528 self.WriteValidUnitTest(func, file, valid_test, { 5469 self.WriteValidUnitTest(func, file, valid_test, {
5529 'comma': comma, 5470 'comma': comma,
5530 }) 5471 })
5531 5472
5532 invalid_test = """ 5473 invalid_test = """
5533 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { 5474 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
5534 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); 5475 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0);
5535 SpecializedSetup<cmds::%(name)s, 0>(false); 5476 SpecializedSetup<cmds::%(name)s, 0>(false);
5536 cmds::%(name)s cmd; 5477 cmds::%(name)s cmd;
5537 cmd.Init(%(args)s%(comma)sshared_memory_id_, shared_memory_offset_); 5478 cmd.Init(%(args)s%(comma)sshared_memory_id_, shared_memory_offset_);
5538 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s 5479 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s
5539 } 5480 }
5540 """ 5481 """
5541 self.WriteInvalidUnitTest(func, file, invalid_test, { 5482 self.WriteInvalidUnitTest(func, file, invalid_test, {
5542 'comma': comma, 5483 'comma': comma,
5543 }) 5484 })
5544 5485
5545 invalid_test = """ 5486 invalid_test = """
5546 TEST_P(%(test_name)s, %(name)sInvalidArgsBadSharedMemoryId) { 5487 TEST_F(%(test_name)s, %(name)sInvalidArgsBadSharedMemoryId) {
5547 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); 5488 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0);
5548 SpecializedSetup<cmds::%(name)s, 0>(false); 5489 SpecializedSetup<cmds::%(name)s, 0>(false);
5549 cmds::%(name)s cmd; 5490 cmds::%(name)s cmd;
5550 cmd.Init(%(args)s%(comma)skInvalidSharedMemoryId, shared_memory_offset_); 5491 cmd.Init(%(args)s%(comma)skInvalidSharedMemoryId, shared_memory_offset_);
5551 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 5492 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
5552 cmd.Init(%(args)s%(comma)sshared_memory_id_, kInvalidSharedMemoryOffset); 5493 cmd.Init(%(args)s%(comma)sshared_memory_id_, kInvalidSharedMemoryOffset);
5553 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 5494 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
5554 } 5495 }
5555 """ 5496 """
5556 self.WriteValidUnitTest(func, file, invalid_test, { 5497 self.WriteValidUnitTest(func, file, invalid_test, {
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
5705 'arg2': args[2].name, 5646 'arg2': args[2].name,
5706 'arg3': args[3].name, 5647 'arg3': args[3].name,
5707 } 5648 }
5708 file.Write(code_1 % str_args) 5649 file.Write(code_1 % str_args)
5709 func.WriteDestinationInitalizationValidation(file) 5650 func.WriteDestinationInitalizationValidation(file)
5710 file.Write(code_2 % str_args) 5651 file.Write(code_2 % str_args)
5711 5652
5712 def WriteServiceUnitTest(self, func, file): 5653 def WriteServiceUnitTest(self, func, file):
5713 """Overrriden from TypeHandler.""" 5654 """Overrriden from TypeHandler."""
5714 valid_test = """ 5655 valid_test = """
5715 TEST_P(%(test_name)s, %(name)sValidArgs) { 5656 TEST_F(%(test_name)s, %(name)sValidArgs) {
5716 const char* kInfo = "hello"; 5657 const char* kInfo = "hello";
5717 const uint32 kBucketId = 123; 5658 const uint32 kBucketId = 123;
5718 SpecializedSetup<cmds::%(name)s, 0>(true); 5659 SpecializedSetup<cmds::%(name)s, 0>(true);
5719 %(expect_len_code)s 5660 %(expect_len_code)s
5720 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)) 5661 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s))
5721 .WillOnce(DoAll(SetArgumentPointee<2>(strlen(kInfo)), 5662 .WillOnce(DoAll(SetArgumentPointee<2>(strlen(kInfo)),
5722 SetArrayArgument<3>(kInfo, kInfo + strlen(kInfo) + 1))); 5663 SetArrayArgument<3>(kInfo, kInfo + strlen(kInfo) + 1)));
5723 cmds::%(name)s cmd; 5664 cmds::%(name)s cmd;
5724 cmd.Init(%(args)s); 5665 cmd.Init(%(args)s);
5725 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 5666 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
(...skipping 19 matching lines...) Expand all
5745 'expect_len_code': '', 5686 'expect_len_code': '',
5746 } 5687 }
5747 if get_len_func and get_len_func[0:2] == 'gl': 5688 if get_len_func and get_len_func[0:2] == 'gl':
5748 sub['expect_len_code'] = ( 5689 sub['expect_len_code'] = (
5749 " EXPECT_CALL(*gl_, %s(%s, %s, _))\n" 5690 " EXPECT_CALL(*gl_, %s(%s, %s, _))\n"
5750 " .WillOnce(SetArgumentPointee<2>(strlen(kInfo) + 1));") % ( 5691 " .WillOnce(SetArgumentPointee<2>(strlen(kInfo) + 1));") % (
5751 get_len_func[2:], id_name, get_len_enum) 5692 get_len_func[2:], id_name, get_len_enum)
5752 self.WriteValidUnitTest(func, file, valid_test, sub) 5693 self.WriteValidUnitTest(func, file, valid_test, sub)
5753 5694
5754 invalid_test = """ 5695 invalid_test = """
5755 TEST_P(%(test_name)s, %(name)sInvalidArgs) { 5696 TEST_F(%(test_name)s, %(name)sInvalidArgs) {
5756 const uint32 kBucketId = 123; 5697 const uint32 kBucketId = 123;
5757 EXPECT_CALL(*gl_, %(gl_func_name)s(_, _, _, _)) 5698 EXPECT_CALL(*gl_, %(gl_func_name)s(_, _, _, _))
5758 .Times(0); 5699 .Times(0);
5759 cmds::%(name)s cmd; 5700 cmds::%(name)s cmd;
5760 cmd.Init(kInvalidClientId, kBucketId); 5701 cmd.Init(kInvalidClientId, kBucketId);
5761 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 5702 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
5762 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 5703 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
5763 } 5704 }
5764 """ 5705 """
5765 self.WriteValidUnitTest(func, file, invalid_test) 5706 self.WriteValidUnitTest(func, file, invalid_test)
(...skipping 1365 matching lines...) Expand 10 before | Expand all | Expand 10 after
7131 7072
7132 def WriteServiceContextStateHeader(self, filename): 7073 def WriteServiceContextStateHeader(self, filename):
7133 """Writes the service context state header.""" 7074 """Writes the service context state header."""
7134 file = CHeaderWriter( 7075 file = CHeaderWriter(
7135 filename, 7076 filename,
7136 "// It is included by context_state.h\n") 7077 "// It is included by context_state.h\n")
7137 file.Write("struct EnableFlags {\n") 7078 file.Write("struct EnableFlags {\n")
7138 file.Write(" EnableFlags();\n") 7079 file.Write(" EnableFlags();\n")
7139 for capability in _CAPABILITY_FLAGS: 7080 for capability in _CAPABILITY_FLAGS:
7140 file.Write(" bool %s;\n" % capability['name']) 7081 file.Write(" bool %s;\n" % capability['name'])
7141 file.Write(" bool cached_%s;\n" % capability['name'])
7142 file.Write("};\n\n") 7082 file.Write("};\n\n")
7143 7083
7144 for state_name in sorted(_STATES.keys()): 7084 for state_name in sorted(_STATES.keys()):
7145 state = _STATES[state_name] 7085 state = _STATES[state_name]
7146 for item in state['states']: 7086 for item in state['states']:
7147 file.Write("%s %s;\n" % (item['type'], item['name'])) 7087 file.Write("%s %s;\n" % (item['type'], item['name']))
7148 if item.get('cached', False):
7149 file.Write("%s cached_%s;\n" % (item['type'], item['name']))
7150 file.Write("\n") 7088 file.Write("\n")
7151 7089
7152 file.Write("""
7153 inline void SetDeviceCapabilityState(GLenum cap, bool enable) {
7154 switch (cap) {
7155 """)
7156 for capability in _CAPABILITY_FLAGS:
7157 file.Write("""\
7158 case GL_%s:
7159 """ % capability['name'].upper())
7160 file.Write("""\
7161 if (enable_flags.cached_%(name)s == enable &&
7162 !ignore_cached_state)
7163 return;
7164 enable_flags.cached_%(name)s = enable;
7165 break;
7166 """ % capability)
7167
7168 file.Write("""\
7169 default:
7170 NOTREACHED();
7171 return;
7172 }
7173 if (enable)
7174 glEnable(cap);
7175 else
7176 glDisable(cap);
7177 }
7178 """)
7179
7180 file.Close() 7090 file.Close()
7181 7091
7182 def WriteClientContextStateHeader(self, filename): 7092 def WriteClientContextStateHeader(self, filename):
7183 """Writes the client context state header.""" 7093 """Writes the client context state header."""
7184 file = CHeaderWriter( 7094 file = CHeaderWriter(
7185 filename, 7095 filename,
7186 "// It is included by client_context_state.h\n") 7096 "// It is included by client_context_state.h\n")
7187 file.Write("struct EnableFlags {\n") 7097 file.Write("struct EnableFlags {\n")
7188 file.Write(" EnableFlags();\n") 7098 file.Write(" EnableFlags();\n")
7189 for capability in _CAPABILITY_FLAGS: 7099 for capability in _CAPABILITY_FLAGS:
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
7238 def WriteServiceContextStateImpl(self, filename): 7148 def WriteServiceContextStateImpl(self, filename):
7239 """Writes the context state service implementation.""" 7149 """Writes the context state service implementation."""
7240 file = CHeaderWriter( 7150 file = CHeaderWriter(
7241 filename, 7151 filename,
7242 "// It is included by context_state.cc\n") 7152 "// It is included by context_state.cc\n")
7243 code = [] 7153 code = []
7244 for capability in _CAPABILITY_FLAGS: 7154 for capability in _CAPABILITY_FLAGS:
7245 code.append("%s(%s)" % 7155 code.append("%s(%s)" %
7246 (capability['name'], 7156 (capability['name'],
7247 ('false', 'true')['default' in capability])) 7157 ('false', 'true')['default' in capability]))
7248 code.append("cached_%s(%s)" %
7249 (capability['name'],
7250 ('false', 'true')['default' in capability]))
7251 file.Write("ContextState::EnableFlags::EnableFlags()\n : %s {\n}\n" % 7158 file.Write("ContextState::EnableFlags::EnableFlags()\n : %s {\n}\n" %
7252 ",\n ".join(code)) 7159 ",\n ".join(code))
7253 file.Write("\n") 7160 file.Write("\n")
7254 7161
7255 file.Write("void ContextState::Initialize() {\n") 7162 file.Write("void ContextState::Initialize() {\n")
7256 for state_name in sorted(_STATES.keys()): 7163 for state_name in sorted(_STATES.keys()):
7257 state = _STATES[state_name] 7164 state = _STATES[state_name]
7258 for item in state['states']: 7165 for item in state['states']:
7259 file.Write(" %s = %s;\n" % (item['name'], item['default'])) 7166 file.Write(" %s = %s;\n" % (item['name'], item['default']))
7260 if item.get('cached', False):
7261 file.Write(" cached_%s = %s;\n" % (item['name'], item['default']))
7262 file.Write("}\n") 7167 file.Write("}\n")
7263 7168
7264 file.Write(""" 7169 file.Write("""
7265 void ContextState::InitCapabilities(const ContextState* prev_state) const { 7170 void ContextState::InitCapabilities(const ContextState* prev_state) const {
7266 """) 7171 """)
7267 def WriteCapabilities(test_prev): 7172 def WriteCapabilities(test_prev):
7268 for capability in _CAPABILITY_FLAGS: 7173 for capability in _CAPABILITY_FLAGS:
7269 capability_name = capability['name'] 7174 capability_name = capability['name']
7270 if test_prev: 7175 if test_prev:
7271 file.Write(""" if (prev_state->enable_flags.cached_%s != 7176 file.Write(" if (prev_state->enable_flags.%s != enable_flags.%s)\n" %
7272 enable_flags.cached_%s)\n""" %
7273 (capability_name, capability_name)) 7177 (capability_name, capability_name))
7274 file.Write(" EnableDisable(GL_%s, enable_flags.cached_%s);\n" % 7178 file.Write(" EnableDisable(GL_%s, enable_flags.%s);\n" %
7275 (capability_name.upper(), capability_name)) 7179 (capability_name.upper(), capability_name))
7276 7180
7277 file.Write(" if (prev_state) {") 7181 file.Write(" if (prev_state) {")
7278 WriteCapabilities(True) 7182 WriteCapabilities(True)
7279 file.Write(" } else {") 7183 file.Write(" } else {")
7280 WriteCapabilities(False) 7184 WriteCapabilities(False)
7281 file.Write(" }") 7185 file.Write(" }")
7282 7186
7283 file.Write("""} 7187 file.Write("""}
7284 7188
7285 void ContextState::InitState(const ContextState *prev_state) const { 7189 void ContextState::InitState(const ContextState *prev_state) const {
7286 """) 7190 """)
7287 7191
7288 def WriteStates(test_prev): 7192 def WriteStates(test_prev):
7289 # We need to sort the keys so the expectations match 7193 # We need to sort the keys so the expectations match
7290 for state_name in sorted(_STATES.keys()): 7194 for state_name in sorted(_STATES.keys()):
7291 state = _STATES[state_name] 7195 state = _STATES[state_name]
7292 if state['type'] == 'FrontBack': 7196 if state['type'] == 'FrontBack':
7293 num_states = len(state['states']) 7197 num_states = len(state['states'])
7294 for ndx, group in enumerate(Grouper(num_states / 2, state['states'])): 7198 for ndx, group in enumerate(Grouper(num_states / 2, state['states'])):
7295 if test_prev: 7199 if test_prev:
7296 file.Write(" if (") 7200 file.Write(" if (")
7297 args = [] 7201 args = []
7298 for place, item in enumerate(group): 7202 for place, item in enumerate(group):
7299 item_name = CachedStateName(item) 7203 item_name = item['name']
7300 args.append('%s' % item_name) 7204 args.append('%s' % item_name)
7301 if test_prev: 7205 if test_prev:
7302 if place > 0: 7206 if place > 0:
7303 file.Write(' ||\n') 7207 file.Write(' ||\n')
7304 file.Write("(%s != prev_state->%s)" % (item_name, item_name)) 7208 file.Write("(%s != prev_state->%s)" % (item_name, item_name))
7305 if test_prev: 7209 if test_prev:
7306 file.Write(")\n") 7210 file.Write(")\n")
7307 file.Write( 7211 file.Write(
7308 " gl%s(%s, %s);\n" % 7212 " gl%s(%s, %s);\n" %
7309 (state['func'], ('GL_FRONT', 'GL_BACK')[ndx], ", ".join(args))) 7213 (state['func'], ('GL_FRONT', 'GL_BACK')[ndx], ", ".join(args)))
7310 elif state['type'] == 'NamedParameter': 7214 elif state['type'] == 'NamedParameter':
7311 for item in state['states']: 7215 for item in state['states']:
7312 item_name = CachedStateName(item)
7313
7314 if 'extension_flag' in item: 7216 if 'extension_flag' in item:
7315 file.Write(" if (feature_info_->feature_flags().%s)\n " % 7217 file.Write(" if (feature_info_->feature_flags().%s)\n " %
7316 item['extension_flag']) 7218 item['extension_flag'])
7317 if test_prev: 7219 if test_prev:
7318 file.Write(" if (prev_state->%s != %s)\n" % 7220 file.Write(" if (prev_state->%s != %s)\n" %
7319 (item_name, item_name)) 7221 (item['name'], item['name']))
7320 file.Write(" gl%s(%s, %s);\n" % 7222 file.Write(" gl%s(%s, %s);\n" %
7321 (state['func'], item['enum'], item_name)) 7223 (state['func'], item['enum'], item['name']))
7322 else: 7224 else:
7323 if test_prev: 7225 if test_prev:
7324 file.Write(" if (") 7226 file.Write(" if (")
7325 args = [] 7227 args = []
7326 for place, item in enumerate(state['states']): 7228 for place, item in enumerate(state['states']):
7327 item_name = CachedStateName(item) 7229 item_name = item['name']
7328 args.append('%s' % item_name) 7230 args.append('%s' % item_name)
7329 if test_prev: 7231 if test_prev:
7330 if place > 0: 7232 if place > 0:
7331 file.Write(' ||\n') 7233 file.Write(' ||\n')
7332 file.Write("(%s != prev_state->%s)" % 7234 file.Write("(%s != prev_state->%s)" %
7333 (item_name, item_name)) 7235 (item_name, item_name))
7334 if test_prev: 7236 if test_prev:
7335 file.Write(" )\n") 7237 file.Write(" )\n")
7336 file.Write(" gl%s(%s);\n" % (state['func'], ", ".join(args))) 7238 file.Write(" gl%s(%s);\n" % (state['func'], ", ".join(args)))
7337 7239
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
7420 #if gen_cmd == True or gen_cmd == None: 7322 #if gen_cmd == True or gen_cmd == None:
7421 func.WriteServiceImplementation(file) 7323 func.WriteServiceImplementation(file)
7422 7324
7423 file.Write(""" 7325 file.Write("""
7424 bool GLES2DecoderImpl::SetCapabilityState(GLenum cap, bool enabled) { 7326 bool GLES2DecoderImpl::SetCapabilityState(GLenum cap, bool enabled) {
7425 switch (cap) { 7327 switch (cap) {
7426 """) 7328 """)
7427 for capability in _CAPABILITY_FLAGS: 7329 for capability in _CAPABILITY_FLAGS:
7428 file.Write(" case GL_%s:\n" % capability['name'].upper()) 7330 file.Write(" case GL_%s:\n" % capability['name'].upper())
7429 if 'state_flag' in capability: 7331 if 'state_flag' in capability:
7430 7332 file.Write(""" if (state_.enable_flags.%(name)s != enabled) {
7431 file.Write("""\ 7333 state_.enable_flags.%(name)s = enabled;
7432 state_.enable_flags.%(name)s = enabled; 7334 %(state_flag)s = true;
7433 if (state_.enable_flags.cached_%(name)s != enabled 7335 }
7434 || state_.ignore_cached_state) { 7336 return false;
7435 %(state_flag)s = true; 7337 """ % capability)
7436 }
7437 return false;
7438 """ % capability)
7439 else: 7338 else:
7440 file.Write("""\ 7339 file.Write(""" state_.enable_flags.%(name)s = enabled;
7441 state_.enable_flags.%(name)s = enabled; 7340 return true;
7442 if (state_.enable_flags.cached_%(name)s != enabled 7341 """ % capability)
7443 || state_.ignore_cached_state) {
7444 state_.enable_flags.cached_%(name)s = enabled;
7445 return true;
7446 }
7447 return false;
7448 """ % capability)
7449 file.Write(""" default: 7342 file.Write(""" default:
7450 NOTREACHED(); 7343 NOTREACHED();
7451 return false; 7344 return false;
7452 } 7345 }
7453 } 7346 }
7454 """) 7347 """)
7455 file.Close() 7348 file.Close()
7456 7349
7457 def WriteServiceUnitTests(self, filename): 7350 def WriteServiceUnitTests(self, filename):
7458 """Writes the service decorder unit tests.""" 7351 """Writes the service decorder unit tests."""
(...skipping 604 matching lines...) Expand 10 before | Expand all | Expand 10 after
8063 "ppapi/shared_impl/ppb_opengles2_shared.cc"]) 7956 "ppapi/shared_impl/ppb_opengles2_shared.cc"])
8064 7957
8065 if gen.errors > 0: 7958 if gen.errors > 0:
8066 print "%d errors" % gen.errors 7959 print "%d errors" % gen.errors
8067 return 1 7960 return 1
8068 return 0 7961 return 0
8069 7962
8070 7963
8071 if __name__ == '__main__': 7964 if __name__ == '__main__':
8072 sys.exit(main(sys.argv[1:])) 7965 sys.exit(main(sys.argv[1:]))
OLDNEW
« no previous file with comments | « no previous file | gpu/command_buffer/service/context_state.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698