Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(133)

Side by Side Diff: gpu/command_buffer/build_gles2_cmd_buffer.py

Issue 1498033003: Implement SamplerManager in the command buffer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed unnessecary state initialization Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | gpu/command_buffer/service/BUILD.gn » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 2182 matching lines...) Expand 10 before | Expand all | Expand 10 after
2193 # array is used and we end up calling the single value 2193 # array is used and we end up calling the single value
2194 # corresponding function. eg. TexParameteriv -> TexParameteri 2194 # corresponding function. eg. TexParameteriv -> TexParameteri
2195 # extension: Function is an extension to GL and should not be exposed to 2195 # extension: Function is an extension to GL and should not be exposed to
2196 # pepper unless pepper_interface is defined. 2196 # pepper unless pepper_interface is defined.
2197 # extension_flag: Function is an extension and should be enabled only when 2197 # extension_flag: Function is an extension and should be enabled only when
2198 # the corresponding feature info flag is enabled. Implies 2198 # the corresponding feature info flag is enabled. Implies
2199 # 'extension': True. 2199 # 'extension': True.
2200 # not_shared: For GENn types, True if objects can't be shared between contexts 2200 # not_shared: For GENn types, True if objects can't be shared between contexts
2201 # unsafe: True = no validation is implemented on the service side and the 2201 # unsafe: True = no validation is implemented on the service side and the
2202 # command is only available with --enable-unsafe-es3-apis. 2202 # command is only available with --enable-unsafe-es3-apis.
2203 # use_helper: True = use explicit helper or decoder functions rather than the
2204 # defaults created when unsafe is True.
2203 # id_mapping: A list of resource type names whose client side IDs need to be 2205 # id_mapping: A list of resource type names whose client side IDs need to be
2204 # mapped to service side IDs. This is only used for unsafe APIs. 2206 # mapped to service side IDs. This is only used for unsafe APIs.
2205 2207
2206 _FUNCTION_INFO = { 2208 _FUNCTION_INFO = {
2207 'ActiveTexture': { 2209 'ActiveTexture': {
2208 'decoder_func': 'DoActiveTexture', 2210 'decoder_func': 'DoActiveTexture',
2209 'unit_test': False, 2211 'unit_test': False,
2210 'impl_func': False, 2212 'impl_func': False,
2211 'client_test': False, 2213 'client_test': False,
2212 }, 2214 },
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
2252 'trace_level': 1, 2254 'trace_level': 1,
2253 }, 2255 },
2254 'BindRenderbuffer': { 2256 'BindRenderbuffer': {
2255 'type': 'Bind', 2257 'type': 'Bind',
2256 'decoder_func': 'DoBindRenderbuffer', 2258 'decoder_func': 'DoBindRenderbuffer',
2257 'gl_test_func': 'glBindRenderbufferEXT', 2259 'gl_test_func': 'glBindRenderbufferEXT',
2258 'gen_func': 'GenRenderbuffersEXT', 2260 'gen_func': 'GenRenderbuffersEXT',
2259 }, 2261 },
2260 'BindSampler': { 2262 'BindSampler': {
2261 'type': 'Bind', 2263 'type': 'Bind',
2262 'id_mapping': [ 'Sampler' ], 2264 'decoder_func': 'DoBindSampler',
2263 'unsafe': True, 2265 'unsafe': True,
2266 'use_helper': True,
2264 }, 2267 },
2265 'BindTexture': { 2268 'BindTexture': {
2266 'type': 'Bind', 2269 'type': 'Bind',
2267 'decoder_func': 'DoBindTexture', 2270 'decoder_func': 'DoBindTexture',
2268 'gen_func': 'GenTextures', 2271 'gen_func': 'GenTextures',
2269 # TODO: remove this once client side caching works. 2272 # TODO: remove this once client side caching works.
2270 'client_test': False, 2273 'client_test': False,
2271 'trace_level': 2, 2274 'trace_level': 2,
2272 }, 2275 },
2273 'BindTransformFeedback': { 2276 'BindTransformFeedback': {
(...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after
2637 'gl_test_func': 'glDeleteRenderbuffersEXT', 2640 'gl_test_func': 'glDeleteRenderbuffersEXT',
2638 'resource_type': 'Renderbuffer', 2641 'resource_type': 'Renderbuffer',
2639 'resource_types': 'Renderbuffers', 2642 'resource_types': 'Renderbuffers',
2640 'trace_level': 2, 2643 'trace_level': 2,
2641 }, 2644 },
2642 'DeleteSamplers': { 2645 'DeleteSamplers': {
2643 'type': 'DELn', 2646 'type': 'DELn',
2644 'resource_type': 'Sampler', 2647 'resource_type': 'Sampler',
2645 'resource_types': 'Samplers', 2648 'resource_types': 'Samplers',
2646 'unsafe': True, 2649 'unsafe': True,
2650 'use_helper': True
2647 }, 2651 },
2648 'DeleteShader': { 'type': 'Delete' }, 2652 'DeleteShader': { 'type': 'Delete' },
2649 'DeleteSync': { 2653 'DeleteSync': {
2650 'type': 'Delete', 2654 'type': 'Delete',
2651 'cmd_args': 'GLuint sync', 2655 'cmd_args': 'GLuint sync',
2652 'resource_type': 'Sync', 2656 'resource_type': 'Sync',
2653 'unsafe': True, 2657 'unsafe': True,
2654 }, 2658 },
2655 'DeleteTextures': { 2659 'DeleteTextures': {
2656 'type': 'DELn', 2660 'type': 'DELn',
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
2781 'type': 'GENn', 'gl_test_func': 'glGenRenderbuffersEXT', 2785 'type': 'GENn', 'gl_test_func': 'glGenRenderbuffersEXT',
2782 'resource_type': 'Renderbuffer', 2786 'resource_type': 'Renderbuffer',
2783 'resource_types': 'Renderbuffers', 2787 'resource_types': 'Renderbuffers',
2784 }, 2788 },
2785 'GenSamplers': { 2789 'GenSamplers': {
2786 'type': 'GENn', 2790 'type': 'GENn',
2787 'gl_test_func': 'glGenSamplers', 2791 'gl_test_func': 'glGenSamplers',
2788 'resource_type': 'Sampler', 2792 'resource_type': 'Sampler',
2789 'resource_types': 'Samplers', 2793 'resource_types': 'Samplers',
2790 'unsafe': True, 2794 'unsafe': True,
2795 'use_helper': True,
2791 }, 2796 },
2792 'GenTextures': { 2797 'GenTextures': {
2793 'type': 'GENn', 2798 'type': 'GENn',
2794 'gl_test_func': 'glGenTextures', 2799 'gl_test_func': 'glGenTextures',
2795 'resource_type': 'Texture', 2800 'resource_type': 'Texture',
2796 'resource_types': 'Textures', 2801 'resource_types': 'Textures',
2797 }, 2802 },
2798 'GenTransformFeedbacks': { 2803 'GenTransformFeedbacks': {
2799 'type': 'GENn', 2804 'type': 'GENn',
2800 'gl_test_func': 'glGenTransformFeedbacks', 2805 'gl_test_func': 'glGenTransformFeedbacks',
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
2998 'expectation': False, 3003 'expectation': False,
2999 }, 3004 },
3000 'GetRenderbufferParameteriv': { 3005 'GetRenderbufferParameteriv': {
3001 'type': 'GETn', 3006 'type': 'GETn',
3002 'decoder_func': 'DoGetRenderbufferParameteriv', 3007 'decoder_func': 'DoGetRenderbufferParameteriv',
3003 'gl_test_func': 'glGetRenderbufferParameterivEXT', 3008 'gl_test_func': 'glGetRenderbufferParameterivEXT',
3004 'result': ['SizedResult<GLint>'], 3009 'result': ['SizedResult<GLint>'],
3005 }, 3010 },
3006 'GetSamplerParameterfv': { 3011 'GetSamplerParameterfv': {
3007 'type': 'GETn', 3012 'type': 'GETn',
3013 'decoder_func': 'DoGetSamplerParameterfv',
3008 'result': ['SizedResult<GLfloat>'], 3014 'result': ['SizedResult<GLfloat>'],
3009 'id_mapping': [ 'Sampler' ],
3010 'unsafe': True, 3015 'unsafe': True,
3016 'use_helper': True,
3011 }, 3017 },
3012 'GetSamplerParameteriv': { 3018 'GetSamplerParameteriv': {
3013 'type': 'GETn', 3019 'type': 'GETn',
3020 'decoder_func': 'DoGetSamplerParameteriv',
3014 'result': ['SizedResult<GLint>'], 3021 'result': ['SizedResult<GLint>'],
3015 'id_mapping': [ 'Sampler' ],
3016 'unsafe': True, 3022 'unsafe': True,
3023 'use_helper': True,
3017 }, 3024 },
3018 'GetShaderiv': { 3025 'GetShaderiv': {
3019 'type': 'GETn', 3026 'type': 'GETn',
3020 'decoder_func': 'DoGetShaderiv', 3027 'decoder_func': 'DoGetShaderiv',
3021 'result': ['SizedResult<GLint>'], 3028 'result': ['SizedResult<GLint>'],
3022 }, 3029 },
3023 'GetShaderInfoLog': { 3030 'GetShaderInfoLog': {
3024 'type': 'STRn', 3031 'type': 'STRn',
3025 'get_len_func': 'glGetShaderiv', 3032 'get_len_func': 'glGetShaderiv',
3026 'get_len_enum': 'GL_INFO_LOG_LENGTH', 3033 'get_len_enum': 'GL_INFO_LOG_LENGTH',
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
3243 'decoder_func': 'DoIsRenderbuffer', 3250 'decoder_func': 'DoIsRenderbuffer',
3244 'expectation': False, 3251 'expectation': False,
3245 }, 3252 },
3246 'IsShader': { 3253 'IsShader': {
3247 'type': 'Is', 3254 'type': 'Is',
3248 'decoder_func': 'DoIsShader', 3255 'decoder_func': 'DoIsShader',
3249 'expectation': False, 3256 'expectation': False,
3250 }, 3257 },
3251 'IsSampler': { 3258 'IsSampler': {
3252 'type': 'Is', 3259 'type': 'Is',
3253 'id_mapping': [ 'Sampler' ], 3260 'decoder_func': 'DoIsSampler',
3254 'expectation': False, 3261 'expectation': False,
3255 'unsafe': True, 3262 'unsafe': True,
3263 'use_helper': True,
3256 }, 3264 },
3257 'IsSync': { 3265 'IsSync': {
3258 'type': 'Is', 3266 'type': 'Is',
3259 'id_mapping': [ 'Sync' ], 3267 'id_mapping': [ 'Sync' ],
3260 'cmd_args': 'GLuint sync', 3268 'cmd_args': 'GLuint sync',
3261 'expectation': False, 3269 'expectation': False,
3262 'unsafe': True, 3270 'unsafe': True,
3263 }, 3271 },
3264 'IsTexture': { 3272 'IsTexture': {
3265 'type': 'Is', 3273 'type': 'Is',
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
3403 'decoder_func': 'DoReleaseShaderCompiler', 3411 'decoder_func': 'DoReleaseShaderCompiler',
3404 'unit_test': False, 3412 'unit_test': False,
3405 }, 3413 },
3406 'ResumeTransformFeedback': { 3414 'ResumeTransformFeedback': {
3407 'unsafe': True, 3415 'unsafe': True,
3408 }, 3416 },
3409 'SamplerParameterf': { 3417 'SamplerParameterf': {
3410 'valid_args': { 3418 'valid_args': {
3411 '2': 'GL_NEAREST' 3419 '2': 'GL_NEAREST'
3412 }, 3420 },
3413 'id_mapping': [ 'Sampler' ], 3421 'decoder_func': 'DoSamplerParameterf',
3414 'unsafe': True, 3422 'unsafe': True,
3423 'use_helper': True,
3415 }, 3424 },
3416 'SamplerParameterfv': { 3425 'SamplerParameterfv': {
3417 'type': 'PUT', 3426 'type': 'PUT',
3418 'data_value': 'GL_NEAREST', 3427 'data_value': 'GL_NEAREST',
3419 'count': 1, 3428 'count': 1,
3420 'gl_test_func': 'glSamplerParameterf', 3429 'gl_test_func': 'glSamplerParameterf',
3421 'decoder_func': 'DoSamplerParameterfv', 3430 'decoder_func': 'DoSamplerParameterfv',
3422 'first_element_only': True, 3431 'first_element_only': True,
3423 'id_mapping': [ 'Sampler' ],
3424 'unsafe': True, 3432 'unsafe': True,
3433 'use_helper': True,
3425 }, 3434 },
3426 'SamplerParameteri': { 3435 'SamplerParameteri': {
3427 'valid_args': { 3436 'valid_args': {
3428 '2': 'GL_NEAREST' 3437 '2': 'GL_NEAREST'
3429 }, 3438 },
3430 'id_mapping': [ 'Sampler' ], 3439 'decoder_func': 'DoSamplerParameteri',
3431 'unsafe': True, 3440 'unsafe': True,
3441 'use_helper': True,
3432 }, 3442 },
3433 'SamplerParameteriv': { 3443 'SamplerParameteriv': {
3434 'type': 'PUT', 3444 'type': 'PUT',
3435 'data_value': 'GL_NEAREST', 3445 'data_value': 'GL_NEAREST',
3436 'count': 1, 3446 'count': 1,
3437 'gl_test_func': 'glSamplerParameteri', 3447 'gl_test_func': 'glSamplerParameteri',
3438 'decoder_func': 'DoSamplerParameteriv', 3448 'decoder_func': 'DoSamplerParameteriv',
3439 'first_element_only': True, 3449 'first_element_only': True,
3440 'unsafe': True, 3450 'unsafe': True,
3451 'use_helper': True,
3441 }, 3452 },
3442 'ShaderBinary': { 3453 'ShaderBinary': {
3443 'type': 'Custom', 3454 'type': 'Custom',
3444 'client_test': False, 3455 'client_test': False,
3445 }, 3456 },
3446 'ShaderSource': { 3457 'ShaderSource': {
3447 'type': 'PUTSTR', 3458 'type': 'PUTSTR',
3448 'decoder_func': 'DoShaderSource', 3459 'decoder_func': 'DoShaderSource',
3449 'expectation': False, 3460 'expectation': False,
3450 'data_transfer_methods': ['bucket'], 3461 'data_transfer_methods': ['bucket'],
(...skipping 2467 matching lines...) Expand 10 before | Expand all | Expand 10 after
5918 5929
5919 def WriteHandlerImplementation (self, func, f): 5930 def WriteHandlerImplementation (self, func, f):
5920 """Overrriden from TypeHandler.""" 5931 """Overrriden from TypeHandler."""
5921 f.write(" if (!%sHelper(n, %s)) {\n" 5932 f.write(" if (!%sHelper(n, %s)) {\n"
5922 " return error::kInvalidArguments;\n" 5933 " return error::kInvalidArguments;\n"
5923 " }\n" % 5934 " }\n" %
5924 (func.name, func.GetLastOriginalArg().name)) 5935 (func.name, func.GetLastOriginalArg().name))
5925 5936
5926 def WriteImmediateHandlerImplementation(self, func, f): 5937 def WriteImmediateHandlerImplementation(self, func, f):
5927 """Overrriden from TypeHandler.""" 5938 """Overrriden from TypeHandler."""
5928 if func.IsUnsafe(): 5939 if func.IsUnsafe() and not func.UseHelper():
5929 f.write(""" for (GLsizei ii = 0; ii < n; ++ii) { 5940 f.write(""" for (GLsizei ii = 0; ii < n; ++ii) {
5930 if (group_->Get%(resource_name)sServiceId(%(last_arg_name)s[ii], NULL)) { 5941 if (group_->Get%(resource_name)sServiceId(%(last_arg_name)s[ii], NULL)) {
5931 return error::kInvalidArguments; 5942 return error::kInvalidArguments;
5932 } 5943 }
5933 } 5944 }
5934 scoped_ptr<GLuint[]> service_ids(new GLuint[n]); 5945 scoped_ptr<GLuint[]> service_ids(new GLuint[n]);
5935 gl%(func_name)s(n, service_ids.get()); 5946 gl%(func_name)s(n, service_ids.get());
5936 for (GLsizei ii = 0; ii < n; ++ii) { 5947 for (GLsizei ii = 0; ii < n; ++ii) {
5937 group_->Add%(resource_name)sId(%(last_arg_name)s[ii], service_ids[ii]); 5948 group_->Add%(resource_name)sId(%(last_arg_name)s[ii], service_ids[ii]);
5938 } 5949 }
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
6023 valid_test = """ 6034 valid_test = """
6024 TEST_P(%(test_name)s, %(name)sValidArgs) { 6035 TEST_P(%(test_name)s, %(name)sValidArgs) {
6025 EXPECT_CALL(*gl_, %(gl_func_name)s(1, _)) 6036 EXPECT_CALL(*gl_, %(gl_func_name)s(1, _))
6026 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 6037 .WillOnce(SetArgumentPointee<1>(kNewServiceId));
6027 GetSharedMemoryAs<GLuint*>()[0] = kNewClientId; 6038 GetSharedMemoryAs<GLuint*>()[0] = kNewClientId;
6028 SpecializedSetup<cmds::%(name)s, 0>(true); 6039 SpecializedSetup<cmds::%(name)s, 0>(true);
6029 cmds::%(name)s cmd; 6040 cmds::%(name)s cmd;
6030 cmd.Init(%(args)s); 6041 cmd.Init(%(args)s);
6031 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 6042 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
6032 EXPECT_EQ(GL_NO_ERROR, GetGLError());""" 6043 EXPECT_EQ(GL_NO_ERROR, GetGLError());"""
6033 if func.IsUnsafe(): 6044 if func.IsUnsafe() and not func.UseHelper():
6034 valid_test += """ 6045 valid_test += """
6035 GLuint service_id; 6046 GLuint service_id;
6036 EXPECT_TRUE(Get%(resource_name)sServiceId(kNewClientId, &service_id)); 6047 EXPECT_TRUE(Get%(resource_name)sServiceId(kNewClientId, &service_id));
6037 EXPECT_EQ(kNewServiceId, service_id) 6048 EXPECT_EQ(kNewServiceId, service_id)
6038 } 6049 }
6039 """ 6050 """
6040 else: 6051 else:
6041 valid_test += """ 6052 valid_test += """
6042 EXPECT_TRUE(Get%(resource_name)s(kNewClientId, &service_id) != NULL); 6053 EXPECT_TRUE(Get%(resource_name)s(kNewClientId, &service_id) != NULL);
6043 } 6054 }
(...skipping 25 matching lines...) Expand all
6069 GLuint temp = kNewClientId; 6080 GLuint temp = kNewClientId;
6070 SpecializedSetup<cmds::%(name)s, 0>(true);""" 6081 SpecializedSetup<cmds::%(name)s, 0>(true);"""
6071 if func.IsUnsafe(): 6082 if func.IsUnsafe():
6072 valid_test += """ 6083 valid_test += """
6073 decoder_->set_unsafe_es3_apis_enabled(true);""" 6084 decoder_->set_unsafe_es3_apis_enabled(true);"""
6074 valid_test += """ 6085 valid_test += """
6075 cmd->Init(1, &temp); 6086 cmd->Init(1, &temp);
6076 EXPECT_EQ(error::kNoError, 6087 EXPECT_EQ(error::kNoError,
6077 ExecuteImmediateCmd(*cmd, sizeof(temp))); 6088 ExecuteImmediateCmd(*cmd, sizeof(temp)));
6078 EXPECT_EQ(GL_NO_ERROR, GetGLError());""" 6089 EXPECT_EQ(GL_NO_ERROR, GetGLError());"""
6079 if func.IsUnsafe(): 6090 if func.IsUnsafe() and not func.UseHelper():
6080 valid_test += """ 6091 valid_test += """
6081 GLuint service_id; 6092 GLuint service_id;
6082 EXPECT_TRUE(Get%(resource_name)sServiceId(kNewClientId, &service_id)); 6093 EXPECT_TRUE(Get%(resource_name)sServiceId(kNewClientId, &service_id));
6083 EXPECT_EQ(kNewServiceId, service_id); 6094 EXPECT_EQ(kNewServiceId, service_id);
6084 decoder_->set_unsafe_es3_apis_enabled(false); 6095 decoder_->set_unsafe_es3_apis_enabled(false);
6085 EXPECT_EQ(error::kUnknownCommand, 6096 EXPECT_EQ(error::kUnknownCommand,
6086 ExecuteImmediateCmd(*cmd, sizeof(temp))); 6097 ExecuteImmediateCmd(*cmd, sizeof(temp)));
6087 } 6098 }
6088 """ 6099 """
6089 else: 6100 else:
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
6371 f.write(" %sHelper(%s);\n" % 6382 f.write(" %sHelper(%s);\n" %
6372 (func.original_name, func.GetOriginalArgs()[-1].name)) 6383 (func.original_name, func.GetOriginalArgs()[-1].name))
6373 f.write(" CheckGLError();\n") 6384 f.write(" CheckGLError();\n")
6374 f.write("}\n") 6385 f.write("}\n")
6375 f.write("\n") 6386 f.write("\n")
6376 6387
6377 def WriteHandlerImplementation (self, func, f): 6388 def WriteHandlerImplementation (self, func, f):
6378 """Overrriden from TypeHandler.""" 6389 """Overrriden from TypeHandler."""
6379 assert len(func.GetOriginalArgs()) == 1 6390 assert len(func.GetOriginalArgs()) == 1
6380 arg = func.GetOriginalArgs()[0] 6391 arg = func.GetOriginalArgs()[0]
6381 if func.IsUnsafe(): 6392 if func.IsUnsafe() and not func.UseHelper():
6382 f.write(""" %(arg_type)s service_id = 0; 6393 f.write(""" %(arg_type)s service_id = 0;
6383 if (group_->Get%(resource_type)sServiceId(%(arg_name)s, &service_id)) { 6394 if (group_->Get%(resource_type)sServiceId(%(arg_name)s, &service_id)) {
6384 glDelete%(resource_type)s(service_id); 6395 glDelete%(resource_type)s(service_id);
6385 group_->Remove%(resource_type)sId(%(arg_name)s); 6396 group_->Remove%(resource_type)sId(%(arg_name)s);
6386 } else { 6397 } else {
6387 LOCAL_SET_GL_ERROR( 6398 LOCAL_SET_GL_ERROR(
6388 GL_INVALID_VALUE, "gl%(func_name)s", "unknown %(arg_name)s"); 6399 GL_INVALID_VALUE, "gl%(func_name)s", "unknown %(arg_name)s");
6389 } 6400 }
6390 """ % { 'resource_type': func.GetInfo('resource_type'), 6401 """ % { 'resource_type': func.GetInfo('resource_type'),
6391 'arg_name': arg.name, 6402 'arg_name': arg.name,
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
6472 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); 6483 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>();
6473 SpecializedSetup<cmds::%(name)s, 0>(true); 6484 SpecializedSetup<cmds::%(name)s, 0>(true);
6474 cmd.Init(1, &client_%(resource_name)s_id_);""" 6485 cmd.Init(1, &client_%(resource_name)s_id_);"""
6475 if func.IsUnsafe(): 6486 if func.IsUnsafe():
6476 valid_test += """ 6487 valid_test += """
6477 decoder_->set_unsafe_es3_apis_enabled(true);""" 6488 decoder_->set_unsafe_es3_apis_enabled(true);"""
6478 valid_test += """ 6489 valid_test += """
6479 EXPECT_EQ(error::kNoError, 6490 EXPECT_EQ(error::kNoError,
6480 ExecuteImmediateCmd(cmd, sizeof(client_%(resource_name)s_id_))); 6491 ExecuteImmediateCmd(cmd, sizeof(client_%(resource_name)s_id_)));
6481 EXPECT_EQ(GL_NO_ERROR, GetGLError());""" 6492 EXPECT_EQ(GL_NO_ERROR, GetGLError());"""
6482 if func.IsUnsafe(): 6493 if func.IsUnsafe() and not func.UseHelper():
6483 valid_test += """ 6494 valid_test += """
6484 EXPECT_FALSE(Get%(upper_resource_name)sServiceId( 6495 EXPECT_FALSE(Get%(upper_resource_name)sServiceId(
6485 client_%(resource_name)s_id_, NULL)); 6496 client_%(resource_name)s_id_, NULL));
6486 decoder_->set_unsafe_es3_apis_enabled(false); 6497 decoder_->set_unsafe_es3_apis_enabled(false);
6487 EXPECT_EQ(error::kUnknownCommand, 6498 EXPECT_EQ(error::kUnknownCommand,
6488 ExecuteImmediateCmd(cmd, sizeof(client_%(resource_name)s_id_))); 6499 ExecuteImmediateCmd(cmd, sizeof(client_%(resource_name)s_id_)));
6489 } 6500 }
6490 """ 6501 """
6491 else: 6502 else:
6492 valid_test += """ 6503 valid_test += """
(...skipping 29 matching lines...) Expand all
6522 """ 6533 """
6523 self.WriteValidUnitTest(func, f, invalid_test, *extras) 6534 self.WriteValidUnitTest(func, f, invalid_test, *extras)
6524 6535
6525 def WriteHandlerImplementation (self, func, f): 6536 def WriteHandlerImplementation (self, func, f):
6526 """Overrriden from TypeHandler.""" 6537 """Overrriden from TypeHandler."""
6527 f.write(" %sHelper(n, %s);\n" % 6538 f.write(" %sHelper(n, %s);\n" %
6528 (func.name, func.GetLastOriginalArg().name)) 6539 (func.name, func.GetLastOriginalArg().name))
6529 6540
6530 def WriteImmediateHandlerImplementation (self, func, f): 6541 def WriteImmediateHandlerImplementation (self, func, f):
6531 """Overrriden from TypeHandler.""" 6542 """Overrriden from TypeHandler."""
6532 if func.IsUnsafe(): 6543 if func.IsUnsafe() and not func.UseHelper():
6533 f.write(""" for (GLsizei ii = 0; ii < n; ++ii) { 6544 f.write(""" for (GLsizei ii = 0; ii < n; ++ii) {
6534 GLuint service_id = 0; 6545 GLuint service_id = 0;
6535 if (group_->Get%(resource_type)sServiceId( 6546 if (group_->Get%(resource_type)sServiceId(
6536 %(last_arg_name)s[ii], &service_id)) { 6547 %(last_arg_name)s[ii], &service_id)) {
6537 glDelete%(resource_type)ss(1, &service_id); 6548 glDelete%(resource_type)ss(1, &service_id);
6538 group_->Remove%(resource_type)sId(%(last_arg_name)s[ii]); 6549 group_->Remove%(resource_type)sId(%(last_arg_name)s[ii]);
6539 } 6550 }
6540 } 6551 }
6541 """ % { 'resource_type': func.GetInfo('resource_type'), 6552 """ % { 'resource_type': func.GetInfo('resource_type'),
6542 'last_arg_name': func.GetLastOriginalArg().name }) 6553 'last_arg_name': func.GetLastOriginalArg().name })
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after
6982 """ 6993 """
6983 self.WriteInvalidUnitTest(func, f, invalid_test, extra, *extras) 6994 self.WriteInvalidUnitTest(func, f, invalid_test, extra, *extras)
6984 6995
6985 def WriteImmediateServiceUnitTest(self, func, f, *extras): 6996 def WriteImmediateServiceUnitTest(self, func, f, *extras):
6986 """Writes the service unit test for a command.""" 6997 """Writes the service unit test for a command."""
6987 valid_test = """ 6998 valid_test = """
6988 TEST_P(%(test_name)s, %(name)sValidArgs) { 6999 TEST_P(%(test_name)s, %(name)sValidArgs) {
6989 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); 7000 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>();
6990 SpecializedSetup<cmds::%(name)s, 0>(true); 7001 SpecializedSetup<cmds::%(name)s, 0>(true);
6991 %(data_type)s temp[%(data_count)s] = { %(data_value)s, }; 7002 %(data_type)s temp[%(data_count)s] = { %(data_value)s, };
6992 cmd.Init(%(gl_args)s, &temp[0]); 7003 cmd.Init(%(gl_client_args)s, &temp[0]);
6993 EXPECT_CALL( 7004 EXPECT_CALL(
6994 *gl_, 7005 *gl_,
6995 %(gl_func_name)s(%(gl_args)s, %(data_ref)sreinterpret_cast< 7006 %(gl_func_name)s(%(gl_args)s, %(data_ref)sreinterpret_cast<
6996 %(data_type)s*>(ImmediateDataAddress(&cmd))));""" 7007 %(data_type)s*>(ImmediateDataAddress(&cmd))));"""
6997 if func.IsUnsafe(): 7008 if func.IsUnsafe():
6998 valid_test += """ 7009 valid_test += """
6999 decoder_->set_unsafe_es3_apis_enabled(true);""" 7010 decoder_->set_unsafe_es3_apis_enabled(true);"""
7000 valid_test += """ 7011 valid_test += """
7001 EXPECT_EQ(error::kNoError, 7012 EXPECT_EQ(error::kNoError,
7002 ExecuteImmediateCmd(cmd, sizeof(temp))); 7013 ExecuteImmediateCmd(cmd, sizeof(temp)));
7003 EXPECT_EQ(GL_NO_ERROR, GetGLError());""" 7014 EXPECT_EQ(GL_NO_ERROR, GetGLError());"""
7004 if func.IsUnsafe(): 7015 if func.IsUnsafe():
7005 valid_test += """ 7016 valid_test += """
7006 decoder_->set_unsafe_es3_apis_enabled(false); 7017 decoder_->set_unsafe_es3_apis_enabled(false);
7007 EXPECT_EQ(error::kUnknownCommand, 7018 EXPECT_EQ(error::kUnknownCommand,
7008 ExecuteImmediateCmd(cmd, sizeof(temp)));""" 7019 ExecuteImmediateCmd(cmd, sizeof(temp)));"""
7009 valid_test += """ 7020 valid_test += """
7010 } 7021 }
7011 """ 7022 """
7023 gl_client_arg_strings = [
7024 arg.GetValidArg(func) for arg in func.GetOriginalArgs()[0:-1]
7025 ]
7012 gl_arg_strings = [ 7026 gl_arg_strings = [
7013 arg.GetValidGLArg(func) for arg in func.GetOriginalArgs()[0:-1] 7027 arg.GetValidGLArg(func) for arg in func.GetOriginalArgs()[0:-1]
7014 ] 7028 ]
7015 gl_any_strings = ["_"] * len(gl_arg_strings) 7029 gl_any_strings = ["_"] * len(gl_arg_strings)
7016 7030
7017 extra = { 7031 extra = {
7018 'data_ref': ("*" if func.GetInfo('first_element_only') else ""), 7032 'data_ref': ("*" if func.GetInfo('first_element_only') else ""),
7019 'data_type': self.GetArrayType(func), 7033 'data_type': self.GetArrayType(func),
7020 'data_count': self.GetArrayCount(func), 7034 'data_count': self.GetArrayCount(func),
7021 'data_value': func.GetInfo('data_value') or '0', 7035 'data_value': func.GetInfo('data_value') or '0',
7036 'gl_client_args': ", ".join(gl_client_arg_strings),
7022 'gl_args': ", ".join(gl_arg_strings), 7037 'gl_args': ", ".join(gl_arg_strings),
7023 'gl_any_args': ", ".join(gl_any_strings), 7038 'gl_any_args': ", ".join(gl_any_strings),
7024 } 7039 }
7025 self.WriteValidUnitTest(func, f, valid_test, extra, *extras) 7040 self.WriteValidUnitTest(func, f, valid_test, extra, *extras)
7026 7041
7027 invalid_test = """ 7042 invalid_test = """
7028 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { 7043 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
7029 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>();""" 7044 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>();"""
7030 if func.IsUnsafe(): 7045 if func.IsUnsafe():
7031 invalid_test += """ 7046 invalid_test += """
(...skipping 1204 matching lines...) Expand 10 before | Expand all | Expand 10 after
8236 8251
8237 code = """ typedef cmds::%(func_name)s::Result Result; 8252 code = """ typedef cmds::%(func_name)s::Result Result;
8238 Result* result_dst = GetSharedMemoryAs<Result*>( 8253 Result* result_dst = GetSharedMemoryAs<Result*>(
8239 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); 8254 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst));
8240 if (!result_dst) { 8255 if (!result_dst) {
8241 return error::kOutOfBounds; 8256 return error::kOutOfBounds;
8242 } 8257 }
8243 """ 8258 """
8244 f.write(code % {'func_name': func.name}) 8259 f.write(code % {'func_name': func.name})
8245 func.WriteHandlerValidation(f) 8260 func.WriteHandlerValidation(f)
8246 if func.IsUnsafe(): 8261 if func.IsUnsafe() and not func.UseHelper():
8247 assert func.GetInfo('id_mapping') 8262 assert func.GetInfo('id_mapping')
8248 assert len(func.GetInfo('id_mapping')) == 1 8263 assert len(func.GetInfo('id_mapping')) == 1
8249 assert len(args) == 1 8264 assert len(args) == 1
8250 id_type = func.GetInfo('id_mapping')[0] 8265 id_type = func.GetInfo('id_mapping')[0]
8251 f.write(" %s service_%s = 0;\n" % (args[0].type, id_type.lower())) 8266 f.write(" %s service_%s = 0;\n" % (args[0].type, id_type.lower()))
8252 f.write(" *result_dst = group_->Get%sServiceId(%s, &service_%s);\n" % 8267 f.write(" *result_dst = group_->Get%sServiceId(%s, &service_%s);\n" %
8253 (id_type, id_type.lower(), id_type.lower())) 8268 (id_type, id_type.lower(), id_type.lower()))
8254 else: 8269 else:
8255 f.write(" *result_dst = %s(%s);\n" % 8270 f.write(" *result_dst = %s(%s);\n" %
8256 (func.GetGLFunctionName(), func.MakeOriginalArgString(""))) 8271 (func.GetGLFunctionName(), func.MakeOriginalArgString("")))
(...skipping 1043 matching lines...) Expand 10 before | Expand all | Expand 10 after
9300 self.type_handler.InitFunction(self) 9315 self.type_handler.InitFunction(self)
9301 9316
9302 def IsImmediate(self): 9317 def IsImmediate(self):
9303 """Returns whether the function is immediate data function or not.""" 9318 """Returns whether the function is immediate data function or not."""
9304 return False 9319 return False
9305 9320
9306 def IsUnsafe(self): 9321 def IsUnsafe(self):
9307 """Returns whether the function has service side validation or not.""" 9322 """Returns whether the function has service side validation or not."""
9308 return self.GetInfo('unsafe', False) 9323 return self.GetInfo('unsafe', False)
9309 9324
9325 def UseHelper(self):
9326 """Returns whether the function uses explicit helper functions."""
9327 return self.GetInfo('use_helper', False)
9328
9310 def GetInfo(self, name, default = None): 9329 def GetInfo(self, name, default = None):
9311 """Returns a value from the function info for this function.""" 9330 """Returns a value from the function info for this function."""
9312 if name in self.info: 9331 if name in self.info:
9313 return self.info[name] 9332 return self.info[name]
9314 return default 9333 return default
9315 9334
9316 def GetValidArg(self, arg): 9335 def GetValidArg(self, arg):
9317 """Gets a valid argument value for the parameter arg from the function info 9336 """Gets a valid argument value for the parameter arg from the function info
9318 if one exists.""" 9337 if one exists."""
9319 try: 9338 try:
(...skipping 1909 matching lines...) Expand 10 before | Expand all | Expand 10 after
11229 Format(gen.generated_cpp_filenames) 11248 Format(gen.generated_cpp_filenames)
11230 11249
11231 if gen.errors > 0: 11250 if gen.errors > 0:
11232 print "%d errors" % gen.errors 11251 print "%d errors" % gen.errors
11233 return 1 11252 return 1
11234 return 0 11253 return 0
11235 11254
11236 11255
11237 if __name__ == '__main__': 11256 if __name__ == '__main__':
11238 sys.exit(main(sys.argv[1:])) 11257 sys.exit(main(sys.argv[1:]))
OLDNEW
« no previous file with comments | « no previous file | gpu/command_buffer/service/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698