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 |