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

Unified Diff: gpu/command_buffer/build_gles2_cmd_buffer.py

Issue 282253002: Remove unneeded shm versions of bucket functions from command buffer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@no-shm-for-immediate-commands
Patch Set: rebase (1 new added hunk) Created 6 years, 6 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 | « no previous file | gpu/command_buffer/client/gles2_cmd_helper.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 6a99981b19d78f48662f91217c2691d836ec30bf..1c7b0199371cf8732b1335d8db811af47c840545 100755
--- a/gpu/command_buffer/build_gles2_cmd_buffer.py
+++ b/gpu/command_buffer/build_gles2_cmd_buffer.py
@@ -1242,10 +1242,14 @@ _PEPPER_INTERFACES = [
# a NonImmediate type is a type that stays a pointer even in
# and immediate version of acommand.
# gen_cmd: Whether or not this function geneates a command. Default = True.
-# immediate: Whether or not to generate an immediate command for the GL
-# function. The default is if there is exactly 1 pointer argument
-# in the GL function an immediate command is generated.
-# bucket: True to generate a bucket version of the command.
+# data_transfer_methods: Array of methods that are used for transfering the
+# pointer data. Possible values: 'immediate', 'shm', 'bucket'.
+# The default is 'immediate' if the command has one pointer
+# argument, otherwise 'shm'. One command is generated for each
+# transfer method. Affects only commands which are not of type
+# 'HandWritten', 'GETn' or 'GLcharN'.
+# Note: the command arguments that affect this are the final args,
+# taking cmd_args override into consideration.
# impl_func: Whether or not to generate the GLES2Implementation part of this
# command.
# impl_decl: Whether or not to generate the GLES2Implementation declaration
@@ -1290,9 +1294,8 @@ _FUNCTION_INFO = {
'AttachShader': {'decoder_func': 'DoAttachShader'},
'BindAttribLocation': {
'type': 'GLchar',
- 'bucket': True,
+ 'data_transfer_methods': ['bucket'],
'needs_size': True,
- 'immediate': False,
},
'BindBuffer': {
'type': 'Bind',
@@ -1332,14 +1335,14 @@ _FUNCTION_INFO = {
},
'BufferData': {
'type': 'Manual',
- 'immediate': False,
+ 'data_transfer_methods': ['shm'],
'client_test': False,
},
'BufferSubData': {
'type': 'Data',
'client_test': False,
'decoder_func': 'DoBufferSubData',
- 'immediate': False,
+ 'data_transfer_methods': ['shm'],
},
'CheckFramebufferStatus': {
'type': 'Is',
@@ -1387,6 +1390,7 @@ _FUNCTION_INFO = {
'decoder_func': 'DoCreateAndConsumeTextureCHROMIUM',
'impl_func': False,
'type': 'HandWritten',
+ 'data_transfer_methods': ['immediate'],
Kimmo Kinnunen 2014/06/16 06:09:25 Added this, see below for another comment..
'unit_test': False,
'client_test': False,
'extension': True,
@@ -1398,7 +1402,7 @@ _FUNCTION_INFO = {
},
'EnableFeatureCHROMIUM': {
'type': 'Custom',
- 'immediate': False,
+ 'data_transfer_methods': ['shm'],
'decoder_func': 'DoEnableFeatureCHROMIUM',
'expectation': False,
'cmd_args': 'GLuint bucket_id, GLint* result',
@@ -1410,14 +1414,12 @@ _FUNCTION_INFO = {
'CompileShader': {'decoder_func': 'DoCompileShader', 'unit_test': False},
'CompressedTexImage2D': {
'type': 'Manual',
- 'immediate': False,
- 'bucket': True,
+ 'data_transfer_methods': ['bucket', 'shm'],
},
'CompressedTexSubImage2D': {
'type': 'Data',
- 'bucket': True,
+ 'data_transfer_methods': ['bucket', 'shm'],
'decoder_func': 'DoCompressedTexSubImage2D',
- 'immediate': False,
},
'CopyTexImage2D': {
'decoder_func': 'DoCopyTexImage2D',
@@ -1441,7 +1443,6 @@ _FUNCTION_INFO = {
},
'DestroyImageCHROMIUM': {
'type': 'Manual',
- 'immediate': False,
'client_test': False,
'gen_cmd': False,
'extension': True,
@@ -1555,7 +1556,7 @@ _FUNCTION_INFO = {
'decoder_func': 'DoDeleteSharedIdsCHROMIUM',
'impl_func': False,
'expectation': False,
- 'immediate': False,
+ 'data_transfer_methods': ['shm'],
'extension': True,
'chromium': True,
},
@@ -1646,7 +1647,6 @@ _FUNCTION_INFO = {
},
'GenMailboxCHROMIUM': {
'type': 'HandWritten',
- 'immediate': False,
'impl_func': False,
'extension': True,
'chromium': True,
@@ -1673,13 +1673,13 @@ _FUNCTION_INFO = {
'decoder_func': 'DoGenSharedIdsCHROMIUM',
'impl_func': False,
'expectation': False,
- 'immediate': False,
+ 'data_transfer_methods': ['shm'],
'extension': True,
'chromium': True,
},
'GetActiveAttrib': {
'type': 'Custom',
- 'immediate': False,
+ 'data_transfer_methods': ['shm'],
'cmd_args':
'GLidProgram program, GLuint index, uint32_t name_bucket_id, '
'void* result',
@@ -1691,7 +1691,7 @@ _FUNCTION_INFO = {
},
'GetActiveUniform': {
'type': 'Custom',
- 'immediate': False,
+ 'data_transfer_methods': ['shm'],
'cmd_args':
'GLidProgram program, GLuint index, uint32_t name_bucket_id, '
'void* result',
@@ -1703,14 +1703,12 @@ _FUNCTION_INFO = {
},
'GetAttachedShaders': {
'type': 'Custom',
- 'immediate': False,
+ 'data_transfer_methods': ['shm'],
'cmd_args': 'GLidProgram program, void* result, uint32_t result_size',
'result': ['SizedResult<GLuint>'],
},
'GetAttribLocation': {
'type': 'HandWritten',
- 'immediate': False,
- 'bucket': True,
'needs_size': True,
'cmd_args':
'GLidProgram program, const char* name, NonImmediate GLint* location',
@@ -1767,7 +1765,7 @@ _FUNCTION_INFO = {
},
'GetMultipleIntegervCHROMIUM': {
'type': 'Custom',
- 'immediate': False,
+ 'data_transfer_methods': ['shm'],
'expectation': False,
'extension': True,
'chromium': True,
@@ -1781,7 +1779,6 @@ _FUNCTION_INFO = {
},
'GetProgramInfoCHROMIUM': {
'type': 'Custom',
- 'immediate': False,
'expectation': False,
'impl_func': False,
'extension': True,
@@ -1817,7 +1814,7 @@ _FUNCTION_INFO = {
},
'GetShaderPrecisionFormat': {
'type': 'Custom',
- 'immediate': False,
+ 'data_transfer_methods': ['shm'],
'cmd_args':
'GLenumShaderType shadertype, GLenumShaderPrecision precisiontype, '
'void* result',
@@ -1859,18 +1856,16 @@ _FUNCTION_INFO = {
},
'GetUniformfv': {
'type': 'Custom',
- 'immediate': False,
+ 'data_transfer_methods': ['shm'],
'result': ['SizedResult<GLfloat>'],
},
'GetUniformiv': {
'type': 'Custom',
- 'immediate': False,
+ 'data_transfer_methods': ['shm'],
'result': ['SizedResult<GLint>'],
},
'GetUniformLocation': {
'type': 'HandWritten',
- 'immediate': False,
- 'bucket': True,
'needs_size': True,
'cmd_args':
'GLidProgram program, const char* name, NonImmediate GLint* location',
@@ -1895,7 +1890,7 @@ _FUNCTION_INFO = {
},
'GetVertexAttribPointerv': {
'type': 'Custom',
- 'immediate': False,
+ 'data_transfer_methods': ['shm'],
'result': ['SizedResult<GLuint>'],
'client_test': False,
},
@@ -2027,7 +2022,7 @@ _FUNCTION_INFO = {
'// it is easier to specify the result going to some specific place\n'
'// that exactly fits the rectangle of pixels.\n',
'type': 'Custom',
- 'immediate': False,
+ 'data_transfer_methods': ['shm'],
'impl_func': False,
'client_test': False,
'cmd_args':
@@ -2044,7 +2039,7 @@ _FUNCTION_INFO = {
'decoder_func': 'DoRegisterSharedIdsCHROMIUM',
'impl_func': False,
'expectation': False,
- 'immediate': False,
+ 'data_transfer_methods': ['shm'],
'extension': True,
'chromium': True,
},
@@ -2058,8 +2053,7 @@ _FUNCTION_INFO = {
},
'ShaderSource': {
'type': 'Manual',
- 'immediate': False,
- 'bucket': True,
+ 'data_transfer_methods': ['bucket'],
'needs_size': True,
'client_test': False,
'cmd_args':
@@ -2089,7 +2083,7 @@ _FUNCTION_INFO = {
},
'TexImage2D': {
'type': 'Manual',
- 'immediate': False,
+ 'data_transfer_methods': ['shm'],
'client_test': False,
},
'TexParameterf': {
@@ -2122,7 +2116,7 @@ _FUNCTION_INFO = {
},
'TexSubImage2D': {
'type': 'Manual',
- 'immediate': False,
+ 'data_transfer_methods': ['shm'],
'client_test': False,
'cmd_args': 'GLenumTextureTarget target, GLint level, '
'GLint xoffset, GLint yoffset, '
@@ -2273,7 +2267,6 @@ _FUNCTION_INFO = {
'GetRequestableExtensionsCHROMIUM': {
'type': 'Custom',
'impl_func': False,
- 'immediate': False,
'cmd_args': 'uint32_t bucket_id',
'extension': True,
'chromium': True,
@@ -2281,7 +2274,6 @@ _FUNCTION_INFO = {
'RequestExtensionCHROMIUM': {
'type': 'Custom',
'impl_func': False,
- 'immediate': False,
'client_test': False,
'cmd_args': 'uint32_t bucket_id',
'extension': True,
@@ -2297,7 +2289,6 @@ _FUNCTION_INFO = {
'type': 'HandWritten',
'impl_func': False,
'gen_cmd': False,
- 'immediate': False,
'extension': True,
'chromium': True,
},
@@ -2379,7 +2370,7 @@ _FUNCTION_INFO = {
'BeginQueryEXT': {
'type': 'Manual',
'cmd_args': 'GLenumQueryTarget target, GLidQuery id, void* sync_data',
- 'immediate': False,
+ 'data_transfer_methods': ['shm'],
'gl_test_func': 'glBeginQuery',
'pepper_interface': 'Query',
},
@@ -2405,10 +2396,9 @@ _FUNCTION_INFO = {
'BindUniformLocationCHROMIUM': {
'type': 'GLchar',
'extension': True,
- 'bucket': True,
+ 'data_transfer_methods': ['bucket'],
'needs_size': True,
'gl_test_func': 'DoBindUniformLocationCHROMIUM',
- 'immediate': False,
},
'InsertEventMarkerEXT': {
'type': 'GLcharN',
@@ -2491,7 +2481,6 @@ _FUNCTION_INFO = {
'TraceBeginCHROMIUM': {
'type': 'Custom',
'impl_func': False,
- 'immediate': False,
'client_test': False,
'cmd_args': 'GLuint bucket_id',
'extension': True,
@@ -2499,7 +2488,6 @@ _FUNCTION_INFO = {
},
'TraceEndCHROMIUM': {
'impl_func': False,
- 'immediate': False,
'client_test': False,
'decoder_func': 'DoTraceEndCHROMIUM',
'unit_test': False,
@@ -2508,7 +2496,7 @@ _FUNCTION_INFO = {
},
'AsyncTexImage2DCHROMIUM': {
'type': 'Manual',
- 'immediate': False,
+ 'data_transfer_methods': ['shm'],
'client_test': False,
'cmd_args': 'GLenumTextureTarget target, GLint level, '
'GLintTextureInternalFormat internalformat, '
@@ -2523,7 +2511,7 @@ _FUNCTION_INFO = {
},
'AsyncTexSubImage2DCHROMIUM': {
'type': 'Manual',
- 'immediate': False,
+ 'data_transfer_methods': ['shm'],
'client_test': False,
'cmd_args': 'GLenumTextureTarget target, GLint level, '
'GLint xoffset, GLint yoffset, '
@@ -2537,14 +2525,12 @@ _FUNCTION_INFO = {
},
'WaitAsyncTexImage2DCHROMIUM': {
'type': 'Manual',
- 'immediate': False,
'client_test': False,
'extension': True,
'chromium': True,
},
'WaitAllAsyncTexImage2DCHROMIUM': {
'type': 'Manual',
- 'immediate': False,
'client_test': False,
'extension': True,
'chromium': True,
@@ -2725,21 +2711,9 @@ class TypeHandler(object):
if func.GetInfo('needs_size') and not func.name.endswith('Bucket'):
func.AddCmdArg(DataSizeArgument('data_size'))
- def AddImmediateFunction(self, generator, func):
- """Adds an immediate version of a function."""
- # Generate an immediate command if there is only 1 pointer arg.
- immediate = func.GetInfo('immediate') # can be True, False or None
- if immediate == True or immediate == None:
- if func.num_pointer_args == 1 or immediate:
- generator.AddFunction(ImmediateFunction(func))
- return True
-
- def AddBucketFunction(self, generator, func):
- """Adds a bucket version of a function."""
- # Generate an immediate command if there is only 1 pointer arg.
- bucket = func.GetInfo('bucket') # can be True, False or None
- if bucket:
- generator.AddFunction(BucketFunction(func))
+ def NeedsDataTransferFunction(self, func):
+ """Overriden from TypeHandler."""
+ return func.num_pointer_args >= 1
def WriteStruct(self, func, file):
"""Writes a structure that matches the arguments to a function."""
@@ -3594,9 +3568,9 @@ class CustomHandler(TypeHandler):
class TodoHandler(CustomHandler):
"""Handle for commands that are not yet implemented."""
- def AddImmediateFunction(self, generator, func):
- """Overrriden from TypeHandler."""
- pass
+ def NeedsDataTransferFunction(self, func):
+ """Overriden from TypeHandler."""
+ return False
def WriteImmediateFormatTest(self, func, file):
"""Overrriden from TypeHandler."""
@@ -3646,6 +3620,13 @@ class HandWrittenHandler(CustomHandler):
CustomHandler.InitFunction(self, func)
func.can_auto_generate = False
+ def NeedsDataTransferFunction(self, func):
+ """Overriden from TypeHandler."""
+ # If specified explicitly, force the data transfer method.
+ if func.GetInfo('data_transfer_methods'):
+ return True
Kimmo Kinnunen 2014/06/16 06:09:25 Had to add this in order to support correct ...Imm
+ return False
+
def WriteStruct(self, func, file):
"""Overrriden from TypeHandler."""
pass
@@ -4615,9 +4596,9 @@ class GETnHandler(TypeHandler):
def __init__(self):
TypeHandler.__init__(self)
- def AddImmediateFunction(self, generator, func):
- """Overrriden from TypeHandler."""
- pass
+ def NeedsDataTransferFunction(self, func):
+ """Overriden from TypeHandler."""
+ return False
def WriteServiceImplementation(self, func, file):
"""Overrriden from TypeHandler."""
@@ -5621,9 +5602,9 @@ class GLcharNHandler(CustomHandler):
func.cmd_args = []
func.AddCmdArg(Argument('bucket_id', 'GLuint'))
- def AddImmediateFunction(self, generator, func):
- """Overrriden from TypeHandler."""
- pass
+ def NeedsDataTransferFunction(self, func):
+ """Overriden from TypeHandler."""
+ return False
def AddBucketFunction(self, generator, func):
"""Overrriden from TypeHandler."""
@@ -6779,6 +6760,10 @@ class Function(object):
gl_func_name = self.original_name
return gl_func_name
+ def GetDataTransferMethods(self):
+ return self.GetInfo('data_transfer_methods',
+ ['immediate' if self.num_pointer_args == 1 else 'shm'])
+
def AddCmdArg(self, arg):
"""Adds a cmd argument to this function."""
self.cmd_args.append(arg)
@@ -7333,9 +7318,16 @@ class GLGenerator(object):
gen_cmd = f.GetInfo('gen_cmd')
if gen_cmd == True or gen_cmd == None:
- if not f.type_handler.AddImmediateFunction(self, f):
+ if f.type_handler.NeedsDataTransferFunction(f):
+ methods = f.GetDataTransferMethods()
+ if 'immediate' in methods:
+ self.AddFunction(ImmediateFunction(f))
+ if 'bucket' in methods:
+ self.AddFunction(BucketFunction(f))
+ if 'shm' in methods:
+ self.AddFunction(f)
+ else:
self.AddFunction(f)
- f.type_handler.AddBucketFunction(self, f)
self.Log("Auto Generated Functions : %d" %
len([f for f in self.functions if f.can_auto_generate or
« no previous file with comments | « no previous file | gpu/command_buffer/client/gles2_cmd_helper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698