OLD | NEW |
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 GLES2 command buffers.""" | 7 """code generator for GLES2 command buffers.""" |
8 | 8 |
9 import os | 9 import os |
10 import os.path | 10 import os.path |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 GL_APICALL void GL_APIENTRY glGetTexParameteriv (GLenumTextureTarget tar
get, GLenumTextureParameter pname, GLint* params); | 109 GL_APICALL void GL_APIENTRY glGetTexParameteriv (GLenumTextureTarget tar
get, GLenumTextureParameter pname, GLint* params); |
110 GL_APICALL void GL_APIENTRY glGetUniformfv (GLidProgram program, GLint l
ocation, GLfloat* params); | 110 GL_APICALL void GL_APIENTRY glGetUniformfv (GLidProgram program, GLint l
ocation, GLfloat* params); |
111 GL_APICALL void GL_APIENTRY glGetUniformiv (GLidProgram program, GLint l
ocation, GLint* params); | 111 GL_APICALL void GL_APIENTRY glGetUniformiv (GLidProgram program, GLint l
ocation, GLint* params); |
112 GL_APICALL GLint GL_APIENTRY glGetUniformLocation (GLidProgram program, c
onst char* name); | 112 GL_APICALL GLint GL_APIENTRY glGetUniformLocation (GLidProgram program, c
onst char* name); |
113 GL_APICALL void GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenumVer
texAttribute pname, GLfloat* params); | 113 GL_APICALL void GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenumVer
texAttribute pname, GLfloat* params); |
114 GL_APICALL void GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenumVer
texAttribute pname, GLint* params); | 114 GL_APICALL void GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenumVer
texAttribute pname, GLint* params); |
115 GL_APICALL void GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLe
numVertexPointer pname, void** pointer); | 115 GL_APICALL void GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLe
numVertexPointer pname, void** pointer); |
116 GL_APICALL void GL_APIENTRY glHint (GLenumHintTarget target, GLenumHintM
ode mode); | 116 GL_APICALL void GL_APIENTRY glHint (GLenumHintTarget target, GLenumHintM
ode mode); |
117 GL_APICALL GLboolean GL_APIENTRY glIsBuffer (GLidBuffer buffer); | 117 GL_APICALL GLboolean GL_APIENTRY glIsBuffer (GLidBuffer buffer); |
118 GL_APICALL GLboolean GL_APIENTRY glIsEnabled (GLenumCapability cap); | 118 GL_APICALL GLboolean GL_APIENTRY glIsEnabled (GLenumCapability cap); |
119 GL_APICALL GLboolean GL_APIENTRY glIsFramebuffer (GLuint framebuffer); | 119 GL_APICALL GLboolean GL_APIENTRY glIsFramebuffer (GLidFramebuffer framebuffer
); |
120 GL_APICALL GLboolean GL_APIENTRY glIsProgram (GLuint program); | 120 GL_APICALL GLboolean GL_APIENTRY glIsProgram (GLidProgram program); |
121 GL_APICALL GLboolean GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer); | 121 GL_APICALL GLboolean GL_APIENTRY glIsRenderbuffer (GLidRenderbuffer renderbuf
fer); |
122 GL_APICALL GLboolean GL_APIENTRY glIsShader (GLuint shader); | 122 GL_APICALL GLboolean GL_APIENTRY glIsShader (GLidShader shader); |
123 GL_APICALL GLboolean GL_APIENTRY glIsTexture (GLuint texture); | 123 GL_APICALL GLboolean GL_APIENTRY glIsTexture (GLidTexture texture); |
124 GL_APICALL void GL_APIENTRY glLineWidth (GLfloat width); | 124 GL_APICALL void GL_APIENTRY glLineWidth (GLfloat width); |
125 GL_APICALL void GL_APIENTRY glLinkProgram (GLidProgram program); | 125 GL_APICALL void GL_APIENTRY glLinkProgram (GLidProgram program); |
126 GL_APICALL void GL_APIENTRY glPixelStorei (GLenumPixelStore pname, GLint
PixelStoreAlignment param); | 126 GL_APICALL void GL_APIENTRY glPixelStorei (GLenumPixelStore pname, GLint
PixelStoreAlignment param); |
127 GL_APICALL void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat uni
ts); | 127 GL_APICALL void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat uni
ts); |
128 GL_APICALL void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei widt
h, GLsizei height, GLenumReadPixelFormat format, GLenumPixelType type, void* pix
els); | 128 GL_APICALL void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei widt
h, GLsizei height, GLenumReadPixelFormat format, GLenumPixelType type, void* pix
els); |
129 GL_APICALL void GL_APIENTRY glReleaseShaderCompiler (void); | 129 GL_APICALL void GL_APIENTRY glReleaseShaderCompiler (void); |
130 GL_APICALL void GL_APIENTRY glRenderbufferStorage (GLenumRenderBufferTar
get target, GLenumRenderBufferFormat internalformat, GLsizei width, GLsizei heig
ht); | 130 GL_APICALL void GL_APIENTRY glRenderbufferStorage (GLenumRenderBufferTar
get target, GLenumRenderBufferFormat internalformat, GLsizei width, GLsizei heig
ht); |
131 GL_APICALL void GL_APIENTRY glSampleCoverage (GLclampf value, GLboolean
invert); | 131 GL_APICALL void GL_APIENTRY glSampleCoverage (GLclampf value, GLboolean
invert); |
132 GL_APICALL void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width,
GLsizei height); | 132 GL_APICALL void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width,
GLsizei height); |
133 GL_APICALL void GL_APIENTRY glShaderBinary (GLsizei n, const GLuint* sha
ders, GLenum binaryformat, const void* binary, GLsizei length); | 133 GL_APICALL void GL_APIENTRY glShaderBinary (GLsizei n, const GLuint* sha
ders, GLenum binaryformat, const void* binary, GLsizei length); |
(...skipping 817 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
951 # needs_size: If true a data_size field is added to the command. | 951 # needs_size: If true a data_size field is added to the command. |
952 # data_type: The type of data the command uses. For PUTn or PUT types. | 952 # data_type: The type of data the command uses. For PUTn or PUT types. |
953 # count: The number of units per element. For PUTn or PUT types. | 953 # count: The number of units per element. For PUTn or PUT types. |
954 # unit_test: If False no unit test will be generated. | 954 # unit_test: If False no unit test will be generated. |
955 # expectation: If False the unit test will have no expected calls. | 955 # expectation: If False the unit test will have no expected calls. |
956 # gen_func: Name of function that generates GL resource for corresponding | 956 # gen_func: Name of function that generates GL resource for corresponding |
957 # bind function. | 957 # bind function. |
958 | 958 |
959 _FUNCTION_INFO = { | 959 _FUNCTION_INFO = { |
960 'ActiveTexture': {'decoder_func': 'DoActiveTexture', 'unit_test': False}, | 960 'ActiveTexture': {'decoder_func': 'DoActiveTexture', 'unit_test': False}, |
| 961 'AttachShader': {'decoder_func': 'DoAttachShader'}, |
961 'BindAttribLocation': {'type': 'GLchar', 'bucket': True, 'needs_size': True}, | 962 'BindAttribLocation': {'type': 'GLchar', 'bucket': True, 'needs_size': True}, |
962 'BindBuffer': { | 963 'BindBuffer': { |
963 'type': 'Bind', | 964 'type': 'Bind', |
964 'impl_decl': False, | 965 'impl_decl': False, |
965 'decoder_func': 'DoBindBuffer', | 966 'decoder_func': 'DoBindBuffer', |
966 'gen_func': 'GenBuffersARB', | 967 'gen_func': 'GenBuffersARB', |
967 }, | 968 }, |
968 'BindFramebuffer': { | 969 'BindFramebuffer': { |
969 'type': 'Bind', | 970 'type': 'Bind', |
970 'decoder_func': 'DoBindFramebuffer', | 971 'decoder_func': 'DoBindFramebuffer', |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1006 'gl_test_func': 'glDeleteFramebuffersEXT', | 1007 'gl_test_func': 'glDeleteFramebuffersEXT', |
1007 }, | 1008 }, |
1008 'DeleteProgram': {'type': 'Custom', 'decoder_func': 'DoDeleteProgram'}, | 1009 'DeleteProgram': {'type': 'Custom', 'decoder_func': 'DoDeleteProgram'}, |
1009 'DeleteRenderbuffers': { | 1010 'DeleteRenderbuffers': { |
1010 'type': 'DELn', | 1011 'type': 'DELn', |
1011 'gl_test_func': 'glDeleteRenderbuffersEXT', | 1012 'gl_test_func': 'glDeleteRenderbuffersEXT', |
1012 }, | 1013 }, |
1013 'DeleteShader': {'type': 'Custom', 'decoder_func': 'DoDeleteShader'}, | 1014 'DeleteShader': {'type': 'Custom', 'decoder_func': 'DoDeleteShader'}, |
1014 'DeleteTextures': {'type': 'DELn'}, | 1015 'DeleteTextures': {'type': 'DELn'}, |
1015 'DepthRangef': {'decoder_func': 'glDepthRange'}, | 1016 'DepthRangef': {'decoder_func': 'glDepthRange'}, |
| 1017 'DetachShader': {'decoder_func': 'DoDetachShader'}, |
1016 'DisableVertexAttribArray': { | 1018 'DisableVertexAttribArray': { |
1017 'decoder_func': 'DoDisableVertexAttribArray', | 1019 'decoder_func': 'DoDisableVertexAttribArray', |
1018 'impl_decl': False, | 1020 'impl_decl': False, |
1019 }, | 1021 }, |
1020 'DrawArrays': { | 1022 'DrawArrays': { |
1021 'decoder_func': 'DoDrawArrays', | 1023 'decoder_func': 'DoDrawArrays', |
1022 'unit_test': False, | 1024 'unit_test': False, |
1023 'impl_decl': False, | 1025 'impl_decl': False, |
1024 }, | 1026 }, |
1025 'DrawElements': { | 1027 'DrawElements': { |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1123 }, | 1125 }, |
1124 'GetProgramiv': { | 1126 'GetProgramiv': { |
1125 'type': 'GETn', | 1127 'type': 'GETn', |
1126 'decoder_func': 'DoGetProgramiv', | 1128 'decoder_func': 'DoGetProgramiv', |
1127 'result': ['SizedResult<GLint>'], | 1129 'result': ['SizedResult<GLint>'], |
1128 }, | 1130 }, |
1129 'GetProgramInfoLog': { | 1131 'GetProgramInfoLog': { |
1130 'type': 'STRn', | 1132 'type': 'STRn', |
1131 'get_len_func': 'glGetProgramiv', | 1133 'get_len_func': 'glGetProgramiv', |
1132 'get_len_enum': 'GL_INFO_LOG_LENGTH', | 1134 'get_len_enum': 'GL_INFO_LOG_LENGTH', |
1133 }, | 1135 }, |
1134 'GetRenderbufferParameteriv': { | 1136 'GetRenderbufferParameteriv': { |
1135 'type': 'GETn', | 1137 'type': 'GETn', |
1136 'decoder_func': 'DoGetRenderbufferParameteriv', | 1138 'decoder_func': 'DoGetRenderbufferParameteriv', |
1137 'gl_test_func': 'glGetRenderbufferParameterivEXT', | 1139 'gl_test_func': 'glGetRenderbufferParameterivEXT', |
1138 'result': ['SizedResult<GLint>'], | 1140 'result': ['SizedResult<GLint>'], |
1139 }, | 1141 }, |
1140 'GetShaderiv': { | 1142 'GetShaderiv': { |
1141 'type': 'GETn', | 1143 'type': 'GETn', |
1142 'decoder_func': 'DoGetShaderiv', | 1144 'decoder_func': 'DoGetShaderiv', |
1143 'result': ['SizedResult<GLint>'], | 1145 'result': ['SizedResult<GLint>'], |
(...skipping 11 matching lines...) Expand all Loading... |
1155 'void* result', | 1157 'void* result', |
1156 'result': [ | 1158 'result': [ |
1157 'int32 success', | 1159 'int32 success', |
1158 'int32 min_range', | 1160 'int32 min_range', |
1159 'int32 max_range', | 1161 'int32 max_range', |
1160 'int32 precision', | 1162 'int32 precision', |
1161 ], | 1163 ], |
1162 }, | 1164 }, |
1163 'GetShaderSource': { | 1165 'GetShaderSource': { |
1164 'type': 'STRn', | 1166 'type': 'STRn', |
1165 'decoder_func': 'DoGetShaderSource', | |
1166 'get_len_func': 'DoGetShaderiv', | 1167 'get_len_func': 'DoGetShaderiv', |
1167 'get_len_enum': 'GL_SHADER_SOURCE_LENGTH', | 1168 'get_len_enum': 'GL_SHADER_SOURCE_LENGTH', |
1168 'unit_test': False, | 1169 'unit_test': False, |
1169 }, | 1170 }, |
1170 'GetString': { | 1171 'GetString': { |
1171 'type': 'Custom', | 1172 'type': 'Custom', |
1172 'cmd_args': 'GLenumStringType name, uint32 bucket_id', | 1173 'cmd_args': 'GLenumStringType name, uint32 bucket_id', |
1173 }, | 1174 }, |
1174 'GetTexParameterfv': {'type': 'GETn', 'result': ['SizedResult<GLfloat>']}, | 1175 'GetTexParameterfv': {'type': 'GETn', 'result': ['SizedResult<GLfloat>']}, |
1175 'GetTexParameteriv': {'type': 'GETn', 'result': ['SizedResult<GLint>']}, | 1176 'GetTexParameteriv': {'type': 'GETn', 'result': ['SizedResult<GLint>']}, |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1304 'Uniform2fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 2}, | 1305 'Uniform2fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 2}, |
1305 'Uniform2iv': {'type': 'PUTn', 'data_type': 'GLint', 'count': 2}, | 1306 'Uniform2iv': {'type': 'PUTn', 'data_type': 'GLint', 'count': 2}, |
1306 'Uniform3fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 3}, | 1307 'Uniform3fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 3}, |
1307 'Uniform3iv': {'type': 'PUTn', 'data_type': 'GLint', 'count': 3}, | 1308 'Uniform3iv': {'type': 'PUTn', 'data_type': 'GLint', 'count': 3}, |
1308 'Uniform4fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 4}, | 1309 'Uniform4fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 4}, |
1309 'Uniform4iv': {'type': 'PUTn', 'data_type': 'GLint', 'count': 4}, | 1310 'Uniform4iv': {'type': 'PUTn', 'data_type': 'GLint', 'count': 4}, |
1310 'UniformMatrix2fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 4}, | 1311 'UniformMatrix2fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 4}, |
1311 'UniformMatrix3fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 9}, | 1312 'UniformMatrix3fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 9}, |
1312 'UniformMatrix4fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 16}, | 1313 'UniformMatrix4fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 16}, |
1313 'UseProgram': {'decoder_func': 'DoUseProgram', 'unit_test': False}, | 1314 'UseProgram': {'decoder_func': 'DoUseProgram', 'unit_test': False}, |
| 1315 'ValidateProgram': {'decoder_func': 'DoValidateProgram'}, |
1314 'VertexAttrib1fv': {'type': 'PUT', 'data_type': 'GLfloat', 'count': 1}, | 1316 'VertexAttrib1fv': {'type': 'PUT', 'data_type': 'GLfloat', 'count': 1}, |
1315 'VertexAttrib2fv': {'type': 'PUT', 'data_type': 'GLfloat', 'count': 2}, | 1317 'VertexAttrib2fv': {'type': 'PUT', 'data_type': 'GLfloat', 'count': 2}, |
1316 'VertexAttrib3fv': {'type': 'PUT', 'data_type': 'GLfloat', 'count': 3}, | 1318 'VertexAttrib3fv': {'type': 'PUT', 'data_type': 'GLfloat', 'count': 3}, |
1317 'VertexAttrib4fv': {'type': 'PUT', 'data_type': 'GLfloat', 'count': 4}, | 1319 'VertexAttrib4fv': {'type': 'PUT', 'data_type': 'GLfloat', 'count': 4}, |
1318 'VertexAttribPointer': { | 1320 'VertexAttribPointer': { |
1319 'type': 'Manual', | 1321 'type': 'Manual', |
1320 'cmd_args': 'GLuint indx, GLint size, GLenum type, GLboolean normalized, ' | 1322 'cmd_args': 'GLuint indx, GLint size, GLenum type, GLboolean normalized, ' |
1321 'GLsizei stride, GLuint offset', | 1323 'GLsizei stride, GLuint offset', |
1322 }, | 1324 }, |
1323 } | 1325 } |
(...skipping 830 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2154 | 2156 |
2155 TEST_F(%(test_name)s, %(name)sValidArgsNewId) { | 2157 TEST_F(%(test_name)s, %(name)sValidArgsNewId) { |
2156 EXPECT_CALL(*gl_, %(gl_func_name)s(%(first_gl_arg)s, kNewServiceId)); | 2158 EXPECT_CALL(*gl_, %(gl_func_name)s(%(first_gl_arg)s, kNewServiceId)); |
2157 EXPECT_CALL(*gl_, %(gl_gen_func_name)s(1, _)) | 2159 EXPECT_CALL(*gl_, %(gl_gen_func_name)s(1, _)) |
2158 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); | 2160 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); |
2159 SpecializedSetup<%(name)s, 0>(); | 2161 SpecializedSetup<%(name)s, 0>(); |
2160 %(name)s cmd; | 2162 %(name)s cmd; |
2161 cmd.Init(%(first_arg)s, kNewClientId); | 2163 cmd.Init(%(first_arg)s, kNewClientId); |
2162 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2164 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
2163 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 2165 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
2164 EXPECT_EQ(GetServiceId(kNewClientId), kNewServiceId); | 2166 EXPECT_TRUE(Get%(resource_type)sInfo(kNewClientId) != NULL); |
2165 EXPECT_TRUE(Get%(resource_type)sInfo(kNewServiceId) != NULL); | |
2166 } | 2167 } |
2167 """ | 2168 """ |
2168 gen_func_names = { | 2169 gen_func_names = { |
2169 } | 2170 } |
2170 self.WriteValidUnitTest(func, file, valid_test, { | 2171 self.WriteValidUnitTest(func, file, valid_test, { |
2171 'first_arg': func.GetOriginalArgs()[0].GetValidArg(0, 0), | 2172 'first_arg': func.GetOriginalArgs()[0].GetValidArg(0, 0), |
2172 'first_gl_arg': func.GetOriginalArgs()[0].GetValidGLArg(0, 0), | 2173 'first_gl_arg': func.GetOriginalArgs()[0].GetValidGLArg(0, 0), |
2173 'resource_type': func.GetOriginalArgs()[1].resource_type, | 2174 'resource_type': func.GetOriginalArgs()[1].resource_type, |
2174 'gl_gen_func_name': func.GetInfo("gen_func"), | 2175 'gl_gen_func_name': func.GetInfo("gen_func"), |
2175 }) | 2176 }) |
(...skipping 14 matching lines...) Expand all Loading... |
2190 impl_func = func.GetInfo('impl_func') | 2191 impl_func = func.GetInfo('impl_func') |
2191 impl_decl = func.GetInfo('impl_decl') | 2192 impl_decl = func.GetInfo('impl_decl') |
2192 if (func.can_auto_generate and | 2193 if (func.can_auto_generate and |
2193 (impl_func == None or impl_func == True) and | 2194 (impl_func == None or impl_func == True) and |
2194 (impl_decl == None or impl_decl == True)): | 2195 (impl_decl == None or impl_decl == True)): |
2195 file.Write("%s %s(%s) {\n" % | 2196 file.Write("%s %s(%s) {\n" % |
2196 (func.return_type, func.original_name, | 2197 (func.return_type, func.original_name, |
2197 func.MakeTypedOriginalArgString(""))) | 2198 func.MakeTypedOriginalArgString(""))) |
2198 for arg in func.GetOriginalArgs(): | 2199 for arg in func.GetOriginalArgs(): |
2199 arg.WriteClientSideValidationCode(file) | 2200 arg.WriteClientSideValidationCode(file) |
2200 code = """ if (IsReservedId(%(id)s)) { | 2201 code = """ if (Is%(type)sReservedId(%(id)s)) { |
2201 SetGLError(GL_INVALID_OPERATION); | 2202 SetGLError(GL_INVALID_OPERATION); |
2202 return; | 2203 return; |
2203 } | 2204 } |
2204 if (%(id)s != 0) { | 2205 if (%(id)s != 0) { |
2205 id_allocator_.MarkAsUsed(%(id)s); | 2206 %(lc_type)s_id_allocator_.MarkAsUsed(%(id)s); |
2206 } | 2207 } |
2207 helper_->%(name)s(%(arg_string)s); | 2208 helper_->%(name)s(%(arg_string)s); |
2208 } | 2209 } |
2209 | 2210 |
2210 """ | 2211 """ |
2211 file.Write(code % { | 2212 file.Write(code % { |
2212 'name': func.name, | 2213 'name': func.name, |
2213 'arg_string': func.MakeOriginalArgString(""), | 2214 'arg_string': func.MakeOriginalArgString(""), |
2214 'id': func.GetOriginalArgs()[1].name, | 2215 'id': func.GetOriginalArgs()[1].name, |
| 2216 'type': func.GetOriginalArgs()[1].resource_type, |
| 2217 'lc_type': func.GetOriginalArgs()[1].resource_type.lower(), |
2215 }) | 2218 }) |
2216 else: | 2219 else: |
2217 self.WriteGLES2ImplementationDeclaration(func, file) | 2220 self.WriteGLES2ImplementationDeclaration(func, file) |
2218 | 2221 |
2219 | 2222 |
2220 class GENnHandler(TypeHandler): | 2223 class GENnHandler(TypeHandler): |
2221 """Handler for glGen___ type functions.""" | 2224 """Handler for glGen___ type functions.""" |
2222 | 2225 |
2223 def __init__(self): | 2226 def __init__(self): |
2224 TypeHandler.__init__(self) | 2227 TypeHandler.__init__(self) |
2225 | 2228 |
2226 def InitFunction(self, func): | 2229 def InitFunction(self, func): |
2227 """Overrriden from TypeHandler.""" | 2230 """Overrriden from TypeHandler.""" |
2228 pass | 2231 pass |
2229 | 2232 |
2230 def WriteGetDataSizeCode(self, func, file): | 2233 def WriteGetDataSizeCode(self, func, file): |
2231 """Overrriden from TypeHandler.""" | 2234 """Overrriden from TypeHandler.""" |
2232 code = """ uint32 data_size; | 2235 code = """ uint32 data_size; |
2233 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | 2236 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
2234 return error::kOutOfBounds; | 2237 return error::kOutOfBounds; |
2235 } | 2238 } |
2236 """ | 2239 """ |
2237 file.Write(code) | 2240 file.Write(code) |
2238 | 2241 |
2239 def WriteHandlerImplementation (self, func, file): | 2242 def WriteHandlerImplementation (self, func, file): |
2240 """Overrriden from TypeHandler.""" | 2243 """Overrriden from TypeHandler.""" |
2241 file.Write(" if (!GenGLObjects<GL%sHelper>(n, %s)) {\n" | 2244 file.Write(" if (!%sHelper(n, %s)) {\n" |
2242 " return error::kInvalidArguments;\n" | 2245 " return error::kInvalidArguments;\n" |
2243 " }\n" % | 2246 " }\n" % |
2244 (func.name, func.GetLastOriginalArg().name)) | 2247 (func.name, func.GetLastOriginalArg().name)) |
2245 | 2248 |
2246 def WriteImmediateHandlerImplementation(self, func, file): | 2249 def WriteImmediateHandlerImplementation(self, func, file): |
2247 """Overrriden from TypeHandler.""" | 2250 """Overrriden from TypeHandler.""" |
2248 file.Write(" if (!GenGLObjects<GL%sHelper>(n, %s)) {\n" | 2251 file.Write(" if (!%sHelper(n, %s)) {\n" |
2249 " return error::kInvalidArguments;\n" | 2252 " return error::kInvalidArguments;\n" |
2250 " }\n" % | 2253 " }\n" % |
2251 (func.original_name, func.GetLastOriginalArg().name)) | 2254 (func.original_name, func.GetLastOriginalArg().name)) |
2252 | 2255 |
2253 def WriteGLES2ImplementationHeader(self, func, file): | 2256 def WriteGLES2ImplementationHeader(self, func, file): |
2254 """Overrriden from TypeHandler.""" | 2257 """Overrriden from TypeHandler.""" |
2255 file.Write("%s %s(%s) {\n" % | 2258 code = """%(return_type)s %(name)s(%(typed_args)s) { |
2256 (func.return_type, func.original_name, | 2259 MakeIds(&%(resource_type)s_id_allocator_, %(args)s); |
2257 func.MakeTypedOriginalArgString(""))) | 2260 helper_->%(name)sImmediate(%(args)s); |
2258 file.Write(" MakeIds(%s);\n" % func.MakeOriginalArgString("")) | 2261 } |
2259 file.Write(" helper_->%sImmediate(%s);\n" % | 2262 |
2260 (func.name, func.MakeOriginalArgString(""))) | 2263 """ |
2261 file.Write("}\n") | 2264 file.Write(code % { |
2262 file.Write("\n") | 2265 'return_type': func.return_type, |
| 2266 'name': func.original_name, |
| 2267 'typed_args': func.MakeTypedOriginalArgString(""), |
| 2268 'args': func.MakeOriginalArgString(""), |
| 2269 'resource_type': func.name[3:-1].lower() |
| 2270 }) |
2263 | 2271 |
2264 def WriteServiceUnitTest(self, func, file): | 2272 def WriteServiceUnitTest(self, func, file): |
2265 """Overrriden from TypeHandler.""" | 2273 """Overrriden from TypeHandler.""" |
2266 valid_test = """ | 2274 valid_test = """ |
2267 TEST_F(%(test_name)s, %(name)sValidArgs) { | 2275 TEST_F(%(test_name)s, %(name)sValidArgs) { |
2268 EXPECT_CALL(*gl_, %(gl_func_name)s(1, _)) | 2276 EXPECT_CALL(*gl_, %(gl_func_name)s(1, _)) |
2269 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); | 2277 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); |
2270 GetSharedMemoryAs<GLuint*>()[0] = kNewClientId; | 2278 GetSharedMemoryAs<GLuint*>()[0] = kNewClientId; |
2271 SpecializedSetup<%(name)s, 0>(); | 2279 SpecializedSetup<%(name)s, 0>(); |
2272 %(name)s cmd; | 2280 %(name)s cmd; |
2273 cmd.Init(%(args)s); | 2281 cmd.Init(%(args)s); |
2274 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2282 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
2275 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 2283 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
2276 EXPECT_EQ(GetServiceId(kNewClientId), kNewServiceId); | 2284 EXPECT_TRUE(Get%(resource_name)sInfo(kNewClientId) != NULL); |
2277 } | 2285 } |
2278 """ | 2286 """ |
2279 self.WriteValidUnitTest(func, file, valid_test) | 2287 self.WriteValidUnitTest(func, file, valid_test, { |
| 2288 'resource_name': func.name[3:-1], |
| 2289 }) |
2280 invalid_test = """ | 2290 invalid_test = """ |
2281 TEST_F(%(test_name)s, %(name)sInvalidArgs) { | 2291 TEST_F(%(test_name)s, %(name)sInvalidArgs) { |
2282 EXPECT_CALL(*gl_, %(gl_func_name)s(_, _)).Times(0); | 2292 EXPECT_CALL(*gl_, %(gl_func_name)s(_, _)).Times(0); |
2283 GetSharedMemoryAs<GLuint*>()[0] = client_%(resource_name)s_id_; | 2293 GetSharedMemoryAs<GLuint*>()[0] = client_%(resource_name)s_id_; |
2284 SpecializedSetup<%(name)s, 0>(); | 2294 SpecializedSetup<%(name)s, 0>(); |
2285 %(name)s cmd; | 2295 %(name)s cmd; |
2286 cmd.Init(%(args)s); | 2296 cmd.Init(%(args)s); |
2287 EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd)); | 2297 EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd)); |
2288 } | 2298 } |
2289 """ | 2299 """ |
2290 self.WriteValidUnitTest(func, file, invalid_test, { | 2300 self.WriteValidUnitTest(func, file, invalid_test, { |
2291 'resource_name': func.GetOriginalArgs()[1].name[0:-1] | 2301 'resource_name': func.GetOriginalArgs()[1].name[0:-1] |
2292 }) | 2302 }) |
2293 | 2303 |
2294 def WriteImmediateServiceUnitTest(self, func, file): | 2304 def WriteImmediateServiceUnitTest(self, func, file): |
2295 """Overrriden from TypeHandler.""" | 2305 """Overrriden from TypeHandler.""" |
2296 valid_test = """ | 2306 valid_test = """ |
2297 TEST_F(%(test_name)s, %(name)sValidArgs) { | 2307 TEST_F(%(test_name)s, %(name)sValidArgs) { |
2298 EXPECT_CALL(*gl_, %(gl_func_name)s(1, _)) | 2308 EXPECT_CALL(*gl_, %(gl_func_name)s(1, _)) |
2299 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); | 2309 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); |
2300 %(name)s& cmd = *GetImmediateAs<%(name)s>(); | 2310 %(name)s& cmd = *GetImmediateAs<%(name)s>(); |
2301 GLuint temp = kNewClientId; | 2311 GLuint temp = kNewClientId; |
2302 SpecializedSetup<%(name)s, 0>(); | 2312 SpecializedSetup<%(name)s, 0>(); |
2303 cmd.Init(1, &temp); | 2313 cmd.Init(1, &temp); |
2304 EXPECT_EQ(error::kNoError, | 2314 EXPECT_EQ(error::kNoError, |
2305 ExecuteImmediateCmd(cmd, sizeof(temp))); | 2315 ExecuteImmediateCmd(cmd, sizeof(temp))); |
2306 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 2316 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
2307 EXPECT_EQ(GetServiceId(kNewClientId), kNewServiceId); | 2317 EXPECT_TRUE(Get%(resource_name)sInfo(kNewClientId) != NULL); |
2308 } | 2318 } |
2309 """ | 2319 """ |
2310 self.WriteValidUnitTest(func, file, valid_test) | 2320 self.WriteValidUnitTest(func, file, valid_test, { |
| 2321 'resource_name': func.original_name[3:-1], |
| 2322 }) |
2311 invalid_test = """ | 2323 invalid_test = """ |
2312 TEST_F(%(test_name)s, %(name)sInvalidArgs) { | 2324 TEST_F(%(test_name)s, %(name)sInvalidArgs) { |
2313 EXPECT_CALL(*gl_, %(gl_func_name)s(_, _)).Times(0); | 2325 EXPECT_CALL(*gl_, %(gl_func_name)s(_, _)).Times(0); |
2314 %(name)s& cmd = *GetImmediateAs<%(name)s>(); | 2326 %(name)s& cmd = *GetImmediateAs<%(name)s>(); |
2315 SpecializedSetup<%(name)s, 0>(); | 2327 SpecializedSetup<%(name)s, 0>(); |
2316 cmd.Init(1, &client_%(resource_name)s_id_); | 2328 cmd.Init(1, &client_%(resource_name)s_id_); |
2317 EXPECT_EQ(error::kInvalidArguments, | 2329 EXPECT_EQ(error::kInvalidArguments, |
2318 ExecuteImmediateCmd(cmd, sizeof(&client_%(resource_name)s_id_))); | 2330 ExecuteImmediateCmd(cmd, sizeof(&client_%(resource_name)s_id_))); |
2319 } | 2331 } |
2320 """ | 2332 """ |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2433 """Overrriden from TypeHandler.""" | 2445 """Overrriden from TypeHandler.""" |
2434 valid_test = """ | 2446 valid_test = """ |
2435 TEST_F(%(test_name)s, %(name)sValidArgs) { | 2447 TEST_F(%(test_name)s, %(name)sValidArgs) { |
2436 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)) | 2448 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)) |
2437 .WillOnce(Return(kNewServiceId)); | 2449 .WillOnce(Return(kNewServiceId)); |
2438 SpecializedSetup<%(name)s, 0>(); | 2450 SpecializedSetup<%(name)s, 0>(); |
2439 %(name)s cmd; | 2451 %(name)s cmd; |
2440 cmd.Init(%(args)s%(comma)skNewClientId); | 2452 cmd.Init(%(args)s%(comma)skNewClientId); |
2441 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2453 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
2442 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 2454 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
2443 EXPECT_EQ(GetServiceId(kNewClientId), kNewServiceId); | 2455 EXPECT_TRUE(Get%(resource_type)sInfo(kNewClientId) != NULL); |
2444 } | 2456 } |
2445 """ | 2457 """ |
2446 comma = "" | 2458 comma = "" |
2447 if len(func.GetOriginalArgs()): | 2459 if len(func.GetOriginalArgs()): |
2448 comma =", " | 2460 comma =", " |
2449 self.WriteValidUnitTest(func, file, valid_test, { | 2461 self.WriteValidUnitTest(func, file, valid_test, { |
2450 'comma': comma, | 2462 'comma': comma, |
| 2463 'resource_type': func.name[6:], |
2451 }) | 2464 }) |
2452 invalid_test = """ | 2465 invalid_test = """ |
2453 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { | 2466 TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
2454 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); | 2467 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); |
2455 SpecializedSetup<%(name)s, 0>(); | 2468 SpecializedSetup<%(name)s, 0>(); |
2456 %(name)s cmd; | 2469 %(name)s cmd; |
2457 cmd.Init(%(args)s%(comma)skNewClientId); | 2470 cmd.Init(%(args)s%(comma)skNewClientId); |
2458 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));%(gl_error_test)s | 2471 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));%(gl_error_test)s |
2459 } | 2472 } |
2460 """ | 2473 """ |
2461 self.WriteInvalidUnitTest(func, file, invalid_test, { | 2474 self.WriteInvalidUnitTest(func, file, invalid_test, { |
2462 'comma': comma, | 2475 'comma': comma, |
2463 }) | 2476 }) |
2464 | 2477 |
2465 def WriteHandlerImplementation (self, func, file): | 2478 def WriteHandlerImplementation (self, func, file): |
2466 """Overrriden from TypeHandler.""" | 2479 """Overrriden from TypeHandler.""" |
2467 file.Write(" uint32 client_id = c.client_id;\n") | 2480 file.Write(" uint32 client_id = c.client_id;\n") |
2468 file.Write(" %sHelper(%s);\n" % | 2481 file.Write(" if (!%sHelper(%s)) {\n" % |
2469 (func.name, func.MakeCmdArgString(""))) | 2482 (func.name, func.MakeCmdArgString(""))) |
| 2483 file.Write(" return error::kInvalidArguments;\n") |
| 2484 file.Write(" }\n") |
2470 | 2485 |
2471 def WriteGLES2ImplementationHeader(self, func, file): | 2486 def WriteGLES2ImplementationHeader(self, func, file): |
2472 """Overrriden from TypeHandler.""" | 2487 """Overrriden from TypeHandler.""" |
2473 file.Write("%s %s(%s) {\n" % | 2488 file.Write("%s %s(%s) {\n" % |
2474 (func.return_type, func.original_name, | 2489 (func.return_type, func.original_name, |
2475 func.MakeTypedOriginalArgString(""))) | 2490 func.MakeTypedOriginalArgString(""))) |
2476 file.Write(" GLuint client_id;\n") | 2491 file.Write(" GLuint client_id;\n") |
2477 file.Write(" MakeIds(1, &client_id);\n") | 2492 file.Write(" MakeIds(&program_and_shader_id_allocator_, 1, &client_id);\n") |
2478 file.Write(" helper_->%s(%s);\n" % | 2493 file.Write(" helper_->%s(%s);\n" % |
2479 (func.name, func.MakeCmdArgString(""))) | 2494 (func.name, func.MakeCmdArgString(""))) |
2480 file.Write(" return client_id;\n") | 2495 file.Write(" return client_id;\n") |
2481 file.Write("}\n") | 2496 file.Write("}\n") |
2482 file.Write("\n") | 2497 file.Write("\n") |
2483 | 2498 |
2484 | 2499 |
2485 class DELnHandler(TypeHandler): | 2500 class DELnHandler(TypeHandler): |
2486 """Handler for glDelete___ type functions.""" | 2501 """Handler for glDelete___ type functions.""" |
2487 | 2502 |
(...skipping 16 matching lines...) Expand all Loading... |
2504 EXPECT_CALL( | 2519 EXPECT_CALL( |
2505 *gl_, | 2520 *gl_, |
2506 %(gl_func_name)s(1, Pointee(kService%(upper_resource_name)sId))) | 2521 %(gl_func_name)s(1, Pointee(kService%(upper_resource_name)sId))) |
2507 .Times(1); | 2522 .Times(1); |
2508 GetSharedMemoryAs<GLuint*>()[0] = client_%(resource_name)s_id_; | 2523 GetSharedMemoryAs<GLuint*>()[0] = client_%(resource_name)s_id_; |
2509 SpecializedSetup<%(name)s, 0>(); | 2524 SpecializedSetup<%(name)s, 0>(); |
2510 %(name)s cmd; | 2525 %(name)s cmd; |
2511 cmd.Init(%(args)s); | 2526 cmd.Init(%(args)s); |
2512 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2527 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
2513 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 2528 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
2514 EXPECT_EQ(GetServiceId(kNewClientId), 0u); | 2529 EXPECT_TRUE( |
| 2530 Get%(upper_resource_name)sInfo(client_%(resource_name)s_id_) == NULL); |
2515 } | 2531 } |
2516 """ | 2532 """ |
2517 self.WriteValidUnitTest(func, file, valid_test, { | 2533 self.WriteValidUnitTest(func, file, valid_test, { |
2518 'resource_name': func.GetOriginalArgs()[1].name[0:-1], | 2534 'resource_name': func.GetOriginalArgs()[1].name[0:-1], |
2519 'upper_resource_name': | 2535 'upper_resource_name': |
2520 func.GetOriginalArgs()[1].name[0:-1].capitalize(), | 2536 func.GetOriginalArgs()[1].name[0:-1].capitalize(), |
2521 }) | 2537 }) |
2522 invalid_test = """ | 2538 invalid_test = """ |
2523 TEST_F(%(test_name)s, %(name)sInvalidArgs) { | 2539 TEST_F(%(test_name)s, %(name)sInvalidArgs) { |
2524 EXPECT_CALL(*gl_, %(gl_func_name)s(1, Pointee(0))) | |
2525 .Times(1); | |
2526 GetSharedMemoryAs<GLuint*>()[0] = kInvalidClientId; | 2540 GetSharedMemoryAs<GLuint*>()[0] = kInvalidClientId; |
2527 SpecializedSetup<%(name)s, 0>(); | 2541 SpecializedSetup<%(name)s, 0>(); |
2528 %(name)s cmd; | 2542 %(name)s cmd; |
2529 cmd.Init(%(args)s); | 2543 cmd.Init(%(args)s); |
2530 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2544 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
2531 } | 2545 } |
2532 """ | 2546 """ |
2533 self.WriteValidUnitTest(func, file, invalid_test) | 2547 self.WriteValidUnitTest(func, file, invalid_test) |
2534 | 2548 |
2535 def WriteImmediateServiceUnitTest(self, func, file): | 2549 def WriteImmediateServiceUnitTest(self, func, file): |
2536 """Overrriden from TypeHandler.""" | 2550 """Overrriden from TypeHandler.""" |
2537 valid_test = """ | 2551 valid_test = """ |
2538 TEST_F(%(test_name)s, %(name)sValidArgs) { | 2552 TEST_F(%(test_name)s, %(name)sValidArgs) { |
2539 EXPECT_CALL( | 2553 EXPECT_CALL( |
2540 *gl_, | 2554 *gl_, |
2541 %(gl_func_name)s(1, Pointee(kService%(upper_resource_name)sId))) | 2555 %(gl_func_name)s(1, Pointee(kService%(upper_resource_name)sId))) |
2542 .Times(1); | 2556 .Times(1); |
2543 %(name)s& cmd = *GetImmediateAs<%(name)s>(); | 2557 %(name)s& cmd = *GetImmediateAs<%(name)s>(); |
2544 SpecializedSetup<%(name)s, 0>(); | 2558 SpecializedSetup<%(name)s, 0>(); |
2545 cmd.Init(1, &client_%(resource_name)s_id_); | 2559 cmd.Init(1, &client_%(resource_name)s_id_); |
2546 EXPECT_EQ(error::kNoError, | 2560 EXPECT_EQ(error::kNoError, |
2547 ExecuteImmediateCmd(cmd, sizeof(client_%(resource_name)s_id_))); | 2561 ExecuteImmediateCmd(cmd, sizeof(client_%(resource_name)s_id_))); |
2548 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 2562 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
2549 EXPECT_EQ(GetServiceId(kNewClientId), 0u); | 2563 EXPECT_TRUE( |
| 2564 Get%(upper_resource_name)sInfo(client_%(resource_name)s_id_) == NULL); |
2550 } | 2565 } |
2551 """ | 2566 """ |
2552 self.WriteValidUnitTest(func, file, valid_test, { | 2567 self.WriteValidUnitTest(func, file, valid_test, { |
2553 'resource_name': func.GetOriginalArgs()[1].name[0:-1], | 2568 'resource_name': func.GetOriginalArgs()[1].name[0:-1], |
2554 'upper_resource_name': | 2569 'upper_resource_name': |
2555 func.GetOriginalArgs()[1].name[0:-1].capitalize(), | 2570 func.GetOriginalArgs()[1].name[0:-1].capitalize(), |
2556 }) | 2571 }) |
2557 invalid_test = """ | 2572 invalid_test = """ |
2558 TEST_F(%(test_name)s, %(name)sInvalidArgs) { | 2573 TEST_F(%(test_name)s, %(name)sInvalidArgs) { |
2559 EXPECT_CALL(*gl_, %(gl_func_name)s(1, Pointee(0))) | |
2560 .Times(1); | |
2561 %(name)s& cmd = *GetImmediateAs<%(name)s>(); | 2574 %(name)s& cmd = *GetImmediateAs<%(name)s>(); |
2562 SpecializedSetup<%(name)s, 0>(); | 2575 SpecializedSetup<%(name)s, 0>(); |
2563 GLuint temp = kInvalidClientId; | 2576 GLuint temp = kInvalidClientId; |
2564 cmd.Init(1, &temp); | 2577 cmd.Init(1, &temp); |
2565 EXPECT_EQ(error::kNoError, | 2578 EXPECT_EQ(error::kNoError, |
2566 ExecuteImmediateCmd(cmd, sizeof(temp))); | 2579 ExecuteImmediateCmd(cmd, sizeof(temp))); |
2567 } | 2580 } |
2568 """ | 2581 """ |
2569 self.WriteValidUnitTest(func, file, invalid_test) | 2582 self.WriteValidUnitTest(func, file, invalid_test) |
2570 | 2583 |
2571 def WriteHandlerImplementation (self, func, file): | 2584 def WriteHandlerImplementation (self, func, file): |
2572 """Overrriden from TypeHandler.""" | 2585 """Overrriden from TypeHandler.""" |
2573 file.Write(" DeleteGLObjects<GL%sHelper>(n, %s);\n" % | 2586 file.Write(" %sHelper(n, %s);\n" % |
2574 (func.name, func.GetLastOriginalArg().name)) | 2587 (func.name, func.GetLastOriginalArg().name)) |
2575 | 2588 |
2576 def WriteImmediateHandlerImplementation (self, func, file): | 2589 def WriteImmediateHandlerImplementation (self, func, file): |
2577 """Overrriden from TypeHandler.""" | 2590 """Overrriden from TypeHandler.""" |
2578 file.Write(" DeleteGLObjects<GL%sHelper>(n, %s);\n" % | 2591 file.Write(" %sHelper(n, %s);\n" % |
2579 (func.original_name, func.GetLastOriginalArg().name)) | 2592 (func.original_name, func.GetLastOriginalArg().name)) |
2580 | 2593 |
2581 def WriteGLES2ImplementationHeader(self, func, file): | 2594 def WriteGLES2ImplementationHeader(self, func, file): |
2582 """Overrriden from TypeHandler.""" | 2595 """Overrriden from TypeHandler.""" |
2583 impl_decl = func.GetInfo('impl_decl') | 2596 impl_decl = func.GetInfo('impl_decl') |
2584 if impl_decl == None or impl_decl == True: | 2597 if impl_decl == None or impl_decl == True: |
2585 file.Write("%s %s(%s) {\n" % | 2598 file.Write("%s %s(%s) {\n" % |
2586 (func.return_type, func.original_name, | 2599 (func.return_type, func.original_name, |
2587 func.MakeTypedOriginalArgString(""))) | 2600 func.MakeTypedOriginalArgString(""))) |
2588 file.Write(" FreeIds(%s);\n" % func.MakeOriginalArgString("")) | 2601 file.Write(" FreeIds(&%s_id_allocator_, %s);\n" % |
| 2602 (func.name[6:-1].lower(), func.MakeOriginalArgString(""))) |
2589 file.Write(" helper_->%sImmediate(%s);\n" % | 2603 file.Write(" helper_->%sImmediate(%s);\n" % |
2590 (func.name, func.MakeOriginalArgString(""))) | 2604 (func.name, func.MakeOriginalArgString(""))) |
2591 file.Write("}\n") | 2605 file.Write("}\n") |
2592 file.Write("\n") | 2606 file.Write("\n") |
2593 | 2607 |
2594 def WriteImmediateCmdComputeSize(self, func, file): | 2608 def WriteImmediateCmdComputeSize(self, func, file): |
2595 """Overrriden from TypeHandler.""" | 2609 """Overrriden from TypeHandler.""" |
2596 file.Write(" static uint32 ComputeDataSize(GLsizei n) {\n") | 2610 file.Write(" static uint32 ComputeDataSize(GLsizei n) {\n") |
2597 file.Write( | 2611 file.Write( |
2598 " return static_cast<uint32>(sizeof(GLuint) * n); // NOLINT\n") | 2612 " return static_cast<uint32>(sizeof(GLuint) * n); // NOLINT\n") |
(...skipping 898 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3497 %(name)s cmd; | 3511 %(name)s cmd; |
3498 cmd.Init(kInvalidClientId, kBucketId); | 3512 cmd.Init(kInvalidClientId, kBucketId); |
3499 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3513 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
3500 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 3514 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
3501 } | 3515 } |
3502 """ | 3516 """ |
3503 self.WriteValidUnitTest(func, file, invalid_test) | 3517 self.WriteValidUnitTest(func, file, invalid_test) |
3504 | 3518 |
3505 def WriteServiceImplementation(self, func, file): | 3519 def WriteServiceImplementation(self, func, file): |
3506 """Overrriden from TypeHandler.""" | 3520 """Overrriden from TypeHandler.""" |
3507 file.Write( | 3521 pass |
3508 "error::Error GLES2DecoderImpl::Handle%s(\n" % func.name) | |
3509 file.Write( | |
3510 " uint32 immediate_data_size, const gles2::%s& c) {\n" % func.name) | |
3511 args = func.GetCmdArgs() | |
3512 id_arg = args[0] | |
3513 bucket_arg = args[1] | |
3514 id_arg.WriteGetCode(file) | |
3515 bucket_arg.WriteGetCode(file) | |
3516 id_arg.WriteValidationCode(file) | |
3517 file.Write(" GLint len = 0;\n") | |
3518 file.Write(" %s(%s, %s, &len);\n" % ( | |
3519 func.GetInfo('get_len_func'), id_arg.name, | |
3520 func.GetInfo('get_len_enum'))) | |
3521 file.Write(" Bucket* bucket = CreateBucket(%s);\n" % bucket_arg.name) | |
3522 file.Write(" bucket->SetSize(len + 1);\n"); | |
3523 file.Write( | |
3524 " %s(%s, len + 1, &len, bucket->GetDataAs<GLchar*>(0, len + 1));\n" % | |
3525 (func.GetGLFunctionName(), id_arg.name)) | |
3526 file.Write(" return error::kNoError;\n") | |
3527 file.Write("}\n") | |
3528 file.Write("\n") | |
3529 | 3522 |
3530 | 3523 |
3531 class FunctionInfo(object): | 3524 class FunctionInfo(object): |
3532 """Holds info about a function.""" | 3525 """Holds info about a function.""" |
3533 | 3526 |
3534 def __init__(self, info, type_handler): | 3527 def __init__(self, info, type_handler): |
3535 for key in info: | 3528 for key in info: |
3536 setattr(self, key, info[key]) | 3529 setattr(self, key, info[key]) |
3537 self.type_handler = type_handler | 3530 self.type_handler = type_handler |
3538 if not 'type' in info: | 3531 if not 'type' in info: |
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3878 """A class that represents a resource id argument to a function.""" | 3871 """A class that represents a resource id argument to a function.""" |
3879 | 3872 |
3880 def __init__(self, name, type): | 3873 def __init__(self, name, type): |
3881 match = re.match("(GLid\w+)", type) | 3874 match = re.match("(GLid\w+)", type) |
3882 self.resource_type = match.group(1)[4:] | 3875 self.resource_type = match.group(1)[4:] |
3883 type = type.replace(match.group(1), "GLuint") | 3876 type = type.replace(match.group(1), "GLuint") |
3884 Argument.__init__(self, name, type) | 3877 Argument.__init__(self, name, type) |
3885 | 3878 |
3886 def WriteGetCode(self, file): | 3879 def WriteGetCode(self, file): |
3887 """Overridden from Argument.""" | 3880 """Overridden from Argument.""" |
3888 file.Write(" %s %s;\n" % (self.type, self.name)) | 3881 file.Write(" %s %s = c.%s;\n" % (self.type, self.name, self.name)) |
3889 file.Write(" if (!id_manager()->GetServiceId(c.%s, &%s)) {\n" % | |
3890 (self.name, self.name)) | |
3891 file.Write(" SetGLError(GL_INVALID_VALUE);\n") | |
3892 file.Write(" return error::kNoError;\n") | |
3893 file.Write(" }\n") | |
3894 | 3882 |
3895 def GetValidArg(self, offset, index): | 3883 def GetValidArg(self, offset, index): |
3896 return "client_%s_id_" % self.resource_type.lower() | 3884 return "client_%s_id_" % self.resource_type.lower() |
3897 | 3885 |
3898 def GetValidGLArg(self, offset, index): | 3886 def GetValidGLArg(self, offset, index): |
3899 return "kService%sId" % self.resource_type | 3887 return "kService%sId" % self.resource_type |
3900 | 3888 |
3901 | 3889 |
3902 class ResourceIdBindArgument(Argument): | 3890 class ResourceIdBindArgument(Argument): |
3903 """Represents a resource id argument to a bind function.""" | 3891 """Represents a resource id argument to a bind function.""" |
3904 | 3892 |
3905 def __init__(self, name, type): | 3893 def __init__(self, name, type): |
3906 match = re.match("(GLidBind\w+)", type) | 3894 match = re.match("(GLidBind\w+)", type) |
3907 self.resource_type = match.group(1)[8:] | 3895 self.resource_type = match.group(1)[8:] |
3908 type = type.replace(match.group(1), "GLuint") | 3896 type = type.replace(match.group(1), "GLuint") |
3909 Argument.__init__(self, name, type) | 3897 Argument.__init__(self, name, type) |
3910 | 3898 |
3911 def WriteGetCode(self, file): | 3899 def WriteGetCode(self, file): |
3912 """Overridden from Argument.""" | 3900 """Overridden from Argument.""" |
3913 code = """ %(type)s %(name)s = c.%(name)s; | 3901 code = """ %(type)s %(name)s = c.%(name)s; |
3914 """ | 3902 """ |
3915 file.Write(code % {'type': self.type, 'name': self.name}) | 3903 file.Write(code % {'type': self.type, 'name': self.name}) |
3916 | 3904 |
3917 def GetValidArg(self, offset, index): | 3905 def GetValidArg(self, offset, index): |
3918 return "client_%s_id_" % self.resource_type.lower() | 3906 return "client_%s_id_" % self.resource_type.lower() |
3919 | 3907 |
3920 def GetValidGLArg(self, offset, index): | 3908 def GetValidGLArg(self, offset, index): |
3921 return "kService%sId" % self.resource_type | 3909 return "kService%sId" % self.resource_type |
3922 | 3910 |
3923 def GetNumInvalidValues(self, func): | |
3924 """returns the number of invalid values to be tested.""" | |
3925 return 1 | |
3926 | |
3927 def GetInvalidArg(self, offset, index): | |
3928 """returns an invalid value by index.""" | |
3929 if self.resource_type == "Texture": | |
3930 return ("client_buffer_id_", "kNoError", "GL_INVALID_OPERATION") | |
3931 return ("client_texture_id_", "kNoError", "GL_INVALID_OPERATION") | |
3932 | |
3933 | 3911 |
3934 class ResourceIdZeroArgument(Argument): | 3912 class ResourceIdZeroArgument(Argument): |
3935 """Represents a resource id argument to a function that can be zero.""" | 3913 """Represents a resource id argument to a function that can be zero.""" |
3936 | 3914 |
3937 def __init__(self, name, type): | 3915 def __init__(self, name, type): |
3938 match = re.match("(GLidZero\w+)", type) | 3916 match = re.match("(GLidZero\w+)", type) |
3939 self.resource_type = match.group(1)[8:] | 3917 self.resource_type = match.group(1)[8:] |
3940 type = type.replace(match.group(1), "GLuint") | 3918 type = type.replace(match.group(1), "GLuint") |
3941 Argument.__init__(self, name, type) | 3919 Argument.__init__(self, name, type) |
3942 | 3920 |
3943 def WriteGetCode(self, file): | 3921 def WriteGetCode(self, file): |
3944 """Overridden from Argument.""" | 3922 """Overridden from Argument.""" |
3945 file.Write(" %s %s = c.%s;\n" % (self.type, self.name, self.name)) | 3923 file.Write(" %s %s = c.%s;\n" % (self.type, self.name, self.name)) |
3946 file.Write(" if (%s != 0 && !id_manager()->GetServiceId(%s, &%s)) {\n" % | |
3947 (self.name, self.name, self.name)) | |
3948 file.Write(" SetGLError(GL_INVALID_VALUE);\n") | |
3949 file.Write(" return error::kNoError;\n") | |
3950 file.Write(" }\n") | |
3951 | 3924 |
3952 def GetValidArg(self, offset, index): | 3925 def GetValidArg(self, offset, index): |
3953 return "client_%s_id_" % self.resource_type.lower() | 3926 return "client_%s_id_" % self.resource_type.lower() |
3954 | 3927 |
3955 def GetValidGLArg(self, offset, index): | 3928 def GetValidGLArg(self, offset, index): |
3956 return "kService%sId" % self.resource_type | 3929 return "kService%sId" % self.resource_type |
3957 | 3930 |
3958 def GetNumInvalidValues(self, func): | 3931 def GetNumInvalidValues(self, func): |
3959 """returns the number of invalid values to be tested.""" | 3932 """returns the number of invalid values to be tested.""" |
3960 return 1 | 3933 return 1 |
3961 | 3934 |
3962 def GetInvalidArg(self, offset, index): | 3935 def GetInvalidArg(self, offset, index): |
3963 """returns an invalid value by index.""" | 3936 """returns an invalid value by index.""" |
3964 if self.resource_type == "Texture": | 3937 return ("kInvalidClientId", "kNoError", "GL_INVALID_VALUE") |
3965 return ("client_buffer_id_", "kNoError", "GL_INVALID_OPERATION") | |
3966 return ("client_texture_id_", "kNoError", "GL_INVALID_OPERATION") | |
3967 | 3938 |
3968 | 3939 |
3969 class Function(object): | 3940 class Function(object): |
3970 """A class that represents a function.""" | 3941 """A class that represents a function.""" |
3971 | 3942 |
3972 def __init__(self, original_name, name, info, return_type, original_args, | 3943 def __init__(self, original_name, name, info, return_type, original_args, |
3973 args_for_cmds, cmd_args, init_args, num_pointer_args): | 3944 args_for_cmds, cmd_args, init_args, num_pointer_args): |
3974 self.name = name | 3945 self.name = name |
3975 self.original_name = original_name | 3946 self.original_name = original_name |
3976 self.info = info | 3947 self.info = info |
(...skipping 732 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4709 | 4680 |
4710 if options.generate_docs: | 4681 if options.generate_docs: |
4711 gen.WriteDocs("docs/gles2_cmd_format_docs_autogen.h") | 4682 gen.WriteDocs("docs/gles2_cmd_format_docs_autogen.h") |
4712 | 4683 |
4713 if gen.errors > 0: | 4684 if gen.errors > 0: |
4714 print "%d errors" % gen.errors | 4685 print "%d errors" % gen.errors |
4715 sys.exit(1) | 4686 sys.exit(1) |
4716 | 4687 |
4717 if __name__ == '__main__': | 4688 if __name__ == '__main__': |
4718 main(sys.argv[1:]) | 4689 main(sys.argv[1:]) |
OLD | NEW |