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

Side by Side Diff: gpu/command_buffer/build_gles2_cmd_buffer.py

Issue 501097: Add Immediate command data size validation.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 # 2 #
3 # Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. 3 # Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 """code generator for GL command buffers.""" 7 """code generator for GL command buffers."""
8 8
9 import os 9 import os
10 import os.path 10 import os.path
(...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after
656 'CompressedTexSubImage2D': {'type': 'Data'}, 656 'CompressedTexSubImage2D': {'type': 'Data'},
657 'CreateProgram': {'type': 'Create'}, 657 'CreateProgram': {'type': 'Create'},
658 'CreateShader': {'type': 'Create'}, 658 'CreateShader': {'type': 'Create'},
659 'DeleteBuffers': {'type': 'DELn'}, 659 'DeleteBuffers': {'type': 'DELn'},
660 'DeleteFramebuffers': {'type': 'DELn'}, 660 'DeleteFramebuffers': {'type': 'DELn'},
661 'DeleteProgram': {'type': 'Custom', 'DecoderFunc': 'DoDeleteProgram'}, 661 'DeleteProgram': {'type': 'Custom', 'DecoderFunc': 'DoDeleteProgram'},
662 'DeleteRenderbuffers': {'type': 'DELn'}, 662 'DeleteRenderbuffers': {'type': 'DELn'},
663 'DeleteShader': {'type': 'Custom', 'DecoderFunc': 'DoDeleteShader'}, 663 'DeleteShader': {'type': 'Custom', 'DecoderFunc': 'DoDeleteShader'},
664 'DeleteTextures': {'type': 'DELn'}, 664 'DeleteTextures': {'type': 'DELn'},
665 'DepthRangef': {'DecoderFunc': 'glDepthRange'}, 665 'DepthRangef': {'DecoderFunc': 'glDepthRange'},
666 'DisableVertexAttribArray': {'DecoderFunc': 'DoDisableVertexAttribArray'},
667 'DrawArrays': { 'DecoderFunc': 'DoDrawArrays'},
666 'DrawElements': { 668 'DrawElements': {
667 'type': 'Manual', 669 'type': 'Manual',
668 'cmd_args': 'GLenum mode, GLsizei count, GLenum type, GLuint index_offset', 670 'cmd_args': 'GLenum mode, GLsizei count, GLenum type, GLuint index_offset',
669 }, 671 },
672 'EnableVertexAttribArray': {'DecoderFunc': 'DoEnableVertexAttribArray'},
670 'FramebufferRenderbuffer': {'DecoderFunc': 'glFramebufferRenderbufferEXT'}, 673 'FramebufferRenderbuffer': {'DecoderFunc': 'glFramebufferRenderbufferEXT'},
671 'FramebufferTexture2D': {'DecoderFunc': 'glFramebufferTexture2DEXT'}, 674 'FramebufferTexture2D': {'DecoderFunc': 'glFramebufferTexture2DEXT'},
672 'GenerateMipmap': {'DecoderFunc': 'glGenerateMipmapEXT'}, 675 'GenerateMipmap': {'DecoderFunc': 'glGenerateMipmapEXT'},
673 'GenBuffers': {'type': 'GENn'}, 676 'GenBuffers': {'type': 'GENn'},
674 'GenFramebuffers': {'type': 'GENn'}, 677 'GenFramebuffers': {'type': 'GENn'},
675 'GenRenderbuffers': {'type': 'GENn'}, 678 'GenRenderbuffers': {'type': 'GENn'},
676 'GenTextures': {'type': 'GENn'}, 679 'GenTextures': {'type': 'GENn'},
677 'GetActiveAttrib': {'type': 'Custom'}, 680 'GetActiveAttrib': {'type': 'Custom'},
678 'GetActiveUniform': {'type': 'Custom'}, 681 'GetActiveUniform': {'type': 'Custom'},
679 'GetAttachedShaders': {'type': 'Custom'}, 682 'GetAttachedShaders': {'type': 'Custom'},
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
717 'GetVertexAttribfv': {'type': 'GETn'}, 720 'GetVertexAttribfv': {'type': 'GETn'},
718 'GetVertexAttribiv': {'type': 'GETn'}, 721 'GetVertexAttribiv': {'type': 'GETn'},
719 'GetVertexAttribPointerv': {'type': 'Custom', 'immediate': False}, 722 'GetVertexAttribPointerv': {'type': 'Custom', 'immediate': False},
720 'IsBuffer': {'type': 'Is'}, 723 'IsBuffer': {'type': 'Is'},
721 'IsEnabled': {'type': 'Is'}, 724 'IsEnabled': {'type': 'Is'},
722 'IsFramebuffer': {'type': 'Is', 'DecoderFunc': 'glIsFramebufferEXT'}, 725 'IsFramebuffer': {'type': 'Is', 'DecoderFunc': 'glIsFramebufferEXT'},
723 'IsProgram': {'type': 'Is'}, 726 'IsProgram': {'type': 'Is'},
724 'IsRenderbuffer': {'type': 'Is', 'DecoderFunc': 'glIsRenderbufferEXT'}, 727 'IsRenderbuffer': {'type': 'Is', 'DecoderFunc': 'glIsRenderbufferEXT'},
725 'IsShader': {'type': 'Is'}, 728 'IsShader': {'type': 'Is'},
726 'IsTexture': {'type': 'Is'}, 729 'IsTexture': {'type': 'Is'},
730 'LinkProgram': {'DecoderFunc': 'DoLinkProgram'},
727 'PixelStorei': {'type': 'Manual'}, 731 'PixelStorei': {'type': 'Manual'},
728 'RenderbufferStorage': {'DecoderFunc': 'glRenderbufferStorageEXT'}, 732 'RenderbufferStorage': {'DecoderFunc': 'glRenderbufferStorageEXT'},
729 'ReadPixels': {'type': 'Custom', 'immediate': False}, 733 'ReadPixels': {'type': 'Custom', 'immediate': False},
730 'ReleaseShaderCompiler': {'type': 'Noop'}, 734 'ReleaseShaderCompiler': {'type': 'Noop'},
731 'ShaderBinary': {'type': 'Noop'}, 735 'ShaderBinary': {'type': 'Noop'},
732 'ShaderSource': { 736 'ShaderSource': {
733 'type': 'Manual', 737 'type': 'Manual',
734 'immediate': True, 738 'immediate': True,
735 'needs_size': True, 739 'needs_size': True,
736 'cmd_args': 740 'cmd_args':
737 'GLuint shader, GLsizei count, const char* data', 741 'GLuint shader, GLsizei count, const char* data',
738 }, 742 },
739 'TexImage2D': {'type': 'Manual', 'immediate': True}, 743 'TexImage2D': {'type': 'Manual', 'immediate': True},
740 'TexParameterfv': {'type': 'PUT', 'data_type': 'GLfloat', 'count': 1}, 744 'TexParameterfv': {'type': 'PUT', 'data_type': 'GLfloat', 'count': 1},
741 'TexParameteriv': {'type': 'PUT', 'data_type': 'GLint', 'count': 1}, 745 'TexParameteriv': {'type': 'PUT', 'data_type': 'GLint', 'count': 1},
742 'TexSubImage2D': {'type': 'Data'}, 746 'TexSubImage2D': {'type': 'Data'},
743 'Uniform1fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 1}, 747 'Uniform1fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 1},
744 'Uniform1iv': {'type': 'PUTn', 'data_type': 'GLint', 'count': 1}, 748 'Uniform1iv': {'type': 'PUTn', 'data_type': 'GLint', 'count': 1},
745 'Uniform2fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 2}, 749 'Uniform2fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 2},
746 'Uniform2iv': {'type': 'PUTn', 'data_type': 'GLint', 'count': 2}, 750 'Uniform2iv': {'type': 'PUTn', 'data_type': 'GLint', 'count': 2},
747 'Uniform3fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 3}, 751 'Uniform3fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 3},
748 'Uniform3iv': {'type': 'PUTn', 'data_type': 'GLint', 'count': 3}, 752 'Uniform3iv': {'type': 'PUTn', 'data_type': 'GLint', 'count': 3},
749 'Uniform4fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 4}, 753 'Uniform4fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 4},
750 'Uniform4iv': {'type': 'PUTn', 'data_type': 'GLint', 'count': 4}, 754 'Uniform4iv': {'type': 'PUTn', 'data_type': 'GLint', 'count': 4},
751 'UniformMatrix2fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 4}, 755 'UniformMatrix2fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 4},
752 'UniformMatrix3fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 9}, 756 'UniformMatrix3fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 9},
753 'UniformMatrix4fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 16}, 757 'UniformMatrix4fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 16},
758 'UseProgram': {'DecoderFunc': 'DoUseProgram'},
754 'VertexAttrib1fv': {'type': 'PUT', 'data_type': 'GLfloat', 'count': 1}, 759 'VertexAttrib1fv': {'type': 'PUT', 'data_type': 'GLfloat', 'count': 1},
755 'VertexAttrib2fv': {'type': 'PUT', 'data_type': 'GLfloat', 'count': 2}, 760 'VertexAttrib2fv': {'type': 'PUT', 'data_type': 'GLfloat', 'count': 2},
756 'VertexAttrib3fv': {'type': 'PUT', 'data_type': 'GLfloat', 'count': 3}, 761 'VertexAttrib3fv': {'type': 'PUT', 'data_type': 'GLfloat', 'count': 3},
757 'VertexAttrib4fv': {'type': 'PUT', 'data_type': 'GLfloat', 'count': 4}, 762 'VertexAttrib4fv': {'type': 'PUT', 'data_type': 'GLfloat', 'count': 4},
758 'VertexAttribPointer': { 763 'VertexAttribPointer': {
759 'type': 'Manual', 764 'type': 'Manual',
760 'cmd_args': 'GLuint indx, GLint size, GLenum type, GLboolean normalized, ' 765 'cmd_args': 'GLuint indx, GLint size, GLenum type, GLboolean normalized, '
761 'GLsizei stride, GLuint offset', 766 'GLsizei stride, GLuint offset',
762 }, 767 },
763 'SwapBuffers': {'DecoderFunc': 'DoSwapBuffers'}, 768 'SwapBuffers': {'DecoderFunc': 'DoSwapBuffers'},
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
934 func.type_handler.WriteImmediateCmdSizeTest(func, file) 939 func.type_handler.WriteImmediateCmdSizeTest(func, file)
935 file.Write(" EXPECT_EQ(static_cast<char*>(next_cmd),\n") 940 file.Write(" EXPECT_EQ(static_cast<char*>(next_cmd),\n")
936 file.Write(" reinterpret_cast<char*>(&cmd) + sizeof(cmd));\n"); 941 file.Write(" reinterpret_cast<char*>(&cmd) + sizeof(cmd));\n");
937 for arg in args: 942 for arg in args:
938 file.Write(" EXPECT_EQ(static_cast<%s>(%d), cmd.%s);\n" % 943 file.Write(" EXPECT_EQ(static_cast<%s>(%d), cmd.%s);\n" %
939 (arg.type, value, arg.name)) 944 (arg.type, value, arg.name))
940 value += 1 945 value += 1
941 file.Write("}\n") 946 file.Write("}\n")
942 file.Write("\n") 947 file.Write("\n")
943 948
949 def WriteGetDataSizeCode(self, func, file):
950 """Writes the code to set data_size used in validation"""
951 pass
952
944 def WriteImmediateCmdSizeTest(self, func, file): 953 def WriteImmediateCmdSizeTest(self, func, file):
945 """Writes a size test for an immediate version of a command.""" 954 """Writes a size test for an immediate version of a command."""
946 file.Write(" // TODO(gman): Compute correct size.\n") 955 file.Write(" // TODO(gman): Compute correct size.\n")
947 file.Write(" EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);\n") 956 file.Write(" EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);\n")
948 957
949 def WriteImmediateHandlerImplementation (self, func, file): 958 def WriteImmediateHandlerImplementation (self, func, file):
950 """Writes the handler impl for the immediate version of a command.""" 959 """Writes the handler impl for the immediate version of a command."""
951 file.Write(" // Immediate version.\n")
952 func.WriteHandlerValidation(file)
953 file.Write(" %s(%s);\n" % 960 file.Write(" %s(%s);\n" %
954 (func.GetGLFunctionName(), func.MakeOriginalArgString(""))) 961 (func.GetGLFunctionName(), func.MakeOriginalArgString("")))
955 962
956 def WriteServiceImplementation(self, func, file): 963 def WriteServiceImplementation(self, func, file):
957 """Writes the service implementation for a command.""" 964 """Writes the service implementation for a command."""
958 file.Write( 965 file.Write(
959 "parse_error::ParseError GLES2DecoderImpl::Handle%s(\n" % func.name) 966 "parse_error::ParseError GLES2DecoderImpl::Handle%s(\n" % func.name)
960 file.Write( 967 file.Write(
961 " uint32 immediate_data_size, const gles2::%s& c) {\n" % func.name) 968 " uint32 immediate_data_size, const gles2::%s& c) {\n" % func.name)
962 for arg in func.GetOriginalArgs(): 969 if len(func.GetOriginalArgs()) > 0:
963 arg.WriteGetCode(file) 970 last_arg = func.GetLastOriginalArg()
971 all_but_last_arg = func.GetOriginalArgs()[:-1]
972 for arg in all_but_last_arg:
973 arg.WriteGetCode(file)
974 self.WriteGetDataSizeCode(func, file)
975 last_arg.WriteGetCode(file)
964 func.WriteHandlerValidation(file) 976 func.WriteHandlerValidation(file)
965 func.WriteHandlerImplementation(file) 977 func.WriteHandlerImplementation(file)
966 file.Write(" return parse_error::kParseNoError;\n") 978 file.Write(" return parse_error::kParseNoError;\n")
967 file.Write("}\n") 979 file.Write("}\n")
968 file.Write("\n") 980 file.Write("\n")
969 981
970 def WriteImmediateServiceImplementation(self, func, file): 982 def WriteImmediateServiceImplementation(self, func, file):
971 """Writes the service implementation for an immediate version of command.""" 983 """Writes the service implementation for an immediate version of command."""
972 file.Write( 984 file.Write(
973 "parse_error::ParseError GLES2DecoderImpl::Handle%s(\n" % func.name) 985 "parse_error::ParseError GLES2DecoderImpl::Handle%s(\n" % func.name)
974 file.Write( 986 file.Write(
975 " uint32 immediate_data_size, const gles2::%s& c) {\n" % func.name) 987 " uint32 immediate_data_size, const gles2::%s& c) {\n" % func.name)
976 for arg in func.GetOriginalArgs(): 988 last_arg = func.GetLastOriginalArg()
989 all_but_last_arg = func.GetOriginalArgs()[:-1]
990 for arg in all_but_last_arg:
977 arg.WriteGetCode(file) 991 arg.WriteGetCode(file)
992 self.WriteGetDataSizeCode(func, file)
993 last_arg.WriteGetCode(file)
978 func.WriteHandlerValidation(file) 994 func.WriteHandlerValidation(file)
979 func.WriteHandlerImplementation(file) 995 func.WriteHandlerImplementation(file)
980 file.Write(" return parse_error::kParseNoError;\n") 996 file.Write(" return parse_error::kParseNoError;\n")
981 file.Write("}\n") 997 file.Write("}\n")
982 file.Write("\n") 998 file.Write("\n")
983 999
984 def WriteImmediateValidationCode(self, func, file): 1000 def WriteImmediateValidationCode(self, func, file):
985 """Writes the validation code for an immediate version of a command.""" 1001 """Writes the validation code for an immediate version of a command."""
986 pass 1002 pass
987 1003
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
1192 1208
1193 def WriteImmediateCmdGetTotalSize(self, func, file): 1209 def WriteImmediateCmdGetTotalSize(self, func, file):
1194 """Overrriden from TypeHandler.""" 1210 """Overrriden from TypeHandler."""
1195 # TODO(gman): Move this data to _FUNCTION_INFO? 1211 # TODO(gman): Move this data to _FUNCTION_INFO?
1196 if func.name == 'ShaderSourceImmediate': 1212 if func.name == 'ShaderSourceImmediate':
1197 file.Write(" uint32 total_size = ComputeSize(_data_size);\n") 1213 file.Write(" uint32 total_size = ComputeSize(_data_size);\n")
1198 else: 1214 else:
1199 CustomHandler.WriteImmediateCmdGetTotalSize(self, func, file) 1215 CustomHandler.WriteImmediateCmdGetTotalSize(self, func, file)
1200 1216
1201 1217
1202 class DataHandler(CustomHandler): 1218 class DataHandler(TypeHandler):
1203 """Handler for glBufferData, glBufferSubData, glTexImage2D, glTexSubImage2D, 1219 """Handler for glBufferData, glBufferSubData, glTexImage2D, glTexSubImage2D,
1204 glCompressedTexImage2D, glCompressedTexImageSub2D.""" 1220 glCompressedTexImage2D, glCompressedTexImageSub2D."""
1205 def __init__(self): 1221 def __init__(self):
1206 CustomHandler.__init__(self) 1222 TypeHandler.__init__(self)
1207 1223
1208 def WriteServiceImplementation(self, func, file): 1224 def WriteGetDataSizeCode(self, func, file):
1209 """Overrriden from TypeHandler.""" 1225 """Overrriden from TypeHandler."""
1210 file.Write(
1211 "parse_error::ParseError GLES2DecoderImpl::Handle%s(\n" % func.name)
1212 file.Write(
1213 " uint32 immediate_data_size, const gles2::%s& c) {\n" % func.name)
1214 for arg in func.GetCmdArgs():
1215 arg.WriteGetCode(file)
1216
1217 # TODO(gman): Move this data to _FUNCTION_INFO? 1226 # TODO(gman): Move this data to _FUNCTION_INFO?
1218 if func.name == 'BufferData': 1227 name = func.name
1228 if name.endswith("Immediate"):
1229 name = name[0:-9]
1230 if name == 'BufferData':
1219 file.Write(" uint32 data_size = size;\n") 1231 file.Write(" uint32 data_size = size;\n")
1220 elif func.name == 'BufferSubData': 1232 elif name == 'BufferSubData':
1221 file.Write(" uint32 data_size = size;\n") 1233 file.Write(" uint32 data_size = size;\n")
1222 elif func.name == 'CompressedTexImage2D': 1234 elif name == 'CompressedTexImage2D':
1223 file.Write(" uint32 data_size = imageSize;\n") 1235 file.Write(" uint32 data_size = imageSize;\n")
1224 elif func.name == 'CompressedTexSubImage2D': 1236 elif name == 'CompressedTexSubImage2D':
1225 file.Write(" uint32 data_size = imageSize;\n") 1237 file.Write(" uint32 data_size = imageSize;\n")
1226 elif func.name == 'TexImage2D': 1238 elif name == 'TexImage2D':
1227 file.Write(" uint32 pixels_size = GLES2Util::ComputeImageDataSize(\n") 1239 file.Write(" uint32 data_size = GLES2Util::ComputeImageDataSize(\n")
1228 file.Write(" width, height, format, type, unpack_alignment_);\n") 1240 file.Write(" width, height, format, type, unpack_alignment_);\n")
1229 elif func.name == 'TexSubImage2D': 1241 elif name == 'TexSubImage2D':
1230 file.Write(" uint32 pixels_size = GLES2Util::ComputeImageDataSize(\n") 1242 file.Write(" uint32 data_size = GLES2Util::ComputeImageDataSize(\n")
1231 file.Write(" width, height, format, type, unpack_alignment_);\n") 1243 file.Write(" width, height, format, type, unpack_alignment_);\n")
1232 else: 1244 else:
1233 file.Write(" uint32 data_size = 0; // TODO(gman): get correct size!\n") 1245 file.Write("// uint32 data_size = 0; // TODO(gman): get correct size!\n")
1234
1235 for arg in func.GetOriginalArgs():
1236 arg.WriteGetAddress(file)
1237 func.WriteHandlerValidation(file)
1238 func.WriteHandlerImplementation(file)
1239 file.Write(" return parse_error::kParseNoError;\n")
1240 file.Write("}\n")
1241 file.Write("\n")
1242 1246
1243 def WriteImmediateCmdGetTotalSize(self, func, file): 1247 def WriteImmediateCmdGetTotalSize(self, func, file):
1244 """Overrriden from TypeHandler.""" 1248 """Overrriden from TypeHandler."""
1245 # TODO(gman): Move this data to _FUNCTION_INFO? 1249 # TODO(gman): Move this data to _FUNCTION_INFO?
1246 if func.name == 'BufferDataImmediate': 1250 if func.name == 'BufferDataImmediate':
1247 file.Write(" uint32 total_size = ComputeSize(_size);\n") 1251 file.Write(" uint32 total_size = ComputeSize(_size);\n")
1248 elif func.name == 'BufferSubDataImmediate': 1252 elif func.name == 'BufferSubDataImmediate':
1249 file.Write(" uint32 total_size = ComputeSize(_size);\n") 1253 file.Write(" uint32 total_size = ComputeSize(_size);\n")
1250 elif func.name == 'CompressedTexImage2DImmediate': 1254 elif func.name == 'CompressedTexImage2DImmediate':
1251 file.Write(" uint32 total_size = ComputeSize(_imageSize);\n") 1255 file.Write(" uint32 total_size = ComputeSize(_imageSize);\n")
(...skipping 18 matching lines...) Expand all
1270 elif func.name == 'CompressedTexSubImage2DImmediate': 1274 elif func.name == 'CompressedTexSubImage2DImmediate':
1271 file.Write(" uint32 total_size = cmd.ComputeSize(cmd.imageSize);\n") 1275 file.Write(" uint32 total_size = cmd.ComputeSize(cmd.imageSize);\n")
1272 elif func.name == 'TexImage2DImmediate': 1276 elif func.name == 'TexImage2DImmediate':
1273 file.Write( 1277 file.Write(
1274 " uint32 total_size = 0; // TODO(gman): get correct size\n") 1278 " uint32 total_size = 0; // TODO(gman): get correct size\n")
1275 elif func.name == 'TexSubImage2DImmediate': 1279 elif func.name == 'TexSubImage2DImmediate':
1276 file.Write( 1280 file.Write(
1277 " uint32 total_size = 0; // TODO(gman): get correct size\n") 1281 " uint32 total_size = 0; // TODO(gman): get correct size\n")
1278 file.Write(" EXPECT_EQ(sizeof(cmd), total_size);\n") 1282 file.Write(" EXPECT_EQ(sizeof(cmd), total_size);\n")
1279 1283
1284 def WriteImmediateCmdInit(self, func, file):
1285 """Overrriden from TypeHandler."""
1286 file.Write(" void Init(%s) {\n" % func.MakeTypedCmdArgString("_"))
1287 self.WriteImmediateCmdGetTotalSize(func, file)
1288 file.Write(" SetHeader(total_size);\n")
1289 args = func.GetCmdArgs()
1290 for arg in args:
1291 file.Write(" %s = _%s;\n" % (arg.name, arg.name))
1292 file.Write(" }\n")
1293 file.Write("\n")
1294
1295 def WriteImmediateCmdSet(self, func, file):
1296 """Overrriden from TypeHandler."""
1297 copy_args = func.MakeCmdArgString("_", False)
1298 file.Write(" void* Set(void* cmd%s) {\n" %
1299 func.MakeTypedCmdArgString("_", True))
1300 self.WriteImmediateCmdGetTotalSize(func, file)
1301 file.Write(" static_cast<ValueType*>(cmd)->Init(%s);\n" % copy_args)
1302 file.Write(" return NextImmediateCmdAddressTotalSize<ValueType>("
1303 "cmd, total_size);\n")
1304 file.Write(" }\n")
1305 file.Write("\n")
1306
1280 def WriteImmediateFormatTest(self, func, file): 1307 def WriteImmediateFormatTest(self, func, file):
1281 """Overrriden from TypeHandler.""" 1308 """Overrriden from TypeHandler."""
1282 # TODO(gman): Remove this exception. 1309 # TODO(gman): Remove this exception.
1283 file.Write("// TODO(gman): Implement test for %s\n" % func.name) 1310 file.Write("// TODO(gman): Implement test for %s\n" % func.name)
1284 return 1311 return
1285 1312
1286 def WriteGLES2ImplementationImpl(self, func, file): 1313 def WriteGLES2ImplementationImpl(self, func, file):
1287 """Overrriden from TypeHandler.""" 1314 """Overrriden from TypeHandler."""
1288 pass 1315 pass
1289 1316
1290 1317
1291 class GENnHandler(TypeHandler): 1318 class GENnHandler(TypeHandler):
1292 """Handler for glGen___ type functions.""" 1319 """Handler for glGen___ type functions."""
1293 1320
1294 def __init__(self): 1321 def __init__(self):
1295 TypeHandler.__init__(self) 1322 TypeHandler.__init__(self)
1296 1323
1297 def InitFunction(self, func): 1324 def InitFunction(self, func):
1298 """Overrriden from TypeHandler.""" 1325 """Overrriden from TypeHandler."""
1299 pass 1326 pass
1300 1327
1328 def WriteGetDataSizeCode(self, func, file):
1329 """Overrriden from TypeHandler."""
1330 file.Write(" uint32 data_size = n * sizeof(GLuint);\n")
1331
1301 def WriteHandlerImplementation (self, func, file): 1332 def WriteHandlerImplementation (self, func, file):
1302 """Overrriden from TypeHandler.""" 1333 """Overrriden from TypeHandler."""
1303 func.WriteHandlerValidation(file)
1304 file.Write(" GenGLObjects<GL%sHelper>(n, %s);\n" % 1334 file.Write(" GenGLObjects<GL%sHelper>(n, %s);\n" %
1305 (func.name, func.GetLastOriginalArg().name)) 1335 (func.name, func.GetLastOriginalArg().name))
1306 1336
1307 def WriteImmediateHandlerImplementation(self, func, file): 1337 def WriteImmediateHandlerImplementation(self, func, file):
1308 """Overrriden from TypeHandler.""" 1338 """Overrriden from TypeHandler."""
1309 func.WriteHandlerValidation(file)
1310 file.Write(" GenGLObjects<GL%sHelper>(n, %s);\n" % 1339 file.Write(" GenGLObjects<GL%sHelper>(n, %s);\n" %
1311 (func.original_name, func.GetLastOriginalArg().name)) 1340 (func.original_name, func.GetLastOriginalArg().name))
1312 1341
1313 def WriteGLES2ImplementationHeader(self, func, file): 1342 def WriteGLES2ImplementationHeader(self, func, file):
1314 """Overrriden from TypeHandler.""" 1343 """Overrriden from TypeHandler."""
1315 file.Write("%s %s(%s) {\n" % 1344 file.Write("%s %s(%s) {\n" %
1316 (func.return_type, func.original_name, 1345 (func.return_type, func.original_name,
1317 func.MakeTypedOriginalArgString(""))) 1346 func.MakeTypedOriginalArgString("")))
1318 file.Write(" MakeIds(%s);\n" % func.MakeOriginalArgString("")) 1347 file.Write(" MakeIds(%s);\n" % func.MakeOriginalArgString(""))
1319 file.Write(" helper_->%sImmediate(%s);\n" % 1348 file.Write(" helper_->%sImmediate(%s);\n" %
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
1428 def __init__(self): 1457 def __init__(self):
1429 TypeHandler.__init__(self) 1458 TypeHandler.__init__(self)
1430 1459
1431 def InitFunction(self, func): 1460 def InitFunction(self, func):
1432 """Overrriden from TypeHandler.""" 1461 """Overrriden from TypeHandler."""
1433 func.AddCmdArg(Argument("client_id", 'uint32')) 1462 func.AddCmdArg(Argument("client_id", 'uint32'))
1434 1463
1435 def WriteHandlerImplementation (self, func, file): 1464 def WriteHandlerImplementation (self, func, file):
1436 """Overrriden from TypeHandler.""" 1465 """Overrriden from TypeHandler."""
1437 file.Write(" uint32 client_id = c.client_id;\n") 1466 file.Write(" uint32 client_id = c.client_id;\n")
1438 func.WriteHandlerValidation(file)
1439 file.Write(" %sHelper(%s);\n" % 1467 file.Write(" %sHelper(%s);\n" %
1440 (func.name, func.MakeCmdArgString(""))) 1468 (func.name, func.MakeCmdArgString("")))
1441 1469
1442 def WriteGLES2ImplementationHeader(self, func, file): 1470 def WriteGLES2ImplementationHeader(self, func, file):
1443 """Overrriden from TypeHandler.""" 1471 """Overrriden from TypeHandler."""
1444 file.Write("%s %s(%s) {\n" % 1472 file.Write("%s %s(%s) {\n" %
1445 (func.return_type, func.original_name, 1473 (func.return_type, func.original_name,
1446 func.MakeTypedOriginalArgString(""))) 1474 func.MakeTypedOriginalArgString("")))
1447 file.Write(" GLuint client_id;\n") 1475 file.Write(" GLuint client_id;\n")
1448 file.Write(" MakeIds(1, &client_id);\n") 1476 file.Write(" MakeIds(1, &client_id);\n")
1449 file.Write(" helper_->%s(%s);\n" % 1477 file.Write(" helper_->%s(%s);\n" %
1450 (func.name, func.MakeCmdArgString(""))) 1478 (func.name, func.MakeCmdArgString("")))
1451 file.Write(" return client_id;\n") 1479 file.Write(" return client_id;\n")
1452 file.Write("}\n") 1480 file.Write("}\n")
1453 file.Write("\n") 1481 file.Write("\n")
1454 1482
1455 def WriteGLES2ImplementationImpl(self, func, file): 1483 def WriteGLES2ImplementationImpl(self, func, file):
1456 """Overrriden from TypeHandler.""" 1484 """Overrriden from TypeHandler."""
1457 pass 1485 pass
1458 1486
1459 1487
1460 class DELnHandler(TypeHandler): 1488 class DELnHandler(TypeHandler):
1461 """Handler for glDelete___ type functions.""" 1489 """Handler for glDelete___ type functions."""
1462 1490
1463 def __init__(self): 1491 def __init__(self):
1464 TypeHandler.__init__(self) 1492 TypeHandler.__init__(self)
1465 1493
1494 def WriteGetDataSizeCode(self, func, file):
1495 """Overrriden from TypeHandler."""
1496 file.Write(" uint32 data_size = n * sizeof(GLuint);\n")
1497
1466 def WriteHandlerImplementation (self, func, file): 1498 def WriteHandlerImplementation (self, func, file):
1467 """Overrriden from TypeHandler.""" 1499 """Overrriden from TypeHandler."""
1468 func.WriteHandlerValidation(file)
1469 file.Write(" DeleteGLObjects<GL%sHelper>(n, %s);\n" % 1500 file.Write(" DeleteGLObjects<GL%sHelper>(n, %s);\n" %
1470 (func.name, func.GetLastOriginalArg().name)) 1501 (func.name, func.GetLastOriginalArg().name))
1471 1502
1472 def WriteImmediateHandlerImplementation (self, func, file): 1503 def WriteImmediateHandlerImplementation (self, func, file):
1473 """Overrriden from TypeHandler.""" 1504 """Overrriden from TypeHandler."""
1474 func.WriteHandlerValidation(file)
1475 file.Write(" DeleteGLObjects<GL%sHelper>(n, %s);\n" % 1505 file.Write(" DeleteGLObjects<GL%sHelper>(n, %s);\n" %
1476 (func.original_name, func.GetLastOriginalArg().name)) 1506 (func.original_name, func.GetLastOriginalArg().name))
1477 1507
1478 def WriteGLES2ImplementationHeader(self, func, file): 1508 def WriteGLES2ImplementationHeader(self, func, file):
1479 """Overrriden from TypeHandler.""" 1509 """Overrriden from TypeHandler."""
1480 file.Write("%s %s(%s) {\n" % 1510 file.Write("%s %s(%s) {\n" %
1481 (func.return_type, func.original_name, 1511 (func.return_type, func.original_name,
1482 func.MakeTypedOriginalArgString(""))) 1512 func.MakeTypedOriginalArgString("")))
1483 file.Write(" FreeIds(%s);\n" % func.MakeOriginalArgString("")) 1513 file.Write(" FreeIds(%s);\n" % func.MakeOriginalArgString(""))
1484 file.Write(" helper_->%sImmediate(%s);\n" % 1514 file.Write(" helper_->%sImmediate(%s);\n" %
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
1643 """Overrriden from TypeHandler.""" 1673 """Overrriden from TypeHandler."""
1644 pass 1674 pass
1645 1675
1646 1676
1647 class PUTHandler(TypeHandler): 1677 class PUTHandler(TypeHandler):
1648 """Handler for glTexParameter_v, glVertexAttrib_v functions.""" 1678 """Handler for glTexParameter_v, glVertexAttrib_v functions."""
1649 1679
1650 def __init__(self): 1680 def __init__(self):
1651 TypeHandler.__init__(self) 1681 TypeHandler.__init__(self)
1652 1682
1653 def WriteImmediateValidationCode(self, func, file): 1683 def WriteGetDataSizeCode(self, func, file):
1654 """Overrriden from TypeHandler.""" 1684 """Overrriden from TypeHandler."""
1655 file.Write(" if (!CheckImmediateDataSize<%s>(" 1685 file.Write(" uint32 data_size = ComputeImmediateDataSize("
1656 "immediate_data_size, 1, sizeof(%s), %d)) {\n" % 1686 "immediate_data_size, 1, sizeof(%s), %d);\n" %
1657 (func.name, func.info.data_type, func.info.count)) 1687 (func.info.data_type, func.info.count))
1658 file.Write(" return parse_error::kParseOutOfBounds;\n")
1659 file.Write(" }\n")
1660 1688
1661 def WriteGLES2ImplementationHeader(self, func, file): 1689 def WriteGLES2ImplementationHeader(self, func, file):
1662 """Overrriden from TypeHandler.""" 1690 """Overrriden from TypeHandler."""
1663 file.Write("%s %s(%s) {\n" % 1691 file.Write("%s %s(%s) {\n" %
1664 (func.return_type, func.original_name, 1692 (func.return_type, func.original_name,
1665 func.MakeTypedOriginalArgString(""))) 1693 func.MakeTypedOriginalArgString("")))
1666 file.Write(" helper_->%sImmediate(%s);\n" % 1694 file.Write(" helper_->%sImmediate(%s);\n" %
1667 (func.name, func.MakeOriginalArgString(""))) 1695 (func.name, func.MakeOriginalArgString("")))
1668 file.Write("}\n") 1696 file.Write("}\n")
1669 file.Write("\n") 1697 file.Write("\n")
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
1776 file.Write("}\n") 1804 file.Write("}\n")
1777 file.Write("\n") 1805 file.Write("\n")
1778 1806
1779 1807
1780 class PUTnHandler(TypeHandler): 1808 class PUTnHandler(TypeHandler):
1781 """Handler for PUTn 'glUniform__v' type functions.""" 1809 """Handler for PUTn 'glUniform__v' type functions."""
1782 1810
1783 def __init__(self): 1811 def __init__(self):
1784 TypeHandler.__init__(self) 1812 TypeHandler.__init__(self)
1785 1813
1786 def WriteImmediateValidationCode(self, func, file): 1814 def WriteGetDataSizeCode(self, func, file):
1787 """Overrriden from TypeHandler.""" 1815 """Overrriden from TypeHandler."""
1788 file.Write(" if (!CheckImmediateDataSize<%s>(" 1816 file.Write(" uint32 data_size = ComputeImmediateDataSize("
1789 "immediate_data_size, count, sizeof(%s), %d)) {\n" % 1817 "immediate_data_size, 1, sizeof(%s), %d);\n" %
1790 (func.name, func.info.data_type, func.info.count)) 1818 (func.info.data_type, func.info.count))
1791 file.Write(" return parse_error::kParseOutOfBounds;\n")
1792 file.Write(" }\n")
1793 1819
1794 def WriteGLES2ImplementationHeader(self, func, file): 1820 def WriteGLES2ImplementationHeader(self, func, file):
1795 """Overrriden from TypeHandler.""" 1821 """Overrriden from TypeHandler."""
1796 file.Write("%s %s(%s) {\n" % 1822 file.Write("%s %s(%s) {\n" %
1797 (func.return_type, func.original_name, 1823 (func.return_type, func.original_name,
1798 func.MakeTypedOriginalArgString(""))) 1824 func.MakeTypedOriginalArgString("")))
1799 file.Write(" helper_->%sImmediate(%s);\n" % 1825 file.Write(" helper_->%sImmediate(%s);\n" %
1800 (func.name, func.MakeOriginalArgString(""))) 1826 (func.name, func.MakeOriginalArgString("")))
1801 file.Write("}\n") 1827 file.Write("}\n")
1802 file.Write("\n") 1828 file.Write("\n")
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
1953 file.Write( 1979 file.Write(
1954 " uint32 immediate_data_size, const gles2::%s& c) {\n" % func.name) 1980 " uint32 immediate_data_size, const gles2::%s& c) {\n" % func.name)
1955 last_arg = func.GetLastOriginalArg() 1981 last_arg = func.GetLastOriginalArg()
1956 1982
1957 all_but_last_arg = func.GetOriginalArgs()[:-1] 1983 all_but_last_arg = func.GetOriginalArgs()[:-1]
1958 for arg in all_but_last_arg: 1984 for arg in all_but_last_arg:
1959 arg.WriteGetCode(file) 1985 arg.WriteGetCode(file)
1960 1986
1961 file.Write(" uint32 name_size = c.data_size;\n") 1987 file.Write(" uint32 name_size = c.data_size;\n")
1962 file.Write( 1988 file.Write(
1963 " const char* name = GetImmediateDataAs<const char*>(c);\n") 1989 " const char* name = GetImmediateDataAs<const char*>(\n")
1964 file.Write(" // TODO(gman): Make sure validate checks\n") 1990 file.Write(" c, name_size, immediate_data_size);\n")
1965 file.Write(" // immediate_data_size covers data_size.\n")
1966 func.WriteHandlerValidation(file) 1991 func.WriteHandlerValidation(file)
1967 arg_string = ", ".join(["%s" % arg.name for arg in all_but_last_arg]) 1992 arg_string = ", ".join(["%s" % arg.name for arg in all_but_last_arg])
1968 file.Write(" String name_str(name, name_size);\n") 1993 file.Write(" String name_str(name, name_size);\n")
1969 file.Write(" %s(%s, name_str.c_str());\n" % 1994 file.Write(" %s(%s, name_str.c_str());\n" %
1970 (func.GetGLFunctionName(), arg_string)) 1995 (func.GetGLFunctionName(), arg_string))
1971 file.Write(" return parse_error::kParseNoError;\n") 1996 file.Write(" return parse_error::kParseNoError;\n")
1972 file.Write("}\n") 1997 file.Write("}\n")
1973 file.Write("\n") 1998 file.Write("\n")
1974 1999
1975 def WriteGLES2ImplementationHeader(self, func, file): 2000 def WriteGLES2ImplementationHeader(self, func, file):
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
2122 file.Write( 2147 file.Write(
2123 " uint32 immediate_data_size, const gles2::%s& c) {\n" % func.name) 2148 " uint32 immediate_data_size, const gles2::%s& c) {\n" % func.name)
2124 last_arg = func.GetLastOriginalArg() 2149 last_arg = func.GetLastOriginalArg()
2125 2150
2126 all_but_last_arg = func.GetOriginalArgs()[:-1] 2151 all_but_last_arg = func.GetOriginalArgs()[:-1]
2127 for arg in all_but_last_arg: 2152 for arg in all_but_last_arg:
2128 arg.WriteGetCode(file) 2153 arg.WriteGetCode(file)
2129 2154
2130 file.Write(" uint32 name_size = c.data_size;\n") 2155 file.Write(" uint32 name_size = c.data_size;\n")
2131 file.Write( 2156 file.Write(
2132 " const char* name = GetImmediateDataAs<const char*>(c);\n") 2157 " const char* name = GetImmediateDataAs<const char*>(\n")
2133 file.Write(" // TODO(gman): Make sure validate checks\n") 2158 file.Write(" c, name_size, immediate_data_size);\n")
2134 file.Write(" // immediate_data_size covers data_size.\n")
2135 file.Write(" GLint* location = GetSharedMemoryAs<GLint*>(\n") 2159 file.Write(" GLint* location = GetSharedMemoryAs<GLint*>(\n")
2136 file.Write( 2160 file.Write(
2137 " c.location_shm_id, c.location_shm_offset, sizeof(*location));\n") 2161 " c.location_shm_id, c.location_shm_offset, sizeof(*location));\n")
2138 file.Write(" // TODO(gman): Validate location.\n") 2162 file.Write(" // TODO(gman): Validate location.\n")
2139 func.WriteHandlerValidation(file) 2163 func.WriteHandlerValidation(file)
2140 arg_string = ", ".join(["%s" % arg.name for arg in all_but_last_arg]) 2164 arg_string = ", ".join(["%s" % arg.name for arg in all_but_last_arg])
2141 file.Write(" String name_str(name, name_size);\n") 2165 file.Write(" String name_str(name, name_size);\n")
2142 file.Write(" *location = %s(%s, name_str.c_str());\n" % 2166 file.Write(" *location = %s(%s, name_str.c_str());\n" %
2143 (func.GetGLFunctionName(), arg_string)) 2167 (func.GetGLFunctionName(), arg_string))
2144 file.Write(" return parse_error::kParseNoError;\n") 2168 file.Write(" return parse_error::kParseNoError;\n")
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
2309 """Handler for GetProgramInfoLog, GetShaderInfoLog and GetShaderSource.""" 2333 """Handler for GetProgramInfoLog, GetShaderInfoLog and GetShaderSource."""
2310 2334
2311 def __init__(self): 2335 def __init__(self):
2312 TypeHandler.__init__(self) 2336 TypeHandler.__init__(self)
2313 2337
2314 def WriteGLES2ImplementationHeader(self, func, file): 2338 def WriteGLES2ImplementationHeader(self, func, file):
2315 """Overrriden from TypeHandler.""" 2339 """Overrriden from TypeHandler."""
2316 file.Write("// TODO(gman): Implement this\n") 2340 file.Write("// TODO(gman): Implement this\n")
2317 TypeHandler.WriteGLES2ImplementationHeader(self, func, file) 2341 TypeHandler.WriteGLES2ImplementationHeader(self, func, file)
2318 2342
2343 def WriteServiceImplementation(self, func, file):
2344 """Overrriden from TypeHandler."""
2345 file.Write(
2346 "parse_error::ParseError GLES2DecoderImpl::Handle%s(\n" % func.name)
2347 file.Write(
2348 " uint32 immediate_data_size, const gles2::%s& c) {\n" % func.name)
2349 args = func.GetOriginalArgs()
2350 all_but_last_2_args = args[:-2]
2351 for arg in all_but_last_2_args:
2352 arg.WriteGetCode(file)
2353 self.WriteGetDataSizeCode(func, file)
2354 size_arg = args[-2]
2355 file.Write(" uint32 size_shm_id = c.%s_shm_id;\n" % size_arg.name)
2356 file.Write(" uint32 size_shm_offset = c.%s_shm_offset;\n" % size_arg.name)
2357 file.Write(" GLsizei* length = NULL;\n")
2358 file.Write(" if (size_shm_id != 0 || size_shm_offset != 0) {\n"
2359 " length = GetSharedMemoryAs<GLsizei*>(\n"
2360 " size_shm_id, size_shm_offset, sizeof(*length));\n"
2361 " if (!length) {\n"
2362 " return parse_error::kParseOutOfBounds;\n"
2363 " }\n"
2364 " }\n")
2365 dest_arg = args[-1]
2366 bufsize_arg = args[-3]
2367 file.Write(
2368 " %s %s = GetSharedMemoryAs<%s>(\n" %
2369 (dest_arg.type, dest_arg.name, dest_arg.type))
2370 file.Write(
2371 " c.%s_shm_id, c.%s_shm_offset, %s);\n" %
2372 (dest_arg.name, dest_arg.name, bufsize_arg.name))
2373 for arg in all_but_last_2_args + [dest_arg]:
2374 arg.WriteValidationCode(file)
2375 func.WriteValidationCode(file)
2376 func.WriteHandlerImplementation(file)
2377 file.Write(" return parse_error::kParseNoError;\n")
2378 file.Write("}\n")
2379 file.Write("\n")
2380
2319 2381
2320 class FunctionInfo(object): 2382 class FunctionInfo(object):
2321 """Holds info about a function.""" 2383 """Holds info about a function."""
2322 2384
2323 def __init__(self, info, type_handler): 2385 def __init__(self, info, type_handler):
2324 for key in info: 2386 for key in info:
2325 setattr(self, key, info[key]) 2387 setattr(self, key, info[key])
2326 self.type_handler = type_handler 2388 self.type_handler = type_handler
2327 if not 'type' in info: 2389 if not 'type' in info:
2328 self.type = '' 2390 self.type = ''
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
2420 def __init__(self, name, type): 2482 def __init__(self, name, type):
2421 Argument.__init__(self, name, type) 2483 Argument.__init__(self, name, type)
2422 2484
2423 def AddCmdArgs(self, args): 2485 def AddCmdArgs(self, args):
2424 """Overridden from Argument.""" 2486 """Overridden from Argument."""
2425 pass 2487 pass
2426 2488
2427 def WriteGetCode(self, file): 2489 def WriteGetCode(self, file):
2428 """Overridden from Argument.""" 2490 """Overridden from Argument."""
2429 file.Write( 2491 file.Write(
2430 " %s %s = GetImmediateDataAs<%s>(c);\n" % 2492 " %s %s = GetImmediateDataAs<%s>(\n" %
2431 (self.type, self.name, self.type)) 2493 (self.type, self.name, self.type))
2494 file.Write(" c, data_size, immediate_data_size);\n")
2432 2495
2433 def WriteValidationCode(self, file): 2496 def WriteValidationCode(self, file):
2434 """Overridden from Argument.""" 2497 """Overridden from Argument."""
2435 file.Write(" if (%s == NULL) {\n" % self.name) 2498 file.Write(" if (%s == NULL) {\n" % self.name)
2436 file.Write(" return parse_error::kParseOutOfBounds;\n") 2499 file.Write(" return parse_error::kParseOutOfBounds;\n")
2437 file.Write(" }\n") 2500 file.Write(" }\n")
2438 2501
2439 def GetImmediateVersion(self): 2502 def GetImmediateVersion(self):
2440 """Overridden from Argument.""" 2503 """Overridden from Argument."""
2441 return None 2504 return None
(...skipping 13 matching lines...) Expand all
2455 """Overridden from Argument.""" 2518 """Overridden from Argument."""
2456 args.append(Argument("%s_shm_id" % self.name, 'uint32')) 2519 args.append(Argument("%s_shm_id" % self.name, 'uint32'))
2457 args.append(Argument("%s_shm_offset" % self.name, 'uint32')) 2520 args.append(Argument("%s_shm_offset" % self.name, 'uint32'))
2458 2521
2459 def WriteGetCode(self, file): 2522 def WriteGetCode(self, file):
2460 """Overridden from Argument.""" 2523 """Overridden from Argument."""
2461 file.Write( 2524 file.Write(
2462 " %s %s = GetSharedMemoryAs<%s>(\n" % 2525 " %s %s = GetSharedMemoryAs<%s>(\n" %
2463 (self.type, self.name, self.type)) 2526 (self.type, self.name, self.type))
2464 file.Write( 2527 file.Write(
2465 " c.%s_shm_id, c.%s_shm_offset, 0 /* TODO(gman): size */);\n" % 2528 " c.%s_shm_id, c.%s_shm_offset, data_size);\n" %
2466 (self.name, self.name)) 2529 (self.name, self.name))
2467 2530
2468 def WriteGetAddress(self, file): 2531 def WriteGetAddress(self, file):
2469 """Overridden from Argument.""" 2532 """Overridden from Argument."""
2470 file.Write( 2533 file.Write(
2471 " %s %s = GetSharedMemoryAs<%s>(\n" % 2534 " %s %s = GetSharedMemoryAs<%s>(\n" %
2472 (self.type, self.name, self.type)) 2535 (self.type, self.name, self.type))
2473 file.Write( 2536 file.Write(
2474 " %s_shm_id, %s_shm_offset, %s_size);\n" % 2537 " %s_shm_id, %s_shm_offset, %s_size);\n" %
2475 (self.name, self.name, self.name)) 2538 (self.name, self.name, self.name))
(...skipping 688 matching lines...) Expand 10 before | Expand all | Expand 10 after
3164 3227
3165 if options.generate_command_id_tests: 3228 if options.generate_command_id_tests:
3166 gen.WriteCommandIdTest("common/gles2_cmd_id_test_autogen.h") 3229 gen.WriteCommandIdTest("common/gles2_cmd_id_test_autogen.h")
3167 3230
3168 if gen.errors > 0: 3231 if gen.errors > 0:
3169 print "%d errors" % gen.errors 3232 print "%d errors" % gen.errors
3170 sys.exit(1) 3233 sys.exit(1)
3171 3234
3172 if __name__ == '__main__': 3235 if __name__ == '__main__':
3173 main(sys.argv[1:]) 3236 main(sys.argv[1:])
OLDNEW
« no previous file with comments | « no previous file | gpu/command_buffer/service/gles2_cmd_decoder.cc » ('j') | gpu/command_buffer/service/gles2_cmd_decoder.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698