summaryrefslogtreecommitdiffstats
path: root/gpu/command_buffer/build_gles2_cmd_buffer.py
diff options
context:
space:
mode:
Diffstat (limited to 'gpu/command_buffer/build_gles2_cmd_buffer.py')
-rwxr-xr-xgpu/command_buffer/build_gles2_cmd_buffer.py60
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),