| 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 os | 8 import os |
| 9 import os.path | 9 import os.path |
| 10 import sys | 10 import sys |
| (...skipping 2401 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2412 """Overrriden from TypeHandler.""" | 2412 """Overrriden from TypeHandler.""" |
| 2413 pass | 2413 pass |
| 2414 | 2414 |
| 2415 def WriteGLES2ImplementationHeader(self, func, file): | 2415 def WriteGLES2ImplementationHeader(self, func, file): |
| 2416 """Overrriden from TypeHandler.""" | 2416 """Overrriden from TypeHandler.""" |
| 2417 file.Write("%s %s(%s) {\n" % | 2417 file.Write("%s %s(%s) {\n" % |
| 2418 (func.return_type, func.original_name, | 2418 (func.return_type, func.original_name, |
| 2419 func.MakeTypedOriginalArgString(""))) | 2419 func.MakeTypedOriginalArgString(""))) |
| 2420 file.Write(" // TODO: for now this is a no-op\n") | 2420 file.Write(" // TODO: for now this is a no-op\n") |
| 2421 file.Write( | 2421 file.Write( |
| 2422 " SetGLError(GL_INVALID_OPERATION, \"gl%s not implemented\");\n" % | 2422 " SetGLError(GL_INVALID_OPERATION, \"gl%s\", \"not implemented\");\n" % |
| 2423 func.name) | 2423 func.name) |
| 2424 if func.return_type != "void": | 2424 if func.return_type != "void": |
| 2425 file.Write(" return 0;\n") | 2425 file.Write(" return 0;\n") |
| 2426 file.Write("}\n") | 2426 file.Write("}\n") |
| 2427 file.Write("\n") | 2427 file.Write("\n") |
| 2428 | 2428 |
| 2429 def WriteServiceImplementation(self, func, file): | 2429 def WriteServiceImplementation(self, func, file): |
| 2430 """Overrriden from TypeHandler.""" | 2430 """Overrriden from TypeHandler.""" |
| 2431 file.Write( | 2431 file.Write( |
| 2432 "error::Error GLES2DecoderImpl::Handle%s(\n" % func.name) | 2432 "error::Error GLES2DecoderImpl::Handle%s(\n" % func.name) |
| 2433 file.Write( | 2433 file.Write( |
| 2434 " uint32 immediate_data_size, const gles2::%s& c) {\n" % func.name) | 2434 " uint32 immediate_data_size, const gles2::%s& c) {\n" % func.name) |
| 2435 file.Write(" // TODO: for now this is a no-op\n") | 2435 file.Write(" // TODO: for now this is a no-op\n") |
| 2436 file.Write( | 2436 file.Write( |
| 2437 " SetGLError(GL_INVALID_OPERATION, \"gl%s not implemented\");\n" % | 2437 " SetGLError(GL_INVALID_OPERATION, \"gl%s\", \"not implemented\");\n" % |
| 2438 func.name) | 2438 func.name) |
| 2439 file.Write(" return error::kNoError;\n") | 2439 file.Write(" return error::kNoError;\n") |
| 2440 file.Write("}\n") | 2440 file.Write("}\n") |
| 2441 file.Write("\n") | 2441 file.Write("\n") |
| 2442 | 2442 |
| 2443 | 2443 |
| 2444 class HandWrittenHandler(CustomHandler): | 2444 class HandWrittenHandler(CustomHandler): |
| 2445 """Handler for comands where everything must be written by hand.""" | 2445 """Handler for comands where everything must be written by hand.""" |
| 2446 | 2446 |
| 2447 def InitFunction(self, func): | 2447 def InitFunction(self, func): |
| (...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2738 (impl_decl == None or impl_decl == True)): | 2738 (impl_decl == None or impl_decl == True)): |
| 2739 file.Write("%s %s(%s) {\n" % | 2739 file.Write("%s %s(%s) {\n" % |
| 2740 (func.return_type, func.original_name, | 2740 (func.return_type, func.original_name, |
| 2741 func.MakeTypedOriginalArgString(""))) | 2741 func.MakeTypedOriginalArgString(""))) |
| 2742 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") | 2742 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") |
| 2743 func.WriteDestinationInitalizationValidation(file) | 2743 func.WriteDestinationInitalizationValidation(file) |
| 2744 self.WriteClientGLCallLog(func, file) | 2744 self.WriteClientGLCallLog(func, file) |
| 2745 for arg in func.GetOriginalArgs(): | 2745 for arg in func.GetOriginalArgs(): |
| 2746 arg.WriteClientSideValidationCode(file, func) | 2746 arg.WriteClientSideValidationCode(file, func) |
| 2747 code = """ if (Is%(type)sReservedId(%(id)s)) { | 2747 code = """ if (Is%(type)sReservedId(%(id)s)) { |
| 2748 SetGLError(GL_INVALID_OPERATION, "%(name)s: %(id)s reserved id"); | 2748 SetGLError(GL_INVALID_OPERATION, "%(name)s\", \"%(id)s reserved id"); |
| 2749 return; | 2749 return; |
| 2750 } | 2750 } |
| 2751 Bind%(type)sHelper(%(arg_string)s); | 2751 Bind%(type)sHelper(%(arg_string)s); |
| 2752 helper_->%(name)s(%(arg_string)s); | 2752 helper_->%(name)s(%(arg_string)s); |
| 2753 } | 2753 } |
| 2754 | 2754 |
| 2755 """ | 2755 """ |
| 2756 file.Write(code % { | 2756 file.Write(code % { |
| 2757 'name': func.name, | 2757 'name': func.name, |
| 2758 'arg_string': func.MakeOriginalArgString(""), | 2758 'arg_string': func.MakeOriginalArgString(""), |
| (...skipping 627 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3386 return error::kInvalidArguments; | 3386 return error::kInvalidArguments; |
| 3387 } | 3387 } |
| 3388 CopyRealGLErrorsToWrapper(); | 3388 CopyRealGLErrorsToWrapper(); |
| 3389 """ | 3389 """ |
| 3390 file.Write(code) | 3390 file.Write(code) |
| 3391 func.WriteHandlerImplementation(file) | 3391 func.WriteHandlerImplementation(file) |
| 3392 code = """ GLenum error = glGetError(); | 3392 code = """ GLenum error = glGetError(); |
| 3393 if (error == GL_NO_ERROR) { | 3393 if (error == GL_NO_ERROR) { |
| 3394 result->SetNumResults(num_values); | 3394 result->SetNumResults(num_values); |
| 3395 } else { | 3395 } else { |
| 3396 SetGLError(error, NULL); | 3396 SetGLError(error, "", ""); |
| 3397 } | 3397 } |
| 3398 return error::kNoError; | 3398 return error::kNoError; |
| 3399 } | 3399 } |
| 3400 | 3400 |
| 3401 """ | 3401 """ |
| 3402 file.Write(code) | 3402 file.Write(code) |
| 3403 | 3403 |
| 3404 def WriteGLES2ImplementationHeader(self, func, file): | 3404 def WriteGLES2ImplementationHeader(self, func, file): |
| 3405 """Overrriden from TypeHandler.""" | 3405 """Overrriden from TypeHandler.""" |
| 3406 impl_decl = func.GetInfo('impl_decl') | 3406 impl_decl = func.GetInfo('impl_decl') |
| (...skipping 1310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4717 return 0 | 4717 return 0 |
| 4718 return 1 | 4718 return 1 |
| 4719 | 4719 |
| 4720 def GetInvalidArg(self, offset, index): | 4720 def GetInvalidArg(self, offset, index): |
| 4721 """overridden from Argument.""" | 4721 """overridden from Argument.""" |
| 4722 return ("-1", "kNoError", "GL_INVALID_VALUE") | 4722 return ("-1", "kNoError", "GL_INVALID_VALUE") |
| 4723 | 4723 |
| 4724 def WriteValidationCode(self, file, func): | 4724 def WriteValidationCode(self, file, func): |
| 4725 """overridden from Argument.""" | 4725 """overridden from Argument.""" |
| 4726 file.Write(" if (%s < 0) {\n" % self.name) | 4726 file.Write(" if (%s < 0) {\n" % self.name) |
| 4727 file.Write(" SetGLError(GL_INVALID_VALUE, \"gl%s: %s < 0\");\n" % | 4727 file.Write(" SetGLError(GL_INVALID_VALUE, \"gl%s\", \"%s < 0\");\n" % |
| 4728 (func.original_name, self.name)) | 4728 (func.original_name, self.name)) |
| 4729 file.Write(" return error::kNoError;\n") | 4729 file.Write(" return error::kNoError;\n") |
| 4730 file.Write(" }\n") | 4730 file.Write(" }\n") |
| 4731 | 4731 |
| 4732 def WriteClientSideValidationCode(self, file, func): | 4732 def WriteClientSideValidationCode(self, file, func): |
| 4733 """overridden from Argument.""" | 4733 """overridden from Argument.""" |
| 4734 file.Write(" if (%s < 0) {\n" % self.name) | 4734 file.Write(" if (%s < 0) {\n" % self.name) |
| 4735 file.Write(" SetGLError(GL_INVALID_VALUE, \"gl%s: %s < 0\");\n" % | 4735 file.Write(" SetGLError(GL_INVALID_VALUE, \"gl%s\", \"%s < 0\");\n" % |
| 4736 (func.original_name, self.name)) | 4736 (func.original_name, self.name)) |
| 4737 file.Write(" return;\n") | 4737 file.Write(" return;\n") |
| 4738 file.Write(" }\n") | 4738 file.Write(" }\n") |
| 4739 | 4739 |
| 4740 | 4740 |
| 4741 class SizeNotNegativeArgument(SizeArgument): | 4741 class SizeNotNegativeArgument(SizeArgument): |
| 4742 """class for GLsizeiNotNegative. It's NEVER allowed to be negative""" | 4742 """class for GLsizeiNotNegative. It's NEVER allowed to be negative""" |
| 4743 | 4743 |
| 4744 def __init__(self, name, type, gl_type): | 4744 def __init__(self, name, type, gl_type): |
| 4745 SizeArgument.__init__(self, name, gl_type) | 4745 SizeArgument.__init__(self, name, gl_type) |
| 4746 | 4746 |
| 4747 def GetInvalidArg(self, offset, index): | 4747 def GetInvalidArg(self, offset, index): |
| 4748 """overridden from SizeArgument.""" | 4748 """overridden from SizeArgument.""" |
| 4749 return ("-1", "kOutOfBounds", "GL_NO_ERROR") | 4749 return ("-1", "kOutOfBounds", "GL_NO_ERROR") |
| 4750 | 4750 |
| 4751 def WriteValidationCode(self, file, func): | 4751 def WriteValidationCode(self, file, func): |
| 4752 """overridden from SizeArgument.""" | 4752 """overridden from SizeArgument.""" |
| 4753 pass | 4753 pass |
| 4754 #file.Write(" if (%s < 0) {\n" % self.name) | |
| 4755 #file.Write(" SetGLError(GL_INVALID_VALUE, \"gl%s: %s < 0\");\n" % | |
| 4756 # (func.original_name, self.name)) | |
| 4757 #file.Write(" return error::kNoError;\n") | |
| 4758 #file.Write(" }\n") | |
| 4759 | 4754 |
| 4760 | 4755 |
| 4761 class EnumBaseArgument(Argument): | 4756 class EnumBaseArgument(Argument): |
| 4762 """Base class for EnumArgument, IntArgument and ValidatedBoolArgument""" | 4757 """Base class for EnumArgument, IntArgument and ValidatedBoolArgument""" |
| 4763 | 4758 |
| 4764 def __init__(self, name, gl_type, type, gl_error): | 4759 def __init__(self, name, gl_type, type, gl_error): |
| 4765 Argument.__init__(self, name, gl_type) | 4760 Argument.__init__(self, name, gl_type) |
| 4766 | 4761 |
| 4767 self.local_type = type | 4762 self.local_type = type |
| 4768 self.gl_error = gl_error | 4763 self.gl_error = gl_error |
| 4769 name = type[len(gl_type):] | 4764 name = type[len(gl_type):] |
| 4770 self.type_name = name | 4765 self.type_name = name |
| 4771 self.enum_info = _ENUM_LISTS[name] | 4766 self.enum_info = _ENUM_LISTS[name] |
| 4772 | 4767 |
| 4773 def WriteValidationCode(self, file, func): | 4768 def WriteValidationCode(self, file, func): |
| 4774 file.Write(" if (!validators_->%s.IsValid(%s)) {\n" % | 4769 file.Write(" if (!validators_->%s.IsValid(%s)) {\n" % |
| 4775 (ToUnderscore(self.type_name), self.name)) | 4770 (ToUnderscore(self.type_name), self.name)) |
| 4776 file.Write(" SetGLError(%s, \"gl%s: %s %s\");\n" % | 4771 file.Write(" SetGLError(%s, \"gl%s\", \"%s %s\");\n" % |
| 4777 (self.gl_error, func.original_name, self.name, self.gl_error)) | 4772 (self.gl_error, func.original_name, self.name, self.gl_error)) |
| 4778 file.Write(" return error::kNoError;\n") | 4773 file.Write(" return error::kNoError;\n") |
| 4779 file.Write(" }\n") | 4774 file.Write(" }\n") |
| 4780 | 4775 |
| 4781 def GetValidArg(self, func, offset, index): | 4776 def GetValidArg(self, func, offset, index): |
| 4782 valid_arg = func.GetValidArg(offset) | 4777 valid_arg = func.GetValidArg(offset) |
| 4783 if valid_arg != None: | 4778 if valid_arg != None: |
| 4784 return valid_arg | 4779 return valid_arg |
| 4785 if 'valid' in self.enum_info: | 4780 if 'valid' in self.enum_info: |
| 4786 valid = self.enum_info['valid'] | 4781 valid = self.enum_info['valid'] |
| (...skipping 1478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6265 gen.WriteCommonUtilsImpl("common/gles2_cmd_utils_implementation_autogen.h") | 6260 gen.WriteCommonUtilsImpl("common/gles2_cmd_utils_implementation_autogen.h") |
| 6266 | 6261 |
| 6267 if gen.errors > 0: | 6262 if gen.errors > 0: |
| 6268 print "%d errors" % gen.errors | 6263 print "%d errors" % gen.errors |
| 6269 return 1 | 6264 return 1 |
| 6270 return 0 | 6265 return 0 |
| 6271 | 6266 |
| 6272 | 6267 |
| 6273 if __name__ == '__main__': | 6268 if __name__ == '__main__': |
| 6274 sys.exit(main(sys.argv[1:])) | 6269 sys.exit(main(sys.argv[1:])) |
| OLD | NEW |