Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 """code generator for GLES2 command buffers.""" | 6 """code generator for GLES2 command buffers.""" |
| 7 | 7 |
| 8 import itertools | 8 import itertools |
| 9 import os | 9 import os |
| 10 import os.path | 10 import os.path |
| (...skipping 2620 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 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. | |
|
piman
2014/08/15 20:37:24
Could we do the opposite, instead of trying to rev
Kimmo Kinnunen
2014/08/20 05:59:05
Ok, I'll see what I can do. (If I understand corre
| |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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") |
| 7837 else: | 7863 else: |
| 7864 if 'extension_flag' in state: | |
| 7865 file.Write(" if (group_->feature_info()->feature_flags().%s)\n" % | |
| 7866 state['extension_flag']) | |
| 7867 file.Write(" ") | |
| 7838 args = [] | 7868 args = [] |
| 7839 for item in state['states']: | 7869 for item in state['states']: |
| 7840 if 'expected' in item: | 7870 if 'expected' in item: |
| 7841 args.append(item['expected']) | 7871 args.append(item['expected']) |
| 7842 else: | 7872 else: |
| 7843 args.append(item['default']) | 7873 args.append(item['default']) |
| 7844 file.Write(" EXPECT_CALL(*gl_, %s(%s))\n" % | 7874 file.Write(" EXPECT_CALL(*gl_, %s(%s))\n" % |
| 7845 (state['func'], ", ".join(args))) | 7875 (state['func'], ", ".join(args))) |
| 7846 file.Write(" .Times(1)\n") | 7876 file.Write(" .Times(1)\n") |
| 7847 file.Write(" .RetiresOnSaturation();\n") | 7877 file.Write(" .RetiresOnSaturation();\n") |
| 7848 file.Write("""} | 7878 file.Write("""} |
| 7849 """) | 7879 """) |
| 7850 file.Close() | 7880 file.Close() |
| 7851 | 7881 |
| 7882 def WriteServiceUnitTestsForExtensions(self, filename): | |
| 7883 """Writes the service decorder unit tests for functions with extension_flag. | |
| 7884 | |
| 7885 The functions are special in that they need a specific unit test | |
| 7886 baseclass to turn on the extension. | |
| 7887 """ | |
| 7888 functions = [f for f in self.functions if f.GetInfo('extension_flag')] | |
| 7889 file = CHeaderWriter( | |
| 7890 filename, | |
| 7891 "// It is included by gles2_cmd_decoder_unittest_extensions.cc\n") | |
| 7892 for func in functions: | |
| 7893 if True: | |
| 7894 if func.GetInfo('unit_test') == False: | |
| 7895 file.Write("// TODO(gman): %s\n" % func.name) | |
| 7896 else: | |
| 7897 extension = ToCamelCase( | |
| 7898 ToGLExtensionString(func.GetInfo('extension_flag'))) | |
| 7899 func.WriteServiceUnitTest(file, { | |
| 7900 'test_name': 'GLES2DecoderTestWith%s' % extension | |
| 7901 }) | |
| 7902 | |
| 7903 file.Close() | |
| 7904 | |
| 7852 def WriteGLES2Header(self, filename): | 7905 def WriteGLES2Header(self, filename): |
| 7853 """Writes the GLES2 header.""" | 7906 """Writes the GLES2 header.""" |
| 7854 file = CHeaderWriter( | 7907 file = CHeaderWriter( |
| 7855 filename, | 7908 filename, |
| 7856 "// This file contains Chromium-specific GLES2 declarations.\n\n") | 7909 "// This file contains Chromium-specific GLES2 declarations.\n\n") |
| 7857 | 7910 |
| 7858 for func in self.original_functions: | 7911 for func in self.original_functions: |
| 7859 func.WriteGLES2Header(file) | 7912 func.WriteGLES2Header(file) |
| 7860 | 7913 |
| 7861 file.Write("\n") | 7914 file.Write("\n") |
| (...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8342 "client/gles2_trace_implementation_impl_autogen.h") | 8395 "client/gles2_trace_implementation_impl_autogen.h") |
| 8343 gen.WriteGLES2CLibImplementation("client/gles2_c_lib_autogen.h") | 8396 gen.WriteGLES2CLibImplementation("client/gles2_c_lib_autogen.h") |
| 8344 gen.WriteCmdHelperHeader("client/gles2_cmd_helper_autogen.h") | 8397 gen.WriteCmdHelperHeader("client/gles2_cmd_helper_autogen.h") |
| 8345 gen.WriteServiceImplementation("service/gles2_cmd_decoder_autogen.h") | 8398 gen.WriteServiceImplementation("service/gles2_cmd_decoder_autogen.h") |
| 8346 gen.WriteServiceContextStateHeader("service/context_state_autogen.h") | 8399 gen.WriteServiceContextStateHeader("service/context_state_autogen.h") |
| 8347 gen.WriteServiceContextStateImpl("service/context_state_impl_autogen.h") | 8400 gen.WriteServiceContextStateImpl("service/context_state_impl_autogen.h") |
| 8348 gen.WriteClientContextStateHeader("client/client_context_state_autogen.h") | 8401 gen.WriteClientContextStateHeader("client/client_context_state_autogen.h") |
| 8349 gen.WriteClientContextStateImpl( | 8402 gen.WriteClientContextStateImpl( |
| 8350 "client/client_context_state_impl_autogen.h") | 8403 "client/client_context_state_impl_autogen.h") |
| 8351 gen.WriteServiceUnitTests("service/gles2_cmd_decoder_unittest_%d_autogen.h") | 8404 gen.WriteServiceUnitTests("service/gles2_cmd_decoder_unittest_%d_autogen.h") |
| 8405 gen.WriteServiceUnitTestsForExtensions( | |
| 8406 "service/gles2_cmd_decoder_unittest_extensions_autogen.h") | |
| 8352 gen.WriteServiceUtilsHeader("service/gles2_cmd_validation_autogen.h") | 8407 gen.WriteServiceUtilsHeader("service/gles2_cmd_validation_autogen.h") |
| 8353 gen.WriteServiceUtilsImplementation( | 8408 gen.WriteServiceUtilsImplementation( |
| 8354 "service/gles2_cmd_validation_implementation_autogen.h") | 8409 "service/gles2_cmd_validation_implementation_autogen.h") |
| 8355 gen.WriteCommonUtilsHeader("common/gles2_cmd_utils_autogen.h") | 8410 gen.WriteCommonUtilsHeader("common/gles2_cmd_utils_autogen.h") |
| 8356 gen.WriteCommonUtilsImpl("common/gles2_cmd_utils_implementation_autogen.h") | 8411 gen.WriteCommonUtilsImpl("common/gles2_cmd_utils_implementation_autogen.h") |
| 8357 gen.WriteGLES2Header("../GLES2/gl2chromium_autogen.h") | 8412 gen.WriteGLES2Header("../GLES2/gl2chromium_autogen.h") |
| 8358 mojo_gles2_prefix = "../../mojo/public/c/gles2/gles2_call_visitor" | 8413 mojo_gles2_prefix = "../../mojo/public/c/gles2/gles2_call_visitor" |
| 8359 gen.WriteMojoGLCallVisitor(mojo_gles2_prefix + "_autogen.h") | 8414 gen.WriteMojoGLCallVisitor(mojo_gles2_prefix + "_autogen.h") |
| 8360 gen.WriteMojoGLCallVisitorForExtension( | 8415 gen.WriteMojoGLCallVisitorForExtension( |
| 8361 mojo_gles2_prefix + "_chromium_texture_mailbox_autogen.h", | 8416 mojo_gles2_prefix + "_chromium_texture_mailbox_autogen.h", |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8404 "ppapi/shared_impl/ppb_opengles2_shared.cc"]) | 8459 "ppapi/shared_impl/ppb_opengles2_shared.cc"]) |
| 8405 | 8460 |
| 8406 if gen.errors > 0: | 8461 if gen.errors > 0: |
| 8407 print "%d errors" % gen.errors | 8462 print "%d errors" % gen.errors |
| 8408 return 1 | 8463 return 1 |
| 8409 return 0 | 8464 return 0 |
| 8410 | 8465 |
| 8411 | 8466 |
| 8412 if __name__ == '__main__': | 8467 if __name__ == '__main__': |
| 8413 sys.exit(main(sys.argv[1:])) | 8468 sys.exit(main(sys.argv[1:])) |
| OLD | NEW |