diff options
Diffstat (limited to 'gpu/command_buffer/build_gles2_cmd_buffer.py')
-rwxr-xr-x | gpu/command_buffer/build_gles2_cmd_buffer.py | 60 |
1 files changed, 43 insertions, 17 deletions
diff --git a/gpu/command_buffer/build_gles2_cmd_buffer.py b/gpu/command_buffer/build_gles2_cmd_buffer.py index 9b90b38..b3e5ade 100755 --- a/gpu/command_buffer/build_gles2_cmd_buffer.py +++ b/gpu/command_buffer/build_gles2_cmd_buffer.py @@ -181,7 +181,7 @@ GL_APICALL GLuint GL_APIENTRY glGetMaxValueInBuffer (GLidBuffer buffer_id, GL_APICALL void GL_APIENTRY glGenSharedIds (GLuint namespace_id, GLuint id_offset, GLsizei n, GLuint* ids); GL_APICALL void GL_APIENTRY glDeleteSharedIds (GLuint namespace_id, GLsizei n, const GLuint* ids); GL_APICALL void GL_APIENTRY glRegisterSharedIds (GLuint namespace_id, GLsizei n, const GLuint* ids); -""" +GL_APICALL void GL_APIENTRY glCommandBufferEnable (GLenumCommandBufferState cap, GLboolean enable);""" # This is the list of all commmands that will be generated and their Id. # If a command is not listed in this table it is an error. @@ -375,6 +375,7 @@ _CMD_ID_TABLE = { 'GenSharedIds': 439, 'DeleteSharedIds': 440, 'RegisterSharedIds': 441, + 'CommandBufferEnable': 442, } # This is a list of enum names and their valid values. It is used to map @@ -511,6 +512,12 @@ _ENUM_LISTS = { 'GL_FOG_HINT', ], }, + 'CommandBufferState': { + 'type': 'GLenum', + 'valid': [ + 'GLES2_ALLOW_BUFFERS_ON_MULTIPLE_TARGETS', + ], + }, 'TextureTarget': { 'type': 'GLenum', 'valid': [ @@ -1009,6 +1016,10 @@ _FUNCTION_INFO = { 'result': ['GLenum'], }, 'ClearDepthf': {'decoder_func': 'glClearDepth'}, + 'CommandBufferEnable': { + 'decoder_func': 'DoCommandBufferEnable', + 'expectation': False, + }, 'CompileShader': {'decoder_func': 'DoCompileShader', 'unit_test': False}, 'CompressedTexImage2D': {'type': 'Manual','immediate': True}, 'CompressedTexSubImage2D': {'type': 'Data'}, @@ -1128,6 +1139,7 @@ _FUNCTION_INFO = { 'type': 'GETn', 'result': ['SizedResult<GLboolean>'], 'decoder_func': 'DoGetBooleanv', + 'gl_test_func': 'glGetIntegerv', }, 'GetBufferParameteriv': {'type': 'GETn', 'result': ['SizedResult<GLint>']}, 'GetError': { @@ -1140,6 +1152,7 @@ _FUNCTION_INFO = { 'type': 'GETn', 'result': ['SizedResult<GLfloat>'], 'decoder_func': 'DoGetFloatv', + 'gl_test_func': 'glGetIntegerv', }, 'GetFramebufferAttachmentParameteriv': { 'type': 'GETn', @@ -2296,6 +2309,10 @@ class GENnHandler(TypeHandler): def WriteGLES2ImplementationHeader(self, func, file): """Overrriden from TypeHandler.""" code = """%(return_type)s %(name)s(%(typed_args)s) { + if (%(count_name)s < 0) { + SetGLError(GL_INVALID_VALUE, "gl%(name)s: n < 0"); + return; + } %(resource_type)s_id_handler_->MakeIds(0, %(args)s); helper_->%(name)sImmediate(%(args)s); } @@ -2306,7 +2323,8 @@ class GENnHandler(TypeHandler): 'name': func.original_name, 'typed_args': func.MakeTypedOriginalArgString(""), 'args': func.MakeOriginalArgString(""), - 'resource_type': func.name[3:-1].lower() + 'resource_type': func.name[3:-1].lower(), + 'count_name': func.GetOriginalArgs()[0].name, }) def WriteServiceUnitTest(self, func, file): @@ -2658,15 +2676,24 @@ TEST_F(%(test_name)s, %(name)sInvalidArgs) { """Overrriden from TypeHandler.""" impl_decl = func.GetInfo('impl_decl') if impl_decl == None or impl_decl == True: - file.Write("%s %s(%s) {\n" % - (func.return_type, func.original_name, - func.MakeTypedOriginalArgString(""))) - file.Write(" %s_id_handler_->FreeIds(%s);\n" % - (func.name[6:-1].lower(), func.MakeOriginalArgString(""))) - file.Write(" helper_->%sImmediate(%s);\n" % - (func.name, func.MakeOriginalArgString(""))) - file.Write("}\n") - file.Write("\n") + code = """%(return_type)s %(name)s(%(typed_args)s) { + if (%(count_name)s < 0) { + SetGLError(GL_INVALID_VALUE, "gl%(name)s: n < 0"); + return; + } + %(resource_type)s_id_handler_->FreeIds(%(args)s); + helper_->%(name)sImmediate(%(args)s); +} + +""" + file.Write(code % { + 'return_type': func.return_type, + 'name': func.original_name, + 'typed_args': func.MakeTypedOriginalArgString(""), + 'args': func.MakeOriginalArgString(""), + 'resource_type': func.name[6:-1].lower(), + 'count_name': func.GetOriginalArgs()[0].name, + }) def WriteImmediateCmdComputeSize(self, func, file): """Overrriden from TypeHandler.""" @@ -2788,11 +2815,7 @@ class GETnHandler(TypeHandler): arg.WriteGetCode(file) code = """ typedef %(func_name)s::Result Result; - GLsizei num_values = util_.GLGetNumValuesReturned(pname); - if (num_values == 0) { - SetGLError(GL_INVALID_ENUM, "gl%(func_name)s: invalid enum"); - return error::kNoError; - } + GLsizei num_values = GetNumValuesReturnedForGLGet(pname, &num_values); Result* result = GetSharedMemoryAs<Result*>( c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); %(last_arg_type)s params = result ? result->GetData() : NULL; @@ -2877,7 +2900,10 @@ TEST_F(%(test_name)s, %(name)sValidArgs) { if arg.name == 'pname': valid_pname = arg_value count += 1 - gl_arg_strings.append("result->GetData()") + if func.GetInfo('gl_test_func') == 'glGetIntegerv': + gl_arg_strings.append("_") + else: + gl_arg_strings.append("result->GetData()") self.WriteValidUnitTest(func, file, valid_test, { 'local_gl_args': ", ".join(gl_arg_strings), |