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

Unified Diff: gpu/command_buffer/build_gles2_cmd_buffer.py

Issue 960873002: Update from https://crrev.com/318214 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 10 months 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 141d2599019041dc1417045a8ca4ee2acbde104d..8dba53b8b830479ed5e1794de8d30d6e17c797dd 100755
--- a/gpu/command_buffer/build_gles2_cmd_buffer.py
+++ b/gpu/command_buffer/build_gles2_cmd_buffer.py
@@ -1431,7 +1431,6 @@ _NAMED_TYPE_INFO = {
},
'SyncFlushFlags': {
'type': 'GLbitfield',
- 'is_complete': True,
'valid': [
'GL_SYNC_FLUSH_COMMANDS_BIT',
'0',
@@ -1440,6 +1439,18 @@ _NAMED_TYPE_INFO = {
'0xFFFFFFFF',
],
},
+ 'SyncParameter': {
+ 'type': 'GLenum',
+ 'valid': [
+ 'GL_SYNC_STATUS', # This needs to be the 1st; all others are cached.
+ 'GL_OBJECT_TYPE',
+ 'GL_SYNC_CONDITION',
+ 'GL_SYNC_FLAGS',
+ ],
+ 'invalid': [
+ 'GL_SYNC_FENCE',
+ ],
+ },
}
# This table specifies the different pepper interfaces that are supported for
@@ -2256,12 +2267,19 @@ _FUNCTION_INFO = {
'get_len_enum': 'GL_SHADER_SOURCE_LENGTH',
'unit_test': False,
'client_test': False,
- },
+ },
'GetString': {
'type': 'Custom',
'client_test': False,
'cmd_args': 'GLenumStringType name, uint32_t bucket_id',
},
+ 'GetSynciv': {
+ 'type': 'GETn',
+ 'cmd_args': 'GLuint sync, GLenumSyncParameter pname, void* values',
+ 'result': ['SizedResult<GLint>'],
+ 'id_mapping': ['Sync'],
+ 'unsafe': True,
+ },
'GetTexParameterfv': {
'type': 'GETn',
'decoder_func': 'DoGetTexParameterfv',
@@ -3540,35 +3558,53 @@ static_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'):
- code_no_gen = """ if (!group_->Get%(type)sServiceId(%(var)s, &%(var)s)) {
+ code_no_gen = """ if (!group_->Get%(type)sServiceId(
+ %(var)s, &%(service_var)s)) {
LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "%(func)s", "invalid %(var)s id");
return error::kNoError;
}
"""
- code_gen = """ if (!group_->Get%(type)sServiceId(%(var)s, &%(var)s)) {
+ code_gen = """ if (!group_->Get%(type)sServiceId(
+ %(var)s, &%(service_var)s)) {
if (!group_->bind_generates_resource()) {
LOCAL_SET_GL_ERROR(
GL_INVALID_OPERATION, "%(func)s", "invalid %(var)s id");
return error::kNoError;
}
GLuint client_id = %(var)s;
- gl%(gen_func)s(1, &%(var)s);
- Create%(type)s(client_id, %(var)s);
+ gl%(gen_func)s(1, &%(service_var)s);
+ Create%(type)s(client_id, %(service_var)s);
}
"""
gen_func = func.GetInfo('gen_func')
for id_type in func.GetInfo('id_mapping'):
+ service_var = id_type.lower()
+ if id_type == 'Sync':
+ service_var = "service_%s" % service_var
+ file.Write(" GLsync %s = 0;\n" % service_var)
if gen_func and id_type in gen_func:
file.Write(code_gen % { 'type': id_type,
'var': id_type.lower(),
+ 'service_var': service_var,
'func': func.GetGLFunctionName(),
'gen_func': gen_func })
else:
file.Write(code_no_gen % { 'type': id_type,
'var': id_type.lower(),
+ 'service_var': service_var,
'func': func.GetGLFunctionName() })
+ args = []
+ for arg in func.GetOriginalArgs():
+ if arg.type == "GLsync":
+ args.append("service_%s" % arg.name)
+ elif arg.name.endswith("size") and arg.type == "GLsizei":
+ args.append("num_%s" % func.GetLastOriginalArg().name)
+ elif arg.name == "length":
+ args.append("nullptr")
+ else:
+ args.append(arg.name)
file.Write(" %s(%s);\n" %
- (func.GetGLFunctionName(), func.MakeOriginalArgString("")))
+ (func.GetGLFunctionName(), ", ".join(args)))
def WriteCmdSizeTest(self, func, file):
"""Writes the size test for a command."""
@@ -5650,8 +5686,8 @@ class GETnHandler(TypeHandler):
"""Overrriden from TypeHandler."""
self.WriteServiceHandlerFunctionHeader(func, file)
last_arg = func.GetLastOriginalArg()
-
- all_but_last_args = func.GetOriginalArgs()[:-1]
+ # All except shm_id and shm_offset.
+ all_but_last_args = func.GetCmdArgs()[:-2]
for arg in all_but_last_args:
arg.WriteGetCode(file)
@@ -5659,11 +5695,13 @@ class GETnHandler(TypeHandler):
GLsizei num_values = 0;
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;
+ c.%(last_arg_name)s_shm_id, c.%(last_arg_name)s_shm_offset,
+ Result::ComputeSize(num_values));
+ %(last_arg_type)s %(last_arg_name)s = result ? result->GetData() : NULL;
"""
file.Write(code % {
'last_arg_type': last_arg.type,
+ 'last_arg_name': last_arg.name,
'func_name': func.name,
})
func.WriteHandlerValidation(file)
@@ -5708,8 +5746,19 @@ class GETnHandler(TypeHandler):
for arg in func.GetOriginalArgs():
arg.WriteClientSideValidationCode(file, func)
all_but_last_args = func.GetOriginalArgs()[:-1]
- arg_string = (
- ", ".join(["%s" % arg.name for arg in all_but_last_args]))
+ args = []
+ has_length_arg = False
+ for arg in all_but_last_args:
+ if arg.type == 'GLsync':
+ args.append('ToGLuint(%s)' % arg.name)
+ elif arg.name.endswith('size') and arg.type == 'GLsizei':
+ continue
+ elif arg.name == 'length':
+ has_length_arg = True
+ continue
+ else:
+ args.append(arg.name)
+ arg_string = ", ".join(args)
all_arg_string = (
", ".join([
"%s" % arg.name
@@ -5727,12 +5776,18 @@ class GETnHandler(TypeHandler):
helper_->%(func_name)s(%(arg_string)s,
GetResultShmId(), GetResultShmOffset());
WaitForCmd();
- result->CopyResult(params);
+ result->CopyResult(%(last_arg_name)s);
GPU_CLIENT_LOG_CODE_BLOCK({
for (int32_t i = 0; i < result->GetNumResults(); ++i) {
GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]);
}
- });
+ });"""
+ if has_length_arg:
+ code += """
+ if (length) {
+ *length = result->GetNumResults();
+ }"""
+ code += """
CheckGLError();
}
"""
@@ -5740,6 +5795,7 @@ class GETnHandler(TypeHandler):
'func_name': func.name,
'arg_string': arg_string,
'all_arg_string': all_arg_string,
+ 'last_arg_name': func.GetLastOriginalArg().name,
})
def WriteGLES2ImplementationUnitTest(self, func, file):
@@ -5766,7 +5822,9 @@ TEST_F(GLES2ImplementationTest, %(name)s) {
if not first_cmd_arg:
return
- first_gl_arg = func.GetCmdArgs()[0].GetValidNonCachedClientSideArg(func)
+ first_gl_arg = func.GetOriginalArgs()[0].GetValidNonCachedClientSideArg(
+ func)
+
cmd_arg_strings = [first_cmd_arg]
for arg in func.GetCmdArgs()[1:-2]:
cmd_arg_strings.append(arg.GetValidClientSideCmdArg(func))
@@ -5794,7 +5852,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) {
EXPECT_CALL(*gl_, %(gl_func_name)s(%(local_gl_args)s));
result->size = 0;
cmds::%(name)s cmd;
- cmd.Init(%(args)s);"""
+ cmd.Init(%(cmd_args)s);"""
if func.IsUnsafe():
valid_test += """
decoder_->set_unsafe_es3_apis_enabled(true);"""
@@ -5812,19 +5870,38 @@ TEST_P(%(test_name)s, %(name)sValidArgs) {
}
"""
gl_arg_strings = []
+ cmd_arg_strings = []
valid_pname = ''
for arg in func.GetOriginalArgs()[:-1]:
- arg_value = arg.GetValidGLArg(func)
- gl_arg_strings.append(arg_value)
+ if arg.name == 'length':
+ gl_arg_value = 'nullptr'
+ elif arg.name.endswith('size'):
+ gl_arg_value = ("decoder_->GetGLES2Util()->GLGetNumValuesReturned(%s)" %
+ valid_pname)
+ elif arg.type == 'GLsync':
+ gl_arg_value = 'reinterpret_cast<GLsync>(kServiceSyncId)'
+ else:
+ gl_arg_value = arg.GetValidGLArg(func)
+ gl_arg_strings.append(gl_arg_value)
if arg.name == 'pname':
- valid_pname = arg_value
+ valid_pname = gl_arg_value
+ if arg.name.endswith('size') or arg.name == 'length':
+ continue
+ if arg.type == 'GLsync':
+ arg_value = 'client_sync_id_'
+ else:
+ arg_value = arg.GetValidArg(func)
+ cmd_arg_strings.append(arg_value)
if func.GetInfo('gl_test_func') == 'glGetIntegerv':
gl_arg_strings.append("_")
else:
gl_arg_strings.append("result->GetData()")
+ cmd_arg_strings.append("shared_memory_id_")
+ cmd_arg_strings.append("shared_memory_offset_")
self.WriteValidUnitTest(func, file, valid_test, {
'local_gl_args': ", ".join(gl_arg_strings),
+ 'cmd_args': ", ".join(cmd_arg_strings),
'valid_pname': valid_pname,
}, *extras)
@@ -7506,6 +7583,8 @@ class Argument(object):
if valid_arg != None:
return valid_arg
+ if self.IsPointer():
+ return 'nullptr'
index = func.GetOriginalArgs().index(self)
if self.type == 'GLsync':
return ("reinterpret_cast<GLsync>(%d)" % (index + 1))
@@ -7535,7 +7614,10 @@ class Argument(object):
"""Returns a valid value for this argument in a GL call.
Using the value will produce a command buffer service invocation.
Returns None if there is no such value."""
- return '123'
+ value = '123'
+ if self.type == 'GLsync':
+ return ("reinterpret_cast<GLsync>(%s)" % value)
+ return value
def GetValidNonCachedClientSideCmdArg(self, func):
"""Returns a valid value for this argument in a command buffer command.
@@ -7893,6 +7975,8 @@ class ImmediatePointerArgument(Argument):
def WriteValidationCode(self, file, func):
"""Overridden from Argument."""
+ if self.optional:
+ return
file.Write(" if (%s == NULL) {\n" % self.name)
file.Write(" return error::kOutOfBounds;\n")
file.Write(" }\n")
@@ -7978,6 +8062,8 @@ class PointerArgument(Argument):
def WriteValidationCode(self, file, func):
"""Overridden from Argument."""
+ if self.optional:
+ return
file.Write(" if (%s == NULL) {\n" % self.name)
file.Write(" return error::kOutOfBounds;\n")
file.Write(" }\n")
« 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