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

Unified Diff: gpu/command_buffer/build_gles2_cmd_buffer.py

Issue 812543002: Update from https://crrev.com/308331 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gpu/GLES2/gl2chromium_autogen.h ('k') | gpu/command_buffer/client/gles2_c_lib_autogen.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gpu/command_buffer/build_gles2_cmd_buffer.py
diff --git a/gpu/command_buffer/build_gles2_cmd_buffer.py b/gpu/command_buffer/build_gles2_cmd_buffer.py
index 0b86db6a0f0d672be669537b12130577a9057203..418612a580d6748709213133dd36c43c814e5f05 100755
--- a/gpu/command_buffer/build_gles2_cmd_buffer.py
+++ b/gpu/command_buffer/build_gles2_cmd_buffer.py
@@ -10,6 +10,7 @@ import os
import os.path
import sys
import re
+import platform
from optparse import OptionParser
from subprocess import call
@@ -709,6 +710,26 @@ _NAMED_TYPE_INFO = {
'GL_TEXTURE_3D',
],
},
+ 'TransformFeedbackBindTarget': {
+ 'type': 'GLenum',
+ 'valid': [
+ 'GL_TRANSFORM_FEEDBACK',
+ ],
+ 'invalid': [
+ 'GL_TEXTURE_2D',
+ ],
+ },
+ 'TransformFeedbackPrimitiveMode': {
+ 'type': 'GLenum',
+ 'valid': [
+ 'GL_POINTS',
+ 'GL_LINES',
+ 'GL_TRIANGLES',
+ ],
+ 'invalid': [
+ 'GL_LINE_LOOP',
+ ],
+ },
'ShaderType': {
'type': 'GLenum',
'valid': [
@@ -939,6 +960,23 @@ _NAMED_TYPE_INFO = {
'GL_RENDERBUFFER_INTERNAL_FORMAT',
],
},
+ 'SamplerParameter': {
+ 'type': 'GLenum',
+ 'valid': [
+ 'GL_TEXTURE_MAG_FILTER',
+ 'GL_TEXTURE_MIN_FILTER',
+ 'GL_TEXTURE_MIN_LOD',
+ 'GL_TEXTURE_MAX_LOD',
+ 'GL_TEXTURE_WRAP_S',
+ 'GL_TEXTURE_WRAP_T',
+ 'GL_TEXTURE_WRAP_R',
+ 'GL_TEXTURE_COMPARE_MODE',
+ 'GL_TEXTURE_COMPARE_FUNC',
+ ],
+ 'invalid': [
+ 'GL_GENERATE_MIPMAP',
+ ],
+ },
'ShaderParameter': {
'type': 'GLenum',
'valid': [
@@ -1327,7 +1365,7 @@ _PEPPER_INTERFACES = [
# command.
# impl_decl: Whether or not to generate the GLES2Implementation declaration
# for this command.
-# needs_size: If true a data_size field is added to the command.
+# needs_size: If True a data_size field is added to the command.
# count: The number of units per element. For PUTn or PUT types.
# unit_test: If False no service side unit test will be generated.
# client_test: If False no client side unit test will be generated.
@@ -1359,6 +1397,8 @@ _PEPPER_INTERFACES = [
# not_shared: For GENn types, True if objects can't be shared between contexts
# unsafe: True = no validation is implemented on the service side and the
# command is only available with --enable-unsafe-es3-apis.
+# id_mapping: A list of resource type names whose client side IDs need to be
+# mapped to service side IDs. This is only used for unsafe APIs.
_FUNCTION_INFO = {
'ActiveTexture': {
@@ -1391,6 +1431,11 @@ _FUNCTION_INFO = {
'gl_test_func': 'glBindRenderbufferEXT',
'gen_func': 'GenRenderbuffersEXT',
},
+ 'BindSampler': {
+ 'type': 'Bind',
+ 'id_mapping': [ 'Sampler' ],
+ 'unsafe': True,
+ },
'BindTexture': {
'type': 'Bind',
'decoder_func': 'DoBindTexture',
@@ -1399,6 +1444,11 @@ _FUNCTION_INFO = {
'client_test': False,
'trace_level': 1,
},
+ 'BindTransformFeedback': {
+ 'type': 'Bind',
+ 'id_mapping': [ 'TransformFeedback' ],
+ 'unsafe': True,
+ },
'BlitFramebufferCHROMIUM': {
'decoder_func': 'DoBlitFramebufferCHROMIUM',
'unit_test': False,
@@ -1690,12 +1740,24 @@ _FUNCTION_INFO = {
'resource_type': 'Renderbuffer',
'resource_types': 'Renderbuffers',
},
+ 'DeleteSamplers': {
+ 'type': 'DELn',
+ 'resource_type': 'Sampler',
+ 'resource_types': 'Samplers',
+ 'unsafe': True,
+ },
'DeleteShader': {'type': 'Delete', 'decoder_func': 'DoDeleteShader'},
'DeleteTextures': {
'type': 'DELn',
'resource_type': 'Texture',
'resource_types': 'Textures',
},
+ 'DeleteTransformFeedbacks': {
+ 'type': 'DELn',
+ 'resource_type': 'TransformFeedback',
+ 'resource_types': 'TransformFeedbacks',
+ 'unsafe': True,
+ },
'DepthRangef': {
'decoder_func': 'DoDepthRangef',
'gl_test_func': 'glDepthRange',
@@ -1797,12 +1859,26 @@ _FUNCTION_INFO = {
'resource_type': 'Renderbuffer',
'resource_types': 'Renderbuffers',
},
+ 'GenSamplers': {
+ 'type': 'GENn',
+ 'gl_test_func': 'glGenSamplers',
+ 'resource_type': 'Sampler',
+ 'resource_types': 'Samplers',
+ 'unsafe': True,
+ },
'GenTextures': {
'type': 'GENn',
'gl_test_func': 'glGenTextures',
'resource_type': 'Texture',
'resource_types': 'Textures',
},
+ 'GenTransformFeedbacks': {
+ 'type': 'GENn',
+ 'gl_test_func': 'glGenTransformFeedbacks',
+ 'resource_type': 'TransformFeedback',
+ 'resource_types': 'TransformFeedbacks',
+ 'unsafe': True,
+ },
'GetActiveAttrib': {
'type': 'Custom',
'data_transfer_methods': ['shm'],
@@ -1924,6 +2000,18 @@ _FUNCTION_INFO = {
'gl_test_func': 'glGetRenderbufferParameterivEXT',
'result': ['SizedResult<GLint>'],
},
+ 'GetSamplerParameterfv': {
+ 'type': 'GETn',
+ 'result': ['SizedResult<GLfloat>'],
+ 'id_mapping': [ 'Sampler' ],
+ 'unsafe': True,
+ },
+ 'GetSamplerParameteriv': {
+ 'type': 'GETn',
+ 'result': ['SizedResult<GLint>'],
+ 'id_mapping': [ 'Sampler' ],
+ 'unsafe': True,
+ },
'GetShaderiv': {
'type': 'GETn',
'decoder_func': 'DoGetShaderiv',
@@ -2062,11 +2150,21 @@ _FUNCTION_INFO = {
'decoder_func': 'DoIsShader',
'expectation': False,
},
+ 'IsSampler': {
+ 'type': 'Is',
+ 'id_mapping': [ 'Sampler' ],
+ 'unsafe': True,
+ },
'IsTexture': {
'type': 'Is',
'decoder_func': 'DoIsTexture',
'expectation': False,
},
+ 'IsTransformFeedback': {
+ 'type': 'Is',
+ 'id_mapping': [ 'TransformFeedback' ],
+ 'unsafe': True,
+ },
'LinkProgram': {
'decoder_func': 'DoLinkProgram',
'impl_func': False,
@@ -2091,6 +2189,9 @@ _FUNCTION_INFO = {
'client_test': False,
'pepper_interface': 'ChromiumMapSub',
},
+ 'PauseTransformFeedback': {
+ 'unsafe': True,
+ },
'PixelStorei': {'type': 'Manual'},
'PostSubBufferCHROMIUM': {
'type': 'Custom',
@@ -2172,6 +2273,42 @@ _FUNCTION_INFO = {
'decoder_func': 'DoReleaseShaderCompiler',
'unit_test': False,
},
+ 'ResumeTransformFeedback': {
+ 'unsafe': True,
+ },
+ 'SamplerParameterf': {
+ 'valid_args': {
+ '2': 'GL_NEAREST'
+ },
+ 'id_mapping': [ 'Sampler' ],
+ 'unsafe': True,
+ },
+ 'SamplerParameterfv': {
+ 'type': 'PUT',
+ 'data_value': 'GL_NEAREST',
+ 'count': 1,
+ 'gl_test_func': 'glSamplerParameterf',
+ 'decoder_func': 'DoSamplerParameterfv',
+ 'first_element_only': True,
+ 'id_mapping': [ 'Sampler' ],
+ 'unsafe': True,
+ },
+ 'SamplerParameteri': {
+ 'valid_args': {
+ '2': 'GL_NEAREST'
+ },
+ 'id_mapping': [ 'Sampler' ],
+ 'unsafe': True,
+ },
+ 'SamplerParameteriv': {
+ 'type': 'PUT',
+ 'data_value': 'GL_NEAREST',
+ 'count': 1,
+ 'gl_test_func': 'glSamplerParameteri',
+ 'decoder_func': 'DoSamplerParameteriv',
+ 'first_element_only': True,
+ 'unsafe': True,
+ },
'ShaderBinary': {
'type': 'Custom',
'client_test': False,
@@ -2599,6 +2736,9 @@ _FUNCTION_INFO = {
'gl_test_func': 'glBeginQuery',
'pepper_interface': 'Query',
},
+ 'BeginTransformFeedback': {
+ 'unsafe': True,
+ },
'EndQueryEXT': {
'type': 'Manual',
'cmd_args': 'GLenumQueryTarget target, GLuint submit_count',
@@ -2606,6 +2746,9 @@ _FUNCTION_INFO = {
'client_test': False,
'pepper_interface': 'Query',
},
+ 'EndTransformFeedback': {
+ 'unsafe': True,
+ },
'GetQueryivEXT': {
'gen_cmd': False,
'client_test': False,
@@ -3061,6 +3204,10 @@ COMPILE_ASSERT(offsetof(%(cmd_name)s::Result, %(field_name)s) == %(offset)d,
def WriteHandlerImplementation(self, func, file):
"""Writes the handler implementation for this command."""
+ if func.IsUnsafe() and func.GetInfo('id_mapping'):
+ for id_type in func.GetInfo('id_mapping'):
+ file.Write(" group_->Get%sServiceId(%s, &%s);\n" %
+ (id_type, id_type.lower(), id_type.lower()))
file.Write(" %s(%s);\n" %
(func.GetGLFunctionName(), func.MakeOriginalArgString("")))
@@ -3110,6 +3257,10 @@ COMPILE_ASSERT(offsetof(%(cmd_name)s::Result, %(field_name)s) == %(offset)d,
def WriteImmediateHandlerImplementation (self, func, file):
"""Writes the handler impl for the immediate version of a command."""
+ if func.IsUnsafe() and func.GetInfo('id_mapping'):
+ for id_type in func.GetInfo('id_mapping'):
+ file.Write(" group_->Get%sServiceId(%s, &%s);\n" %
+ (id_type, id_type.lower(), id_type.lower()))
file.Write(" %s(%s);\n" %
(func.GetGLFunctionName(), func.MakeOriginalArgString("")))
@@ -3233,6 +3384,8 @@ COMPILE_ASSERT(offsetof(%(cmd_name)s::Result, %(field_name)s) == %(offset)d,
def WriteInvalidUnitTest(self, func, file, test, *extras):
"""Writes an invalid unit test for the service implementation."""
+ if func.IsUnsafe():
+ return
for invalid_arg_index, invalid_arg in enumerate(func.GetOriginalArgs()):
# Service implementation does not test constants, as they are not part of
# the call in the service side.
@@ -3270,7 +3423,7 @@ COMPILE_ASSERT(offsetof(%(cmd_name)s::Result, %(field_name)s) == %(offset)d,
'all_but_last_args': ", ".join(arg_strings[:-1]),
'gl_args': ", ".join(gl_arg_strings),
'parse_result': parse_result,
- 'gl_error_test': gl_error_test,
+ 'gl_error_test': gl_error_test,
}
for extra in extras:
vars.update(extra)
@@ -4154,7 +4307,18 @@ TEST_P(%(test_name)s, %(name)sValidArgs) {
EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s));
SpecializedSetup<cmds::%(name)s, 0>(true);
cmds::%(name)s cmd;
- cmd.Init(%(args)s);
+ cmd.Init(%(args)s);"""
+ if func.IsUnsafe():
+ valid_test += """
+ decoder_->set_unsafe_es3_apis_enabled(true);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+ decoder_->set_unsafe_es3_apis_enabled(false);
+ EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
+}
+"""
+ else:
+ valid_test += """
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
@@ -4183,7 +4347,18 @@ TEST_P(%(test_name)s, %(name)sValidArgs) {
EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s));
SpecializedSetup<cmds::%(name)s, 0>(true);
cmds::%(name)s cmd;
- cmd.Init(%(args)s);
+ cmd.Init(%(args)s);"""
+ if func.IsUnsafe():
+ valid_test += """
+ decoder_->set_unsafe_es3_apis_enabled(true);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+ decoder_->set_unsafe_es3_apis_enabled(false);
+ EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
+}
+"""
+ else:
+ valid_test += """
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
@@ -4239,7 +4414,14 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
for arg in func.GetOriginalArgs():
arg.WriteClientSideValidationCode(file, func)
- code = """ if (Is%(type)sReservedId(%(id)s)) {
+ if func.IsUnsafe():
+ code = """ helper_->%(name)s(%(arg_string)s);
+ CheckGLError();
+}
+
+"""
+ else:
+ code = """ if (Is%(type)sReservedId(%(id)s)) {
SetGLError(GL_INVALID_OPERATION, "%(name)s\", \"%(id)s reserved id");
return;
}
@@ -4278,10 +4460,13 @@ TEST_F(GLES2ImplementationTest, %(name)s) {
expected.cmd.Init(%(cmd_args)s);
gl_->%(name)s(%(args)s);
- EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
+ EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));"""
+ if not func.IsUnsafe():
+ code += """
ClearCommands();
gl_->%(name)s(%(args)s);
- EXPECT_TRUE(NoCommandsWritten());
+ EXPECT_TRUE(NoCommandsWritten());"""
+ code += """
}
"""
cmd_arg_strings = [
@@ -4326,10 +4511,25 @@ class GENnHandler(TypeHandler):
def WriteImmediateHandlerImplementation(self, func, file):
"""Overrriden from TypeHandler."""
- file.Write(" if (!%sHelper(n, %s)) {\n"
- " return error::kInvalidArguments;\n"
- " }\n" %
- (func.original_name, func.GetLastOriginalArg().name))
+ if func.IsUnsafe():
+ file.Write(""" for (GLsizei ii = 0; ii < n; ++ii) {
+ if (group_->Get%(resource_name)sServiceId(%(last_arg_name)s[ii], NULL)) {
+ return error::kInvalidArguments;
+ }
+ }
+ scoped_ptr<GLuint[]> service_ids(new GLuint[n]);
+ gl%(func_name)s(n, service_ids.get());
+ for (GLsizei ii = 0; ii < n; ++ii) {
+ group_->Add%(resource_name)sId(%(last_arg_name)s[ii], service_ids[ii]);
+ }
+""" % { 'func_name': func.original_name,
+ 'last_arg_name': func.GetLastOriginalArg().name,
+ 'resource_name': func.GetInfo('resource_type') })
+ else:
+ file.Write(" if (!%sHelper(n, %s)) {\n"
+ " return error::kInvalidArguments;\n"
+ " }\n" %
+ (func.original_name, func.GetLastOriginalArg().name))
def WriteGLES2Implementation(self, func, file):
"""Overrriden from TypeHandler."""
@@ -4415,8 +4615,17 @@ TEST_P(%(test_name)s, %(name)sValidArgs) {
cmds::%(name)s cmd;
cmd.Init(%(args)s);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
- EXPECT_EQ(GL_NO_ERROR, GetGLError());
- EXPECT_TRUE(Get%(resource_name)s(kNewClientId) != NULL);
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());"""
+ if func.IsUnsafe():
+ valid_test += """
+ GLuint service_id;
+ EXPECT_TRUE(Get%(resource_name)sServiceId(kNewClientId, &service_id));
+ EXPECT_EQ(kNewServiceId, service_id)
+}
+"""
+ else:
+ valid_test += """
+ EXPECT_TRUE(Get%(resource_name)s(kNewClientId, &service_id) != NULL);
}
"""
self.WriteValidUnitTest(func, file, valid_test, {
@@ -4444,11 +4653,27 @@ TEST_P(%(test_name)s, %(name)sValidArgs) {
.WillOnce(SetArgumentPointee<1>(kNewServiceId));
cmds::%(name)s* cmd = GetImmediateAs<cmds::%(name)s>();
GLuint temp = kNewClientId;
- SpecializedSetup<cmds::%(name)s, 0>(true);
+ SpecializedSetup<cmds::%(name)s, 0>(true);"""
+ if func.IsUnsafe():
+ valid_test += """
+ decoder_->set_unsafe_es3_apis_enabled(true);"""
+ valid_test += """
cmd->Init(1, &temp);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(*cmd, sizeof(temp)));
- EXPECT_EQ(GL_NO_ERROR, GetGLError());
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());"""
+ if func.IsUnsafe():
+ valid_test += """
+ GLuint service_id;
+ EXPECT_TRUE(Get%(resource_name)sServiceId(kNewClientId, &service_id));
+ EXPECT_EQ(kNewServiceId, service_id);
+ decoder_->set_unsafe_es3_apis_enabled(false);
+ EXPECT_EQ(error::kUnknownCommand,
+ ExecuteImmediateCmd(*cmd, sizeof(temp)));
+}
+"""
+ else:
+ valid_test += """
EXPECT_TRUE(Get%(resource_name)s(kNewClientId) != NULL);
}
"""
@@ -4460,7 +4685,17 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs) {
EXPECT_CALL(*gl_, %(gl_func_name)s(_, _)).Times(0);
cmds::%(name)s* cmd = GetImmediateAs<cmds::%(name)s>();
SpecializedSetup<cmds::%(name)s, 0>(false);
- cmd->Init(1, &client_%(resource_name)s_id_);
+ cmd->Init(1, &client_%(resource_name)s_id_);"""
+ if func.IsUnsafe():
+ invalid_test += """
+ decoder_->set_unsafe_es3_apis_enabled(true);
+ EXPECT_EQ(error::kInvalidArguments,
+ ExecuteImmediateCmd(*cmd, sizeof(&client_%(resource_name)s_id_)));
+ decoder_->set_unsafe_es3_apis_enabled(false);
+}
+"""
+ else:
+ invalid_test += """
EXPECT_EQ(error::kInvalidArguments,
ExecuteImmediateCmd(*cmd, sizeof(&client_%(resource_name)s_id_)));
}
@@ -4744,10 +4979,25 @@ TEST_P(%(test_name)s, %(name)sValidArgs) {
.Times(1);
cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>();
SpecializedSetup<cmds::%(name)s, 0>(true);
- cmd.Init(1, &client_%(resource_name)s_id_);
+ cmd.Init(1, &client_%(resource_name)s_id_);"""
+ if func.IsUnsafe():
+ valid_test += """
+ decoder_->set_unsafe_es3_apis_enabled(true);"""
+ valid_test += """
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(client_%(resource_name)s_id_)));
- EXPECT_EQ(GL_NO_ERROR, GetGLError());
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());"""
+ if func.IsUnsafe():
+ valid_test += """
+ EXPECT_FALSE(Get%(upper_resource_name)sServiceId(
+ client_%(resource_name)s_id_, NULL));
+ decoder_->set_unsafe_es3_apis_enabled(false);
+ EXPECT_EQ(error::kUnknownCommand,
+ ExecuteImmediateCmd(cmd, sizeof(client_%(resource_name)s_id_)));
+}
+"""
+ else:
+ valid_test += """
EXPECT_TRUE(
Get%(upper_resource_name)s(client_%(resource_name)s_id_) == NULL);
}
@@ -4761,7 +5011,19 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs) {
cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>();
SpecializedSetup<cmds::%(name)s, 0>(false);
GLuint temp = kInvalidClientId;
- cmd.Init(1, &temp);
+ cmd.Init(1, &temp);"""
+ if func.IsUnsafe():
+ invalid_test += """
+ decoder_->set_unsafe_es3_apis_enabled(true);
+ EXPECT_EQ(error::kNoError,
+ ExecuteImmediateCmd(cmd, sizeof(temp)));
+ decoder_->set_unsafe_es3_apis_enabled(false);
+ EXPECT_EQ(error::kUnknownCommand,
+ ExecuteImmediateCmd(cmd, sizeof(temp)));
+}
+"""
+ else:
+ invalid_test += """
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
}
@@ -4775,8 +5037,20 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs) {
def WriteImmediateHandlerImplementation (self, func, file):
"""Overrriden from TypeHandler."""
- file.Write(" %sHelper(n, %s);\n" %
- (func.original_name, func.GetLastOriginalArg().name))
+ if func.IsUnsafe():
+ file.Write(""" for (GLsizei ii = 0; ii < n; ++ii) {
+ GLuint service_id = 0;
+ if (group_->Get%(resource_type)sServiceId(
+ %(last_arg_name)s[ii], &service_id)) {
+ glDelete%(resource_type)ss(1, &service_id);
+ group_->Remove%(resource_type)sId(%(last_arg_name)s[ii]);
+ }
+ }
+""" % { 'resource_type': func.GetInfo('resource_type'),
+ 'last_arg_name': func.GetLastOriginalArg().name })
+ else:
+ file.Write(" %sHelper(n, %s);\n" %
+ (func.original_name, func.GetLastOriginalArg().name))
def WriteGLES2Implementation(self, func, file):
"""Overrriden from TypeHandler."""
@@ -5230,13 +5504,32 @@ TEST_P(%(test_name)s, %(name)sValidArgs) {
invalid_test = """
TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
- cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>();
+ cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>();"""
+ if func.IsUnsafe():
+ invalid_test += """
+ EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_any_args)s, _)).Times(1);
+"""
+ else:
+ invalid_test += """
EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_any_args)s, _)).Times(0);
+"""
+ invalid_test += """
SpecializedSetup<cmds::%(name)s, 0>(false);
%(data_type)s temp[%(data_count)s] = { %(data_value)s, };
- cmd.Init(%(all_but_last_args)s, &temp[0]);
+ cmd.Init(%(all_but_last_args)s, &temp[0]);"""
+ if func.IsUnsafe():
+ invalid_test += """
+ decoder_->set_unsafe_es3_apis_enabled(true);
EXPECT_EQ(error::%(parse_result)s,
- ExecuteImmediateCmd(cmd, sizeof(temp)));%(gl_error_test)s
+ ExecuteImmediateCmd(cmd, sizeof(temp)));
+ decoder_->set_unsafe_es3_apis_enabled(false);
+}
+"""
+ else:
+ invalid_test += """
+ EXPECT_EQ(error::%(parse_result)s,
+ ExecuteImmediateCmd(cmd, sizeof(temp)));
+ %(gl_error_test)s
}
"""
self.WriteInvalidUnitTest(func, file, invalid_test, extra, *extras)
@@ -6026,9 +6319,18 @@ TEST_P(%(test_name)s, %(name)sValidArgs) {
EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s));
SpecializedSetup<cmds::%(name)s, 0>(true);
cmds::%(name)s cmd;
- cmd.Init(%(args)s%(comma)sshared_memory_id_, shared_memory_offset_);
+ cmd.Init(%(args)s%(comma)sshared_memory_id_, shared_memory_offset_);"""
+ if func.IsUnsafe():
+ valid_test += """
+ decoder_->set_unsafe_es3_apis_enabled(true);"""
+ valid_test += """
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
- EXPECT_EQ(GL_NO_ERROR, GetGLError());
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());"""
+ if func.IsUnsafe():
+ valid_test += """
+ decoder_->set_unsafe_es3_apis_enabled(false);
+ EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));"""
+ valid_test += """
}
"""
comma = ""
@@ -6054,12 +6356,20 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
invalid_test = """
TEST_P(%(test_name)s, %(name)sInvalidArgsBadSharedMemoryId) {
EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0);
- SpecializedSetup<cmds::%(name)s, 0>(false);
+ SpecializedSetup<cmds::%(name)s, 0>(false);"""
+ if func.IsUnsafe():
+ invalid_test += """
+ decoder_->set_unsafe_es3_apis_enabled(true);"""
+ invalid_test += """
cmds::%(name)s cmd;
cmd.Init(%(args)s%(comma)skInvalidSharedMemoryId, shared_memory_offset_);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
cmd.Init(%(args)s%(comma)sshared_memory_id_, kInvalidSharedMemoryOffset);
- EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
+ EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));"""
+ if func.IsUnsafe():
+ invalid_test += """
+ decoder_->set_unsafe_es3_apis_enabled(true);"""
+ invalid_test += """
}
"""
self.WriteValidUnitTest(func, file, invalid_test, {
@@ -6082,6 +6392,10 @@ TEST_P(%(test_name)s, %(name)sInvalidArgsBadSharedMemoryId) {
"""
file.Write(code % {'func_name': func.name})
func.WriteHandlerValidation(file)
+ if func.IsUnsafe() and func.GetInfo('id_mapping'):
+ for id_type in func.GetInfo('id_mapping'):
+ file.Write(" group_->Get%sServiceId(%s, &%s);\n" %
+ (id_type, id_type.lower(), id_type.lower()))
file.Write(" *result_dst = %s(%s);\n" %
(func.GetGLFunctionName(), func.MakeOriginalArgString("")))
file.Write(" return error::kNoError;\n")
@@ -8803,8 +9117,11 @@ const size_t GLES2Util::enum_to_string_table_len_ =
self.generated_cpp_filenames.append(file.filename)
def Format(generated_files):
+ formatter = "clang-format"
+ if platform.system() == "Windows":
+ formatter += ".bat"
for filename in generated_files:
- call(["clang-format", "-i", "-style=chromium", filename])
+ call([formatter, "-i", "-style=chromium", filename])
def main(argv):
"""This is the main function."""
« no previous file with comments | « gpu/GLES2/gl2chromium_autogen.h ('k') | gpu/command_buffer/client/gles2_c_lib_autogen.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698