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

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

Issue 473853002: Make it possible to test command buffer decoder functions with extension flags (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address review comment Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gpu/BUILD.gn ('k') | gpu/command_buffer/service/gles2_cmd_decoder_unittest_0_autogen.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """code generator for GLES2 command buffers.""" 6 """code generator for GLES2 command buffers."""
7 7
8 import itertools 8 import itertools
9 import os 9 import os
10 import os.path 10 import os.path
(...skipping 2620 matching lines...) Expand 10 before | Expand all | Expand 10 after
2631 def ToUnderscore(input_string): 2631 def ToUnderscore(input_string):
2632 """converts CamelCase to camel_case.""" 2632 """converts CamelCase to camel_case."""
2633 words = SplitWords(input_string) 2633 words = SplitWords(input_string)
2634 return Lower(words) 2634 return Lower(words)
2635 2635
2636 def CachedStateName(item): 2636 def CachedStateName(item):
2637 if item.get('cached', False): 2637 if item.get('cached', False):
2638 return 'cached_' + item['name'] 2638 return 'cached_' + item['name']
2639 return item['name'] 2639 return item['name']
2640 2640
2641 def ToGLExtensionString(extension_flag):
2642 """Returns GL-type extension string of a extension flag."""
2643 if extension_flag == "oes_compressed_etc1_rgb8_texture":
2644 return "OES_compressed_ETC1_RGB8_texture" # Fixup inconsitency with rgb8,
2645 # unfortunate.
2646 uppercase_words = [ 'img', 'ext', 'arb', 'chromium', 'oes', 'amd', 'bgra8888',
2647 'egl', 'atc', 'etc1', 'angle']
2648 parts = extension_flag.split('_')
2649 return "_".join(
2650 [part.upper() if part in uppercase_words else part for part in parts])
2651
2652 def ToCamelCase(input_string):
2653 """converts ABC_underscore_case to ABCUnderscoreCase."""
2654 return ''.join(w[0].upper() + w[1:] for w in input_string.split('_'))
2641 2655
2642 class CWriter(object): 2656 class CWriter(object):
2643 """Writes to a file formatting it for Google's style guidelines.""" 2657 """Writes to a file formatting it for Google's style guidelines."""
2644 2658
2645 def __init__(self, filename): 2659 def __init__(self, filename):
2646 self.filename = filename 2660 self.filename = filename
2647 self.file_num = 0
2648 self.content = [] 2661 self.content = []
2649 2662
2650 def SetFileNum(self, num):
2651 """Used to help write number files and tests."""
2652 self.file_num = num
2653
2654 def Write(self, string): 2663 def Write(self, string):
2655 """Writes a string to a file spliting if it's > 80 characters.""" 2664 """Writes a string to a file spliting if it's > 80 characters."""
2656 lines = string.splitlines() 2665 lines = string.splitlines()
2657 num_lines = len(lines) 2666 num_lines = len(lines)
2658 for ii in range(0, num_lines): 2667 for ii in range(0, num_lines):
2659 self.content.append(lines[ii]) 2668 self.content.append(lines[ii])
2660 if ii < (num_lines - 1) or string[-1] == '\n': 2669 if ii < (num_lines - 1) or string[-1] == '\n':
2661 self.content.append('\n') 2670 self.content.append('\n')
2662 2671
2663 def Close(self): 2672 def Close(self):
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
2928 file.Write(" error::Error error;\n") 2937 file.Write(" error::Error error;\n")
2929 if defer_draws: 2938 if defer_draws:
2930 file.Write(" error = WillAccessBoundFramebufferForDraw();\n") 2939 file.Write(" error = WillAccessBoundFramebufferForDraw();\n")
2931 file.Write(" if (error != error::kNoError)\n") 2940 file.Write(" if (error != error::kNoError)\n")
2932 file.Write(" return error;\n") 2941 file.Write(" return error;\n")
2933 if defer_reads: 2942 if defer_reads:
2934 file.Write(" error = WillAccessBoundFramebufferForRead();\n") 2943 file.Write(" error = WillAccessBoundFramebufferForRead();\n")
2935 file.Write(" if (error != error::kNoError)\n") 2944 file.Write(" if (error != error::kNoError)\n")
2936 file.Write(" return error;\n") 2945 file.Write(" return error;\n")
2937 2946
2938 def WriteValidUnitTest(self, func, file, test, extra = {}): 2947 def WriteValidUnitTest(self, func, file, test, *extras):
2939 """Writes a valid unit test for the service implementation.""" 2948 """Writes a valid unit test for the service implementation."""
2940 if func.GetInfo('expectation') == False: 2949 if func.GetInfo('expectation') == False:
2941 test = self._remove_expected_call_re.sub('', test) 2950 test = self._remove_expected_call_re.sub('', test)
2942 name = func.name 2951 name = func.name
2943 arg_strings = [ 2952 arg_strings = [
2944 arg.GetValidArg(func) \ 2953 arg.GetValidArg(func) \
2945 for arg in func.GetOriginalArgs() if not arg.IsConstant() 2954 for arg in func.GetOriginalArgs() if not arg.IsConstant()
2946 ] 2955 ]
2947 gl_arg_strings = [ 2956 gl_arg_strings = [
2948 arg.GetValidGLArg(func) \ 2957 arg.GetValidGLArg(func) \
2949 for arg in func.GetOriginalArgs() 2958 for arg in func.GetOriginalArgs()
2950 ] 2959 ]
2951 gl_func_name = func.GetGLTestFunctionName() 2960 gl_func_name = func.GetGLTestFunctionName()
2952 vars = { 2961 vars = {
2953 'test_name': 'GLES2DecoderTest%d' % file.file_num,
2954 'name':name, 2962 'name':name,
2955 'gl_func_name': gl_func_name, 2963 'gl_func_name': gl_func_name,
2956 'args': ", ".join(arg_strings), 2964 'args': ", ".join(arg_strings),
2957 'gl_args': ", ".join(gl_arg_strings), 2965 'gl_args': ", ".join(gl_arg_strings),
2958 } 2966 }
2959 vars.update(extra) 2967 for extra in extras:
2968 vars.update(extra)
2960 old_test = "" 2969 old_test = ""
2961 while (old_test != test): 2970 while (old_test != test):
2962 old_test = test 2971 old_test = test
2963 test = test % vars 2972 test = test % vars
2964 file.Write(test % vars) 2973 file.Write(test % vars)
2965 2974
2966 def WriteInvalidUnitTest(self, func, file, test, extra = {}): 2975 def WriteInvalidUnitTest(self, func, file, test, *extras):
2967 """Writes an invalid unit test for the service implementation.""" 2976 """Writes an invalid unit test for the service implementation."""
2968 for invalid_arg_index, invalid_arg in enumerate(func.GetOriginalArgs()): 2977 for invalid_arg_index, invalid_arg in enumerate(func.GetOriginalArgs()):
2969 # Service implementation does not test constants, as they are not part of 2978 # Service implementation does not test constants, as they are not part of
2970 # the call in the service side. 2979 # the call in the service side.
2971 if invalid_arg.IsConstant(): 2980 if invalid_arg.IsConstant():
2972 continue 2981 continue
2973 2982
2974 num_invalid_values = invalid_arg.GetNumInvalidValues(func) 2983 num_invalid_values = invalid_arg.GetNumInvalidValues(func)
2975 for value_index in range(0, num_invalid_values): 2984 for value_index in range(0, num_invalid_values):
2976 arg_strings = [] 2985 arg_strings = []
(...skipping 10 matching lines...) Expand all
2987 arg_strings.append(arg_string) 2996 arg_strings.append(arg_string)
2988 gl_arg_strings = [] 2997 gl_arg_strings = []
2989 for arg in func.GetOriginalArgs(): 2998 for arg in func.GetOriginalArgs():
2990 gl_arg_strings.append("_") 2999 gl_arg_strings.append("_")
2991 gl_func_name = func.GetGLTestFunctionName() 3000 gl_func_name = func.GetGLTestFunctionName()
2992 gl_error_test = '' 3001 gl_error_test = ''
2993 if not gl_error == None: 3002 if not gl_error == None:
2994 gl_error_test = '\n EXPECT_EQ(%s, GetGLError());' % gl_error 3003 gl_error_test = '\n EXPECT_EQ(%s, GetGLError());' % gl_error
2995 3004
2996 vars = { 3005 vars = {
2997 'test_name': 'GLES2DecoderTest%d' % file.file_num ,
2998 'name': func.name, 3006 'name': func.name,
2999 'arg_index': invalid_arg_index, 3007 'arg_index': invalid_arg_index,
3000 'value_index': value_index, 3008 'value_index': value_index,
3001 'gl_func_name': gl_func_name, 3009 'gl_func_name': gl_func_name,
3002 'args': ", ".join(arg_strings), 3010 'args': ", ".join(arg_strings),
3003 'all_but_last_args': ", ".join(arg_strings[:-1]), 3011 'all_but_last_args': ", ".join(arg_strings[:-1]),
3004 'gl_args': ", ".join(gl_arg_strings), 3012 'gl_args': ", ".join(gl_arg_strings),
3005 'parse_result': parse_result, 3013 'parse_result': parse_result,
3006 'gl_error_test': gl_error_test, 3014 'gl_error_test': gl_error_test,
3007 } 3015 }
3008 vars.update(extra) 3016 for extra in extras:
3017 vars.update(extra)
3009 file.Write(test % vars) 3018 file.Write(test % vars)
3010 3019
3011 def WriteServiceUnitTest(self, func, file): 3020 def WriteServiceUnitTest(self, func, file, *extras):
3012 """Writes the service unit test for a command.""" 3021 """Writes the service unit test for a command."""
3013 3022
3014 if func.name == 'Enable': 3023 if func.name == 'Enable':
3015 valid_test = """ 3024 valid_test = """
3016 TEST_P(%(test_name)s, %(name)sValidArgs) { 3025 TEST_P(%(test_name)s, %(name)sValidArgs) {
3017 SetupExpectationsForEnableDisable(%(gl_args)s, true); 3026 SetupExpectationsForEnableDisable(%(gl_args)s, true);
3018 SpecializedSetup<cmds::%(name)s, 0>(true); 3027 SpecializedSetup<cmds::%(name)s, 0>(true);
3019 cmds::%(name)s cmd; 3028 cmds::%(name)s cmd;
3020 cmd.Init(%(args)s); 3029 cmd.Init(%(args)s);
3021 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 3030 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
(...skipping 15 matching lines...) Expand all
3037 valid_test = """ 3046 valid_test = """
3038 TEST_P(%(test_name)s, %(name)sValidArgs) { 3047 TEST_P(%(test_name)s, %(name)sValidArgs) {
3039 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)); 3048 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s));
3040 SpecializedSetup<cmds::%(name)s, 0>(true); 3049 SpecializedSetup<cmds::%(name)s, 0>(true);
3041 cmds::%(name)s cmd; 3050 cmds::%(name)s cmd;
3042 cmd.Init(%(args)s); 3051 cmd.Init(%(args)s);
3043 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 3052 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
3044 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 3053 EXPECT_EQ(GL_NO_ERROR, GetGLError());
3045 } 3054 }
3046 """ 3055 """
3047 self.WriteValidUnitTest(func, file, valid_test) 3056 self.WriteValidUnitTest(func, file, valid_test, *extras)
3048 3057
3049 invalid_test = """ 3058 invalid_test = """
3050 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { 3059 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
3051 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); 3060 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0);
3052 SpecializedSetup<cmds::%(name)s, 0>(false); 3061 SpecializedSetup<cmds::%(name)s, 0>(false);
3053 cmds::%(name)s cmd; 3062 cmds::%(name)s cmd;
3054 cmd.Init(%(args)s); 3063 cmd.Init(%(args)s);
3055 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s 3064 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s
3056 } 3065 }
3057 """ 3066 """
3058 self.WriteInvalidUnitTest(func, file, invalid_test) 3067 self.WriteInvalidUnitTest(func, file, invalid_test, *extras)
3059 3068
3060 def WriteImmediateServiceUnitTest(self, func, file): 3069 def WriteImmediateServiceUnitTest(self, func, file, *extras):
3061 """Writes the service unit test for an immediate command.""" 3070 """Writes the service unit test for an immediate command."""
3062 file.Write("// TODO(gman): %s\n" % func.name) 3071 file.Write("// TODO(gman): %s\n" % func.name)
3063 3072
3064 def WriteImmediateValidationCode(self, func, file): 3073 def WriteImmediateValidationCode(self, func, file):
3065 """Writes the validation code for an immediate version of a command.""" 3074 """Writes the validation code for an immediate version of a command."""
3066 pass 3075 pass
3067 3076
3068 def WriteBucketServiceUnitTest(self, func, file): 3077 def WriteBucketServiceUnitTest(self, func, file, *extras):
3069 """Writes the service unit test for a bucket command.""" 3078 """Writes the service unit test for a bucket command."""
3070 file.Write("// TODO(gman): %s\n" % func.name) 3079 file.Write("// TODO(gman): %s\n" % func.name)
3071 3080
3072 def WriteBucketValidationCode(self, func, file): 3081 def WriteBucketValidationCode(self, func, file):
3073 """Writes the validation code for a bucket version of a command.""" 3082 """Writes the validation code for a bucket version of a command."""
3074 file.Write("// TODO(gman): %s\n" % func.name) 3083 file.Write("// TODO(gman): %s\n" % func.name)
3075 3084
3076 def WriteGLES2ImplementationDeclaration(self, func, file): 3085 def WriteGLES2ImplementationDeclaration(self, func, file):
3077 """Writes the GLES2 Implemention declaration.""" 3086 """Writes the GLES2 Implemention declaration."""
3078 impl_decl = func.GetInfo('impl_decl') 3087 impl_decl = func.GetInfo('impl_decl')
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
3356 file.Write(" %s = true;\n" % state['state_flag']) 3365 file.Write(" %s = true;\n" % state['state_flag'])
3357 if not func.GetInfo("no_gl"): 3366 if not func.GetInfo("no_gl"):
3358 for ndx,item in enumerate(states): 3367 for ndx,item in enumerate(states):
3359 if item.get('cached', False): 3368 if item.get('cached', False):
3360 file.Write(" state_.%s = %s;\n" % 3369 file.Write(" state_.%s = %s;\n" %
3361 (CachedStateName(item), args[ndx].name)) 3370 (CachedStateName(item), args[ndx].name))
3362 file.Write(" %s(%s);\n" % 3371 file.Write(" %s(%s);\n" %
3363 (func.GetGLFunctionName(), func.MakeOriginalArgString(""))) 3372 (func.GetGLFunctionName(), func.MakeOriginalArgString("")))
3364 file.Write(" }\n") 3373 file.Write(" }\n")
3365 3374
3366 def WriteServiceUnitTest(self, func, file): 3375 def WriteServiceUnitTest(self, func, file, *extras):
3367 """Overrriden from TypeHandler.""" 3376 """Overrriden from TypeHandler."""
3368 TypeHandler.WriteServiceUnitTest(self, func, file) 3377 TypeHandler.WriteServiceUnitTest(self, func, file, *extras)
3369 state_name = func.GetInfo('state') 3378 state_name = func.GetInfo('state')
3370 state = _STATES[state_name] 3379 state = _STATES[state_name]
3371 states = state['states'] 3380 states = state['states']
3372 for ndx,item in enumerate(states): 3381 for ndx,item in enumerate(states):
3373 if 'range_checks' in item: 3382 if 'range_checks' in item:
3374 for check_ndx, range_check in enumerate(item['range_checks']): 3383 for check_ndx, range_check in enumerate(item['range_checks']):
3375 valid_test = """ 3384 valid_test = """
3376 TEST_P(%(test_name)s, %(name)sInvalidValue%(ndx)d_%(check_ndx)d) { 3385 TEST_P(%(test_name)s, %(name)sInvalidValue%(ndx)d_%(check_ndx)d) {
3377 SpecializedSetup<cmds::%(name)s, 0>(false); 3386 SpecializedSetup<cmds::%(name)s, 0>(false);
3378 cmds::%(name)s cmd; 3387 cmds::%(name)s cmd;
3379 cmd.Init(%(args)s); 3388 cmd.Init(%(args)s);
3380 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 3389 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
3381 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 3390 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
3382 } 3391 }
3383 """ 3392 """
3384 name = func.name 3393 name = func.name
3385 arg_strings = [ 3394 arg_strings = [
3386 arg.GetValidArg(func) \ 3395 arg.GetValidArg(func) \
3387 for arg in func.GetOriginalArgs() if not arg.IsConstant() 3396 for arg in func.GetOriginalArgs() if not arg.IsConstant()
3388 ] 3397 ]
3389 3398
3390 arg_strings[ndx] = range_check['test_value'] 3399 arg_strings[ndx] = range_check['test_value']
3391 vars = { 3400 vars = {
3392 'test_name': 'GLES2DecoderTest%d' % file.file_num,
3393 'name': name, 3401 'name': name,
3394 'ndx': ndx, 3402 'ndx': ndx,
3395 'check_ndx': check_ndx, 3403 'check_ndx': check_ndx,
3396 'args': ", ".join(arg_strings), 3404 'args': ", ".join(arg_strings),
3397 } 3405 }
3406 for extra in extras:
3407 vars.update(extra)
3398 file.Write(valid_test % vars) 3408 file.Write(valid_test % vars)
3399 if 'nan_check' in item: 3409 if 'nan_check' in item:
3400 valid_test = """ 3410 valid_test = """
3401 TEST_P(%(test_name)s, %(name)sNaNValue%(ndx)d) { 3411 TEST_P(%(test_name)s, %(name)sNaNValue%(ndx)d) {
3402 SpecializedSetup<cmds::%(name)s, 0>(false); 3412 SpecializedSetup<cmds::%(name)s, 0>(false);
3403 cmds::%(name)s cmd; 3413 cmds::%(name)s cmd;
3404 cmd.Init(%(args)s); 3414 cmd.Init(%(args)s);
3405 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 3415 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
3406 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 3416 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
3407 } 3417 }
3408 """ 3418 """
3409 name = func.name 3419 name = func.name
3410 arg_strings = [ 3420 arg_strings = [
3411 arg.GetValidArg(func) \ 3421 arg.GetValidArg(func) \
3412 for arg in func.GetOriginalArgs() if not arg.IsConstant() 3422 for arg in func.GetOriginalArgs() if not arg.IsConstant()
3413 ] 3423 ]
3414 3424
3415 arg_strings[ndx] = 'nanf("")' 3425 arg_strings[ndx] = 'nanf("")'
3416 vars = { 3426 vars = {
3417 'test_name': 'GLES2DecoderTest%d' % file.file_num,
3418 'name': name, 3427 'name': name,
3419 'ndx': ndx, 3428 'ndx': ndx,
3420 'args': ", ".join(arg_strings), 3429 'args': ", ".join(arg_strings),
3421 } 3430 }
3431 for extra in extras:
3432 vars.update(extra)
3422 file.Write(valid_test % vars) 3433 file.Write(valid_test % vars)
3423 3434
3424 3435
3425 class StateSetRGBAlphaHandler(TypeHandler): 3436 class StateSetRGBAlphaHandler(TypeHandler):
3426 """Handler for commands that simply set state that have rgb/alpha.""" 3437 """Handler for commands that simply set state that have rgb/alpha."""
3427 3438
3428 def __init__(self): 3439 def __init__(self):
3429 TypeHandler.__init__(self) 3440 TypeHandler.__init__(self)
3430 3441
3431 def WriteHandlerImplementation(self, func, file): 3442 def WriteHandlerImplementation(self, func, file):
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
3559 pass 3570 pass
3560 3571
3561 def WriteImmediateServiceImplementation(self, func, file): 3572 def WriteImmediateServiceImplementation(self, func, file):
3562 """Overrriden from TypeHandler.""" 3573 """Overrriden from TypeHandler."""
3563 pass 3574 pass
3564 3575
3565 def WriteBucketServiceImplementation(self, func, file): 3576 def WriteBucketServiceImplementation(self, func, file):
3566 """Overrriden from TypeHandler.""" 3577 """Overrriden from TypeHandler."""
3567 pass 3578 pass
3568 3579
3569 def WriteServiceUnitTest(self, func, file): 3580 def WriteServiceUnitTest(self, func, file, *extras):
3570 """Overrriden from TypeHandler.""" 3581 """Overrriden from TypeHandler."""
3571 file.Write("// TODO(gman): %s\n\n" % func.name) 3582 file.Write("// TODO(gman): %s\n\n" % func.name)
3572 3583
3573 def WriteImmediateServiceUnitTest(self, func, file): 3584 def WriteImmediateServiceUnitTest(self, func, file, *extras):
3574 """Overrriden from TypeHandler.""" 3585 """Overrriden from TypeHandler."""
3575 file.Write("// TODO(gman): %s\n\n" % func.name) 3586 file.Write("// TODO(gman): %s\n\n" % func.name)
3576 3587
3577 def WriteImmediateCmdGetTotalSize(self, func, file): 3588 def WriteImmediateCmdGetTotalSize(self, func, file):
3578 """Overrriden from TypeHandler.""" 3589 """Overrriden from TypeHandler."""
3579 file.Write( 3590 file.Write(
3580 " uint32_t total_size = 0; // TODO(gman): get correct size.\n") 3591 " uint32_t total_size = 0; // TODO(gman): get correct size.\n")
3581 3592
3582 def WriteImmediateCmdInit(self, func, file): 3593 def WriteImmediateCmdInit(self, func, file):
3583 """Overrriden from TypeHandler.""" 3594 """Overrriden from TypeHandler."""
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
3666 return False 3677 return False
3667 3678
3668 def WriteStruct(self, func, file): 3679 def WriteStruct(self, func, file):
3669 """Overrriden from TypeHandler.""" 3680 """Overrriden from TypeHandler."""
3670 pass 3681 pass
3671 3682
3672 def WriteDocs(self, func, file): 3683 def WriteDocs(self, func, file):
3673 """Overrriden from TypeHandler.""" 3684 """Overrriden from TypeHandler."""
3674 pass 3685 pass
3675 3686
3676 def WriteServiceUnitTest(self, func, file): 3687 def WriteServiceUnitTest(self, func, file, *extras):
3677 """Overrriden from TypeHandler.""" 3688 """Overrriden from TypeHandler."""
3678 file.Write("// TODO(gman): %s\n\n" % func.name) 3689 file.Write("// TODO(gman): %s\n\n" % func.name)
3679 3690
3680 def WriteImmediateServiceUnitTest(self, func, file): 3691 def WriteImmediateServiceUnitTest(self, func, file, *extras):
3681 """Overrriden from TypeHandler.""" 3692 """Overrriden from TypeHandler."""
3682 file.Write("// TODO(gman): %s\n\n" % func.name) 3693 file.Write("// TODO(gman): %s\n\n" % func.name)
3683 3694
3684 def WriteBucketServiceUnitTest(self, func, file): 3695 def WriteBucketServiceUnitTest(self, func, file, *extras):
3685 """Overrriden from TypeHandler.""" 3696 """Overrriden from TypeHandler."""
3686 file.Write("// TODO(gman): %s\n\n" % func.name) 3697 file.Write("// TODO(gman): %s\n\n" % func.name)
3687 3698
3688 def WriteServiceImplementation(self, func, file): 3699 def WriteServiceImplementation(self, func, file):
3689 """Overrriden from TypeHandler.""" 3700 """Overrriden from TypeHandler."""
3690 pass 3701 pass
3691 3702
3692 def WriteImmediateServiceImplementation(self, func, file): 3703 def WriteImmediateServiceImplementation(self, func, file):
3693 """Overrriden from TypeHandler.""" 3704 """Overrriden from TypeHandler."""
3694 pass 3705 pass
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
3738 CustomHandler.InitFunction(self, func) 3749 CustomHandler.InitFunction(self, func)
3739 3750
3740 def WriteServiceImplementation(self, func, file): 3751 def WriteServiceImplementation(self, func, file):
3741 """Overrriden from TypeHandler.""" 3752 """Overrriden from TypeHandler."""
3742 pass 3753 pass
3743 3754
3744 def WriteBucketServiceImplementation(self, func, file): 3755 def WriteBucketServiceImplementation(self, func, file):
3745 """Overrriden from TypeHandler.""" 3756 """Overrriden from TypeHandler."""
3746 pass 3757 pass
3747 3758
3748 def WriteServiceUnitTest(self, func, file): 3759 def WriteServiceUnitTest(self, func, file, *extras):
3749 """Overrriden from TypeHandler.""" 3760 """Overrriden from TypeHandler."""
3750 file.Write("// TODO(gman): %s\n\n" % func.name) 3761 file.Write("// TODO(gman): %s\n\n" % func.name)
3751 3762
3752 def WriteImmediateServiceUnitTest(self, func, file): 3763 def WriteImmediateServiceUnitTest(self, func, file, *extras):
3753 """Overrriden from TypeHandler.""" 3764 """Overrriden from TypeHandler."""
3754 file.Write("// TODO(gman): %s\n\n" % func.name) 3765 file.Write("// TODO(gman): %s\n\n" % func.name)
3755 3766
3756 def WriteImmediateServiceImplementation(self, func, file): 3767 def WriteImmediateServiceImplementation(self, func, file):
3757 """Overrriden from TypeHandler.""" 3768 """Overrriden from TypeHandler."""
3758 pass 3769 pass
3759 3770
3760 def WriteImmediateFormatTest(self, func, file): 3771 def WriteImmediateFormatTest(self, func, file):
3761 """Overrriden from TypeHandler.""" 3772 """Overrriden from TypeHandler."""
3762 file.Write("// TODO(gman): Implement test for %s\n" % func.name) 3773 file.Write("// TODO(gman): Implement test for %s\n" % func.name)
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
3848 "cmd, total_size);\n") 3859 "cmd, total_size);\n")
3849 file.Write(" }\n") 3860 file.Write(" }\n")
3850 file.Write("\n") 3861 file.Write("\n")
3851 3862
3852 def WriteImmediateFormatTest(self, func, file): 3863 def WriteImmediateFormatTest(self, func, file):
3853 """Overrriden from TypeHandler.""" 3864 """Overrriden from TypeHandler."""
3854 # TODO(gman): Remove this exception. 3865 # TODO(gman): Remove this exception.
3855 file.Write("// TODO(gman): Implement test for %s\n" % func.name) 3866 file.Write("// TODO(gman): Implement test for %s\n" % func.name)
3856 return 3867 return
3857 3868
3858 def WriteServiceUnitTest(self, func, file): 3869 def WriteServiceUnitTest(self, func, file, *extras):
3859 """Overrriden from TypeHandler.""" 3870 """Overrriden from TypeHandler."""
3860 file.Write("// TODO(gman): %s\n\n" % func.name) 3871 file.Write("// TODO(gman): %s\n\n" % func.name)
3861 3872
3862 def WriteImmediateServiceUnitTest(self, func, file): 3873 def WriteImmediateServiceUnitTest(self, func, file, *extras):
3863 """Overrriden from TypeHandler.""" 3874 """Overrriden from TypeHandler."""
3864 file.Write("// TODO(gman): %s\n\n" % func.name) 3875 file.Write("// TODO(gman): %s\n\n" % func.name)
3865 3876
3866 def WriteBucketServiceImplementation(self, func, file): 3877 def WriteBucketServiceImplementation(self, func, file):
3867 """Overrriden from TypeHandler.""" 3878 """Overrriden from TypeHandler."""
3868 if not func.name == 'CompressedTexSubImage2DBucket': 3879 if not func.name == 'CompressedTexSubImage2DBucket':
3869 TypeHandler.WriteBucketServiceImplemenation(self, func, file) 3880 TypeHandler.WriteBucketServiceImplemenation(self, func, file)
3870 3881
3871 3882
3872 class BindHandler(TypeHandler): 3883 class BindHandler(TypeHandler):
3873 """Handler for glBind___ type functions.""" 3884 """Handler for glBind___ type functions."""
3874 3885
3875 def __init__(self): 3886 def __init__(self):
3876 TypeHandler.__init__(self) 3887 TypeHandler.__init__(self)
3877 3888
3878 def WriteServiceUnitTest(self, func, file): 3889 def WriteServiceUnitTest(self, func, file, *extras):
3879 """Overrriden from TypeHandler.""" 3890 """Overrriden from TypeHandler."""
3880 3891
3881 if len(func.GetOriginalArgs()) == 1: 3892 if len(func.GetOriginalArgs()) == 1:
3882 valid_test = """ 3893 valid_test = """
3883 TEST_P(%(test_name)s, %(name)sValidArgs) { 3894 TEST_P(%(test_name)s, %(name)sValidArgs) {
3884 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)); 3895 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s));
3885 SpecializedSetup<cmds::%(name)s, 0>(true); 3896 SpecializedSetup<cmds::%(name)s, 0>(true);
3886 cmds::%(name)s cmd; 3897 cmds::%(name)s cmd;
3887 cmd.Init(%(args)s); 3898 cmd.Init(%(args)s);
3888 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 3899 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
(...skipping 10 matching lines...) Expand all
3899 cmds::%(name)s cmd; 3910 cmds::%(name)s cmd;
3900 cmd.Init(kNewClientId); 3911 cmd.Init(kNewClientId);
3901 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 3912 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
3902 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 3913 EXPECT_EQ(GL_NO_ERROR, GetGLError());
3903 EXPECT_TRUE(Get%(resource_type)s(kNewClientId) != NULL); 3914 EXPECT_TRUE(Get%(resource_type)s(kNewClientId) != NULL);
3904 } 3915 }
3905 """ 3916 """
3906 self.WriteValidUnitTest(func, file, valid_test, { 3917 self.WriteValidUnitTest(func, file, valid_test, {
3907 'resource_type': func.GetOriginalArgs()[0].resource_type, 3918 'resource_type': func.GetOriginalArgs()[0].resource_type,
3908 'gl_gen_func_name': func.GetInfo("gen_func"), 3919 'gl_gen_func_name': func.GetInfo("gen_func"),
3909 }) 3920 }, *extras)
3910 else: 3921 else:
3911 valid_test = """ 3922 valid_test = """
3912 TEST_P(%(test_name)s, %(name)sValidArgs) { 3923 TEST_P(%(test_name)s, %(name)sValidArgs) {
3913 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)); 3924 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s));
3914 SpecializedSetup<cmds::%(name)s, 0>(true); 3925 SpecializedSetup<cmds::%(name)s, 0>(true);
3915 cmds::%(name)s cmd; 3926 cmds::%(name)s cmd;
3916 cmd.Init(%(args)s); 3927 cmd.Init(%(args)s);
3917 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 3928 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
3918 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 3929 EXPECT_EQ(GL_NO_ERROR, GetGLError());
3919 } 3930 }
(...skipping 10 matching lines...) Expand all
3930 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 3941 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
3931 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 3942 EXPECT_EQ(GL_NO_ERROR, GetGLError());
3932 EXPECT_TRUE(Get%(resource_type)s(kNewClientId) != NULL); 3943 EXPECT_TRUE(Get%(resource_type)s(kNewClientId) != NULL);
3933 } 3944 }
3934 """ 3945 """
3935 self.WriteValidUnitTest(func, file, valid_test, { 3946 self.WriteValidUnitTest(func, file, valid_test, {
3936 'first_arg': func.GetOriginalArgs()[0].GetValidArg(func), 3947 'first_arg': func.GetOriginalArgs()[0].GetValidArg(func),
3937 'first_gl_arg': func.GetOriginalArgs()[0].GetValidGLArg(func), 3948 'first_gl_arg': func.GetOriginalArgs()[0].GetValidGLArg(func),
3938 'resource_type': func.GetOriginalArgs()[1].resource_type, 3949 'resource_type': func.GetOriginalArgs()[1].resource_type,
3939 'gl_gen_func_name': func.GetInfo("gen_func"), 3950 'gl_gen_func_name': func.GetInfo("gen_func"),
3940 }) 3951 }, *extras)
3941 3952
3942 invalid_test = """ 3953 invalid_test = """
3943 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { 3954 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
3944 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); 3955 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0);
3945 SpecializedSetup<cmds::%(name)s, 0>(false); 3956 SpecializedSetup<cmds::%(name)s, 0>(false);
3946 cmds::%(name)s cmd; 3957 cmds::%(name)s cmd;
3947 cmd.Init(%(args)s); 3958 cmd.Init(%(args)s);
3948 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s 3959 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s
3949 } 3960 }
3950 """ 3961 """
3951 self.WriteInvalidUnitTest(func, file, invalid_test) 3962 self.WriteInvalidUnitTest(func, file, invalid_test, *extras)
3952 3963
3953 def WriteGLES2Implementation(self, func, file): 3964 def WriteGLES2Implementation(self, func, file):
3954 """Writes the GLES2 Implemention.""" 3965 """Writes the GLES2 Implemention."""
3955 3966
3956 impl_func = func.GetInfo('impl_func') 3967 impl_func = func.GetInfo('impl_func')
3957 impl_decl = func.GetInfo('impl_decl') 3968 impl_decl = func.GetInfo('impl_decl')
3958 3969
3959 if (func.can_auto_generate and 3970 if (func.can_auto_generate and
3960 (impl_func == None or impl_func == True) and 3971 (impl_func == None or impl_func == True) and
3961 (impl_decl == None or impl_decl == True)): 3972 (impl_decl == None or impl_decl == True)):
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
4128 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 4139 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
4129 EXPECT_EQ(k%(types)sStartId, ids[0]); 4140 EXPECT_EQ(k%(types)sStartId, ids[0]);
4130 EXPECT_EQ(k%(types)sStartId + 1, ids[1]); 4141 EXPECT_EQ(k%(types)sStartId + 1, ids[1]);
4131 } 4142 }
4132 """ 4143 """
4133 file.Write(code % { 4144 file.Write(code % {
4134 'name': func.name, 4145 'name': func.name,
4135 'types': func.GetInfo('resource_types'), 4146 'types': func.GetInfo('resource_types'),
4136 }) 4147 })
4137 4148
4138 def WriteServiceUnitTest(self, func, file): 4149 def WriteServiceUnitTest(self, func, file, *extras):
4139 """Overrriden from TypeHandler.""" 4150 """Overrriden from TypeHandler."""
4140 valid_test = """ 4151 valid_test = """
4141 TEST_P(%(test_name)s, %(name)sValidArgs) { 4152 TEST_P(%(test_name)s, %(name)sValidArgs) {
4142 EXPECT_CALL(*gl_, %(gl_func_name)s(1, _)) 4153 EXPECT_CALL(*gl_, %(gl_func_name)s(1, _))
4143 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 4154 .WillOnce(SetArgumentPointee<1>(kNewServiceId));
4144 GetSharedMemoryAs<GLuint*>()[0] = kNewClientId; 4155 GetSharedMemoryAs<GLuint*>()[0] = kNewClientId;
4145 SpecializedSetup<cmds::%(name)s, 0>(true); 4156 SpecializedSetup<cmds::%(name)s, 0>(true);
4146 cmds::%(name)s cmd; 4157 cmds::%(name)s cmd;
4147 cmd.Init(%(args)s); 4158 cmd.Init(%(args)s);
4148 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 4159 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
4149 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 4160 EXPECT_EQ(GL_NO_ERROR, GetGLError());
4150 EXPECT_TRUE(Get%(resource_name)s(kNewClientId) != NULL); 4161 EXPECT_TRUE(Get%(resource_name)s(kNewClientId) != NULL);
4151 } 4162 }
4152 """ 4163 """
4153 self.WriteValidUnitTest(func, file, valid_test, { 4164 self.WriteValidUnitTest(func, file, valid_test, {
4154 'resource_name': func.GetInfo('resource_type'), 4165 'resource_name': func.GetInfo('resource_type'),
4155 }) 4166 }, *extras)
4156 invalid_test = """ 4167 invalid_test = """
4157 TEST_P(%(test_name)s, %(name)sInvalidArgs) { 4168 TEST_P(%(test_name)s, %(name)sInvalidArgs) {
4158 EXPECT_CALL(*gl_, %(gl_func_name)s(_, _)).Times(0); 4169 EXPECT_CALL(*gl_, %(gl_func_name)s(_, _)).Times(0);
4159 GetSharedMemoryAs<GLuint*>()[0] = client_%(resource_name)s_id_; 4170 GetSharedMemoryAs<GLuint*>()[0] = client_%(resource_name)s_id_;
4160 SpecializedSetup<cmds::%(name)s, 0>(false); 4171 SpecializedSetup<cmds::%(name)s, 0>(false);
4161 cmds::%(name)s cmd; 4172 cmds::%(name)s cmd;
4162 cmd.Init(%(args)s); 4173 cmd.Init(%(args)s);
4163 EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd)); 4174 EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd));
4164 } 4175 }
4165 """ 4176 """
4166 self.WriteValidUnitTest(func, file, invalid_test, { 4177 self.WriteValidUnitTest(func, file, invalid_test, {
4167 'resource_name': func.GetInfo('resource_type').lower(), 4178 'resource_name': func.GetInfo('resource_type').lower(),
4168 }) 4179 }, *extras)
4169 4180
4170 def WriteImmediateServiceUnitTest(self, func, file): 4181 def WriteImmediateServiceUnitTest(self, func, file, *extras):
4171 """Overrriden from TypeHandler.""" 4182 """Overrriden from TypeHandler."""
4172 valid_test = """ 4183 valid_test = """
4173 TEST_P(%(test_name)s, %(name)sValidArgs) { 4184 TEST_P(%(test_name)s, %(name)sValidArgs) {
4174 EXPECT_CALL(*gl_, %(gl_func_name)s(1, _)) 4185 EXPECT_CALL(*gl_, %(gl_func_name)s(1, _))
4175 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 4186 .WillOnce(SetArgumentPointee<1>(kNewServiceId));
4176 cmds::%(name)s* cmd = GetImmediateAs<cmds::%(name)s>(); 4187 cmds::%(name)s* cmd = GetImmediateAs<cmds::%(name)s>();
4177 GLuint temp = kNewClientId; 4188 GLuint temp = kNewClientId;
4178 SpecializedSetup<cmds::%(name)s, 0>(true); 4189 SpecializedSetup<cmds::%(name)s, 0>(true);
4179 cmd->Init(1, &temp); 4190 cmd->Init(1, &temp);
4180 EXPECT_EQ(error::kNoError, 4191 EXPECT_EQ(error::kNoError,
4181 ExecuteImmediateCmd(*cmd, sizeof(temp))); 4192 ExecuteImmediateCmd(*cmd, sizeof(temp)));
4182 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 4193 EXPECT_EQ(GL_NO_ERROR, GetGLError());
4183 EXPECT_TRUE(Get%(resource_name)s(kNewClientId) != NULL); 4194 EXPECT_TRUE(Get%(resource_name)s(kNewClientId) != NULL);
4184 } 4195 }
4185 """ 4196 """
4186 self.WriteValidUnitTest(func, file, valid_test, { 4197 self.WriteValidUnitTest(func, file, valid_test, {
4187 'resource_name': func.GetInfo('resource_type'), 4198 'resource_name': func.GetInfo('resource_type'),
4188 }) 4199 }, *extras)
4189 invalid_test = """ 4200 invalid_test = """
4190 TEST_P(%(test_name)s, %(name)sInvalidArgs) { 4201 TEST_P(%(test_name)s, %(name)sInvalidArgs) {
4191 EXPECT_CALL(*gl_, %(gl_func_name)s(_, _)).Times(0); 4202 EXPECT_CALL(*gl_, %(gl_func_name)s(_, _)).Times(0);
4192 cmds::%(name)s* cmd = GetImmediateAs<cmds::%(name)s>(); 4203 cmds::%(name)s* cmd = GetImmediateAs<cmds::%(name)s>();
4193 SpecializedSetup<cmds::%(name)s, 0>(false); 4204 SpecializedSetup<cmds::%(name)s, 0>(false);
4194 cmd->Init(1, &client_%(resource_name)s_id_); 4205 cmd->Init(1, &client_%(resource_name)s_id_);
4195 EXPECT_EQ(error::kInvalidArguments, 4206 EXPECT_EQ(error::kInvalidArguments,
4196 ExecuteImmediateCmd(*cmd, sizeof(&client_%(resource_name)s_id_))); 4207 ExecuteImmediateCmd(*cmd, sizeof(&client_%(resource_name)s_id_)));
4197 } 4208 }
4198 """ 4209 """
4199 self.WriteValidUnitTest(func, file, invalid_test, { 4210 self.WriteValidUnitTest(func, file, invalid_test, {
4200 'resource_name': func.GetInfo('resource_type').lower(), 4211 'resource_name': func.GetInfo('resource_type').lower(),
4201 }) 4212 }, *extras)
4202 4213
4203 def WriteImmediateCmdComputeSize(self, func, file): 4214 def WriteImmediateCmdComputeSize(self, func, file):
4204 """Overrriden from TypeHandler.""" 4215 """Overrriden from TypeHandler."""
4205 file.Write(" static uint32_t ComputeDataSize(GLsizei n) {\n") 4216 file.Write(" static uint32_t ComputeDataSize(GLsizei n) {\n")
4206 file.Write( 4217 file.Write(
4207 " return static_cast<uint32_t>(sizeof(GLuint) * n); // NOLINT\n") 4218 " return static_cast<uint32_t>(sizeof(GLuint) * n); // NOLINT\n")
4208 file.Write(" }\n") 4219 file.Write(" }\n")
4209 file.Write("\n") 4220 file.Write("\n")
4210 file.Write(" static uint32_t ComputeSize(GLsizei n) {\n") 4221 file.Write(" static uint32_t ComputeSize(GLsizei n) {\n")
4211 file.Write(" return static_cast<uint32_t>(\n") 4222 file.Write(" return static_cast<uint32_t>(\n")
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
4294 class CreateHandler(TypeHandler): 4305 class CreateHandler(TypeHandler):
4295 """Handler for glCreate___ type functions.""" 4306 """Handler for glCreate___ type functions."""
4296 4307
4297 def __init__(self): 4308 def __init__(self):
4298 TypeHandler.__init__(self) 4309 TypeHandler.__init__(self)
4299 4310
4300 def InitFunction(self, func): 4311 def InitFunction(self, func):
4301 """Overrriden from TypeHandler.""" 4312 """Overrriden from TypeHandler."""
4302 func.AddCmdArg(Argument("client_id", 'uint32_t')) 4313 func.AddCmdArg(Argument("client_id", 'uint32_t'))
4303 4314
4304 def WriteServiceUnitTest(self, func, file): 4315 def WriteServiceUnitTest(self, func, file, *extras):
4305 """Overrriden from TypeHandler.""" 4316 """Overrriden from TypeHandler."""
4306 valid_test = """ 4317 valid_test = """
4307 TEST_P(%(test_name)s, %(name)sValidArgs) { 4318 TEST_P(%(test_name)s, %(name)sValidArgs) {
4308 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)) 4319 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s))
4309 .WillOnce(Return(kNewServiceId)); 4320 .WillOnce(Return(kNewServiceId));
4310 SpecializedSetup<cmds::%(name)s, 0>(true); 4321 SpecializedSetup<cmds::%(name)s, 0>(true);
4311 cmds::%(name)s cmd; 4322 cmds::%(name)s cmd;
4312 cmd.Init(%(args)s%(comma)skNewClientId); 4323 cmd.Init(%(args)s%(comma)skNewClientId);
4313 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 4324 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
4314 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 4325 EXPECT_EQ(GL_NO_ERROR, GetGLError());
4315 EXPECT_TRUE(Get%(resource_type)s(kNewClientId) != NULL); 4326 EXPECT_TRUE(Get%(resource_type)s(kNewClientId) != NULL);
4316 } 4327 }
4317 """ 4328 """
4318 comma = "" 4329 comma = ""
4319 if len(func.GetOriginalArgs()): 4330 if len(func.GetOriginalArgs()):
4320 comma =", " 4331 comma =", "
4321 self.WriteValidUnitTest(func, file, valid_test, { 4332 self.WriteValidUnitTest(func, file, valid_test, {
4322 'comma': comma, 4333 'comma': comma,
4323 'resource_type': func.name[6:], 4334 'resource_type': func.name[6:],
4324 }) 4335 }, *extras)
4325 invalid_test = """ 4336 invalid_test = """
4326 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { 4337 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
4327 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); 4338 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0);
4328 SpecializedSetup<cmds::%(name)s, 0>(false); 4339 SpecializedSetup<cmds::%(name)s, 0>(false);
4329 cmds::%(name)s cmd; 4340 cmds::%(name)s cmd;
4330 cmd.Init(%(args)s%(comma)skNewClientId); 4341 cmd.Init(%(args)s%(comma)skNewClientId);
4331 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));%(gl_error_test)s 4342 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));%(gl_error_test)s
4332 } 4343 }
4333 """ 4344 """
4334 self.WriteInvalidUnitTest(func, file, invalid_test, { 4345 self.WriteInvalidUnitTest(func, file, invalid_test, {
4335 'comma': comma, 4346 'comma': comma,
4336 }) 4347 }, *extras)
4337 4348
4338 def WriteHandlerImplementation (self, func, file): 4349 def WriteHandlerImplementation (self, func, file):
4339 """Overrriden from TypeHandler.""" 4350 """Overrriden from TypeHandler."""
4340 file.Write(" uint32_t client_id = c.client_id;\n") 4351 file.Write(" uint32_t client_id = c.client_id;\n")
4341 file.Write(" if (!%sHelper(%s)) {\n" % 4352 file.Write(" if (!%sHelper(%s)) {\n" %
4342 (func.name, func.MakeCmdArgString(""))) 4353 (func.name, func.MakeCmdArgString("")))
4343 file.Write(" return error::kInvalidArguments;\n") 4354 file.Write(" return error::kInvalidArguments;\n")
4344 file.Write(" }\n") 4355 file.Write(" }\n")
4345 4356
4346 def WriteGLES2Implementation(self, func, file): 4357 def WriteGLES2Implementation(self, func, file):
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
4425 expected.data[1] = k%(types)sStartId + 1; 4436 expected.data[1] = k%(types)sStartId + 1;
4426 gl_->%(name)s(arraysize(ids), &ids[0]); 4437 gl_->%(name)s(arraysize(ids), &ids[0]);
4427 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 4438 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
4428 } 4439 }
4429 """ 4440 """
4430 file.Write(code % { 4441 file.Write(code % {
4431 'name': func.name, 4442 'name': func.name,
4432 'types': func.GetInfo('resource_types'), 4443 'types': func.GetInfo('resource_types'),
4433 }) 4444 })
4434 4445
4435 def WriteServiceUnitTest(self, func, file): 4446 def WriteServiceUnitTest(self, func, file, *extras):
4436 """Overrriden from TypeHandler.""" 4447 """Overrriden from TypeHandler."""
4437 valid_test = """ 4448 valid_test = """
4438 TEST_P(%(test_name)s, %(name)sValidArgs) { 4449 TEST_P(%(test_name)s, %(name)sValidArgs) {
4439 EXPECT_CALL( 4450 EXPECT_CALL(
4440 *gl_, 4451 *gl_,
4441 %(gl_func_name)s(1, Pointee(kService%(upper_resource_name)sId))) 4452 %(gl_func_name)s(1, Pointee(kService%(upper_resource_name)sId)))
4442 .Times(1); 4453 .Times(1);
4443 GetSharedMemoryAs<GLuint*>()[0] = client_%(resource_name)s_id_; 4454 GetSharedMemoryAs<GLuint*>()[0] = client_%(resource_name)s_id_;
4444 SpecializedSetup<cmds::%(name)s, 0>(true); 4455 SpecializedSetup<cmds::%(name)s, 0>(true);
4445 cmds::%(name)s cmd; 4456 cmds::%(name)s cmd;
4446 cmd.Init(%(args)s); 4457 cmd.Init(%(args)s);
4447 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 4458 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
4448 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 4459 EXPECT_EQ(GL_NO_ERROR, GetGLError());
4449 EXPECT_TRUE( 4460 EXPECT_TRUE(
4450 Get%(upper_resource_name)s(client_%(resource_name)s_id_) == NULL); 4461 Get%(upper_resource_name)s(client_%(resource_name)s_id_) == NULL);
4451 } 4462 }
4452 """ 4463 """
4453 self.WriteValidUnitTest(func, file, valid_test, { 4464 self.WriteValidUnitTest(func, file, valid_test, {
4454 'resource_name': func.GetInfo('resource_type').lower(), 4465 'resource_name': func.GetInfo('resource_type').lower(),
4455 'upper_resource_name': func.GetInfo('resource_type'), 4466 'upper_resource_name': func.GetInfo('resource_type'),
4456 }) 4467 }, *extras)
4457 invalid_test = """ 4468 invalid_test = """
4458 TEST_P(%(test_name)s, %(name)sInvalidArgs) { 4469 TEST_P(%(test_name)s, %(name)sInvalidArgs) {
4459 GetSharedMemoryAs<GLuint*>()[0] = kInvalidClientId; 4470 GetSharedMemoryAs<GLuint*>()[0] = kInvalidClientId;
4460 SpecializedSetup<cmds::%(name)s, 0>(false); 4471 SpecializedSetup<cmds::%(name)s, 0>(false);
4461 cmds::%(name)s cmd; 4472 cmds::%(name)s cmd;
4462 cmd.Init(%(args)s); 4473 cmd.Init(%(args)s);
4463 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 4474 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
4464 } 4475 }
4465 """ 4476 """
4466 self.WriteValidUnitTest(func, file, invalid_test) 4477 self.WriteValidUnitTest(func, file, invalid_test, *extras)
4467 4478
4468 def WriteImmediateServiceUnitTest(self, func, file): 4479 def WriteImmediateServiceUnitTest(self, func, file, *extras):
4469 """Overrriden from TypeHandler.""" 4480 """Overrriden from TypeHandler."""
4470 valid_test = """ 4481 valid_test = """
4471 TEST_P(%(test_name)s, %(name)sValidArgs) { 4482 TEST_P(%(test_name)s, %(name)sValidArgs) {
4472 EXPECT_CALL( 4483 EXPECT_CALL(
4473 *gl_, 4484 *gl_,
4474 %(gl_func_name)s(1, Pointee(kService%(upper_resource_name)sId))) 4485 %(gl_func_name)s(1, Pointee(kService%(upper_resource_name)sId)))
4475 .Times(1); 4486 .Times(1);
4476 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); 4487 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>();
4477 SpecializedSetup<cmds::%(name)s, 0>(true); 4488 SpecializedSetup<cmds::%(name)s, 0>(true);
4478 cmd.Init(1, &client_%(resource_name)s_id_); 4489 cmd.Init(1, &client_%(resource_name)s_id_);
4479 EXPECT_EQ(error::kNoError, 4490 EXPECT_EQ(error::kNoError,
4480 ExecuteImmediateCmd(cmd, sizeof(client_%(resource_name)s_id_))); 4491 ExecuteImmediateCmd(cmd, sizeof(client_%(resource_name)s_id_)));
4481 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 4492 EXPECT_EQ(GL_NO_ERROR, GetGLError());
4482 EXPECT_TRUE( 4493 EXPECT_TRUE(
4483 Get%(upper_resource_name)s(client_%(resource_name)s_id_) == NULL); 4494 Get%(upper_resource_name)s(client_%(resource_name)s_id_) == NULL);
4484 } 4495 }
4485 """ 4496 """
4486 self.WriteValidUnitTest(func, file, valid_test, { 4497 self.WriteValidUnitTest(func, file, valid_test, {
4487 'resource_name': func.GetInfo('resource_type').lower(), 4498 'resource_name': func.GetInfo('resource_type').lower(),
4488 'upper_resource_name': func.GetInfo('resource_type'), 4499 'upper_resource_name': func.GetInfo('resource_type'),
4489 }) 4500 }, *extras)
4490 invalid_test = """ 4501 invalid_test = """
4491 TEST_P(%(test_name)s, %(name)sInvalidArgs) { 4502 TEST_P(%(test_name)s, %(name)sInvalidArgs) {
4492 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); 4503 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>();
4493 SpecializedSetup<cmds::%(name)s, 0>(false); 4504 SpecializedSetup<cmds::%(name)s, 0>(false);
4494 GLuint temp = kInvalidClientId; 4505 GLuint temp = kInvalidClientId;
4495 cmd.Init(1, &temp); 4506 cmd.Init(1, &temp);
4496 EXPECT_EQ(error::kNoError, 4507 EXPECT_EQ(error::kNoError,
4497 ExecuteImmediateCmd(cmd, sizeof(temp))); 4508 ExecuteImmediateCmd(cmd, sizeof(temp)));
4498 } 4509 }
4499 """ 4510 """
4500 self.WriteValidUnitTest(func, file, invalid_test) 4511 self.WriteValidUnitTest(func, file, invalid_test, *extras)
4501 4512
4502 def WriteHandlerImplementation (self, func, file): 4513 def WriteHandlerImplementation (self, func, file):
4503 """Overrriden from TypeHandler.""" 4514 """Overrriden from TypeHandler."""
4504 file.Write(" %sHelper(n, %s);\n" % 4515 file.Write(" %sHelper(n, %s);\n" %
4505 (func.name, func.GetLastOriginalArg().name)) 4516 (func.name, func.GetLastOriginalArg().name))
4506 4517
4507 def WriteImmediateHandlerImplementation (self, func, file): 4518 def WriteImmediateHandlerImplementation (self, func, file):
4508 """Overrriden from TypeHandler.""" 4519 """Overrriden from TypeHandler."""
4509 file.Write(" %sHelper(n, %s);\n" % 4520 file.Write(" %sHelper(n, %s);\n" %
4510 (func.original_name, func.GetLastOriginalArg().name)) 4521 (func.original_name, func.GetLastOriginalArg().name))
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
4780 gl_arg_strings = [first_gl_arg] 4791 gl_arg_strings = [first_gl_arg]
4781 for arg in func.GetOriginalArgs()[1:-1]: 4792 for arg in func.GetOriginalArgs()[1:-1]:
4782 gl_arg_strings.append(arg.GetValidClientSideArg(func)) 4793 gl_arg_strings.append(arg.GetValidClientSideArg(func))
4783 4794
4784 file.Write(code % { 4795 file.Write(code % {
4785 'name': func.name, 4796 'name': func.name,
4786 'args': ", ".join(gl_arg_strings), 4797 'args': ", ".join(gl_arg_strings),
4787 'cmd_args': ", ".join(cmd_arg_strings), 4798 'cmd_args': ", ".join(cmd_arg_strings),
4788 }) 4799 })
4789 4800
4790 def WriteServiceUnitTest(self, func, file): 4801 def WriteServiceUnitTest(self, func, file, *extras):
4791 """Overrriden from TypeHandler.""" 4802 """Overrriden from TypeHandler."""
4792 valid_test = """ 4803 valid_test = """
4793 TEST_P(%(test_name)s, %(name)sValidArgs) { 4804 TEST_P(%(test_name)s, %(name)sValidArgs) {
4794 EXPECT_CALL(*gl_, GetError()) 4805 EXPECT_CALL(*gl_, GetError())
4795 .WillOnce(Return(GL_NO_ERROR)) 4806 .WillOnce(Return(GL_NO_ERROR))
4796 .WillOnce(Return(GL_NO_ERROR)) 4807 .WillOnce(Return(GL_NO_ERROR))
4797 .RetiresOnSaturation(); 4808 .RetiresOnSaturation();
4798 SpecializedSetup<cmds::%(name)s, 0>(true); 4809 SpecializedSetup<cmds::%(name)s, 0>(true);
4799 typedef cmds::%(name)s::Result Result; 4810 typedef cmds::%(name)s::Result Result;
4800 Result* result = static_cast<Result*>(shared_memory_address_); 4811 Result* result = static_cast<Result*>(shared_memory_address_);
(...skipping 16 matching lines...) Expand all
4817 if arg.name == 'pname': 4828 if arg.name == 'pname':
4818 valid_pname = arg_value 4829 valid_pname = arg_value
4819 if func.GetInfo('gl_test_func') == 'glGetIntegerv': 4830 if func.GetInfo('gl_test_func') == 'glGetIntegerv':
4820 gl_arg_strings.append("_") 4831 gl_arg_strings.append("_")
4821 else: 4832 else:
4822 gl_arg_strings.append("result->GetData()") 4833 gl_arg_strings.append("result->GetData()")
4823 4834
4824 self.WriteValidUnitTest(func, file, valid_test, { 4835 self.WriteValidUnitTest(func, file, valid_test, {
4825 'local_gl_args': ", ".join(gl_arg_strings), 4836 'local_gl_args': ", ".join(gl_arg_strings),
4826 'valid_pname': valid_pname, 4837 'valid_pname': valid_pname,
4827 }) 4838 }, *extras)
4828 4839
4829 invalid_test = """ 4840 invalid_test = """
4830 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { 4841 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
4831 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); 4842 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0);
4832 SpecializedSetup<cmds::%(name)s, 0>(false); 4843 SpecializedSetup<cmds::%(name)s, 0>(false);
4833 cmds::%(name)s::Result* result = 4844 cmds::%(name)s::Result* result =
4834 static_cast<cmds::%(name)s::Result*>(shared_memory_address_); 4845 static_cast<cmds::%(name)s::Result*>(shared_memory_address_);
4835 result->size = 0; 4846 result->size = 0;
4836 cmds::%(name)s cmd; 4847 cmds::%(name)s cmd;
4837 cmd.Init(%(args)s); 4848 cmd.Init(%(args)s);
4838 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd)); 4849 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));
4839 EXPECT_EQ(0u, result->size);%(gl_error_test)s 4850 EXPECT_EQ(0u, result->size);%(gl_error_test)s
4840 } 4851 }
4841 """ 4852 """
4842 self.WriteInvalidUnitTest(func, file, invalid_test) 4853 self.WriteInvalidUnitTest(func, file, invalid_test, *extras)
4843 4854
4844 class ArrayArgTypeHandler(TypeHandler): 4855 class ArrayArgTypeHandler(TypeHandler):
4845 """Base class for type handlers that handle args that are arrays""" 4856 """Base class for type handlers that handle args that are arrays"""
4846 4857
4847 def __init__(self): 4858 def __init__(self):
4848 TypeHandler.__init__(self) 4859 TypeHandler.__init__(self)
4849 4860
4850 def GetArrayType(self, func): 4861 def GetArrayType(self, func):
4851 """Returns the type of the element in the element array being PUT to.""" 4862 """Returns the type of the element in the element array being PUT to."""
4852 for arg in func.GetOriginalArgs(): 4863 for arg in func.GetOriginalArgs():
(...skipping 11 matching lines...) Expand all
4864 def GetArrayCount(self, func): 4875 def GetArrayCount(self, func):
4865 """Returns the count of the elements in the array being PUT to.""" 4876 """Returns the count of the elements in the array being PUT to."""
4866 return func.GetInfo('count') 4877 return func.GetInfo('count')
4867 4878
4868 class PUTHandler(ArrayArgTypeHandler): 4879 class PUTHandler(ArrayArgTypeHandler):
4869 """Handler for glTexParameter_v, glVertexAttrib_v functions.""" 4880 """Handler for glTexParameter_v, glVertexAttrib_v functions."""
4870 4881
4871 def __init__(self): 4882 def __init__(self):
4872 ArrayArgTypeHandler.__init__(self) 4883 ArrayArgTypeHandler.__init__(self)
4873 4884
4874 def WriteServiceUnitTest(self, func, file): 4885 def WriteServiceUnitTest(self, func, file, *extras):
4875 """Writes the service unit test for a command.""" 4886 """Writes the service unit test for a command."""
4876 expected_call = "EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s));" 4887 expected_call = "EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s));"
4877 if func.GetInfo("first_element_only"): 4888 if func.GetInfo("first_element_only"):
4878 gl_arg_strings = [ 4889 gl_arg_strings = [
4879 arg.GetValidGLArg(func) for arg in func.GetOriginalArgs() 4890 arg.GetValidGLArg(func) for arg in func.GetOriginalArgs()
4880 ] 4891 ]
4881 gl_arg_strings[-1] = "*" + gl_arg_strings[-1] 4892 gl_arg_strings[-1] = "*" + gl_arg_strings[-1]
4882 expected_call = ("EXPECT_CALL(*gl_, %%(gl_func_name)s(%s));" % 4893 expected_call = ("EXPECT_CALL(*gl_, %%(gl_func_name)s(%s));" %
4883 ", ".join(gl_arg_strings)) 4894 ", ".join(gl_arg_strings))
4884 valid_test = """ 4895 valid_test = """
4885 TEST_P(%(test_name)s, %(name)sValidArgs) { 4896 TEST_P(%(test_name)s, %(name)sValidArgs) {
4886 SpecializedSetup<cmds::%(name)s, 0>(true); 4897 SpecializedSetup<cmds::%(name)s, 0>(true);
4887 cmds::%(name)s cmd; 4898 cmds::%(name)s cmd;
4888 cmd.Init(%(args)s); 4899 cmd.Init(%(args)s);
4889 GetSharedMemoryAs<%(data_type)s*>()[0] = %(data_value)s; 4900 GetSharedMemoryAs<%(data_type)s*>()[0] = %(data_value)s;
4890 %(expected_call)s 4901 %(expected_call)s
4891 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 4902 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
4892 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 4903 EXPECT_EQ(GL_NO_ERROR, GetGLError());
4893 } 4904 }
4894 """ 4905 """
4895 extra = { 4906 extra = {
4896 'data_type': self.GetArrayType(func), 4907 'data_type': self.GetArrayType(func),
4897 'data_value': func.GetInfo('data_value') or '0', 4908 'data_value': func.GetInfo('data_value') or '0',
4898 'expected_call': expected_call, 4909 'expected_call': expected_call,
4899 } 4910 }
4900 self.WriteValidUnitTest(func, file, valid_test, extra) 4911 self.WriteValidUnitTest(func, file, valid_test, extra, *extras)
4901 4912
4902 invalid_test = """ 4913 invalid_test = """
4903 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { 4914 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
4904 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); 4915 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0);
4905 SpecializedSetup<cmds::%(name)s, 0>(false); 4916 SpecializedSetup<cmds::%(name)s, 0>(false);
4906 cmds::%(name)s cmd; 4917 cmds::%(name)s cmd;
4907 cmd.Init(%(args)s); 4918 cmd.Init(%(args)s);
4908 GetSharedMemoryAs<%(data_type)s*>()[0] = %(data_value)s; 4919 GetSharedMemoryAs<%(data_type)s*>()[0] = %(data_value)s;
4909 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s 4920 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s
4910 } 4921 }
4911 """ 4922 """
4912 self.WriteInvalidUnitTest(func, file, invalid_test, extra) 4923 self.WriteInvalidUnitTest(func, file, invalid_test, extra, *extras)
4913 4924
4914 def WriteImmediateServiceUnitTest(self, func, file): 4925 def WriteImmediateServiceUnitTest(self, func, file, *extras):
4915 """Writes the service unit test for a command.""" 4926 """Writes the service unit test for a command."""
4916 valid_test = """ 4927 valid_test = """
4917 TEST_P(%(test_name)s, %(name)sValidArgs) { 4928 TEST_P(%(test_name)s, %(name)sValidArgs) {
4918 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); 4929 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>();
4919 SpecializedSetup<cmds::%(name)s, 0>(true); 4930 SpecializedSetup<cmds::%(name)s, 0>(true);
4920 %(data_type)s temp[%(data_count)s] = { %(data_value)s, }; 4931 %(data_type)s temp[%(data_count)s] = { %(data_value)s, };
4921 cmd.Init(%(gl_args)s, &temp[0]); 4932 cmd.Init(%(gl_args)s, &temp[0]);
4922 EXPECT_CALL( 4933 EXPECT_CALL(
4923 *gl_, 4934 *gl_,
4924 %(gl_func_name)s(%(gl_args)s, %(data_ref)sreinterpret_cast< 4935 %(gl_func_name)s(%(gl_args)s, %(data_ref)sreinterpret_cast<
4925 %(data_type)s*>(ImmediateDataAddress(&cmd)))); 4936 %(data_type)s*>(ImmediateDataAddress(&cmd))));
4926 EXPECT_EQ(error::kNoError, 4937 EXPECT_EQ(error::kNoError,
4927 ExecuteImmediateCmd(cmd, sizeof(temp))); 4938 ExecuteImmediateCmd(cmd, sizeof(temp)));
4928 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 4939 EXPECT_EQ(GL_NO_ERROR, GetGLError());
4929 } 4940 }
4930 """ 4941 """
4931 gl_arg_strings = [ 4942 gl_arg_strings = [
4932 arg.GetValidGLArg(func) for arg in func.GetOriginalArgs()[0:-1] 4943 arg.GetValidGLArg(func) for arg in func.GetOriginalArgs()[0:-1]
4933 ] 4944 ]
4934 gl_any_strings = ["_"] * len(gl_arg_strings) 4945 gl_any_strings = ["_"] * len(gl_arg_strings)
4935 4946
4936 extra = { 4947 extra = {
4937 'data_ref': ("*" if func.GetInfo('first_element_only') else ""), 4948 'data_ref': ("*" if func.GetInfo('first_element_only') else ""),
4938 'data_type': self.GetArrayType(func), 4949 'data_type': self.GetArrayType(func),
4939 'data_count': self.GetArrayCount(func), 4950 'data_count': self.GetArrayCount(func),
4940 'data_value': func.GetInfo('data_value') or '0', 4951 'data_value': func.GetInfo('data_value') or '0',
4941 'gl_args': ", ".join(gl_arg_strings), 4952 'gl_args': ", ".join(gl_arg_strings),
4942 'gl_any_args': ", ".join(gl_any_strings), 4953 'gl_any_args': ", ".join(gl_any_strings),
4943 } 4954 }
4944 self.WriteValidUnitTest(func, file, valid_test, extra) 4955 self.WriteValidUnitTest(func, file, valid_test, extra, *extras)
4945 4956
4946 invalid_test = """ 4957 invalid_test = """
4947 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { 4958 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
4948 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); 4959 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>();
4949 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_any_args)s, _)).Times(0); 4960 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_any_args)s, _)).Times(0);
4950 SpecializedSetup<cmds::%(name)s, 0>(false); 4961 SpecializedSetup<cmds::%(name)s, 0>(false);
4951 %(data_type)s temp[%(data_count)s] = { %(data_value)s, }; 4962 %(data_type)s temp[%(data_count)s] = { %(data_value)s, };
4952 cmd.Init(%(all_but_last_args)s, &temp[0]); 4963 cmd.Init(%(all_but_last_args)s, &temp[0]);
4953 EXPECT_EQ(error::%(parse_result)s, 4964 EXPECT_EQ(error::%(parse_result)s,
4954 ExecuteImmediateCmd(cmd, sizeof(temp)));%(gl_error_test)s 4965 ExecuteImmediateCmd(cmd, sizeof(temp)));%(gl_error_test)s
4955 } 4966 }
4956 """ 4967 """
4957 self.WriteInvalidUnitTest(func, file, invalid_test, extra) 4968 self.WriteInvalidUnitTest(func, file, invalid_test, extra, *extras)
4958 4969
4959 def WriteGetDataSizeCode(self, func, file): 4970 def WriteGetDataSizeCode(self, func, file):
4960 """Overrriden from TypeHandler.""" 4971 """Overrriden from TypeHandler."""
4961 code = """ uint32_t data_size; 4972 code = """ uint32_t data_size;
4962 if (!ComputeDataSize(1, sizeof(%s), %d, &data_size)) { 4973 if (!ComputeDataSize(1, sizeof(%s), %d, &data_size)) {
4963 return error::kOutOfBounds; 4974 return error::kOutOfBounds;
4964 } 4975 }
4965 """ 4976 """
4966 file.Write(code % (self.GetArrayType(func), self.GetArrayCount(func))) 4977 file.Write(code % (self.GetArrayType(func), self.GetArrayCount(func)))
4967 if func.IsImmediate(): 4978 if func.IsImmediate():
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
5135 file.Write("}\n") 5146 file.Write("}\n")
5136 file.Write("\n") 5147 file.Write("\n")
5137 5148
5138 5149
5139 class PUTnHandler(ArrayArgTypeHandler): 5150 class PUTnHandler(ArrayArgTypeHandler):
5140 """Handler for PUTn 'glUniform__v' type functions.""" 5151 """Handler for PUTn 'glUniform__v' type functions."""
5141 5152
5142 def __init__(self): 5153 def __init__(self):
5143 ArrayArgTypeHandler.__init__(self) 5154 ArrayArgTypeHandler.__init__(self)
5144 5155
5145 def WriteServiceUnitTest(self, func, file): 5156 def WriteServiceUnitTest(self, func, file, *extras):
5146 """Overridden from TypeHandler.""" 5157 """Overridden from TypeHandler."""
5147 ArrayArgTypeHandler.WriteServiceUnitTest(self, func, file) 5158 ArrayArgTypeHandler.WriteServiceUnitTest(self, func, file, *extras)
5148 5159
5149 valid_test = """ 5160 valid_test = """
5150 TEST_P(%(test_name)s, %(name)sValidArgsCountTooLarge) { 5161 TEST_P(%(test_name)s, %(name)sValidArgsCountTooLarge) {
5151 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)); 5162 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s));
5152 SpecializedSetup<cmds::%(name)s, 0>(true); 5163 SpecializedSetup<cmds::%(name)s, 0>(true);
5153 cmds::%(name)s cmd; 5164 cmds::%(name)s cmd;
5154 cmd.Init(%(args)s); 5165 cmd.Init(%(args)s);
5155 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 5166 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
5156 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 5167 EXPECT_EQ(GL_NO_ERROR, GetGLError());
5157 } 5168 }
(...skipping 13 matching lines...) Expand all
5171 # the number of elements requested in the command. 5182 # the number of elements requested in the command.
5172 arg_strings.append("5") 5183 arg_strings.append("5")
5173 else: 5184 else:
5174 gl_arg_strings.append(arg.GetValidGLArg(func)) 5185 gl_arg_strings.append(arg.GetValidGLArg(func))
5175 if not arg.IsConstant(): 5186 if not arg.IsConstant():
5176 arg_strings.append(arg.GetValidArg(func)) 5187 arg_strings.append(arg.GetValidArg(func))
5177 extra = { 5188 extra = {
5178 'gl_args': ", ".join(gl_arg_strings), 5189 'gl_args': ", ".join(gl_arg_strings),
5179 'args': ", ".join(arg_strings), 5190 'args': ", ".join(arg_strings),
5180 } 5191 }
5181 self.WriteValidUnitTest(func, file, valid_test, extra) 5192 self.WriteValidUnitTest(func, file, valid_test, extra, *extras)
5182 5193
5183 def WriteImmediateServiceUnitTest(self, func, file): 5194 def WriteImmediateServiceUnitTest(self, func, file, *extras):
5184 """Overridden from TypeHandler.""" 5195 """Overridden from TypeHandler."""
5185 valid_test = """ 5196 valid_test = """
5186 TEST_P(%(test_name)s, %(name)sValidArgs) { 5197 TEST_P(%(test_name)s, %(name)sValidArgs) {
5187 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); 5198 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>();
5188 EXPECT_CALL( 5199 EXPECT_CALL(
5189 *gl_, 5200 *gl_,
5190 %(gl_func_name)s(%(gl_args)s, 5201 %(gl_func_name)s(%(gl_args)s,
5191 reinterpret_cast<%(data_type)s*>(ImmediateDataAddress(&cmd)))); 5202 reinterpret_cast<%(data_type)s*>(ImmediateDataAddress(&cmd))));
5192 SpecializedSetup<cmds::%(name)s, 0>(true); 5203 SpecializedSetup<cmds::%(name)s, 0>(true);
5193 %(data_type)s temp[%(data_count)s * 2] = { 0, }; 5204 %(data_type)s temp[%(data_count)s * 2] = { 0, };
(...skipping 11 matching lines...) Expand all
5205 gl_any_strings.append("_") 5216 gl_any_strings.append("_")
5206 if not arg.IsConstant(): 5217 if not arg.IsConstant():
5207 arg_strings.append(arg.GetValidArg(func)) 5218 arg_strings.append(arg.GetValidArg(func))
5208 extra = { 5219 extra = {
5209 'data_type': self.GetArrayType(func), 5220 'data_type': self.GetArrayType(func),
5210 'data_count': self.GetArrayCount(func), 5221 'data_count': self.GetArrayCount(func),
5211 'args': ", ".join(arg_strings), 5222 'args': ", ".join(arg_strings),
5212 'gl_args': ", ".join(gl_arg_strings), 5223 'gl_args': ", ".join(gl_arg_strings),
5213 'gl_any_args': ", ".join(gl_any_strings), 5224 'gl_any_args': ", ".join(gl_any_strings),
5214 } 5225 }
5215 self.WriteValidUnitTest(func, file, valid_test, extra) 5226 self.WriteValidUnitTest(func, file, valid_test, extra, *extras)
5216 5227
5217 invalid_test = """ 5228 invalid_test = """
5218 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { 5229 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
5219 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); 5230 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>();
5220 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_any_args)s, _)).Times(0); 5231 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_any_args)s, _)).Times(0);
5221 SpecializedSetup<cmds::%(name)s, 0>(false); 5232 SpecializedSetup<cmds::%(name)s, 0>(false);
5222 %(data_type)s temp[%(data_count)s * 2] = { 0, }; 5233 %(data_type)s temp[%(data_count)s * 2] = { 0, };
5223 cmd.Init(%(all_but_last_args)s, &temp[0]); 5234 cmd.Init(%(all_but_last_args)s, &temp[0]);
5224 EXPECT_EQ(error::%(parse_result)s, 5235 EXPECT_EQ(error::%(parse_result)s,
5225 ExecuteImmediateCmd(cmd, sizeof(temp)));%(gl_error_test)s 5236 ExecuteImmediateCmd(cmd, sizeof(temp)));%(gl_error_test)s
5226 } 5237 }
5227 """ 5238 """
5228 self.WriteInvalidUnitTest(func, file, invalid_test, extra) 5239 self.WriteInvalidUnitTest(func, file, invalid_test, extra, *extras)
5229 5240
5230 def WriteGetDataSizeCode(self, func, file): 5241 def WriteGetDataSizeCode(self, func, file):
5231 """Overrriden from TypeHandler.""" 5242 """Overrriden from TypeHandler."""
5232 code = """ uint32_t data_size; 5243 code = """ uint32_t data_size;
5233 if (!ComputeDataSize(count, sizeof(%s), %d, &data_size)) { 5244 if (!ComputeDataSize(count, sizeof(%s), %d, &data_size)) {
5234 return error::kOutOfBounds; 5245 return error::kOutOfBounds;
5235 } 5246 }
5236 """ 5247 """
5237 file.Write(code % (self.GetArrayType(func), self.GetArrayCount(func))) 5248 file.Write(code % (self.GetArrayType(func), self.GetArrayCount(func)))
5238 if func.IsImmediate(): 5249 if func.IsImmediate():
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
5480 5491
5481 file.Write(code % { 5492 file.Write(code % {
5482 'name': func.name, 5493 'name': func.name,
5483 'count': self.GetArrayCount(func), 5494 'count': self.GetArrayCount(func),
5484 'type': self.GetArrayType(func), 5495 'type': self.GetArrayType(func),
5485 'location': args[0].name, 5496 'location': args[0].name,
5486 'args': func.MakeOriginalArgString(""), 5497 'args': func.MakeOriginalArgString(""),
5487 'values': values, 5498 'values': values,
5488 }) 5499 })
5489 5500
5490 def WriteServiceUnitTest(self, func, file): 5501 def WriteServiceUnitTest(self, func, file, *extras):
5491 """Overrriden from TypeHandler.""" 5502 """Overrriden from TypeHandler."""
5492 valid_test = """ 5503 valid_test = """
5493 TEST_P(%(test_name)s, %(name)sValidArgs) { 5504 TEST_P(%(test_name)s, %(name)sValidArgs) {
5494 EXPECT_CALL(*gl_, %(name)sv(%(local_args)s)); 5505 EXPECT_CALL(*gl_, %(name)sv(%(local_args)s));
5495 SpecializedSetup<cmds::%(name)s, 0>(true); 5506 SpecializedSetup<cmds::%(name)s, 0>(true);
5496 cmds::%(name)s cmd; 5507 cmds::%(name)s cmd;
5497 cmd.Init(%(args)s); 5508 cmd.Init(%(args)s);
5498 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 5509 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
5499 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 5510 EXPECT_EQ(GL_NO_ERROR, GetGLError());
5500 } 5511 }
5501 """ 5512 """
5502 args = func.GetOriginalArgs() 5513 args = func.GetOriginalArgs()
5503 local_args = "%s, 1, _" % args[0].GetValidGLArg(func) 5514 local_args = "%s, 1, _" % args[0].GetValidGLArg(func)
5504 self.WriteValidUnitTest(func, file, valid_test, { 5515 self.WriteValidUnitTest(func, file, valid_test, {
5505 'name': func.name, 5516 'name': func.name,
5506 'count': self.GetArrayCount(func), 5517 'count': self.GetArrayCount(func),
5507 'local_args': local_args, 5518 'local_args': local_args,
5508 }) 5519 }, *extras)
5509 5520
5510 invalid_test = """ 5521 invalid_test = """
5511 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { 5522 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
5512 EXPECT_CALL(*gl_, %(name)sv(_, _, _).Times(0); 5523 EXPECT_CALL(*gl_, %(name)sv(_, _, _).Times(0);
5513 SpecializedSetup<cmds::%(name)s, 0>(false); 5524 SpecializedSetup<cmds::%(name)s, 0>(false);
5514 cmds::%(name)s cmd; 5525 cmds::%(name)s cmd;
5515 cmd.Init(%(args)s); 5526 cmd.Init(%(args)s);
5516 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s 5527 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s
5517 } 5528 }
5518 """ 5529 """
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
5689 def __init__(self): 5700 def __init__(self):
5690 TypeHandler.__init__(self) 5701 TypeHandler.__init__(self)
5691 5702
5692 def InitFunction(self, func): 5703 def InitFunction(self, func):
5693 """Overrriden from TypeHandler.""" 5704 """Overrriden from TypeHandler."""
5694 func.AddCmdArg(Argument("result_shm_id", 'uint32_t')) 5705 func.AddCmdArg(Argument("result_shm_id", 'uint32_t'))
5695 func.AddCmdArg(Argument("result_shm_offset", 'uint32_t')) 5706 func.AddCmdArg(Argument("result_shm_offset", 'uint32_t'))
5696 if func.GetInfo('result') == None: 5707 if func.GetInfo('result') == None:
5697 func.AddInfo('result', ['uint32_t']) 5708 func.AddInfo('result', ['uint32_t'])
5698 5709
5699 def WriteServiceUnitTest(self, func, file): 5710 def WriteServiceUnitTest(self, func, file, *extras):
5700 """Overrriden from TypeHandler.""" 5711 """Overrriden from TypeHandler."""
5701 valid_test = """ 5712 valid_test = """
5702 TEST_P(%(test_name)s, %(name)sValidArgs) { 5713 TEST_P(%(test_name)s, %(name)sValidArgs) {
5703 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)); 5714 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s));
5704 SpecializedSetup<cmds::%(name)s, 0>(true); 5715 SpecializedSetup<cmds::%(name)s, 0>(true);
5705 cmds::%(name)s cmd; 5716 cmds::%(name)s cmd;
5706 cmd.Init(%(args)s%(comma)sshared_memory_id_, shared_memory_offset_); 5717 cmd.Init(%(args)s%(comma)sshared_memory_id_, shared_memory_offset_);
5707 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 5718 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
5708 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 5719 EXPECT_EQ(GL_NO_ERROR, GetGLError());
5709 } 5720 }
5710 """ 5721 """
5711 comma = "" 5722 comma = ""
5712 if len(func.GetOriginalArgs()): 5723 if len(func.GetOriginalArgs()):
5713 comma =", " 5724 comma =", "
5714 self.WriteValidUnitTest(func, file, valid_test, { 5725 self.WriteValidUnitTest(func, file, valid_test, {
5715 'comma': comma, 5726 'comma': comma,
5716 }) 5727 }, *extras)
5717 5728
5718 invalid_test = """ 5729 invalid_test = """
5719 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { 5730 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
5720 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); 5731 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0);
5721 SpecializedSetup<cmds::%(name)s, 0>(false); 5732 SpecializedSetup<cmds::%(name)s, 0>(false);
5722 cmds::%(name)s cmd; 5733 cmds::%(name)s cmd;
5723 cmd.Init(%(args)s%(comma)sshared_memory_id_, shared_memory_offset_); 5734 cmd.Init(%(args)s%(comma)sshared_memory_id_, shared_memory_offset_);
5724 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s 5735 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s
5725 } 5736 }
5726 """ 5737 """
5727 self.WriteInvalidUnitTest(func, file, invalid_test, { 5738 self.WriteInvalidUnitTest(func, file, invalid_test, {
5728 'comma': comma, 5739 'comma': comma,
5729 }) 5740 }, *extras)
5730 5741
5731 invalid_test = """ 5742 invalid_test = """
5732 TEST_P(%(test_name)s, %(name)sInvalidArgsBadSharedMemoryId) { 5743 TEST_P(%(test_name)s, %(name)sInvalidArgsBadSharedMemoryId) {
5733 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); 5744 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0);
5734 SpecializedSetup<cmds::%(name)s, 0>(false); 5745 SpecializedSetup<cmds::%(name)s, 0>(false);
5735 cmds::%(name)s cmd; 5746 cmds::%(name)s cmd;
5736 cmd.Init(%(args)s%(comma)skInvalidSharedMemoryId, shared_memory_offset_); 5747 cmd.Init(%(args)s%(comma)skInvalidSharedMemoryId, shared_memory_offset_);
5737 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 5748 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
5738 cmd.Init(%(args)s%(comma)sshared_memory_id_, kInvalidSharedMemoryOffset); 5749 cmd.Init(%(args)s%(comma)sshared_memory_id_, kInvalidSharedMemoryOffset);
5739 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 5750 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
5740 } 5751 }
5741 """ 5752 """
5742 self.WriteValidUnitTest(func, file, invalid_test, { 5753 self.WriteValidUnitTest(func, file, invalid_test, {
5743 'comma': comma, 5754 'comma': comma,
5744 }) 5755 }, *extras)
5745 5756
5746 def WriteServiceImplementation(self, func, file): 5757 def WriteServiceImplementation(self, func, file):
5747 """Overrriden from TypeHandler.""" 5758 """Overrriden from TypeHandler."""
5748 file.Write( 5759 file.Write(
5749 "error::Error GLES2DecoderImpl::Handle%s(\n" % func.name) 5760 "error::Error GLES2DecoderImpl::Handle%s(\n" % func.name)
5750 file.Write( 5761 file.Write(
5751 " uint32_t immediate_data_size, const gles2::cmds::%s& c) {\n" % 5762 " uint32_t immediate_data_size, const gles2::cmds::%s& c) {\n" %
5752 func.name) 5763 func.name)
5753 args = func.GetOriginalArgs() 5764 args = func.GetOriginalArgs()
5754 for arg in args: 5765 for arg in args:
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
5888 'dest_name': args[3].name, 5899 'dest_name': args[3].name,
5889 'arg0': args[0].name, 5900 'arg0': args[0].name,
5890 'arg1': args[1].name, 5901 'arg1': args[1].name,
5891 'arg2': args[2].name, 5902 'arg2': args[2].name,
5892 'arg3': args[3].name, 5903 'arg3': args[3].name,
5893 } 5904 }
5894 file.Write(code_1 % str_args) 5905 file.Write(code_1 % str_args)
5895 func.WriteDestinationInitalizationValidation(file) 5906 func.WriteDestinationInitalizationValidation(file)
5896 file.Write(code_2 % str_args) 5907 file.Write(code_2 % str_args)
5897 5908
5898 def WriteServiceUnitTest(self, func, file): 5909 def WriteServiceUnitTest(self, func, file, *extras):
5899 """Overrriden from TypeHandler.""" 5910 """Overrriden from TypeHandler."""
5900 valid_test = """ 5911 valid_test = """
5901 TEST_P(%(test_name)s, %(name)sValidArgs) { 5912 TEST_P(%(test_name)s, %(name)sValidArgs) {
5902 const char* kInfo = "hello"; 5913 const char* kInfo = "hello";
5903 const uint32_t kBucketId = 123; 5914 const uint32_t kBucketId = 123;
5904 SpecializedSetup<cmds::%(name)s, 0>(true); 5915 SpecializedSetup<cmds::%(name)s, 0>(true);
5905 %(expect_len_code)s 5916 %(expect_len_code)s
5906 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)) 5917 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s))
5907 .WillOnce(DoAll(SetArgumentPointee<2>(strlen(kInfo)), 5918 .WillOnce(DoAll(SetArgumentPointee<2>(strlen(kInfo)),
5908 SetArrayArgument<3>(kInfo, kInfo + strlen(kInfo) + 1))); 5919 SetArrayArgument<3>(kInfo, kInfo + strlen(kInfo) + 1)));
(...skipping 19 matching lines...) Expand all
5928 'gl_args': '%s, strlen(kInfo) + 1, _, _' % 5939 'gl_args': '%s, strlen(kInfo) + 1, _, _' %
5929 args[0].GetValidGLArg(func), 5940 args[0].GetValidGLArg(func),
5930 'args': '%s, kBucketId' % args[0].GetValidArg(func), 5941 'args': '%s, kBucketId' % args[0].GetValidArg(func),
5931 'expect_len_code': '', 5942 'expect_len_code': '',
5932 } 5943 }
5933 if get_len_func and get_len_func[0:2] == 'gl': 5944 if get_len_func and get_len_func[0:2] == 'gl':
5934 sub['expect_len_code'] = ( 5945 sub['expect_len_code'] = (
5935 " EXPECT_CALL(*gl_, %s(%s, %s, _))\n" 5946 " EXPECT_CALL(*gl_, %s(%s, %s, _))\n"
5936 " .WillOnce(SetArgumentPointee<2>(strlen(kInfo) + 1));") % ( 5947 " .WillOnce(SetArgumentPointee<2>(strlen(kInfo) + 1));") % (
5937 get_len_func[2:], id_name, get_len_enum) 5948 get_len_func[2:], id_name, get_len_enum)
5938 self.WriteValidUnitTest(func, file, valid_test, sub) 5949 self.WriteValidUnitTest(func, file, valid_test, sub, *extras)
5939 5950
5940 invalid_test = """ 5951 invalid_test = """
5941 TEST_P(%(test_name)s, %(name)sInvalidArgs) { 5952 TEST_P(%(test_name)s, %(name)sInvalidArgs) {
5942 const uint32_t kBucketId = 123; 5953 const uint32_t kBucketId = 123;
5943 EXPECT_CALL(*gl_, %(gl_func_name)s(_, _, _, _)) 5954 EXPECT_CALL(*gl_, %(gl_func_name)s(_, _, _, _))
5944 .Times(0); 5955 .Times(0);
5945 cmds::%(name)s cmd; 5956 cmds::%(name)s cmd;
5946 cmd.Init(kInvalidClientId, kBucketId); 5957 cmd.Init(kInvalidClientId, kBucketId);
5947 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 5958 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
5948 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 5959 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
5949 } 5960 }
5950 """ 5961 """
5951 self.WriteValidUnitTest(func, file, invalid_test) 5962 self.WriteValidUnitTest(func, file, invalid_test, *extras)
5952 5963
5953 def WriteServiceImplementation(self, func, file): 5964 def WriteServiceImplementation(self, func, file):
5954 """Overrriden from TypeHandler.""" 5965 """Overrriden from TypeHandler."""
5955 pass 5966 pass
5956 5967
5957 class NamedType(object): 5968 class NamedType(object):
5958 """A class that represents a type of an argument in a client function. 5969 """A class that represents a type of an argument in a client function.
5959 5970
5960 A type of an argument that is to be passed through in the command buffer 5971 A type of an argument that is to be passed through in the command buffer
5961 command. Currently used only for the arguments that are specificly named in 5972 command. Currently used only for the arguments that are specificly named in
(...skipping 1031 matching lines...) Expand 10 before | Expand all | Expand 10 after
6993 self.type_handler.WriteDocs(self, file) 7004 self.type_handler.WriteDocs(self, file)
6994 7005
6995 def WriteCmdHelper(self, file): 7006 def WriteCmdHelper(self, file):
6996 """Writes the cmd's helper.""" 7007 """Writes the cmd's helper."""
6997 self.type_handler.WriteCmdHelper(self, file) 7008 self.type_handler.WriteCmdHelper(self, file)
6998 7009
6999 def WriteServiceImplementation(self, file): 7010 def WriteServiceImplementation(self, file):
7000 """Writes the service implementation for a command.""" 7011 """Writes the service implementation for a command."""
7001 self.type_handler.WriteServiceImplementation(self, file) 7012 self.type_handler.WriteServiceImplementation(self, file)
7002 7013
7003 def WriteServiceUnitTest(self, file): 7014 def WriteServiceUnitTest(self, file, *extras):
7004 """Writes the service implementation for a command.""" 7015 """Writes the service implementation for a command."""
7005 self.type_handler.WriteServiceUnitTest(self, file) 7016 self.type_handler.WriteServiceUnitTest(self, file, *extras)
7006 7017
7007 def WriteGLES2CLibImplementation(self, file): 7018 def WriteGLES2CLibImplementation(self, file):
7008 """Writes the GLES2 C Lib Implemention.""" 7019 """Writes the GLES2 C Lib Implemention."""
7009 self.type_handler.WriteGLES2CLibImplementation(self, file) 7020 self.type_handler.WriteGLES2CLibImplementation(self, file)
7010 7021
7011 def WriteGLES2InterfaceHeader(self, file): 7022 def WriteGLES2InterfaceHeader(self, file):
7012 """Writes the GLES2 Interface declaration.""" 7023 """Writes the GLES2 Interface declaration."""
7013 self.type_handler.WriteGLES2InterfaceHeader(self, file) 7024 self.type_handler.WriteGLES2InterfaceHeader(self, file)
7014 7025
7015 def WriteGLES2InterfaceStub(self, file): 7026 def WriteGLES2InterfaceStub(self, file):
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
7124 self.original_name) 7135 self.original_name)
7125 7136
7126 def WriteServiceImplementation(self, file): 7137 def WriteServiceImplementation(self, file):
7127 """Overridden from Function""" 7138 """Overridden from Function"""
7128 self.type_handler.WriteImmediateServiceImplementation(self, file) 7139 self.type_handler.WriteImmediateServiceImplementation(self, file)
7129 7140
7130 def WriteHandlerImplementation(self, file): 7141 def WriteHandlerImplementation(self, file):
7131 """Overridden from Function""" 7142 """Overridden from Function"""
7132 self.type_handler.WriteImmediateHandlerImplementation(self, file) 7143 self.type_handler.WriteImmediateHandlerImplementation(self, file)
7133 7144
7134 def WriteServiceUnitTest(self, file): 7145 def WriteServiceUnitTest(self, file, *extras):
7135 """Writes the service implementation for a command.""" 7146 """Writes the service implementation for a command."""
7136 self.type_handler.WriteImmediateServiceUnitTest(self, file) 7147 self.type_handler.WriteImmediateServiceUnitTest(self, file, *extras)
7137 7148
7138 def WriteValidationCode(self, file): 7149 def WriteValidationCode(self, file):
7139 """Overridden from Function""" 7150 """Overridden from Function"""
7140 self.type_handler.WriteImmediateValidationCode(self, file) 7151 self.type_handler.WriteImmediateValidationCode(self, file)
7141 7152
7142 def WriteCmdArgFlag(self, file): 7153 def WriteCmdArgFlag(self, file):
7143 """Overridden from Function""" 7154 """Overridden from Function"""
7144 file.Write(" static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;\n") 7155 file.Write(" static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;\n")
7145 7156
7146 def WriteCmdComputeSize(self, file): 7157 def WriteCmdComputeSize(self, file):
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
7204 self.original_name) 7215 self.original_name)
7205 7216
7206 def WriteServiceImplementation(self, file): 7217 def WriteServiceImplementation(self, file):
7207 """Overridden from Function""" 7218 """Overridden from Function"""
7208 self.type_handler.WriteBucketServiceImplementation(self, file) 7219 self.type_handler.WriteBucketServiceImplementation(self, file)
7209 7220
7210 def WriteHandlerImplementation(self, file): 7221 def WriteHandlerImplementation(self, file):
7211 """Overridden from Function""" 7222 """Overridden from Function"""
7212 self.type_handler.WriteBucketHandlerImplementation(self, file) 7223 self.type_handler.WriteBucketHandlerImplementation(self, file)
7213 7224
7214 def WriteServiceUnitTest(self, file): 7225 def WriteServiceUnitTest(self, file, *extras):
7215 """Writes the service implementation for a command.""" 7226 """Writes the service implementation for a command."""
7216 self.type_handler.WriteBucketServiceUnitTest(self, file) 7227 self.type_handler.WriteBucketServiceUnitTest(self, file, *extras)
7217 7228
7218 7229
7219 def CreateArg(arg_string): 7230 def CreateArg(arg_string):
7220 """Creates an Argument.""" 7231 """Creates an Argument."""
7221 arg_parts = arg_string.split() 7232 arg_parts = arg_string.split()
7222 if len(arg_parts) == 1 and arg_parts[0] == 'void': 7233 if len(arg_parts) == 1 and arg_parts[0] == 'void':
7223 return None 7234 return None
7224 # Is this a pointer argument? 7235 # Is this a pointer argument?
7225 elif arg_string.find('*') >= 0: 7236 elif arg_string.find('*') >= 0:
7226 return PointerArgument( 7237 return PointerArgument(
(...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after
7626 7637
7627 if 'extension_flag' in item: 7638 if 'extension_flag' in item:
7628 file.Write(" if (feature_info_->feature_flags().%s)\n " % 7639 file.Write(" if (feature_info_->feature_flags().%s)\n " %
7629 item['extension_flag']) 7640 item['extension_flag'])
7630 if test_prev: 7641 if test_prev:
7631 file.Write(" if (prev_state->%s != %s)\n" % 7642 file.Write(" if (prev_state->%s != %s)\n" %
7632 (item_name, item_name)) 7643 (item_name, item_name))
7633 file.Write(" gl%s(%s, %s);\n" % 7644 file.Write(" gl%s(%s, %s);\n" %
7634 (state['func'], item['enum'], item_name)) 7645 (state['func'], item['enum'], item_name))
7635 else: 7646 else:
7647 if 'extension_flag' in state:
7648 file.Write(" if (feature_info_->feature_flags().%s)\n " %
7649 state['extension_flag'])
7636 if test_prev: 7650 if test_prev:
7637 file.Write(" if (") 7651 file.Write(" if (")
7638 args = [] 7652 args = []
7639 for place, item in enumerate(state['states']): 7653 for place, item in enumerate(state['states']):
7640 item_name = CachedStateName(item) 7654 item_name = CachedStateName(item)
7641 args.append('%s' % item_name) 7655 args.append('%s' % item_name)
7642 if test_prev: 7656 if test_prev:
7643 if place > 0: 7657 if place > 0:
7644 file.Write(' ||\n') 7658 file.Write(' ||\n')
7645 file.Write("(%s != prev_state->%s)" % 7659 file.Write("(%s != prev_state->%s)" %
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
7771 """Writes the service decorder unit tests.""" 7785 """Writes the service decorder unit tests."""
7772 num_tests = len(self.functions) 7786 num_tests = len(self.functions)
7773 FUNCTIONS_PER_FILE = 98 # hard code this so it doesn't change. 7787 FUNCTIONS_PER_FILE = 98 # hard code this so it doesn't change.
7774 count = 0 7788 count = 0
7775 for test_num in range(0, num_tests, FUNCTIONS_PER_FILE): 7789 for test_num in range(0, num_tests, FUNCTIONS_PER_FILE):
7776 count += 1 7790 count += 1
7777 name = filename % count 7791 name = filename % count
7778 file = CHeaderWriter( 7792 file = CHeaderWriter(
7779 name, 7793 name,
7780 "// It is included by gles2_cmd_decoder_unittest_%d.cc\n" % count) 7794 "// It is included by gles2_cmd_decoder_unittest_%d.cc\n" % count)
7781 file.SetFileNum(count) 7795 test_name = 'GLES2DecoderTest%d' % count
7782 end = test_num + FUNCTIONS_PER_FILE 7796 end = test_num + FUNCTIONS_PER_FILE
7783 if end > num_tests: 7797 if end > num_tests:
7784 end = num_tests 7798 end = num_tests
7785 for idx in range(test_num, end): 7799 for idx in range(test_num, end):
7786 func = self.functions[idx] 7800 func = self.functions[idx]
7801
7802 # Do any filtering of the functions here, so that the functions
7803 # will not move between the numbered files if filtering properties
7804 # are changed.
7805 if func.GetInfo('extension_flag'):
7806 continue
7807
7787 if True: 7808 if True:
7788 #gen_cmd = func.GetInfo('gen_cmd') 7809 #gen_cmd = func.GetInfo('gen_cmd')
7789 #if gen_cmd == True or gen_cmd == None: 7810 #if gen_cmd == True or gen_cmd == None:
7790 if func.GetInfo('unit_test') == False: 7811 if func.GetInfo('unit_test') == False:
7791 file.Write("// TODO(gman): %s\n" % func.name) 7812 file.Write("// TODO(gman): %s\n" % func.name)
7792 else: 7813 else:
7793 func.WriteServiceUnitTest(file) 7814 func.WriteServiceUnitTest(file, {
7815 'test_name': test_name
7816 })
7794 7817
7795 file.Close() 7818 file.Close()
7796 file = CHeaderWriter( 7819 file = CHeaderWriter(
7797 filename % 0, 7820 filename % 0,
7798 "// It is included by gles2_cmd_decoder_unittest_base.cc\n") 7821 "// It is included by gles2_cmd_decoder_unittest_base.cc\n")
7799 file.Write( 7822 file.Write(
7800 """void GLES2DecoderTestBase::SetupInitCapabilitiesExpectations() { 7823 """void GLES2DecoderTestBase::SetupInitCapabilitiesExpectations() {
7801 """) 7824 """)
7802 for capability in _CAPABILITY_FLAGS: 7825 for capability in _CAPABILITY_FLAGS:
7803 file.Write(" ExpectEnableDisable(GL_%s, %s);\n" % 7826 file.Write(" ExpectEnableDisable(GL_%s, %s);\n" %
(...skipping 17 matching lines...) Expand all
7821 else: 7844 else:
7822 args.append(item['default']) 7845 args.append(item['default'])
7823 file.Write( 7846 file.Write(
7824 " EXPECT_CALL(*gl_, %s(%s, %s))\n" % 7847 " EXPECT_CALL(*gl_, %s(%s, %s))\n" %
7825 (state['func'], ('GL_FRONT', 'GL_BACK')[ndx], ", ".join(args))) 7848 (state['func'], ('GL_FRONT', 'GL_BACK')[ndx], ", ".join(args)))
7826 file.Write(" .Times(1)\n") 7849 file.Write(" .Times(1)\n")
7827 file.Write(" .RetiresOnSaturation();\n") 7850 file.Write(" .RetiresOnSaturation();\n")
7828 elif state['type'] == 'NamedParameter': 7851 elif state['type'] == 'NamedParameter':
7829 for item in state['states']: 7852 for item in state['states']:
7830 if 'extension_flag' in item: 7853 if 'extension_flag' in item:
7831 continue 7854 file.Write(" if (group_->feature_info()->feature_flags().%s) {\n" %
7855 item['extension_flag'])
7856 file.Write(" ")
7857
7832 file.Write( 7858 file.Write(
7833 " EXPECT_CALL(*gl_, %s(%s, %s))\n" % 7859 " EXPECT_CALL(*gl_, %s(%s, %s))\n" %
7834 (state['func'], item['enum'], item['default'])) 7860 (state['func'], item['enum'], item['default']))
7835 file.Write(" .Times(1)\n") 7861 file.Write(" .Times(1)\n")
7836 file.Write(" .RetiresOnSaturation();\n") 7862 file.Write(" .RetiresOnSaturation();\n")
7863 if 'extension_flag' in item:
7864 file.Write(" }\n")
7837 else: 7865 else:
7866 if 'extension_flag' in state:
7867 file.Write(" if (group_->feature_info()->feature_flags().%s) {\n" %
7868 state['extension_flag'])
7869 file.Write(" ")
7838 args = [] 7870 args = []
7839 for item in state['states']: 7871 for item in state['states']:
7840 if 'expected' in item: 7872 if 'expected' in item:
7841 args.append(item['expected']) 7873 args.append(item['expected'])
7842 else: 7874 else:
7843 args.append(item['default']) 7875 args.append(item['default'])
7844 file.Write(" EXPECT_CALL(*gl_, %s(%s))\n" % 7876 file.Write(" EXPECT_CALL(*gl_, %s(%s))\n" %
7845 (state['func'], ", ".join(args))) 7877 (state['func'], ", ".join(args)))
7846 file.Write(" .Times(1)\n") 7878 file.Write(" .Times(1)\n")
7847 file.Write(" .RetiresOnSaturation();\n") 7879 file.Write(" .RetiresOnSaturation();\n")
7880 if 'extension_flag' in state:
7881 file.Write(" }\n")
7848 file.Write("""} 7882 file.Write("""}
7849 """) 7883 """)
7850 file.Close() 7884 file.Close()
7851 7885
7886 def WriteServiceUnitTestsForExtensions(self, filename):
7887 """Writes the service decorder unit tests for functions with extension_flag.
7888
7889 The functions are special in that they need a specific unit test
7890 baseclass to turn on the extension.
7891 """
7892 functions = [f for f in self.functions if f.GetInfo('extension_flag')]
7893 file = CHeaderWriter(
7894 filename,
7895 "// It is included by gles2_cmd_decoder_unittest_extensions.cc\n")
7896 for func in functions:
7897 if True:
7898 if func.GetInfo('unit_test') == False:
7899 file.Write("// TODO(gman): %s\n" % func.name)
7900 else:
7901 extension = ToCamelCase(
7902 ToGLExtensionString(func.GetInfo('extension_flag')))
7903 func.WriteServiceUnitTest(file, {
7904 'test_name': 'GLES2DecoderTestWith%s' % extension
7905 })
7906
7907 file.Close()
7908
7852 def WriteGLES2Header(self, filename): 7909 def WriteGLES2Header(self, filename):
7853 """Writes the GLES2 header.""" 7910 """Writes the GLES2 header."""
7854 file = CHeaderWriter( 7911 file = CHeaderWriter(
7855 filename, 7912 filename,
7856 "// This file contains Chromium-specific GLES2 declarations.\n\n") 7913 "// This file contains Chromium-specific GLES2 declarations.\n\n")
7857 7914
7858 for func in self.original_functions: 7915 for func in self.original_functions:
7859 func.WriteGLES2Header(file) 7916 func.WriteGLES2Header(file)
7860 7917
7861 file.Write("\n") 7918 file.Write("\n")
(...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after
8342 "client/gles2_trace_implementation_impl_autogen.h") 8399 "client/gles2_trace_implementation_impl_autogen.h")
8343 gen.WriteGLES2CLibImplementation("client/gles2_c_lib_autogen.h") 8400 gen.WriteGLES2CLibImplementation("client/gles2_c_lib_autogen.h")
8344 gen.WriteCmdHelperHeader("client/gles2_cmd_helper_autogen.h") 8401 gen.WriteCmdHelperHeader("client/gles2_cmd_helper_autogen.h")
8345 gen.WriteServiceImplementation("service/gles2_cmd_decoder_autogen.h") 8402 gen.WriteServiceImplementation("service/gles2_cmd_decoder_autogen.h")
8346 gen.WriteServiceContextStateHeader("service/context_state_autogen.h") 8403 gen.WriteServiceContextStateHeader("service/context_state_autogen.h")
8347 gen.WriteServiceContextStateImpl("service/context_state_impl_autogen.h") 8404 gen.WriteServiceContextStateImpl("service/context_state_impl_autogen.h")
8348 gen.WriteClientContextStateHeader("client/client_context_state_autogen.h") 8405 gen.WriteClientContextStateHeader("client/client_context_state_autogen.h")
8349 gen.WriteClientContextStateImpl( 8406 gen.WriteClientContextStateImpl(
8350 "client/client_context_state_impl_autogen.h") 8407 "client/client_context_state_impl_autogen.h")
8351 gen.WriteServiceUnitTests("service/gles2_cmd_decoder_unittest_%d_autogen.h") 8408 gen.WriteServiceUnitTests("service/gles2_cmd_decoder_unittest_%d_autogen.h")
8409 gen.WriteServiceUnitTestsForExtensions(
8410 "service/gles2_cmd_decoder_unittest_extensions_autogen.h")
8352 gen.WriteServiceUtilsHeader("service/gles2_cmd_validation_autogen.h") 8411 gen.WriteServiceUtilsHeader("service/gles2_cmd_validation_autogen.h")
8353 gen.WriteServiceUtilsImplementation( 8412 gen.WriteServiceUtilsImplementation(
8354 "service/gles2_cmd_validation_implementation_autogen.h") 8413 "service/gles2_cmd_validation_implementation_autogen.h")
8355 gen.WriteCommonUtilsHeader("common/gles2_cmd_utils_autogen.h") 8414 gen.WriteCommonUtilsHeader("common/gles2_cmd_utils_autogen.h")
8356 gen.WriteCommonUtilsImpl("common/gles2_cmd_utils_implementation_autogen.h") 8415 gen.WriteCommonUtilsImpl("common/gles2_cmd_utils_implementation_autogen.h")
8357 gen.WriteGLES2Header("../GLES2/gl2chromium_autogen.h") 8416 gen.WriteGLES2Header("../GLES2/gl2chromium_autogen.h")
8358 mojo_gles2_prefix = "../../mojo/public/c/gles2/gles2_call_visitor" 8417 mojo_gles2_prefix = "../../mojo/public/c/gles2/gles2_call_visitor"
8359 gen.WriteMojoGLCallVisitor(mojo_gles2_prefix + "_autogen.h") 8418 gen.WriteMojoGLCallVisitor(mojo_gles2_prefix + "_autogen.h")
8360 gen.WriteMojoGLCallVisitorForExtension( 8419 gen.WriteMojoGLCallVisitorForExtension(
8361 mojo_gles2_prefix + "_chromium_texture_mailbox_autogen.h", 8420 mojo_gles2_prefix + "_chromium_texture_mailbox_autogen.h",
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
8404 "ppapi/shared_impl/ppb_opengles2_shared.cc"]) 8463 "ppapi/shared_impl/ppb_opengles2_shared.cc"])
8405 8464
8406 if gen.errors > 0: 8465 if gen.errors > 0:
8407 print "%d errors" % gen.errors 8466 print "%d errors" % gen.errors
8408 return 1 8467 return 1
8409 return 0 8468 return 0
8410 8469
8411 8470
8412 if __name__ == '__main__': 8471 if __name__ == '__main__':
8413 sys.exit(main(sys.argv[1:])) 8472 sys.exit(main(sys.argv[1:]))
OLDNEW
« no previous file with comments | « gpu/BUILD.gn ('k') | gpu/command_buffer/service/gles2_cmd_decoder_unittest_0_autogen.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698