| 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 2916 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2927 def WriteImmediateHandlerImplementation (self, func, file): | 2927 def WriteImmediateHandlerImplementation (self, func, file): |
| 2928 """Writes the handler impl for the immediate version of a command.""" | 2928 """Writes the handler impl for the immediate version of a command.""" |
| 2929 file.Write(" %s(%s);\n" % | 2929 file.Write(" %s(%s);\n" % |
| 2930 (func.GetGLFunctionName(), func.MakeOriginalArgString(""))) | 2930 (func.GetGLFunctionName(), func.MakeOriginalArgString(""))) |
| 2931 | 2931 |
| 2932 def WriteBucketHandlerImplementation (self, func, file): | 2932 def WriteBucketHandlerImplementation (self, func, file): |
| 2933 """Writes the handler impl for the bucket version of a command.""" | 2933 """Writes the handler impl for the bucket version of a command.""" |
| 2934 file.Write(" %s(%s);\n" % | 2934 file.Write(" %s(%s);\n" % |
| 2935 (func.GetGLFunctionName(), func.MakeOriginalArgString(""))) | 2935 (func.GetGLFunctionName(), func.MakeOriginalArgString(""))) |
| 2936 | 2936 |
| 2937 def WriteServiceHandlerFunctionHeader(self, func, file): |
| 2938 """Writes function header for service implementation handlers.""" |
| 2939 file.Write("""error::Error GLES2DecoderImpl::Handle%(name)s( |
| 2940 uint32_t immediate_data_size, const void* cmd_data) { |
| 2941 const gles2::cmds::%(name)s& c = |
| 2942 *static_cast<const gles2::cmds::%(name)s*>(cmd_data); |
| 2943 (void)c; |
| 2944 """ % {'name': func.name}) |
| 2945 |
| 2937 def WriteServiceImplementation(self, func, file): | 2946 def WriteServiceImplementation(self, func, file): |
| 2938 """Writes the service implementation for a command.""" | 2947 """Writes the service implementation for a command.""" |
| 2939 file.Write( | 2948 self.WriteServiceHandlerFunctionHeader(func, file) |
| 2940 "error::Error GLES2DecoderImpl::Handle%s(\n" % func.name) | |
| 2941 file.Write( | |
| 2942 " uint32_t immediate_data_size, const gles2::cmds::%s& c) {\n" % | |
| 2943 func.name) | |
| 2944 self.WriteHandlerExtensionCheck(func, file) | 2949 self.WriteHandlerExtensionCheck(func, file) |
| 2945 self.WriteHandlerDeferReadWrite(func, file); | 2950 self.WriteHandlerDeferReadWrite(func, file); |
| 2946 if len(func.GetOriginalArgs()) > 0: | 2951 if len(func.GetOriginalArgs()) > 0: |
| 2947 last_arg = func.GetLastOriginalArg() | 2952 last_arg = func.GetLastOriginalArg() |
| 2948 all_but_last_arg = func.GetOriginalArgs()[:-1] | 2953 all_but_last_arg = func.GetOriginalArgs()[:-1] |
| 2949 for arg in all_but_last_arg: | 2954 for arg in all_but_last_arg: |
| 2950 arg.WriteGetCode(file) | 2955 arg.WriteGetCode(file) |
| 2951 self.WriteGetDataSizeCode(func, file) | 2956 self.WriteGetDataSizeCode(func, file) |
| 2952 last_arg.WriteGetCode(file) | 2957 last_arg.WriteGetCode(file) |
| 2953 func.WriteHandlerValidation(file) | 2958 func.WriteHandlerValidation(file) |
| 2954 func.WriteHandlerImplementation(file) | 2959 func.WriteHandlerImplementation(file) |
| 2955 file.Write(" return error::kNoError;\n") | 2960 file.Write(" return error::kNoError;\n") |
| 2956 file.Write("}\n") | 2961 file.Write("}\n") |
| 2957 file.Write("\n") | 2962 file.Write("\n") |
| 2958 | 2963 |
| 2959 def WriteImmediateServiceImplementation(self, func, file): | 2964 def WriteImmediateServiceImplementation(self, func, file): |
| 2960 """Writes the service implementation for an immediate version of command.""" | 2965 """Writes the service implementation for an immediate version of command.""" |
| 2961 file.Write( | 2966 self.WriteServiceHandlerFunctionHeader(func, file) |
| 2962 "error::Error GLES2DecoderImpl::Handle%s(\n" % func.name) | |
| 2963 file.Write( | |
| 2964 " uint32_t immediate_data_size, const gles2::cmds::%s& c) {\n" % | |
| 2965 func.name) | |
| 2966 self.WriteHandlerExtensionCheck(func, file) | 2967 self.WriteHandlerExtensionCheck(func, file) |
| 2967 self.WriteHandlerDeferReadWrite(func, file); | 2968 self.WriteHandlerDeferReadWrite(func, file); |
| 2968 last_arg = func.GetLastOriginalArg() | 2969 last_arg = func.GetLastOriginalArg() |
| 2969 all_but_last_arg = func.GetOriginalArgs()[:-1] | 2970 all_but_last_arg = func.GetOriginalArgs()[:-1] |
| 2970 for arg in all_but_last_arg: | 2971 for arg in all_but_last_arg: |
| 2971 arg.WriteGetCode(file) | 2972 arg.WriteGetCode(file) |
| 2972 self.WriteGetDataSizeCode(func, file) | 2973 self.WriteGetDataSizeCode(func, file) |
| 2973 last_arg.WriteGetCode(file) | 2974 last_arg.WriteGetCode(file) |
| 2974 func.WriteHandlerValidation(file) | 2975 func.WriteHandlerValidation(file) |
| 2975 func.WriteHandlerImplementation(file) | 2976 func.WriteHandlerImplementation(file) |
| 2976 file.Write(" return error::kNoError;\n") | 2977 file.Write(" return error::kNoError;\n") |
| 2977 file.Write("}\n") | 2978 file.Write("}\n") |
| 2978 file.Write("\n") | 2979 file.Write("\n") |
| 2979 | 2980 |
| 2980 def WriteBucketServiceImplementation(self, func, file): | 2981 def WriteBucketServiceImplementation(self, func, file): |
| 2981 """Writes the service implementation for a bucket version of command.""" | 2982 """Writes the service implementation for a bucket version of command.""" |
| 2982 file.Write( | 2983 self.WriteServiceHandlerFunctionHeader(func, file) |
| 2983 "error::Error GLES2DecoderImpl::Handle%s(\n" % func.name) | |
| 2984 file.Write( | |
| 2985 " uint32_t immediate_data_size, const gles2::cmds::%s& c) {\n" % | |
| 2986 func.name) | |
| 2987 self.WriteHandlerExtensionCheck(func, file) | 2984 self.WriteHandlerExtensionCheck(func, file) |
| 2988 self.WriteHandlerDeferReadWrite(func, file); | 2985 self.WriteHandlerDeferReadWrite(func, file); |
| 2989 last_arg = func.GetLastOriginalArg() | 2986 last_arg = func.GetLastOriginalArg() |
| 2990 all_but_last_arg = func.GetOriginalArgs()[:-1] | 2987 all_but_last_arg = func.GetOriginalArgs()[:-1] |
| 2991 for arg in all_but_last_arg: | 2988 for arg in all_but_last_arg: |
| 2992 arg.WriteGetCode(file) | 2989 arg.WriteGetCode(file) |
| 2993 self.WriteGetDataSizeCode(func, file) | 2990 self.WriteGetDataSizeCode(func, file) |
| 2994 last_arg.WriteGetCode(file) | 2991 last_arg.WriteGetCode(file) |
| 2995 func.WriteHandlerValidation(file) | 2992 func.WriteHandlerValidation(file) |
| 2996 func.WriteHandlerImplementation(file) | 2993 func.WriteHandlerImplementation(file) |
| (...skipping 719 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3716 " SetGLError(" | 3713 " SetGLError(" |
| 3717 "GL_INVALID_OPERATION, \"gl%s\", \"not implemented\");\n" % | 3714 "GL_INVALID_OPERATION, \"gl%s\", \"not implemented\");\n" % |
| 3718 func.name) | 3715 func.name) |
| 3719 if func.return_type != "void": | 3716 if func.return_type != "void": |
| 3720 file.Write(" return 0;\n") | 3717 file.Write(" return 0;\n") |
| 3721 file.Write("}\n") | 3718 file.Write("}\n") |
| 3722 file.Write("\n") | 3719 file.Write("\n") |
| 3723 | 3720 |
| 3724 def WriteServiceImplementation(self, func, file): | 3721 def WriteServiceImplementation(self, func, file): |
| 3725 """Overrriden from TypeHandler.""" | 3722 """Overrriden from TypeHandler.""" |
| 3726 file.Write( | 3723 self.WriteServiceHandlerFunctionHeader(func, file) |
| 3727 "error::Error GLES2DecoderImpl::Handle%s(\n" % func.name) | |
| 3728 file.Write( | |
| 3729 " uint32_t immediate_data_size, const gles2::cmds::%s& c) {\n" % | |
| 3730 func.name) | |
| 3731 file.Write(" // TODO: for now this is a no-op\n") | 3724 file.Write(" // TODO: for now this is a no-op\n") |
| 3732 file.Write( | 3725 file.Write( |
| 3733 " LOCAL_SET_GL_ERROR(" | 3726 " LOCAL_SET_GL_ERROR(" |
| 3734 "GL_INVALID_OPERATION, \"gl%s\", \"not implemented\");\n" % | 3727 "GL_INVALID_OPERATION, \"gl%s\", \"not implemented\");\n" % |
| 3735 func.name) | 3728 func.name) |
| 3736 file.Write(" return error::kNoError;\n") | 3729 file.Write(" return error::kNoError;\n") |
| 3737 file.Write("}\n") | 3730 file.Write("}\n") |
| 3738 file.Write("\n") | 3731 file.Write("\n") |
| 3739 | 3732 |
| 3740 | 3733 |
| (...skipping 991 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4732 | 4725 |
| 4733 def __init__(self): | 4726 def __init__(self): |
| 4734 TypeHandler.__init__(self) | 4727 TypeHandler.__init__(self) |
| 4735 | 4728 |
| 4736 def NeedsDataTransferFunction(self, func): | 4729 def NeedsDataTransferFunction(self, func): |
| 4737 """Overriden from TypeHandler.""" | 4730 """Overriden from TypeHandler.""" |
| 4738 return False | 4731 return False |
| 4739 | 4732 |
| 4740 def WriteServiceImplementation(self, func, file): | 4733 def WriteServiceImplementation(self, func, file): |
| 4741 """Overrriden from TypeHandler.""" | 4734 """Overrriden from TypeHandler.""" |
| 4742 file.Write( | 4735 self.WriteServiceHandlerFunctionHeader(func, file) |
| 4743 "error::Error GLES2DecoderImpl::Handle%s(\n" % func.name) | |
| 4744 file.Write( | |
| 4745 " uint32_t immediate_data_size, const gles2::cmds::%s& c) {\n" % | |
| 4746 func.name) | |
| 4747 last_arg = func.GetLastOriginalArg() | 4736 last_arg = func.GetLastOriginalArg() |
| 4748 | 4737 |
| 4749 all_but_last_args = func.GetOriginalArgs()[:-1] | 4738 all_but_last_args = func.GetOriginalArgs()[:-1] |
| 4750 for arg in all_but_last_args: | 4739 for arg in all_but_last_args: |
| 4751 arg.WriteGetCode(file) | 4740 arg.WriteGetCode(file) |
| 4752 | 4741 |
| 4753 code = """ typedef cmds::%(func_name)s::Result Result; | 4742 code = """ typedef cmds::%(func_name)s::Result Result; |
| 4754 GLsizei num_values = 0; | 4743 GLsizei num_values = 0; |
| 4755 GetNumValuesReturnedForGLGet(pname, &num_values); | 4744 GetNumValuesReturnedForGLGet(pname, &num_values); |
| 4756 Result* result = GetSharedMemoryAs<Result*>( | 4745 Result* result = GetSharedMemoryAs<Result*>( |
| (...skipping 985 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5742 def NeedsDataTransferFunction(self, func): | 5731 def NeedsDataTransferFunction(self, func): |
| 5743 """Overriden from TypeHandler.""" | 5732 """Overriden from TypeHandler.""" |
| 5744 return False | 5733 return False |
| 5745 | 5734 |
| 5746 def AddBucketFunction(self, generator, func): | 5735 def AddBucketFunction(self, generator, func): |
| 5747 """Overrriden from TypeHandler.""" | 5736 """Overrriden from TypeHandler.""" |
| 5748 pass | 5737 pass |
| 5749 | 5738 |
| 5750 def WriteServiceImplementation(self, func, file): | 5739 def WriteServiceImplementation(self, func, file): |
| 5751 """Overrriden from TypeHandler.""" | 5740 """Overrriden from TypeHandler.""" |
| 5752 file.Write("""error::Error GLES2DecoderImpl::Handle%(name)s( | 5741 self.WriteServiceHandlerFunctionHeader(func, file) |
| 5753 uint32_t immediate_data_size, const gles2::cmds::%(name)s& c) { | 5742 file.Write(""" |
| 5754 GLuint bucket_id = static_cast<GLuint>(c.%(bucket_id)s); | 5743 GLuint bucket_id = static_cast<GLuint>(c.%(bucket_id)s); |
| 5755 Bucket* bucket = GetBucket(bucket_id); | 5744 Bucket* bucket = GetBucket(bucket_id); |
| 5756 if (!bucket || bucket->size() == 0) { | 5745 if (!bucket || bucket->size() == 0) { |
| 5757 return error::kInvalidArguments; | 5746 return error::kInvalidArguments; |
| 5758 } | 5747 } |
| 5759 std::string str; | 5748 std::string str; |
| 5760 if (!bucket->GetAsString(&str)) { | 5749 if (!bucket->GetAsString(&str)) { |
| 5761 return error::kInvalidArguments; | 5750 return error::kInvalidArguments; |
| 5762 } | 5751 } |
| 5763 %(gl_func_name)s(0, str.c_str()); | 5752 %(gl_func_name)s(0, str.c_str()); |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5826 cmd.Init(%(args)s%(comma)sshared_memory_id_, kInvalidSharedMemoryOffset); | 5815 cmd.Init(%(args)s%(comma)sshared_memory_id_, kInvalidSharedMemoryOffset); |
| 5827 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); | 5816 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); |
| 5828 } | 5817 } |
| 5829 """ | 5818 """ |
| 5830 self.WriteValidUnitTest(func, file, invalid_test, { | 5819 self.WriteValidUnitTest(func, file, invalid_test, { |
| 5831 'comma': comma, | 5820 'comma': comma, |
| 5832 }, *extras) | 5821 }, *extras) |
| 5833 | 5822 |
| 5834 def WriteServiceImplementation(self, func, file): | 5823 def WriteServiceImplementation(self, func, file): |
| 5835 """Overrriden from TypeHandler.""" | 5824 """Overrriden from TypeHandler.""" |
| 5836 file.Write( | 5825 self.WriteServiceHandlerFunctionHeader(func, file) |
| 5837 "error::Error GLES2DecoderImpl::Handle%s(\n" % func.name) | |
| 5838 file.Write( | |
| 5839 " uint32_t immediate_data_size, const gles2::cmds::%s& c) {\n" % | |
| 5840 func.name) | |
| 5841 args = func.GetOriginalArgs() | 5826 args = func.GetOriginalArgs() |
| 5842 for arg in args: | 5827 for arg in args: |
| 5843 arg.WriteGetCode(file) | 5828 arg.WriteGetCode(file) |
| 5844 | 5829 |
| 5845 code = """ typedef cmds::%(func_name)s::Result Result; | 5830 code = """ typedef cmds::%(func_name)s::Result Result; |
| 5846 Result* result_dst = GetSharedMemoryAs<Result*>( | 5831 Result* result_dst = GetSharedMemoryAs<Result*>( |
| 5847 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); | 5832 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); |
| 5848 if (!result_dst) { | 5833 if (!result_dst) { |
| 5849 return error::kOutOfBounds; | 5834 return error::kOutOfBounds; |
| 5850 } | 5835 } |
| (...skipping 2748 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8599 "ppapi/shared_impl/ppb_opengles2_shared.cc"]) | 8584 "ppapi/shared_impl/ppb_opengles2_shared.cc"]) |
| 8600 | 8585 |
| 8601 if gen.errors > 0: | 8586 if gen.errors > 0: |
| 8602 print "%d errors" % gen.errors | 8587 print "%d errors" % gen.errors |
| 8603 return 1 | 8588 return 1 |
| 8604 return 0 | 8589 return 0 |
| 8605 | 8590 |
| 8606 | 8591 |
| 8607 if __name__ == '__main__': | 8592 if __name__ == '__main__': |
| 8608 sys.exit(main(sys.argv[1:])) | 8593 sys.exit(main(sys.argv[1:])) |
| OLD | NEW |