| 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 2994 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3005 result_string = "" | 3005 result_string = "" |
| 3006 file.Write(" %sgles2::GetGLContext()->%s(%s);\n" % | 3006 file.Write(" %sgles2::GetGLContext()->%s(%s);\n" % |
| 3007 (result_string, func.original_name, | 3007 (result_string, func.original_name, |
| 3008 func.MakeOriginalArgString(""))) | 3008 func.MakeOriginalArgString(""))) |
| 3009 file.Write("}\n") | 3009 file.Write("}\n") |
| 3010 | 3010 |
| 3011 def WriteGLES2Header(self, func, file): | 3011 def WriteGLES2Header(self, func, file): |
| 3012 """Writes a re-write macro for GLES""" | 3012 """Writes a re-write macro for GLES""" |
| 3013 file.Write("#define gl%s GLES2_GET_FUN(%s)\n" %(func.name, func.name)) | 3013 file.Write("#define gl%s GLES2_GET_FUN(%s)\n" %(func.name, func.name)) |
| 3014 | 3014 |
| 3015 def WriteClientGLCallLog(self, func, file): | |
| 3016 """Writes a logging macro for the client side code.""" | |
| 3017 comma = "" | |
| 3018 if len(func.GetOriginalArgs()): | |
| 3019 comma = " << " | |
| 3020 file.Write( | |
| 3021 ' GPU_CLIENT_LOG("[" << GetLogPrefix() << "] gl%s("%s%s << ")");\n' % | |
| 3022 (func.original_name, comma, func.MakeLogArgString())) | |
| 3023 | |
| 3024 def WriteClientGLReturnLog(self, func, file): | |
| 3025 """Writes the return value logging code.""" | |
| 3026 if func.return_type != "void": | |
| 3027 file.Write(' GPU_CLIENT_LOG("return:" << result)\n') | |
| 3028 | |
| 3029 def WriteGLES2ImplementationHeader(self, func, file): | 3015 def WriteGLES2ImplementationHeader(self, func, file): |
| 3030 """Writes the GLES2 Implemention.""" | 3016 """Writes the GLES2 Implemention.""" |
| 3031 self.WriteGLES2ImplementationDeclaration(func, file) | 3017 self.WriteGLES2ImplementationDeclaration(func, file) |
| 3032 | 3018 |
| 3033 def WriteGLES2TraceImplementationHeader(self, func, file): | 3019 def WriteGLES2TraceImplementationHeader(self, func, file): |
| 3034 """Writes the GLES2 Trace Implemention header.""" | 3020 """Writes the GLES2 Trace Implemention header.""" |
| 3035 file.Write("virtual %s %s(%s) OVERRIDE;\n" % | 3021 file.Write("virtual %s %s(%s) OVERRIDE;\n" % |
| 3036 (func.return_type, func.original_name, | 3022 (func.return_type, func.original_name, |
| 3037 func.MakeTypedOriginalArgString(""))) | 3023 func.MakeTypedOriginalArgString(""))) |
| 3038 | 3024 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 3057 impl_decl = func.GetInfo('impl_decl') | 3043 impl_decl = func.GetInfo('impl_decl') |
| 3058 gen_cmd = func.GetInfo('gen_cmd') | 3044 gen_cmd = func.GetInfo('gen_cmd') |
| 3059 if (func.can_auto_generate and | 3045 if (func.can_auto_generate and |
| 3060 (impl_func == None or impl_func == True) and | 3046 (impl_func == None or impl_func == True) and |
| 3061 (impl_decl == None or impl_decl == True) and | 3047 (impl_decl == None or impl_decl == True) and |
| 3062 (gen_cmd == None or gen_cmd == True)): | 3048 (gen_cmd == None or gen_cmd == True)): |
| 3063 file.Write("%s GLES2Implementation::%s(%s) {\n" % | 3049 file.Write("%s GLES2Implementation::%s(%s) {\n" % |
| 3064 (func.return_type, func.original_name, | 3050 (func.return_type, func.original_name, |
| 3065 func.MakeTypedOriginalArgString(""))) | 3051 func.MakeTypedOriginalArgString(""))) |
| 3066 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") | 3052 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") |
| 3067 self.WriteClientGLCallLog(func, file) | |
| 3068 func.WriteDestinationInitalizationValidation(file) | 3053 func.WriteDestinationInitalizationValidation(file) |
| 3069 for arg in func.GetOriginalArgs(): | 3054 for arg in func.GetOriginalArgs(): |
| 3070 arg.WriteClientSideValidationCode(file, func) | 3055 arg.WriteClientSideValidationCode(file, func) |
| 3071 file.Write(" helper_->%s(%s);\n" % | 3056 file.Write(" helper_->%s(%s);\n" % |
| 3072 (func.name, func.MakeOriginalArgString(""))) | 3057 (func.name, func.MakeOriginalArgString(""))) |
| 3073 file.Write(" CheckGLError();\n") | 3058 file.Write(" CheckGLError();\n") |
| 3074 self.WriteClientGLReturnLog(func, file) | |
| 3075 file.Write("}\n") | 3059 file.Write("}\n") |
| 3076 file.Write("\n") | 3060 file.Write("\n") |
| 3077 | 3061 |
| 3078 def WriteGLES2InterfaceHeader(self, func, file): | 3062 def WriteGLES2InterfaceHeader(self, func, file): |
| 3079 """Writes the GLES2 Interface.""" | 3063 """Writes the GLES2 Interface.""" |
| 3080 file.Write("virtual %s %s(%s) = 0;\n" % | 3064 file.Write("virtual %s %s(%s) = 0;\n" % |
| 3081 (func.return_type, func.original_name, | 3065 (func.return_type, func.original_name, |
| 3082 func.MakeTypedOriginalArgString(""))) | 3066 func.MakeTypedOriginalArgString(""))) |
| 3083 | 3067 |
| 3084 def WriteGLES2InterfaceStub(self, func, file): | 3068 def WriteGLES2InterfaceStub(self, func, file): |
| (...skipping 712 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3797 | 3781 |
| 3798 if (func.can_auto_generate and | 3782 if (func.can_auto_generate and |
| 3799 (impl_func == None or impl_func == True) and | 3783 (impl_func == None or impl_func == True) and |
| 3800 (impl_decl == None or impl_decl == True)): | 3784 (impl_decl == None or impl_decl == True)): |
| 3801 | 3785 |
| 3802 file.Write("%s GLES2Implementation::%s(%s) {\n" % | 3786 file.Write("%s GLES2Implementation::%s(%s) {\n" % |
| 3803 (func.return_type, func.original_name, | 3787 (func.return_type, func.original_name, |
| 3804 func.MakeTypedOriginalArgString(""))) | 3788 func.MakeTypedOriginalArgString(""))) |
| 3805 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") | 3789 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") |
| 3806 func.WriteDestinationInitalizationValidation(file) | 3790 func.WriteDestinationInitalizationValidation(file) |
| 3807 self.WriteClientGLCallLog(func, file) | |
| 3808 for arg in func.GetOriginalArgs(): | 3791 for arg in func.GetOriginalArgs(): |
| 3809 arg.WriteClientSideValidationCode(file, func) | 3792 arg.WriteClientSideValidationCode(file, func) |
| 3810 | 3793 |
| 3811 code = """ if (Is%(type)sReservedId(%(id)s)) { | 3794 code = """ if (Is%(type)sReservedId(%(id)s)) { |
| 3812 SetGLError(GL_INVALID_OPERATION, "%(name)s\", \"%(id)s reserved id"); | 3795 SetGLError(GL_INVALID_OPERATION, "%(name)s\", \"%(id)s reserved id"); |
| 3813 return; | 3796 return; |
| 3814 } | 3797 } |
| 3815 if (Bind%(type)sHelper(%(arg_string)s)) { | 3798 if (Bind%(type)sHelper(%(arg_string)s)) { |
| 3816 helper_->%(name)s(%(arg_string)s); | 3799 helper_->%(name)s(%(arg_string)s); |
| 3817 } | 3800 } |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3897 | 3880 |
| 3898 def WriteImmediateHandlerImplementation(self, func, file): | 3881 def WriteImmediateHandlerImplementation(self, func, file): |
| 3899 """Overrriden from TypeHandler.""" | 3882 """Overrriden from TypeHandler.""" |
| 3900 file.Write(" if (!%sHelper(n, %s)) {\n" | 3883 file.Write(" if (!%sHelper(n, %s)) {\n" |
| 3901 " return error::kInvalidArguments;\n" | 3884 " return error::kInvalidArguments;\n" |
| 3902 " }\n" % | 3885 " }\n" % |
| 3903 (func.original_name, func.GetLastOriginalArg().name)) | 3886 (func.original_name, func.GetLastOriginalArg().name)) |
| 3904 | 3887 |
| 3905 def WriteGLES2Implementation(self, func, file): | 3888 def WriteGLES2Implementation(self, func, file): |
| 3906 """Overrriden from TypeHandler.""" | 3889 """Overrriden from TypeHandler.""" |
| 3907 log_code = (""" GPU_CLIENT_LOG_CODE_BLOCK({ | |
| 3908 for (GLsizei i = 0; i < n; ++i) { | |
| 3909 GPU_CLIENT_LOG(" " << i << ": " << %s[i]); | |
| 3910 } | |
| 3911 });""" % func.GetOriginalArgs()[1].name) | |
| 3912 args = { | 3890 args = { |
| 3913 'log_code': log_code, | |
| 3914 'return_type': func.return_type, | 3891 'return_type': func.return_type, |
| 3915 'name': func.original_name, | 3892 'name': func.original_name, |
| 3916 'typed_args': func.MakeTypedOriginalArgString(""), | 3893 'typed_args': func.MakeTypedOriginalArgString(""), |
| 3917 'args': func.MakeOriginalArgString(""), | 3894 'args': func.MakeOriginalArgString(""), |
| 3918 'resource_types': func.GetInfo('resource_types'), | 3895 'resource_types': func.GetInfo('resource_types'), |
| 3919 'count_name': func.GetOriginalArgs()[0].name, | 3896 'count_name': func.GetOriginalArgs()[0].name, |
| 3920 } | 3897 } |
| 3921 file.Write( | 3898 file.Write( |
| 3922 "%(return_type)s GLES2Implementation::%(name)s(%(typed_args)s) {\n" % | 3899 "%(return_type)s GLES2Implementation::%(name)s(%(typed_args)s) {\n" % |
| 3923 args) | 3900 args) |
| 3924 func.WriteDestinationInitalizationValidation(file) | 3901 func.WriteDestinationInitalizationValidation(file) |
| 3925 self.WriteClientGLCallLog(func, file) | |
| 3926 for arg in func.GetOriginalArgs(): | 3902 for arg in func.GetOriginalArgs(): |
| 3927 arg.WriteClientSideValidationCode(file, func) | 3903 arg.WriteClientSideValidationCode(file, func) |
| 3928 code = """ GPU_CLIENT_SINGLE_THREAD_CHECK(); | 3904 code = """ GPU_CLIENT_SINGLE_THREAD_CHECK(); |
| 3929 GetIdHandler(id_namespaces::k%(resource_types)s)-> | 3905 GetIdHandler(id_namespaces::k%(resource_types)s)-> |
| 3930 MakeIds(this, 0, %(args)s); | 3906 MakeIds(this, 0, %(args)s); |
| 3931 %(name)sHelper(%(args)s); | 3907 %(name)sHelper(%(args)s); |
| 3932 helper_->%(name)sImmediate(%(args)s); | 3908 helper_->%(name)sImmediate(%(args)s); |
| 3933 helper_->CommandBufferHelper::Flush(); | 3909 helper_->CommandBufferHelper::Flush(); |
| 3934 %(log_code)s | |
| 3935 CheckGLError(); | 3910 CheckGLError(); |
| 3936 } | 3911 } |
| 3937 | 3912 |
| 3938 """ | 3913 """ |
| 3939 file.Write(code % args) | 3914 file.Write(code % args) |
| 3940 | 3915 |
| 3941 def WriteGLES2ImplementationUnitTest(self, func, file): | 3916 def WriteGLES2ImplementationUnitTest(self, func, file): |
| 3942 """Overrriden from TypeHandler.""" | 3917 """Overrriden from TypeHandler.""" |
| 3943 code = """ | 3918 code = """ |
| 3944 TEST_F(GLES2ImplementationTest, %(name)s) { | 3919 TEST_F(GLES2ImplementationTest, %(name)s) { |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4170 file.Write(" return error::kInvalidArguments;\n") | 4145 file.Write(" return error::kInvalidArguments;\n") |
| 4171 file.Write(" }\n") | 4146 file.Write(" }\n") |
| 4172 | 4147 |
| 4173 def WriteGLES2Implementation(self, func, file): | 4148 def WriteGLES2Implementation(self, func, file): |
| 4174 """Overrriden from TypeHandler.""" | 4149 """Overrriden from TypeHandler.""" |
| 4175 file.Write("%s GLES2Implementation::%s(%s) {\n" % | 4150 file.Write("%s GLES2Implementation::%s(%s) {\n" % |
| 4176 (func.return_type, func.original_name, | 4151 (func.return_type, func.original_name, |
| 4177 func.MakeTypedOriginalArgString(""))) | 4152 func.MakeTypedOriginalArgString(""))) |
| 4178 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") | 4153 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") |
| 4179 func.WriteDestinationInitalizationValidation(file) | 4154 func.WriteDestinationInitalizationValidation(file) |
| 4180 self.WriteClientGLCallLog(func, file) | |
| 4181 for arg in func.GetOriginalArgs(): | 4155 for arg in func.GetOriginalArgs(): |
| 4182 arg.WriteClientSideValidationCode(file, func) | 4156 arg.WriteClientSideValidationCode(file, func) |
| 4183 file.Write(" GLuint client_id;\n") | 4157 file.Write(" GLuint client_id;\n") |
| 4184 file.Write( | 4158 file.Write( |
| 4185 " GetIdHandler(id_namespaces::kProgramsAndShaders)->\n") | 4159 " GetIdHandler(id_namespaces::kProgramsAndShaders)->\n") |
| 4186 file.Write(" MakeIds(this, 0, 1, &client_id);\n") | 4160 file.Write(" MakeIds(this, 0, 1, &client_id);\n") |
| 4187 file.Write(" helper_->%s(%s);\n" % | 4161 file.Write(" helper_->%s(%s);\n" % |
| 4188 (func.name, func.MakeCmdArgString(""))) | 4162 (func.name, func.MakeCmdArgString(""))) |
| 4189 file.Write(' GPU_CLIENT_LOG("returned " << client_id);\n') | |
| 4190 file.Write(" CheckGLError();\n") | 4163 file.Write(" CheckGLError();\n") |
| 4191 file.Write(" return client_id;\n") | 4164 file.Write(" return client_id;\n") |
| 4192 file.Write("}\n") | 4165 file.Write("}\n") |
| 4193 file.Write("\n") | 4166 file.Write("\n") |
| 4194 | 4167 |
| 4195 | 4168 |
| 4196 class DeleteHandler(TypeHandler): | 4169 class DeleteHandler(TypeHandler): |
| 4197 """Handler for glDelete___ single resource type functions.""" | 4170 """Handler for glDelete___ single resource type functions.""" |
| 4198 | 4171 |
| 4199 def __init__(self): | 4172 def __init__(self): |
| 4200 TypeHandler.__init__(self) | 4173 TypeHandler.__init__(self) |
| 4201 | 4174 |
| 4202 def WriteServiceImplementation(self, func, file): | 4175 def WriteServiceImplementation(self, func, file): |
| 4203 """Overrriden from TypeHandler.""" | 4176 """Overrriden from TypeHandler.""" |
| 4204 pass | 4177 pass |
| 4205 | 4178 |
| 4206 def WriteGLES2Implementation(self, func, file): | 4179 def WriteGLES2Implementation(self, func, file): |
| 4207 """Overrriden from TypeHandler.""" | 4180 """Overrriden from TypeHandler.""" |
| 4208 file.Write("%s GLES2Implementation::%s(%s) {\n" % | 4181 file.Write("%s GLES2Implementation::%s(%s) {\n" % |
| 4209 (func.return_type, func.original_name, | 4182 (func.return_type, func.original_name, |
| 4210 func.MakeTypedOriginalArgString(""))) | 4183 func.MakeTypedOriginalArgString(""))) |
| 4211 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") | 4184 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") |
| 4212 func.WriteDestinationInitalizationValidation(file) | 4185 func.WriteDestinationInitalizationValidation(file) |
| 4213 self.WriteClientGLCallLog(func, file) | |
| 4214 for arg in func.GetOriginalArgs(): | 4186 for arg in func.GetOriginalArgs(): |
| 4215 arg.WriteClientSideValidationCode(file, func) | 4187 arg.WriteClientSideValidationCode(file, func) |
| 4216 file.Write( | 4188 file.Write( |
| 4217 " GPU_CLIENT_DCHECK(%s != 0);\n" % func.GetOriginalArgs()[-1].name) | 4189 " GPU_CLIENT_DCHECK(%s != 0);\n" % func.GetOriginalArgs()[-1].name) |
| 4218 file.Write(" %sHelper(%s);\n" % | 4190 file.Write(" %sHelper(%s);\n" % |
| 4219 (func.original_name, func.GetOriginalArgs()[-1].name)) | 4191 (func.original_name, func.GetOriginalArgs()[-1].name)) |
| 4220 file.Write(" CheckGLError();\n") | 4192 file.Write(" CheckGLError();\n") |
| 4221 file.Write("}\n") | 4193 file.Write("}\n") |
| 4222 file.Write("\n") | 4194 file.Write("\n") |
| 4223 | 4195 |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4346 'typed_args': func.MakeTypedOriginalArgString(""), | 4318 'typed_args': func.MakeTypedOriginalArgString(""), |
| 4347 'args': func.MakeOriginalArgString(""), | 4319 'args': func.MakeOriginalArgString(""), |
| 4348 'resource_type': func.GetInfo('resource_type').lower(), | 4320 'resource_type': func.GetInfo('resource_type').lower(), |
| 4349 'count_name': func.GetOriginalArgs()[0].name, | 4321 'count_name': func.GetOriginalArgs()[0].name, |
| 4350 } | 4322 } |
| 4351 file.Write( | 4323 file.Write( |
| 4352 "%(return_type)s GLES2Implementation::%(name)s(%(typed_args)s) {\n" % | 4324 "%(return_type)s GLES2Implementation::%(name)s(%(typed_args)s) {\n" % |
| 4353 args) | 4325 args) |
| 4354 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") | 4326 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") |
| 4355 func.WriteDestinationInitalizationValidation(file) | 4327 func.WriteDestinationInitalizationValidation(file) |
| 4356 self.WriteClientGLCallLog(func, file) | |
| 4357 file.Write(""" GPU_CLIENT_LOG_CODE_BLOCK({ | |
| 4358 for (GLsizei i = 0; i < n; ++i) { | |
| 4359 GPU_CLIENT_LOG(" " << i << ": " << %s[i]); | |
| 4360 } | |
| 4361 }); | |
| 4362 """ % func.GetOriginalArgs()[1].name) | |
| 4363 file.Write(""" GPU_CLIENT_DCHECK_CODE_BLOCK({ | 4328 file.Write(""" GPU_CLIENT_DCHECK_CODE_BLOCK({ |
| 4364 for (GLsizei i = 0; i < n; ++i) { | 4329 for (GLsizei i = 0; i < n; ++i) { |
| 4365 DCHECK(%s[i] != 0); | 4330 DCHECK(%s[i] != 0); |
| 4366 } | 4331 } |
| 4367 }); | 4332 }); |
| 4368 """ % func.GetOriginalArgs()[1].name) | 4333 """ % func.GetOriginalArgs()[1].name) |
| 4369 for arg in func.GetOriginalArgs(): | 4334 for arg in func.GetOriginalArgs(): |
| 4370 arg.WriteClientSideValidationCode(file, func) | 4335 arg.WriteClientSideValidationCode(file, func) |
| 4371 code = """ %(name)sHelper(%(args)s); | 4336 code = """ %(name)sHelper(%(args)s); |
| 4372 CheckGLError(); | 4337 CheckGLError(); |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4531 | 4496 |
| 4532 def WriteGLES2Implementation(self, func, file): | 4497 def WriteGLES2Implementation(self, func, file): |
| 4533 """Overrriden from TypeHandler.""" | 4498 """Overrriden from TypeHandler.""" |
| 4534 impl_decl = func.GetInfo('impl_decl') | 4499 impl_decl = func.GetInfo('impl_decl') |
| 4535 if impl_decl == None or impl_decl == True: | 4500 if impl_decl == None or impl_decl == True: |
| 4536 file.Write("%s GLES2Implementation::%s(%s) {\n" % | 4501 file.Write("%s GLES2Implementation::%s(%s) {\n" % |
| 4537 (func.return_type, func.original_name, | 4502 (func.return_type, func.original_name, |
| 4538 func.MakeTypedOriginalArgString(""))) | 4503 func.MakeTypedOriginalArgString(""))) |
| 4539 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") | 4504 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") |
| 4540 func.WriteDestinationInitalizationValidation(file) | 4505 func.WriteDestinationInitalizationValidation(file) |
| 4541 self.WriteClientGLCallLog(func, file) | |
| 4542 for arg in func.GetOriginalArgs(): | 4506 for arg in func.GetOriginalArgs(): |
| 4543 arg.WriteClientSideValidationCode(file, func) | 4507 arg.WriteClientSideValidationCode(file, func) |
| 4544 all_but_last_args = func.GetOriginalArgs()[:-1] | 4508 all_but_last_args = func.GetOriginalArgs()[:-1] |
| 4545 arg_string = ( | 4509 arg_string = ( |
| 4546 ", ".join(["%s" % arg.name for arg in all_but_last_args])) | 4510 ", ".join(["%s" % arg.name for arg in all_but_last_args])) |
| 4547 all_arg_string = ( | 4511 all_arg_string = ( |
| 4548 ", ".join(["%s" % arg.name for arg in func.GetOriginalArgs()])) | 4512 ", ".join(["%s" % arg.name for arg in func.GetOriginalArgs()])) |
| 4549 self.WriteTraceEvent(func, file) | 4513 self.WriteTraceEvent(func, file) |
| 4550 code = """ if (%(func_name)sHelper(%(all_arg_string)s)) { | 4514 code = """ if (%(func_name)sHelper(%(all_arg_string)s)) { |
| 4551 return; | 4515 return; |
| 4552 } | 4516 } |
| 4553 typedef cmds::%(func_name)s::Result Result; | 4517 typedef cmds::%(func_name)s::Result Result; |
| 4554 Result* result = GetResultAs<Result*>(); | 4518 Result* result = GetResultAs<Result*>(); |
| 4555 if (!result) { | 4519 if (!result) { |
| 4556 return; | 4520 return; |
| 4557 } | 4521 } |
| 4558 result->SetNumResults(0); | 4522 result->SetNumResults(0); |
| 4559 helper_->%(func_name)s(%(arg_string)s, | 4523 helper_->%(func_name)s(%(arg_string)s, |
| 4560 GetResultShmId(), GetResultShmOffset()); | 4524 GetResultShmId(), GetResultShmOffset()); |
| 4561 WaitForCmd(); | 4525 WaitForCmd(); |
| 4562 result->CopyResult(params); | 4526 result->CopyResult(params); |
| 4563 GPU_CLIENT_LOG_CODE_BLOCK({ | |
| 4564 for (int32 i = 0; i < result->GetNumResults(); ++i) { | |
| 4565 GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]); | |
| 4566 } | |
| 4567 }); | |
| 4568 CheckGLError(); | 4527 CheckGLError(); |
| 4569 } | 4528 } |
| 4570 """ | 4529 """ |
| 4571 file.Write(code % { | 4530 file.Write(code % { |
| 4572 'func_name': func.name, | 4531 'func_name': func.name, |
| 4573 'arg_string': arg_string, | 4532 'arg_string': arg_string, |
| 4574 'all_arg_string': all_arg_string, | 4533 'all_arg_string': all_arg_string, |
| 4575 }) | 4534 }) |
| 4576 | 4535 |
| 4577 def WriteGLES2ImplementationUnitTest(self, func, file): | 4536 def WriteGLES2ImplementationUnitTest(self, func, file): |
| (...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4767 file.Write(" return error::kOutOfBounds;\n") | 4726 file.Write(" return error::kOutOfBounds;\n") |
| 4768 file.Write(" }\n") | 4727 file.Write(" }\n") |
| 4769 | 4728 |
| 4770 def WriteGLES2Implementation(self, func, file): | 4729 def WriteGLES2Implementation(self, func, file): |
| 4771 """Overrriden from TypeHandler.""" | 4730 """Overrriden from TypeHandler.""" |
| 4772 file.Write("%s GLES2Implementation::%s(%s) {\n" % | 4731 file.Write("%s GLES2Implementation::%s(%s) {\n" % |
| 4773 (func.return_type, func.original_name, | 4732 (func.return_type, func.original_name, |
| 4774 func.MakeTypedOriginalArgString(""))) | 4733 func.MakeTypedOriginalArgString(""))) |
| 4775 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") | 4734 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") |
| 4776 func.WriteDestinationInitalizationValidation(file) | 4735 func.WriteDestinationInitalizationValidation(file) |
| 4777 self.WriteClientGLCallLog(func, file) | |
| 4778 last_arg_name = func.GetLastOriginalArg().name | 4736 last_arg_name = func.GetLastOriginalArg().name |
| 4779 values_str = ' << ", " << '.join( | |
| 4780 ["%s[%d]" % (last_arg_name, ndx) for ndx in range(0, func.info.count)]) | |
| 4781 file.Write(' GPU_CLIENT_LOG("values: " << %s);\n' % values_str) | |
| 4782 for arg in func.GetOriginalArgs(): | 4737 for arg in func.GetOriginalArgs(): |
| 4783 arg.WriteClientSideValidationCode(file, func) | 4738 arg.WriteClientSideValidationCode(file, func) |
| 4784 file.Write(" helper_->%sImmediate(%s);\n" % | 4739 file.Write(" helper_->%sImmediate(%s);\n" % |
| 4785 (func.name, func.MakeOriginalArgString(""))) | 4740 (func.name, func.MakeOriginalArgString(""))) |
| 4786 file.Write(" CheckGLError();\n") | 4741 file.Write(" CheckGLError();\n") |
| 4787 file.Write("}\n") | 4742 file.Write("}\n") |
| 4788 file.Write("\n") | 4743 file.Write("\n") |
| 4789 | 4744 |
| 4790 def WriteGLES2ImplementationUnitTest(self, func, file): | 4745 def WriteGLES2ImplementationUnitTest(self, func, file): |
| 4791 """Writes the GLES2 Implemention unit test.""" | 4746 """Writes the GLES2 Implemention unit test.""" |
| (...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5028 file.Write(" return error::kOutOfBounds;\n") | 4983 file.Write(" return error::kOutOfBounds;\n") |
| 5029 file.Write(" }\n") | 4984 file.Write(" }\n") |
| 5030 | 4985 |
| 5031 def WriteGLES2Implementation(self, func, file): | 4986 def WriteGLES2Implementation(self, func, file): |
| 5032 """Overrriden from TypeHandler.""" | 4987 """Overrriden from TypeHandler.""" |
| 5033 file.Write("%s GLES2Implementation::%s(%s) {\n" % | 4988 file.Write("%s GLES2Implementation::%s(%s) {\n" % |
| 5034 (func.return_type, func.original_name, | 4989 (func.return_type, func.original_name, |
| 5035 func.MakeTypedOriginalArgString(""))) | 4990 func.MakeTypedOriginalArgString(""))) |
| 5036 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") | 4991 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") |
| 5037 func.WriteDestinationInitalizationValidation(file) | 4992 func.WriteDestinationInitalizationValidation(file) |
| 5038 self.WriteClientGLCallLog(func, file) | |
| 5039 last_arg_name = func.GetLastOriginalArg().name | 4993 last_arg_name = func.GetLastOriginalArg().name |
| 5040 file.Write(""" GPU_CLIENT_LOG_CODE_BLOCK({ | |
| 5041 for (GLsizei i = 0; i < count; ++i) { | |
| 5042 """) | |
| 5043 values_str = ' << ", " << '.join( | |
| 5044 ["%s[%d + i * %d]" % ( | |
| 5045 last_arg_name, ndx, func.info.count) for ndx in range( | |
| 5046 0, func.info.count)]) | |
| 5047 file.Write(' GPU_CLIENT_LOG(" " << i << ": " << %s);\n' % values_str) | |
| 5048 file.Write(" }\n });\n") | |
| 5049 for arg in func.GetOriginalArgs(): | 4994 for arg in func.GetOriginalArgs(): |
| 5050 arg.WriteClientSideValidationCode(file, func) | 4995 arg.WriteClientSideValidationCode(file, func) |
| 5051 file.Write(" helper_->%sImmediate(%s);\n" % | 4996 file.Write(" helper_->%sImmediate(%s);\n" % |
| 5052 (func.name, func.MakeOriginalArgString(""))) | 4997 (func.name, func.MakeOriginalArgString(""))) |
| 5053 file.Write(" CheckGLError();\n") | 4998 file.Write(" CheckGLError();\n") |
| 5054 file.Write("}\n") | 4999 file.Write("}\n") |
| 5055 file.Write("\n") | 5000 file.Write("\n") |
| 5056 | 5001 |
| 5057 def WriteGLES2ImplementationUnitTest(self, func, file): | 5002 def WriteGLES2ImplementationUnitTest(self, func, file): |
| 5058 """Writes the GLES2 Implemention unit test.""" | 5003 """Writes the GLES2 Implemention unit test.""" |
| (...skipping 457 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5516 """Overrriden from TypeHandler.""" | 5461 """Overrriden from TypeHandler.""" |
| 5517 impl_func = func.GetInfo('impl_func') | 5462 impl_func = func.GetInfo('impl_func') |
| 5518 if impl_func == None or impl_func == True: | 5463 if impl_func == None or impl_func == True: |
| 5519 error_value = func.GetInfo("error_value") or "GL_FALSE" | 5464 error_value = func.GetInfo("error_value") or "GL_FALSE" |
| 5520 file.Write("%s GLES2Implementation::%s(%s) {\n" % | 5465 file.Write("%s GLES2Implementation::%s(%s) {\n" % |
| 5521 (func.return_type, func.original_name, | 5466 (func.return_type, func.original_name, |
| 5522 func.MakeTypedOriginalArgString(""))) | 5467 func.MakeTypedOriginalArgString(""))) |
| 5523 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") | 5468 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") |
| 5524 self.WriteTraceEvent(func, file) | 5469 self.WriteTraceEvent(func, file) |
| 5525 func.WriteDestinationInitalizationValidation(file) | 5470 func.WriteDestinationInitalizationValidation(file) |
| 5526 self.WriteClientGLCallLog(func, file) | |
| 5527 file.Write(" typedef cmds::%s::Result Result;\n" % func.name) | 5471 file.Write(" typedef cmds::%s::Result Result;\n" % func.name) |
| 5528 file.Write(" Result* result = GetResultAs<Result*>();\n") | 5472 file.Write(" Result* result = GetResultAs<Result*>();\n") |
| 5529 file.Write(" if (!result) {\n") | 5473 file.Write(" if (!result) {\n") |
| 5530 file.Write(" return %s;\n" % error_value) | 5474 file.Write(" return %s;\n" % error_value) |
| 5531 file.Write(" }\n") | 5475 file.Write(" }\n") |
| 5532 file.Write(" *result = 0;\n") | 5476 file.Write(" *result = 0;\n") |
| 5533 arg_string = func.MakeOriginalArgString("") | 5477 arg_string = func.MakeOriginalArgString("") |
| 5534 comma = "" | 5478 comma = "" |
| 5535 if len(arg_string) > 0: | 5479 if len(arg_string) > 0: |
| 5536 comma = ", " | 5480 comma = ", " |
| 5537 file.Write( | 5481 file.Write( |
| 5538 " helper_->%s(%s%sGetResultShmId(), GetResultShmOffset());\n" % | 5482 " helper_->%s(%s%sGetResultShmId(), GetResultShmOffset());\n" % |
| 5539 (func.name, arg_string, comma)) | 5483 (func.name, arg_string, comma)) |
| 5540 file.Write(" WaitForCmd();\n") | 5484 file.Write(" WaitForCmd();\n") |
| 5541 file.Write(" %s result_value = *result;\n" % func.return_type) | 5485 file.Write(" %s result_value = *result;\n" % func.return_type) |
| 5542 file.Write(' GPU_CLIENT_LOG("returned " << result_value);\n') | |
| 5543 file.Write(" CheckGLError();\n") | 5486 file.Write(" CheckGLError();\n") |
| 5544 file.Write(" return result_value;\n") | 5487 file.Write(" return result_value;\n") |
| 5545 file.Write("}\n") | 5488 file.Write("}\n") |
| 5546 file.Write("\n") | 5489 file.Write("\n") |
| 5547 | 5490 |
| 5548 def WriteGLES2ImplementationUnitTest(self, func, file): | 5491 def WriteGLES2ImplementationUnitTest(self, func, file): |
| 5549 """Overrriden from TypeHandler.""" | 5492 """Overrriden from TypeHandler.""" |
| 5550 client_test = func.GetInfo('client_test') | 5493 client_test = func.GetInfo('client_test') |
| 5551 if client_test == None or client_test == True: | 5494 if client_test == None or client_test == True: |
| 5552 code = """ | 5495 code = """ |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5589 func.ClearCmdArgs() | 5532 func.ClearCmdArgs() |
| 5590 func.AddCmdArg(cmd_args[0]) | 5533 func.AddCmdArg(cmd_args[0]) |
| 5591 # add on a bucket id. | 5534 # add on a bucket id. |
| 5592 func.AddCmdArg(Argument('bucket_id', 'uint32')) | 5535 func.AddCmdArg(Argument('bucket_id', 'uint32')) |
| 5593 | 5536 |
| 5594 def WriteGLES2Implementation(self, func, file): | 5537 def WriteGLES2Implementation(self, func, file): |
| 5595 """Overrriden from TypeHandler.""" | 5538 """Overrriden from TypeHandler.""" |
| 5596 code_1 = """%(return_type)s GLES2Implementation::%(func_name)s(%(args)s) { | 5539 code_1 = """%(return_type)s GLES2Implementation::%(func_name)s(%(args)s) { |
| 5597 GPU_CLIENT_SINGLE_THREAD_CHECK(); | 5540 GPU_CLIENT_SINGLE_THREAD_CHECK(); |
| 5598 """ | 5541 """ |
| 5599 code_2 = """ GPU_CLIENT_LOG("[" << GetLogPrefix() | 5542 code_2 = """ helper_->SetBucketSize(kResultBucketId, 0); |
| 5600 << "] gl%(func_name)s" << "(" | |
| 5601 << %(arg0)s << ", " | |
| 5602 << %(arg1)s << ", " | |
| 5603 << static_cast<void*>(%(arg2)s) << ", " | |
| 5604 << static_cast<void*>(%(arg3)s) << ")"); | |
| 5605 helper_->SetBucketSize(kResultBucketId, 0); | |
| 5606 helper_->%(func_name)s(%(id_name)s, kResultBucketId); | 5543 helper_->%(func_name)s(%(id_name)s, kResultBucketId); |
| 5607 std::string str; | 5544 std::string str; |
| 5608 GLsizei max_size = 0; | 5545 GLsizei max_size = 0; |
| 5609 if (GetBucketAsString(kResultBucketId, &str)) { | 5546 if (GetBucketAsString(kResultBucketId, &str)) { |
| 5610 if (bufsize > 0) { | 5547 if (bufsize > 0) { |
| 5611 max_size = | 5548 max_size = |
| 5612 std::min(static_cast<size_t>(%(bufsize_name)s) - 1, str.size()); | 5549 std::min(static_cast<size_t>(%(bufsize_name)s) - 1, str.size()); |
| 5613 memcpy(%(dest_name)s, str.c_str(), max_size); | 5550 memcpy(%(dest_name)s, str.c_str(), max_size); |
| 5614 %(dest_name)s[max_size] = '\\0'; | 5551 %(dest_name)s[max_size] = '\\0'; |
| 5615 GPU_CLIENT_LOG("------\\n" << %(dest_name)s << "\\n------"); | |
| 5616 } | 5552 } |
| 5617 } | 5553 } |
| 5618 if (%(length_name)s != NULL) { | 5554 if (%(length_name)s != NULL) { |
| 5619 *%(length_name)s = max_size; | 5555 *%(length_name)s = max_size; |
| 5620 } | 5556 } |
| 5621 CheckGLError(); | 5557 CheckGLError(); |
| 5622 } | 5558 } |
| 5623 """ | 5559 """ |
| 5624 args = func.GetOriginalArgs() | 5560 args = func.GetOriginalArgs() |
| 5625 str_args = { | 5561 str_args = { |
| 5626 'return_type': func.return_type, | 5562 'return_type': func.return_type, |
| 5627 'func_name': func.original_name, | 5563 'func_name': func.original_name, |
| 5628 'args': func.MakeTypedOriginalArgString(""), | 5564 'args': func.MakeTypedOriginalArgString(""), |
| 5629 'id_name': args[0].name, | 5565 'id_name': args[0].name, |
| 5630 'bufsize_name': args[1].name, | 5566 'bufsize_name': args[1].name, |
| 5631 'length_name': args[2].name, | 5567 'length_name': args[2].name, |
| 5632 'dest_name': args[3].name, | 5568 'dest_name': args[3].name, |
| 5633 'arg0': args[0].name, | |
| 5634 'arg1': args[1].name, | |
| 5635 'arg2': args[2].name, | |
| 5636 'arg3': args[3].name, | |
| 5637 } | 5569 } |
| 5638 file.Write(code_1 % str_args) | 5570 file.Write(code_1 % str_args) |
| 5639 func.WriteDestinationInitalizationValidation(file) | 5571 func.WriteDestinationInitalizationValidation(file) |
| 5640 file.Write(code_2 % str_args) | 5572 file.Write(code_2 % str_args) |
| 5641 | 5573 |
| 5642 def WriteServiceUnitTest(self, func, file): | 5574 def WriteServiceUnitTest(self, func, file): |
| 5643 """Overrriden from TypeHandler.""" | 5575 """Overrriden from TypeHandler.""" |
| 5644 valid_test = """ | 5576 valid_test = """ |
| 5645 TEST_F(%(test_name)s, %(name)sValidArgs) { | 5577 TEST_F(%(test_name)s, %(name)sValidArgs) { |
| 5646 const char* kInfo = "hello"; | 5578 const char* kInfo = "hello"; |
| (...skipping 2184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7831 gen.WriteGLES2Header("../GLES2/gl2chromium_autogen.h") | 7763 gen.WriteGLES2Header("../GLES2/gl2chromium_autogen.h") |
| 7832 | 7764 |
| 7833 if gen.errors > 0: | 7765 if gen.errors > 0: |
| 7834 print "%d errors" % gen.errors | 7766 print "%d errors" % gen.errors |
| 7835 return 1 | 7767 return 1 |
| 7836 return 0 | 7768 return 0 |
| 7837 | 7769 |
| 7838 | 7770 |
| 7839 if __name__ == '__main__': | 7771 if __name__ == '__main__': |
| 7840 sys.exit(main(sys.argv[1:])) | 7772 sys.exit(main(sys.argv[1:])) |
| OLD | NEW |