Index: gpu/command_buffer/build_gles2_cmd_buffer.py |
diff --git a/gpu/command_buffer/build_gles2_cmd_buffer.py b/gpu/command_buffer/build_gles2_cmd_buffer.py |
index 56f59fcfde1df1d68d99ac1a6cb696033892f0fd..66dc012fd24068bcd6de3005cecbdbcc5d596256 100755 |
--- a/gpu/command_buffer/build_gles2_cmd_buffer.py |
+++ b/gpu/command_buffer/build_gles2_cmd_buffer.py |
@@ -2638,19 +2638,28 @@ def CachedStateName(item): |
return 'cached_' + item['name'] |
return item['name'] |
+def ToGLExtensionString(extension_flag): |
+ """Returns GL-type extension string of a extension flag.""" |
+ if extension_flag == "oes_compressed_etc1_rgb8_texture": |
+ return "OES_compressed_ETC1_RGB8_texture" # Fixup inconsitency with rgb8, |
+ # unfortunate. |
+ uppercase_words = [ 'img', 'ext', 'arb', 'chromium', 'oes', 'amd', 'bgra8888', |
+ 'egl', 'atc', 'etc1', 'angle'] |
+ parts = extension_flag.split('_') |
+ return "_".join( |
+ [part.upper() if part in uppercase_words else part for part in parts]) |
+ |
+def ToCamelCase(input_string): |
+ """converts ABC_underscore_case to ABCUnderscoreCase.""" |
+ return ''.join(w[0].upper() + w[1:] for w in input_string.split('_')) |
class CWriter(object): |
"""Writes to a file formatting it for Google's style guidelines.""" |
def __init__(self, filename): |
self.filename = filename |
- self.file_num = 0 |
self.content = [] |
- def SetFileNum(self, num): |
- """Used to help write number files and tests.""" |
- self.file_num = num |
- |
def Write(self, string): |
"""Writes a string to a file spliting if it's > 80 characters.""" |
lines = string.splitlines() |
@@ -2935,7 +2944,7 @@ COMPILE_ASSERT(offsetof(%(cmd_name)s::Result, %(field_name)s) == %(offset)d, |
file.Write(" if (error != error::kNoError)\n") |
file.Write(" return error;\n") |
- def WriteValidUnitTest(self, func, file, test, extra = {}): |
+ def WriteValidUnitTest(self, func, file, test, *extras): |
"""Writes a valid unit test for the service implementation.""" |
if func.GetInfo('expectation') == False: |
test = self._remove_expected_call_re.sub('', test) |
@@ -2950,20 +2959,20 @@ COMPILE_ASSERT(offsetof(%(cmd_name)s::Result, %(field_name)s) == %(offset)d, |
] |
gl_func_name = func.GetGLTestFunctionName() |
vars = { |
- 'test_name': 'GLES2DecoderTest%d' % file.file_num, |
'name':name, |
'gl_func_name': gl_func_name, |
'args': ", ".join(arg_strings), |
'gl_args': ", ".join(gl_arg_strings), |
} |
- vars.update(extra) |
+ for extra in extras: |
+ vars.update(extra) |
old_test = "" |
while (old_test != test): |
old_test = test |
test = test % vars |
file.Write(test % vars) |
- def WriteInvalidUnitTest(self, func, file, test, extra = {}): |
+ def WriteInvalidUnitTest(self, func, file, test, *extras): |
"""Writes an invalid unit test for the service implementation.""" |
for invalid_arg_index, invalid_arg in enumerate(func.GetOriginalArgs()): |
# Service implementation does not test constants, as they are not part of |
@@ -2994,7 +3003,6 @@ COMPILE_ASSERT(offsetof(%(cmd_name)s::Result, %(field_name)s) == %(offset)d, |
gl_error_test = '\n EXPECT_EQ(%s, GetGLError());' % gl_error |
vars = { |
- 'test_name': 'GLES2DecoderTest%d' % file.file_num , |
'name': func.name, |
'arg_index': invalid_arg_index, |
'value_index': value_index, |
@@ -3005,10 +3013,11 @@ COMPILE_ASSERT(offsetof(%(cmd_name)s::Result, %(field_name)s) == %(offset)d, |
'parse_result': parse_result, |
'gl_error_test': gl_error_test, |
} |
- vars.update(extra) |
+ for extra in extras: |
+ vars.update(extra) |
file.Write(test % vars) |
- def WriteServiceUnitTest(self, func, file): |
+ def WriteServiceUnitTest(self, func, file, *extras): |
"""Writes the service unit test for a command.""" |
if func.name == 'Enable': |
@@ -3044,7 +3053,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) { |
EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
} |
""" |
- self.WriteValidUnitTest(func, file, valid_test) |
+ self.WriteValidUnitTest(func, file, valid_test, *extras) |
invalid_test = """ |
TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
@@ -3055,9 +3064,9 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s |
} |
""" |
- self.WriteInvalidUnitTest(func, file, invalid_test) |
+ self.WriteInvalidUnitTest(func, file, invalid_test, *extras) |
- def WriteImmediateServiceUnitTest(self, func, file): |
+ def WriteImmediateServiceUnitTest(self, func, file, *extras): |
"""Writes the service unit test for an immediate command.""" |
file.Write("// TODO(gman): %s\n" % func.name) |
@@ -3065,7 +3074,7 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
"""Writes the validation code for an immediate version of a command.""" |
pass |
- def WriteBucketServiceUnitTest(self, func, file): |
+ def WriteBucketServiceUnitTest(self, func, file, *extras): |
"""Writes the service unit test for a bucket command.""" |
file.Write("// TODO(gman): %s\n" % func.name) |
@@ -3363,9 +3372,9 @@ class StateSetHandler(TypeHandler): |
(func.GetGLFunctionName(), func.MakeOriginalArgString(""))) |
file.Write(" }\n") |
- def WriteServiceUnitTest(self, func, file): |
+ def WriteServiceUnitTest(self, func, file, *extras): |
"""Overrriden from TypeHandler.""" |
- TypeHandler.WriteServiceUnitTest(self, func, file) |
+ TypeHandler.WriteServiceUnitTest(self, func, file, *extras) |
state_name = func.GetInfo('state') |
state = _STATES[state_name] |
states = state['states'] |
@@ -3389,12 +3398,13 @@ TEST_P(%(test_name)s, %(name)sInvalidValue%(ndx)d_%(check_ndx)d) { |
arg_strings[ndx] = range_check['test_value'] |
vars = { |
- 'test_name': 'GLES2DecoderTest%d' % file.file_num, |
'name': name, |
'ndx': ndx, |
'check_ndx': check_ndx, |
'args': ", ".join(arg_strings), |
} |
+ for extra in extras: |
+ vars.update(extra) |
file.Write(valid_test % vars) |
if 'nan_check' in item: |
valid_test = """ |
@@ -3414,11 +3424,12 @@ TEST_P(%(test_name)s, %(name)sNaNValue%(ndx)d) { |
arg_strings[ndx] = 'nanf("")' |
vars = { |
- 'test_name': 'GLES2DecoderTest%d' % file.file_num, |
'name': name, |
'ndx': ndx, |
'args': ", ".join(arg_strings), |
} |
+ for extra in extras: |
+ vars.update(extra) |
file.Write(valid_test % vars) |
@@ -3566,11 +3577,11 @@ class CustomHandler(TypeHandler): |
"""Overrriden from TypeHandler.""" |
pass |
- def WriteServiceUnitTest(self, func, file): |
+ def WriteServiceUnitTest(self, func, file, *extras): |
"""Overrriden from TypeHandler.""" |
file.Write("// TODO(gman): %s\n\n" % func.name) |
- def WriteImmediateServiceUnitTest(self, func, file): |
+ def WriteImmediateServiceUnitTest(self, func, file, *extras): |
"""Overrriden from TypeHandler.""" |
file.Write("// TODO(gman): %s\n\n" % func.name) |
@@ -3673,15 +3684,15 @@ class HandWrittenHandler(CustomHandler): |
"""Overrriden from TypeHandler.""" |
pass |
- def WriteServiceUnitTest(self, func, file): |
+ def WriteServiceUnitTest(self, func, file, *extras): |
"""Overrriden from TypeHandler.""" |
file.Write("// TODO(gman): %s\n\n" % func.name) |
- def WriteImmediateServiceUnitTest(self, func, file): |
+ def WriteImmediateServiceUnitTest(self, func, file, *extras): |
"""Overrriden from TypeHandler.""" |
file.Write("// TODO(gman): %s\n\n" % func.name) |
- def WriteBucketServiceUnitTest(self, func, file): |
+ def WriteBucketServiceUnitTest(self, func, file, *extras): |
"""Overrriden from TypeHandler.""" |
file.Write("// TODO(gman): %s\n\n" % func.name) |
@@ -3745,11 +3756,11 @@ class ManualHandler(CustomHandler): |
"""Overrriden from TypeHandler.""" |
pass |
- def WriteServiceUnitTest(self, func, file): |
+ def WriteServiceUnitTest(self, func, file, *extras): |
"""Overrriden from TypeHandler.""" |
file.Write("// TODO(gman): %s\n\n" % func.name) |
- def WriteImmediateServiceUnitTest(self, func, file): |
+ def WriteImmediateServiceUnitTest(self, func, file, *extras): |
"""Overrriden from TypeHandler.""" |
file.Write("// TODO(gman): %s\n\n" % func.name) |
@@ -3855,11 +3866,11 @@ class DataHandler(TypeHandler): |
file.Write("// TODO(gman): Implement test for %s\n" % func.name) |
return |
- def WriteServiceUnitTest(self, func, file): |
+ def WriteServiceUnitTest(self, func, file, *extras): |
"""Overrriden from TypeHandler.""" |
file.Write("// TODO(gman): %s\n\n" % func.name) |
- def WriteImmediateServiceUnitTest(self, func, file): |
+ def WriteImmediateServiceUnitTest(self, func, file, *extras): |
"""Overrriden from TypeHandler.""" |
file.Write("// TODO(gman): %s\n\n" % func.name) |
@@ -3875,7 +3886,7 @@ class BindHandler(TypeHandler): |
def __init__(self): |
TypeHandler.__init__(self) |
- def WriteServiceUnitTest(self, func, file): |
+ def WriteServiceUnitTest(self, func, file, *extras): |
"""Overrriden from TypeHandler.""" |
if len(func.GetOriginalArgs()) == 1: |
@@ -3906,7 +3917,7 @@ TEST_P(%(test_name)s, %(name)sValidArgsNewId) { |
self.WriteValidUnitTest(func, file, valid_test, { |
'resource_type': func.GetOriginalArgs()[0].resource_type, |
'gl_gen_func_name': func.GetInfo("gen_func"), |
- }) |
+ }, *extras) |
else: |
valid_test = """ |
TEST_P(%(test_name)s, %(name)sValidArgs) { |
@@ -3937,7 +3948,7 @@ TEST_P(%(test_name)s, %(name)sValidArgsNewId) { |
'first_gl_arg': func.GetOriginalArgs()[0].GetValidGLArg(func), |
'resource_type': func.GetOriginalArgs()[1].resource_type, |
'gl_gen_func_name': func.GetInfo("gen_func"), |
- }) |
+ }, *extras) |
invalid_test = """ |
TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
@@ -3948,7 +3959,7 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s |
} |
""" |
- self.WriteInvalidUnitTest(func, file, invalid_test) |
+ self.WriteInvalidUnitTest(func, file, invalid_test, *extras) |
def WriteGLES2Implementation(self, func, file): |
"""Writes the GLES2 Implemention.""" |
@@ -4135,7 +4146,7 @@ TEST_F(GLES2ImplementationTest, %(name)s) { |
'types': func.GetInfo('resource_types'), |
}) |
- def WriteServiceUnitTest(self, func, file): |
+ def WriteServiceUnitTest(self, func, file, *extras): |
"""Overrriden from TypeHandler.""" |
valid_test = """ |
TEST_P(%(test_name)s, %(name)sValidArgs) { |
@@ -4152,7 +4163,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) { |
""" |
self.WriteValidUnitTest(func, file, valid_test, { |
'resource_name': func.GetInfo('resource_type'), |
- }) |
+ }, *extras) |
invalid_test = """ |
TEST_P(%(test_name)s, %(name)sInvalidArgs) { |
EXPECT_CALL(*gl_, %(gl_func_name)s(_, _)).Times(0); |
@@ -4165,9 +4176,9 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs) { |
""" |
self.WriteValidUnitTest(func, file, invalid_test, { |
'resource_name': func.GetInfo('resource_type').lower(), |
- }) |
+ }, *extras) |
- def WriteImmediateServiceUnitTest(self, func, file): |
+ def WriteImmediateServiceUnitTest(self, func, file, *extras): |
"""Overrriden from TypeHandler.""" |
valid_test = """ |
TEST_P(%(test_name)s, %(name)sValidArgs) { |
@@ -4185,7 +4196,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) { |
""" |
self.WriteValidUnitTest(func, file, valid_test, { |
'resource_name': func.GetInfo('resource_type'), |
- }) |
+ }, *extras) |
invalid_test = """ |
TEST_P(%(test_name)s, %(name)sInvalidArgs) { |
EXPECT_CALL(*gl_, %(gl_func_name)s(_, _)).Times(0); |
@@ -4198,7 +4209,7 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs) { |
""" |
self.WriteValidUnitTest(func, file, invalid_test, { |
'resource_name': func.GetInfo('resource_type').lower(), |
- }) |
+ }, *extras) |
def WriteImmediateCmdComputeSize(self, func, file): |
"""Overrriden from TypeHandler.""" |
@@ -4301,7 +4312,7 @@ class CreateHandler(TypeHandler): |
"""Overrriden from TypeHandler.""" |
func.AddCmdArg(Argument("client_id", 'uint32_t')) |
- def WriteServiceUnitTest(self, func, file): |
+ def WriteServiceUnitTest(self, func, file, *extras): |
"""Overrriden from TypeHandler.""" |
valid_test = """ |
TEST_P(%(test_name)s, %(name)sValidArgs) { |
@@ -4321,7 +4332,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) { |
self.WriteValidUnitTest(func, file, valid_test, { |
'comma': comma, |
'resource_type': func.name[6:], |
- }) |
+ }, *extras) |
invalid_test = """ |
TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); |
@@ -4333,7 +4344,7 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
""" |
self.WriteInvalidUnitTest(func, file, invalid_test, { |
'comma': comma, |
- }) |
+ }, *extras) |
def WriteHandlerImplementation (self, func, file): |
"""Overrriden from TypeHandler.""" |
@@ -4432,7 +4443,7 @@ TEST_F(GLES2ImplementationTest, %(name)s) { |
'types': func.GetInfo('resource_types'), |
}) |
- def WriteServiceUnitTest(self, func, file): |
+ def WriteServiceUnitTest(self, func, file, *extras): |
"""Overrriden from TypeHandler.""" |
valid_test = """ |
TEST_P(%(test_name)s, %(name)sValidArgs) { |
@@ -4453,7 +4464,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) { |
self.WriteValidUnitTest(func, file, valid_test, { |
'resource_name': func.GetInfo('resource_type').lower(), |
'upper_resource_name': func.GetInfo('resource_type'), |
- }) |
+ }, *extras) |
invalid_test = """ |
TEST_P(%(test_name)s, %(name)sInvalidArgs) { |
GetSharedMemoryAs<GLuint*>()[0] = kInvalidClientId; |
@@ -4463,9 +4474,9 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs) { |
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
} |
""" |
- self.WriteValidUnitTest(func, file, invalid_test) |
+ self.WriteValidUnitTest(func, file, invalid_test, *extras) |
- def WriteImmediateServiceUnitTest(self, func, file): |
+ def WriteImmediateServiceUnitTest(self, func, file, *extras): |
"""Overrriden from TypeHandler.""" |
valid_test = """ |
TEST_P(%(test_name)s, %(name)sValidArgs) { |
@@ -4486,7 +4497,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) { |
self.WriteValidUnitTest(func, file, valid_test, { |
'resource_name': func.GetInfo('resource_type').lower(), |
'upper_resource_name': func.GetInfo('resource_type'), |
- }) |
+ }, *extras) |
invalid_test = """ |
TEST_P(%(test_name)s, %(name)sInvalidArgs) { |
cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); |
@@ -4497,7 +4508,7 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs) { |
ExecuteImmediateCmd(cmd, sizeof(temp))); |
} |
""" |
- self.WriteValidUnitTest(func, file, invalid_test) |
+ self.WriteValidUnitTest(func, file, invalid_test, *extras) |
def WriteHandlerImplementation (self, func, file): |
"""Overrriden from TypeHandler.""" |
@@ -4787,7 +4798,7 @@ TEST_F(GLES2ImplementationTest, %(name)s) { |
'cmd_args': ", ".join(cmd_arg_strings), |
}) |
- def WriteServiceUnitTest(self, func, file): |
+ def WriteServiceUnitTest(self, func, file, *extras): |
"""Overrriden from TypeHandler.""" |
valid_test = """ |
TEST_P(%(test_name)s, %(name)sValidArgs) { |
@@ -4824,7 +4835,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) { |
self.WriteValidUnitTest(func, file, valid_test, { |
'local_gl_args': ", ".join(gl_arg_strings), |
'valid_pname': valid_pname, |
- }) |
+ }, *extras) |
invalid_test = """ |
TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
@@ -4839,7 +4850,7 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
EXPECT_EQ(0u, result->size);%(gl_error_test)s |
} |
""" |
- self.WriteInvalidUnitTest(func, file, invalid_test) |
+ self.WriteInvalidUnitTest(func, file, invalid_test, *extras) |
class ArrayArgTypeHandler(TypeHandler): |
"""Base class for type handlers that handle args that are arrays""" |
@@ -4871,7 +4882,7 @@ class PUTHandler(ArrayArgTypeHandler): |
def __init__(self): |
ArrayArgTypeHandler.__init__(self) |
- def WriteServiceUnitTest(self, func, file): |
+ def WriteServiceUnitTest(self, func, file, *extras): |
"""Writes the service unit test for a command.""" |
expected_call = "EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s));" |
if func.GetInfo("first_element_only"): |
@@ -4897,7 +4908,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) { |
'data_value': func.GetInfo('data_value') or '0', |
'expected_call': expected_call, |
} |
- self.WriteValidUnitTest(func, file, valid_test, extra) |
+ self.WriteValidUnitTest(func, file, valid_test, extra, *extras) |
invalid_test = """ |
TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
@@ -4909,9 +4920,9 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s |
} |
""" |
- self.WriteInvalidUnitTest(func, file, invalid_test, extra) |
+ self.WriteInvalidUnitTest(func, file, invalid_test, extra, *extras) |
- def WriteImmediateServiceUnitTest(self, func, file): |
+ def WriteImmediateServiceUnitTest(self, func, file, *extras): |
"""Writes the service unit test for a command.""" |
valid_test = """ |
TEST_P(%(test_name)s, %(name)sValidArgs) { |
@@ -4941,7 +4952,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) { |
'gl_args': ", ".join(gl_arg_strings), |
'gl_any_args': ", ".join(gl_any_strings), |
} |
- self.WriteValidUnitTest(func, file, valid_test, extra) |
+ self.WriteValidUnitTest(func, file, valid_test, extra, *extras) |
invalid_test = """ |
TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
@@ -4954,7 +4965,7 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
ExecuteImmediateCmd(cmd, sizeof(temp)));%(gl_error_test)s |
} |
""" |
- self.WriteInvalidUnitTest(func, file, invalid_test, extra) |
+ self.WriteInvalidUnitTest(func, file, invalid_test, extra, *extras) |
def WriteGetDataSizeCode(self, func, file): |
"""Overrriden from TypeHandler.""" |
@@ -5142,9 +5153,9 @@ class PUTnHandler(ArrayArgTypeHandler): |
def __init__(self): |
ArrayArgTypeHandler.__init__(self) |
- def WriteServiceUnitTest(self, func, file): |
+ def WriteServiceUnitTest(self, func, file, *extras): |
"""Overridden from TypeHandler.""" |
- ArrayArgTypeHandler.WriteServiceUnitTest(self, func, file) |
+ ArrayArgTypeHandler.WriteServiceUnitTest(self, func, file, *extras) |
valid_test = """ |
TEST_P(%(test_name)s, %(name)sValidArgsCountTooLarge) { |
@@ -5178,9 +5189,9 @@ TEST_P(%(test_name)s, %(name)sValidArgsCountTooLarge) { |
'gl_args': ", ".join(gl_arg_strings), |
'args': ", ".join(arg_strings), |
} |
- self.WriteValidUnitTest(func, file, valid_test, extra) |
+ self.WriteValidUnitTest(func, file, valid_test, extra, *extras) |
- def WriteImmediateServiceUnitTest(self, func, file): |
+ def WriteImmediateServiceUnitTest(self, func, file, *extras): |
"""Overridden from TypeHandler.""" |
valid_test = """ |
TEST_P(%(test_name)s, %(name)sValidArgs) { |
@@ -5212,7 +5223,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) { |
'gl_args': ", ".join(gl_arg_strings), |
'gl_any_args': ", ".join(gl_any_strings), |
} |
- self.WriteValidUnitTest(func, file, valid_test, extra) |
+ self.WriteValidUnitTest(func, file, valid_test, extra, *extras) |
invalid_test = """ |
TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
@@ -5225,7 +5236,7 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
ExecuteImmediateCmd(cmd, sizeof(temp)));%(gl_error_test)s |
} |
""" |
- self.WriteInvalidUnitTest(func, file, invalid_test, extra) |
+ self.WriteInvalidUnitTest(func, file, invalid_test, extra, *extras) |
def WriteGetDataSizeCode(self, func, file): |
"""Overrriden from TypeHandler.""" |
@@ -5487,7 +5498,7 @@ class PUTXnHandler(ArrayArgTypeHandler): |
'values': values, |
}) |
- def WriteServiceUnitTest(self, func, file): |
+ def WriteServiceUnitTest(self, func, file, *extras): |
"""Overrriden from TypeHandler.""" |
valid_test = """ |
TEST_P(%(test_name)s, %(name)sValidArgs) { |
@@ -5505,7 +5516,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) { |
'name': func.name, |
'count': self.GetArrayCount(func), |
'local_args': local_args, |
- }) |
+ }, *extras) |
invalid_test = """ |
TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
@@ -5696,7 +5707,7 @@ class IsHandler(TypeHandler): |
if func.GetInfo('result') == None: |
func.AddInfo('result', ['uint32_t']) |
- def WriteServiceUnitTest(self, func, file): |
+ def WriteServiceUnitTest(self, func, file, *extras): |
"""Overrriden from TypeHandler.""" |
valid_test = """ |
TEST_P(%(test_name)s, %(name)sValidArgs) { |
@@ -5713,7 +5724,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) { |
comma =", " |
self.WriteValidUnitTest(func, file, valid_test, { |
'comma': comma, |
- }) |
+ }, *extras) |
invalid_test = """ |
TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
@@ -5726,7 +5737,7 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
""" |
self.WriteInvalidUnitTest(func, file, invalid_test, { |
'comma': comma, |
- }) |
+ }, *extras) |
invalid_test = """ |
TEST_P(%(test_name)s, %(name)sInvalidArgsBadSharedMemoryId) { |
@@ -5741,7 +5752,7 @@ TEST_P(%(test_name)s, %(name)sInvalidArgsBadSharedMemoryId) { |
""" |
self.WriteValidUnitTest(func, file, invalid_test, { |
'comma': comma, |
- }) |
+ }, *extras) |
def WriteServiceImplementation(self, func, file): |
"""Overrriden from TypeHandler.""" |
@@ -5895,7 +5906,7 @@ class STRnHandler(TypeHandler): |
func.WriteDestinationInitalizationValidation(file) |
file.Write(code_2 % str_args) |
- def WriteServiceUnitTest(self, func, file): |
+ def WriteServiceUnitTest(self, func, file, *extras): |
"""Overrriden from TypeHandler.""" |
valid_test = """ |
TEST_P(%(test_name)s, %(name)sValidArgs) { |
@@ -5935,7 +5946,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) { |
" EXPECT_CALL(*gl_, %s(%s, %s, _))\n" |
" .WillOnce(SetArgumentPointee<2>(strlen(kInfo) + 1));") % ( |
get_len_func[2:], id_name, get_len_enum) |
- self.WriteValidUnitTest(func, file, valid_test, sub) |
+ self.WriteValidUnitTest(func, file, valid_test, sub, *extras) |
invalid_test = """ |
TEST_P(%(test_name)s, %(name)sInvalidArgs) { |
@@ -5948,7 +5959,7 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs) { |
EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
} |
""" |
- self.WriteValidUnitTest(func, file, invalid_test) |
+ self.WriteValidUnitTest(func, file, invalid_test, *extras) |
def WriteServiceImplementation(self, func, file): |
"""Overrriden from TypeHandler.""" |
@@ -7000,9 +7011,9 @@ class Function(object): |
"""Writes the service implementation for a command.""" |
self.type_handler.WriteServiceImplementation(self, file) |
- def WriteServiceUnitTest(self, file): |
+ def WriteServiceUnitTest(self, file, *extras): |
"""Writes the service implementation for a command.""" |
- self.type_handler.WriteServiceUnitTest(self, file) |
+ self.type_handler.WriteServiceUnitTest(self, file, *extras) |
def WriteGLES2CLibImplementation(self, file): |
"""Writes the GLES2 C Lib Implemention.""" |
@@ -7131,9 +7142,9 @@ class ImmediateFunction(Function): |
"""Overridden from Function""" |
self.type_handler.WriteImmediateHandlerImplementation(self, file) |
- def WriteServiceUnitTest(self, file): |
+ def WriteServiceUnitTest(self, file, *extras): |
"""Writes the service implementation for a command.""" |
- self.type_handler.WriteImmediateServiceUnitTest(self, file) |
+ self.type_handler.WriteImmediateServiceUnitTest(self, file, *extras) |
def WriteValidationCode(self, file): |
"""Overridden from Function""" |
@@ -7211,9 +7222,9 @@ class BucketFunction(Function): |
"""Overridden from Function""" |
self.type_handler.WriteBucketHandlerImplementation(self, file) |
- def WriteServiceUnitTest(self, file): |
+ def WriteServiceUnitTest(self, file, *extras): |
"""Writes the service implementation for a command.""" |
- self.type_handler.WriteBucketServiceUnitTest(self, file) |
+ self.type_handler.WriteBucketServiceUnitTest(self, file, *extras) |
def CreateArg(arg_string): |
@@ -7633,6 +7644,9 @@ void ContextState::InitState(const ContextState *prev_state) const { |
file.Write(" gl%s(%s, %s);\n" % |
(state['func'], item['enum'], item_name)) |
else: |
+ if 'extension_flag' in state: |
+ file.Write(" if (feature_info_->feature_flags().%s)\n " % |
+ state['extension_flag']) |
if test_prev: |
file.Write(" if (") |
args = [] |
@@ -7778,19 +7792,28 @@ bool GLES2DecoderImpl::SetCapabilityState(GLenum cap, bool enabled) { |
file = CHeaderWriter( |
name, |
"// It is included by gles2_cmd_decoder_unittest_%d.cc\n" % count) |
- file.SetFileNum(count) |
+ test_name = 'GLES2DecoderTest%d' % count |
end = test_num + FUNCTIONS_PER_FILE |
if end > num_tests: |
end = num_tests |
for idx in range(test_num, end): |
func = self.functions[idx] |
+ |
+ # Do any filtering of the functions here, so that the functions |
+ # will not move between the numbered files if filtering properties |
+ # are changed. |
+ if func.GetInfo('extension_flag'): |
+ continue |
+ |
if True: |
#gen_cmd = func.GetInfo('gen_cmd') |
#if gen_cmd == True or gen_cmd == None: |
if func.GetInfo('unit_test') == False: |
file.Write("// TODO(gman): %s\n" % func.name) |
else: |
- func.WriteServiceUnitTest(file) |
+ func.WriteServiceUnitTest(file, { |
+ 'test_name': test_name |
+ }) |
file.Close() |
file = CHeaderWriter( |
@@ -7828,13 +7851,22 @@ void GLES2DecoderTestBase::SetupInitStateExpectations() { |
elif state['type'] == 'NamedParameter': |
for item in state['states']: |
if 'extension_flag' in item: |
- continue |
+ file.Write(" if (group_->feature_info()->feature_flags().%s) {\n" % |
+ item['extension_flag']) |
+ file.Write(" ") |
+ |
file.Write( |
" EXPECT_CALL(*gl_, %s(%s, %s))\n" % |
(state['func'], item['enum'], item['default'])) |
file.Write(" .Times(1)\n") |
file.Write(" .RetiresOnSaturation();\n") |
+ if 'extension_flag' in item: |
+ file.Write(" }\n") |
else: |
+ if 'extension_flag' in state: |
+ file.Write(" if (group_->feature_info()->feature_flags().%s) {\n" % |
+ state['extension_flag']) |
+ file.Write(" ") |
args = [] |
for item in state['states']: |
if 'expected' in item: |
@@ -7845,10 +7877,35 @@ void GLES2DecoderTestBase::SetupInitStateExpectations() { |
(state['func'], ", ".join(args))) |
file.Write(" .Times(1)\n") |
file.Write(" .RetiresOnSaturation();\n") |
+ if 'extension_flag' in state: |
+ file.Write(" }\n") |
file.Write("""} |
""") |
file.Close() |
+ def WriteServiceUnitTestsForExtensions(self, filename): |
+ """Writes the service decorder unit tests for functions with extension_flag. |
+ |
+ The functions are special in that they need a specific unit test |
+ baseclass to turn on the extension. |
+ """ |
+ functions = [f for f in self.functions if f.GetInfo('extension_flag')] |
+ file = CHeaderWriter( |
+ filename, |
+ "// It is included by gles2_cmd_decoder_unittest_extensions.cc\n") |
+ for func in functions: |
+ if True: |
+ if func.GetInfo('unit_test') == False: |
+ file.Write("// TODO(gman): %s\n" % func.name) |
+ else: |
+ extension = ToCamelCase( |
+ ToGLExtensionString(func.GetInfo('extension_flag'))) |
+ func.WriteServiceUnitTest(file, { |
+ 'test_name': 'GLES2DecoderTestWith%s' % extension |
+ }) |
+ |
+ file.Close() |
+ |
def WriteGLES2Header(self, filename): |
"""Writes the GLES2 header.""" |
file = CHeaderWriter( |
@@ -8349,6 +8406,8 @@ def main(argv): |
gen.WriteClientContextStateImpl( |
"client/client_context_state_impl_autogen.h") |
gen.WriteServiceUnitTests("service/gles2_cmd_decoder_unittest_%d_autogen.h") |
+ gen.WriteServiceUnitTestsForExtensions( |
+ "service/gles2_cmd_decoder_unittest_extensions_autogen.h") |
gen.WriteServiceUtilsHeader("service/gles2_cmd_validation_autogen.h") |
gen.WriteServiceUtilsImplementation( |
"service/gles2_cmd_validation_implementation_autogen.h") |