| OLD | NEW | 
|     1 #!/usr/bin/python |     1 #!/usr/bin/python | 
|     2 # |     2 # | 
|     3 # Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. |     3 # Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. | 
|     4 # Use of this source code is governed by a BSD-style license that can be |     4 # Use of this source code is governed by a BSD-style license that can be | 
|     5 # found in the LICENSE file. |     5 # found in the LICENSE file. | 
|     6  |     6  | 
|     7 """code generator for GLES2 command buffers.""" |     7 """code generator for GLES2 command buffers.""" | 
|     8  |     8  | 
|     9 import os |     9 import os | 
|    10 import os.path |    10 import os.path | 
| (...skipping 2107 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2118                   func.MakeTypedOriginalArgString(""))) |  2118                   func.MakeTypedOriginalArgString(""))) | 
|  2119       for arg in func.GetOriginalArgs(): |  2119       for arg in func.GetOriginalArgs(): | 
|  2120         arg.WriteClientSideValidationCode(file, func) |  2120         arg.WriteClientSideValidationCode(file, func) | 
|  2121       file.Write("  helper_->%s(%s);\n" % |  2121       file.Write("  helper_->%s(%s);\n" % | 
|  2122                  (func.name, func.MakeOriginalArgString(""))) |  2122                  (func.name, func.MakeOriginalArgString(""))) | 
|  2123       file.Write("}\n") |  2123       file.Write("}\n") | 
|  2124       file.Write("\n") |  2124       file.Write("\n") | 
|  2125     else: |  2125     else: | 
|  2126       self.WriteGLES2ImplementationDeclaration(func, file) |  2126       self.WriteGLES2ImplementationDeclaration(func, file) | 
|  2127  |  2127  | 
|  2128   def WriteDestinationInitalizationValidation(self, func, file): |  | 
|  2129     """Writes the client side destintion initialization validation.""" |  | 
|  2130     for arg in func.GetOriginalArgs(): |  | 
|  2131       arg.WriteDestinationInitalizationValidation(file, func) |  | 
|  2132  |  | 
|  2133   def WriteImmediateCmdComputeSize(self, func, file): |  2128   def WriteImmediateCmdComputeSize(self, func, file): | 
|  2134     """Writes the size computation code for the immediate version of a cmd.""" |  2129     """Writes the size computation code for the immediate version of a cmd.""" | 
|  2135     file.Write("  static uint32 ComputeSize(uint32 size_in_bytes) {\n") |  2130     file.Write("  static uint32 ComputeSize(uint32 size_in_bytes) {\n") | 
|  2136     file.Write("    return static_cast<uint32>(\n") |  2131     file.Write("    return static_cast<uint32>(\n") | 
|  2137     file.Write("        sizeof(ValueType) +  // NOLINT\n") |  2132     file.Write("        sizeof(ValueType) +  // NOLINT\n") | 
|  2138     file.Write("        RoundSizeToMultipleOfEntries(size_in_bytes));\n") |  2133     file.Write("        RoundSizeToMultipleOfEntries(size_in_bytes));\n") | 
|  2139     file.Write("  }\n") |  2134     file.Write("  }\n") | 
|  2140     file.Write("\n") |  2135     file.Write("\n") | 
|  2141  |  2136  | 
|  2142   def WriteImmediateCmdSetHeader(self, func, file): |  2137   def WriteImmediateCmdSetHeader(self, func, file): | 
| (...skipping 1835 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  3978  |  3973  | 
|  3979   cmd_type_map_ = { |  3974   cmd_type_map_ = { | 
|  3980     'GLenum': 'uint32', |  3975     'GLenum': 'uint32', | 
|  3981     'GLint': 'int32', |  3976     'GLint': 'int32', | 
|  3982     'GLintptr': 'int32', |  3977     'GLintptr': 'int32', | 
|  3983     'GLsizei': 'int32', |  3978     'GLsizei': 'int32', | 
|  3984     'GLsizeiptr': 'int32', |  3979     'GLsizeiptr': 'int32', | 
|  3985     'GLfloat': 'float', |  3980     'GLfloat': 'float', | 
|  3986     'GLclampf': 'float', |  3981     'GLclampf': 'float', | 
|  3987   } |  3982   } | 
|  3988   need_validation_ = ['GLsizei*', 'GLboolean*', 'GLenum*', 'GLint*'] |  | 
|  3989  |  3983  | 
|  3990   def __init__(self, name, type): |  3984   def __init__(self, name, type): | 
|  3991     self.name = name |  3985     self.name = name | 
|  3992     self.type = type |  3986     self.type = type | 
|  3993  |  3987  | 
|  3994     if type in self.cmd_type_map_: |  3988     if type in self.cmd_type_map_: | 
|  3995       self.cmd_type = self.cmd_type_map_[type] |  3989       self.cmd_type = self.cmd_type_map_[type] | 
|  3996     else: |  3990     else: | 
|  3997       self.cmd_type = 'uint32' |  3991       self.cmd_type = 'uint32' | 
|  3998  |  3992  | 
| (...skipping 29 matching lines...) Expand all  Loading... | 
|  4028                (self.type, self.name, self.type, self.name)) |  4022                (self.type, self.name, self.type, self.name)) | 
|  4029  |  4023  | 
|  4030   def WriteValidationCode(self, file, func): |  4024   def WriteValidationCode(self, file, func): | 
|  4031     """Writes the validation code for an argument.""" |  4025     """Writes the validation code for an argument.""" | 
|  4032     pass |  4026     pass | 
|  4033  |  4027  | 
|  4034   def WriteClientSideValidationCode(self, file, func): |  4028   def WriteClientSideValidationCode(self, file, func): | 
|  4035     """Writes the validation code for an argument.""" |  4029     """Writes the validation code for an argument.""" | 
|  4036     pass |  4030     pass | 
|  4037  |  4031  | 
|  4038   def WriteDestinationInitalizationValidation(self, file, func): |  | 
|  4039     """Writes the client side destintion initialization validation.""" |  | 
|  4040     pass |  | 
|  4041  |  | 
|  4042   def WriteDestinationInitalizationValidatationIfNeeded(self, file, func): |  | 
|  4043     """Writes the client side destintion initialization validation if needed.""" |  | 
|  4044     parts = self.type.split(" ") |  | 
|  4045     if len(parts) > 1: |  | 
|  4046       return |  | 
|  4047     if parts[0] in self.need_validation_: |  | 
|  4048       file.Write("  GL_CLIENT_VALIDATE_DESTINATION_INITALIZATION(%s, %s);\n" % |  | 
|  4049           (self.type[:-1], self.name)) |  | 
|  4050  |  | 
|  4051  |  | 
|  4052   def WriteGetAddress(self, file): |  4032   def WriteGetAddress(self, file): | 
|  4053     """Writes the code to get the address this argument refers to.""" |  4033     """Writes the code to get the address this argument refers to.""" | 
|  4054     pass |  4034     pass | 
|  4055  |  4035  | 
|  4056   def GetImmediateVersion(self): |  4036   def GetImmediateVersion(self): | 
|  4057     """Gets the immediate version of this argument.""" |  4037     """Gets the immediate version of this argument.""" | 
|  4058     return self |  4038     return self | 
|  4059  |  4039  | 
|  4060   def GetBucketVersion(self): |  4040   def GetBucketVersion(self): | 
|  4061     """Gets the bucket version of this argument.""" |  4041     """Gets the bucket version of this argument.""" | 
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  4226   def WriteValidationCode(self, file, func): |  4206   def WriteValidationCode(self, file, func): | 
|  4227     """Overridden from Argument.""" |  4207     """Overridden from Argument.""" | 
|  4228     file.Write("  if (%s == NULL) {\n" % self.name) |  4208     file.Write("  if (%s == NULL) {\n" % self.name) | 
|  4229     file.Write("    return error::kOutOfBounds;\n") |  4209     file.Write("    return error::kOutOfBounds;\n") | 
|  4230     file.Write("  }\n") |  4210     file.Write("  }\n") | 
|  4231  |  4211  | 
|  4232   def GetImmediateVersion(self): |  4212   def GetImmediateVersion(self): | 
|  4233     """Overridden from Argument.""" |  4213     """Overridden from Argument.""" | 
|  4234     return None |  4214     return None | 
|  4235  |  4215  | 
|  4236   def WriteDestinationInitalizationValidation(self, file, func): |  | 
|  4237     """Overridden from Argument.""" |  | 
|  4238     self.WriteDestinationInitalizationValidatationIfNeeded(file, func) |  | 
|  4239  |  | 
|  4240  |  4216  | 
|  4241 class BucketPointerArgument(Argument): |  4217 class BucketPointerArgument(Argument): | 
|  4242   """A class that represents an bucket argument to a function.""" |  4218   """A class that represents an bucket argument to a function.""" | 
|  4243  |  4219  | 
|  4244   def __init__(self, name, type): |  4220   def __init__(self, name, type): | 
|  4245     Argument.__init__(self, name, type) |  4221     Argument.__init__(self, name, type) | 
|  4246  |  4222  | 
|  4247   def AddCmdArgs(self, args): |  4223   def AddCmdArgs(self, args): | 
|  4248     """Overridden from Argument.""" |  4224     """Overridden from Argument.""" | 
|  4249     pass |  4225     pass | 
|  4250  |  4226  | 
|  4251   def WriteGetCode(self, file): |  4227   def WriteGetCode(self, file): | 
|  4252     """Overridden from Argument.""" |  4228     """Overridden from Argument.""" | 
|  4253     file.Write( |  4229     file.Write( | 
|  4254       "  %s %s = bucket->GetData(0, data_size);\n" % |  4230       "  %s %s = bucket->GetData(0, data_size);\n" % | 
|  4255       (self.type, self.name)) |  4231       (self.type, self.name)) | 
|  4256  |  4232  | 
|  4257   def WriteValidationCode(self, file, func): |  4233   def WriteValidationCode(self, file, func): | 
|  4258     """Overridden from Argument.""" |  4234     """Overridden from Argument.""" | 
|  4259     pass |  4235     pass | 
|  4260  |  4236  | 
|  4261   def GetImmediateVersion(self): |  4237   def GetImmediateVersion(self): | 
|  4262     """Overridden from Argument.""" |  4238     """Overridden from Argument.""" | 
|  4263     return None |  4239     return None | 
|  4264  |  4240  | 
|  4265   def WriteDestinationInitalizationValidation(self, file, func): |  | 
|  4266     """Overridden from Argument.""" |  | 
|  4267     self.WriteDestinationInitalizationValidatationIfNeeded(file, func) |  | 
|  4268  |  | 
|  4269  |  4241  | 
|  4270 class PointerArgument(Argument): |  4242 class PointerArgument(Argument): | 
|  4271   """A class that represents a pointer argument to a function.""" |  4243   """A class that represents a pointer argument to a function.""" | 
|  4272  |  4244  | 
|  4273   def __init__(self, name, type): |  4245   def __init__(self, name, type): | 
|  4274     Argument.__init__(self, name, type) |  4246     Argument.__init__(self, name, type) | 
|  4275  |  4247  | 
|  4276   def IsPointer(self): |  4248   def IsPointer(self): | 
|  4277     """Returns true if argument is a pointer.""" |  4249     """Returns true if argument is a pointer.""" | 
|  4278     return True |  4250     return True | 
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  4329   def GetImmediateVersion(self): |  4301   def GetImmediateVersion(self): | 
|  4330     """Overridden from Argument.""" |  4302     """Overridden from Argument.""" | 
|  4331     return ImmediatePointerArgument(self.name, self.type) |  4303     return ImmediatePointerArgument(self.name, self.type) | 
|  4332  |  4304  | 
|  4333   def GetBucketVersion(self): |  4305   def GetBucketVersion(self): | 
|  4334     """Overridden from Argument.""" |  4306     """Overridden from Argument.""" | 
|  4335     if self.type == "const char*": |  4307     if self.type == "const char*": | 
|  4336       return InputStringBucketArgument(self.name, self.type) |  4308       return InputStringBucketArgument(self.name, self.type) | 
|  4337     return BucketPointerArgument(self.name, self.type) |  4309     return BucketPointerArgument(self.name, self.type) | 
|  4338  |  4310  | 
|  4339   def WriteDestinationInitalizationValidation(self, file, func): |  | 
|  4340     """Overridden from Argument.""" |  | 
|  4341     self.WriteDestinationInitalizationValidatationIfNeeded(file, func) |  | 
|  4342  |  | 
|  4343  |  4311  | 
|  4344 class InputStringBucketArgument(Argument): |  4312 class InputStringBucketArgument(Argument): | 
|  4345   """An string input argument where the string is passed in a bucket.""" |  4313   """An string input argument where the string is passed in a bucket.""" | 
|  4346  |  4314  | 
|  4347   def __init__(self, name, type): |  4315   def __init__(self, name, type): | 
|  4348     Argument.__init__(self, name + "_bucket_id", "uint32") |  4316     Argument.__init__(self, name + "_bucket_id", "uint32") | 
|  4349  |  4317  | 
|  4350   def WriteGetCode(self, file): |  4318   def WriteGetCode(self, file): | 
|  4351     """Overridden from Argument.""" |  4319     """Overridden from Argument.""" | 
|  4352     code = """ |  4320     code = """ | 
| (...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  4654     self.type_handler.WriteServiceImplementation(self, file) |  4622     self.type_handler.WriteServiceImplementation(self, file) | 
|  4655  |  4623  | 
|  4656   def WriteServiceUnitTest(self, file): |  4624   def WriteServiceUnitTest(self, file): | 
|  4657     """Writes the service implementation for a command.""" |  4625     """Writes the service implementation for a command.""" | 
|  4658     self.type_handler.WriteServiceUnitTest(self, file) |  4626     self.type_handler.WriteServiceUnitTest(self, file) | 
|  4659  |  4627  | 
|  4660   def WriteGLES2ImplementationHeader(self, file): |  4628   def WriteGLES2ImplementationHeader(self, file): | 
|  4661     """Writes the GLES2 Implemention declaration.""" |  4629     """Writes the GLES2 Implemention declaration.""" | 
|  4662     self.type_handler.WriteGLES2ImplementationHeader(self, file) |  4630     self.type_handler.WriteGLES2ImplementationHeader(self, file) | 
|  4663  |  4631  | 
|  4664   def WriteDestinationInitalizationValidation(self, file): |  | 
|  4665     """Writes the client side destintion initialization validation.""" |  | 
|  4666     self.type_handler.WriteDestinationInitalizationValidation(self, file) |  | 
|  4667  |  | 
|  4668   def WriteFormatTest(self, file): |  4632   def WriteFormatTest(self, file): | 
|  4669     """Writes the cmd's format test.""" |  4633     """Writes the cmd's format test.""" | 
|  4670     self.type_handler.WriteFormatTest(self, file) |  4634     self.type_handler.WriteFormatTest(self, file) | 
|  4671  |  4635  | 
|  4672  |  4636  | 
|  4673 class ImmediateFunction(Function): |  4637 class ImmediateFunction(Function): | 
|  4674   """A class that represnets an immediate function command.""" |  4638   """A class that represnets an immediate function command.""" | 
|  4675  |  4639  | 
|  4676   def __init__(self, func): |  4640   def __init__(self, func): | 
|  4677     new_args = [] |  4641     new_args = [] | 
| (...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  5142   def WriteGLES2CLibImplementation(self, filename): |  5106   def WriteGLES2CLibImplementation(self, filename): | 
|  5143     """Writes the GLES2 c lib implementation.""" |  5107     """Writes the GLES2 c lib implementation.""" | 
|  5144     file = CHeaderWriter( |  5108     file = CHeaderWriter( | 
|  5145         filename, |  5109         filename, | 
|  5146         "// These functions emluate GLES2 over command buffers.\n") |  5110         "// These functions emluate GLES2 over command buffers.\n") | 
|  5147  |  5111  | 
|  5148     for func in self.original_functions: |  5112     for func in self.original_functions: | 
|  5149       file.Write("%s GLES2%s(%s) {\n" % |  5113       file.Write("%s GLES2%s(%s) {\n" % | 
|  5150                  (func.return_type, func.name, |  5114                  (func.return_type, func.name, | 
|  5151                   func.MakeTypedOriginalArgString(""))) |  5115                   func.MakeTypedOriginalArgString(""))) | 
|  5152       func.WriteDestinationInitalizationValidation(file) |  | 
|  5153       comma = "" |  5116       comma = "" | 
|  5154       if len(func.GetOriginalArgs()): |  5117       if len(func.GetOriginalArgs()): | 
|  5155         comma = " << " |  5118         comma = " << " | 
|  5156       file.Write( |  5119       file.Write( | 
|  5157           '  GPU_CLIENT_LOG("%s" << "("%s%s << ")");\n' % |  5120           '  GPU_CLIENT_LOG("%s" << "("%s%s << ")");\n' % | 
|  5158           (func.original_name, comma, func.MakeOriginalArgString( |  5121           (func.original_name, comma, func.MakeOriginalArgString( | 
|  5159               "", separator=' << ", " << '))) |  5122               "", separator=' << ", " << '))) | 
|  5160       result_string = "%s result = " % func.return_type |  5123       result_string = "%s result = " % func.return_type | 
|  5161       return_string = ( |  5124       return_string = ( | 
|  5162           '  GPU_CLIENT_LOG("return:" << result)\n  return result;\n') |  5125           '  GPU_CLIENT_LOG("return:" << result)\n  return result;\n') | 
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  5356  |  5319  | 
|  5357     if options.generate_docs: |  5320     if options.generate_docs: | 
|  5358       gen.WriteDocs("docs/gles2_cmd_format_docs_autogen.h") |  5321       gen.WriteDocs("docs/gles2_cmd_format_docs_autogen.h") | 
|  5359  |  5322  | 
|  5360   if gen.errors > 0: |  5323   if gen.errors > 0: | 
|  5361     print "%d errors" % gen.errors |  5324     print "%d errors" % gen.errors | 
|  5362     sys.exit(1) |  5325     sys.exit(1) | 
|  5363  |  5326  | 
|  5364 if __name__ == '__main__': |  5327 if __name__ == '__main__': | 
|  5365   main(sys.argv[1:]) |  5328   main(sys.argv[1:]) | 
| OLD | NEW |