Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 """code generator for GLES2 command buffers.""" | 6 """code generator for GLES2 command buffers.""" |
| 7 | 7 |
| 8 import itertools | 8 import itertools |
| 9 import os | 9 import os |
| 10 import os.path | 10 import os.path |
| (...skipping 1220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1231 # gen_cmd: Whether or not this function geneates a command. Default = True. | 1231 # gen_cmd: Whether or not this function geneates a command. Default = True. |
| 1232 # immediate: Whether or not to generate an immediate command for the GL | 1232 # immediate: Whether or not to generate an immediate command for the GL |
| 1233 # function. The default is if there is exactly 1 pointer argument | 1233 # function. The default is if there is exactly 1 pointer argument |
| 1234 # in the GL function an immediate command is generated. | 1234 # in the GL function an immediate command is generated. |
| 1235 # bucket: True to generate a bucket version of the command. | 1235 # bucket: True to generate a bucket version of the command. |
| 1236 # impl_func: Whether or not to generate the GLES2Implementation part of this | 1236 # impl_func: Whether or not to generate the GLES2Implementation part of this |
| 1237 # command. | 1237 # command. |
| 1238 # impl_decl: Whether or not to generate the GLES2Implementation declaration | 1238 # impl_decl: Whether or not to generate the GLES2Implementation declaration |
| 1239 # for this command. | 1239 # for this command. |
| 1240 # needs_size: If true a data_size field is added to the command. | 1240 # needs_size: If true a data_size field is added to the command. |
| 1241 # data_type: The type of data the command uses. For PUTn or PUT types. | |
| 1242 # count: The number of units per element. For PUTn or PUT types. | 1241 # count: The number of units per element. For PUTn or PUT types. |
| 1243 # unit_test: If False no service side unit test will be generated. | 1242 # unit_test: If False no service side unit test will be generated. |
| 1244 # client_test: If False no client side unit test will be generated. | 1243 # client_test: If False no client side unit test will be generated. |
| 1245 # expectation: If False the unit test will have no expected calls. | 1244 # expectation: If False the unit test will have no expected calls. |
| 1246 # gen_func: Name of function that generates GL resource for corresponding | 1245 # gen_func: Name of function that generates GL resource for corresponding |
| 1247 # bind function. | 1246 # bind function. |
| 1248 # states: array of states that get set by this function corresponding to | 1247 # states: array of states that get set by this function corresponding to |
| 1249 # the given arguments | 1248 # the given arguments |
| 1250 # state_flag: name of flag that is set to true when function is called. | 1249 # state_flag: name of flag that is set to true when function is called. |
| 1251 # no_gl: no GL function is called. | 1250 # no_gl: no GL function is called. |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1352 'ColorMask': { | 1351 'ColorMask': { |
| 1353 'type': 'StateSet', | 1352 'type': 'StateSet', |
| 1354 'state': 'ColorMask', | 1353 'state': 'ColorMask', |
| 1355 'no_gl': True, | 1354 'no_gl': True, |
| 1356 'expectation': False, | 1355 'expectation': False, |
| 1357 }, | 1356 }, |
| 1358 'ConsumeTextureCHROMIUM': { | 1357 'ConsumeTextureCHROMIUM': { |
| 1359 'decoder_func': 'DoConsumeTextureCHROMIUM', | 1358 'decoder_func': 'DoConsumeTextureCHROMIUM', |
| 1360 'impl_func': False, | 1359 'impl_func': False, |
| 1361 'type': 'PUT', | 1360 'type': 'PUT', |
| 1362 'data_type': 'GLbyte', | |
| 1363 'count': 64, # GL_MAILBOX_SIZE_CHROMIUM | 1361 'count': 64, # GL_MAILBOX_SIZE_CHROMIUM |
| 1364 'unit_test': False, | 1362 'unit_test': False, |
| 1365 'client_test': False, | 1363 'client_test': False, |
| 1366 'extension': True, | 1364 'extension': True, |
| 1367 'chromium': True, | 1365 'chromium': True, |
| 1368 'trace_level': 1, | 1366 'trace_level': 1, |
| 1369 }, | 1367 }, |
| 1370 'ClearStencil': { | 1368 'ClearStencil': { |
| 1371 'type': 'StateSet', | 1369 'type': 'StateSet', |
| 1372 'state': 'ClearStencil', | 1370 'state': 'ClearStencil', |
| (...skipping 573 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1946 'impl_func': False, | 1944 'impl_func': False, |
| 1947 'unit_test': False, | 1945 'unit_test': False, |
| 1948 'client_test': False, | 1946 'client_test': False, |
| 1949 'extension': True, | 1947 'extension': True, |
| 1950 'chromium': True, | 1948 'chromium': True, |
| 1951 }, | 1949 }, |
| 1952 'ProduceTextureCHROMIUM': { | 1950 'ProduceTextureCHROMIUM': { |
| 1953 'decoder_func': 'DoProduceTextureCHROMIUM', | 1951 'decoder_func': 'DoProduceTextureCHROMIUM', |
| 1954 'impl_func': False, | 1952 'impl_func': False, |
| 1955 'type': 'PUT', | 1953 'type': 'PUT', |
| 1956 'data_type': 'GLbyte', | |
| 1957 'count': 64, # GL_MAILBOX_SIZE_CHROMIUM | 1954 'count': 64, # GL_MAILBOX_SIZE_CHROMIUM |
| 1958 'unit_test': False, | 1955 'unit_test': False, |
| 1959 'client_test': False, | 1956 'client_test': False, |
| 1960 'extension': True, | 1957 'extension': True, |
| 1961 'chromium': True, | 1958 'chromium': True, |
| 1962 'trace_level': 1, | 1959 'trace_level': 1, |
| 1963 }, | 1960 }, |
| 1964 'RenderbufferStorage': { | 1961 'RenderbufferStorage': { |
| 1965 'decoder_func': 'DoRenderbufferStorage', | 1962 'decoder_func': 'DoRenderbufferStorage', |
| 1966 'gl_test_func': 'glRenderbufferStorageEXT', | 1963 'gl_test_func': 'glRenderbufferStorageEXT', |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2064 }, | 2061 }, |
| 2065 }, | 2062 }, |
| 2066 'TexParameteri': { | 2063 'TexParameteri': { |
| 2067 'decoder_func': 'DoTexParameteri', | 2064 'decoder_func': 'DoTexParameteri', |
| 2068 'valid_args': { | 2065 'valid_args': { |
| 2069 '2': 'GL_NEAREST' | 2066 '2': 'GL_NEAREST' |
| 2070 }, | 2067 }, |
| 2071 }, | 2068 }, |
| 2072 'TexParameterfv': { | 2069 'TexParameterfv': { |
| 2073 'type': 'PUT', | 2070 'type': 'PUT', |
| 2074 'data_type': 'GLfloat', | |
| 2075 'data_value': 'GL_NEAREST', | 2071 'data_value': 'GL_NEAREST', |
| 2076 'count': 1, | 2072 'count': 1, |
| 2077 'decoder_func': 'DoTexParameterfv', | 2073 'decoder_func': 'DoTexParameterfv', |
| 2078 'gl_test_func': 'glTexParameterf', | 2074 'gl_test_func': 'glTexParameterf', |
| 2079 'first_element_only': True, | 2075 'first_element_only': True, |
| 2080 }, | 2076 }, |
| 2081 'TexParameteriv': { | 2077 'TexParameteriv': { |
| 2082 'type': 'PUT', | 2078 'type': 'PUT', |
| 2083 'data_type': 'GLint', | |
| 2084 'data_value': 'GL_NEAREST', | 2079 'data_value': 'GL_NEAREST', |
| 2085 'count': 1, | 2080 'count': 1, |
| 2086 'decoder_func': 'DoTexParameteriv', | 2081 'decoder_func': 'DoTexParameteriv', |
| 2087 'gl_test_func': 'glTexParameteri', | 2082 'gl_test_func': 'glTexParameteri', |
| 2088 'first_element_only': True, | 2083 'first_element_only': True, |
| 2089 }, | 2084 }, |
| 2090 'TexSubImage2D': { | 2085 'TexSubImage2D': { |
| 2091 'type': 'Manual', | 2086 'type': 'Manual', |
| 2092 'immediate': False, | 2087 'immediate': False, |
| 2093 'client_test': False, | 2088 'client_test': False, |
| 2094 'cmd_args': 'GLenumTextureTarget target, GLint level, ' | 2089 'cmd_args': 'GLenumTextureTarget target, GLint level, ' |
| 2095 'GLint xoffset, GLint yoffset, ' | 2090 'GLint xoffset, GLint yoffset, ' |
| 2096 'GLsizei width, GLsizei height, ' | 2091 'GLsizei width, GLsizei height, ' |
| 2097 'GLenumTextureFormat format, GLenumPixelType type, ' | 2092 'GLenumTextureFormat format, GLenumPixelType type, ' |
| 2098 'const void* pixels, GLboolean internal' | 2093 'const void* pixels, GLboolean internal' |
| 2099 }, | 2094 }, |
| 2100 'Uniform1f': {'type': 'PUTXn', 'data_type': 'GLfloat', 'count': 1}, | 2095 'Uniform1f': {'type': 'PUTXn', 'count': 1}, |
| 2101 'Uniform1fv': { | 2096 'Uniform1fv': { |
| 2102 'type': 'PUTn', | 2097 'type': 'PUTn', |
| 2103 'data_type': 'GLfloat', | |
| 2104 'count': 1, | 2098 'count': 1, |
| 2105 'decoder_func': 'DoUniform1fv', | 2099 'decoder_func': 'DoUniform1fv', |
| 2106 }, | 2100 }, |
| 2107 'Uniform1i': {'decoder_func': 'DoUniform1i', 'unit_test': False}, | 2101 'Uniform1i': {'decoder_func': 'DoUniform1i', 'unit_test': False}, |
| 2108 'Uniform1iv': { | 2102 'Uniform1iv': { |
| 2109 'type': 'PUTn', | 2103 'type': 'PUTn', |
| 2110 'data_type': 'GLint', | |
| 2111 'count': 1, | 2104 'count': 1, |
| 2112 'decoder_func': 'DoUniform1iv', | 2105 'decoder_func': 'DoUniform1iv', |
| 2113 'unit_test': False, | 2106 'unit_test': False, |
| 2114 }, | 2107 }, |
| 2115 'Uniform2i': {'type': 'PUTXn', 'data_type': 'GLint', 'count': 2}, | 2108 'Uniform2i': {'type': 'PUTXn', 'count': 2}, |
| 2116 'Uniform2f': {'type': 'PUTXn', 'data_type': 'GLfloat', 'count': 2}, | 2109 'Uniform2f': {'type': 'PUTXn', 'count': 2}, |
| 2117 'Uniform2fv': { | 2110 'Uniform2fv': { |
| 2118 'type': 'PUTn', | 2111 'type': 'PUTn', |
| 2119 'data_type': 'GLfloat', | |
| 2120 'count': 2, | 2112 'count': 2, |
| 2121 'decoder_func': 'DoUniform2fv', | 2113 'decoder_func': 'DoUniform2fv', |
| 2122 }, | 2114 }, |
| 2123 'Uniform2iv': { | 2115 'Uniform2iv': { |
| 2124 'type': 'PUTn', | 2116 'type': 'PUTn', |
| 2125 'data_type': 'GLint', | |
| 2126 'count': 2, | 2117 'count': 2, |
| 2127 'decoder_func': 'DoUniform2iv', | 2118 'decoder_func': 'DoUniform2iv', |
| 2128 }, | 2119 }, |
| 2129 'Uniform3i': {'type': 'PUTXn', 'data_type': 'GLint', 'count': 3}, | 2120 'Uniform3i': {'type': 'PUTXn', 'count': 3}, |
| 2130 'Uniform3f': {'type': 'PUTXn', 'data_type': 'GLfloat', 'count': 3}, | 2121 'Uniform3f': {'type': 'PUTXn', 'count': 3}, |
| 2131 'Uniform3fv': { | 2122 'Uniform3fv': { |
| 2132 'type': 'PUTn', | 2123 'type': 'PUTn', |
| 2133 'data_type': 'GLfloat', | |
| 2134 'count': 3, | 2124 'count': 3, |
| 2135 'decoder_func': 'DoUniform3fv', | 2125 'decoder_func': 'DoUniform3fv', |
| 2136 }, | 2126 }, |
| 2137 'Uniform3iv': { | 2127 'Uniform3iv': { |
| 2138 'type': 'PUTn', | 2128 'type': 'PUTn', |
| 2139 'data_type': 'GLint', | |
| 2140 'count': 3, | 2129 'count': 3, |
| 2141 'decoder_func': 'DoUniform3iv', | 2130 'decoder_func': 'DoUniform3iv', |
| 2142 }, | 2131 }, |
| 2143 'Uniform4i': {'type': 'PUTXn', 'data_type': 'GLint', 'count': 4}, | 2132 'Uniform4i': {'type': 'PUTXn', 'count': 4}, |
| 2144 'Uniform4f': {'type': 'PUTXn', 'data_type': 'GLfloat', 'count': 4}, | 2133 'Uniform4f': {'type': 'PUTXn', 'count': 4}, |
| 2145 'Uniform4fv': { | 2134 'Uniform4fv': { |
| 2146 'type': 'PUTn', | 2135 'type': 'PUTn', |
| 2147 'data_type': 'GLfloat', | |
| 2148 'count': 4, | 2136 'count': 4, |
| 2149 'decoder_func': 'DoUniform4fv', | 2137 'decoder_func': 'DoUniform4fv', |
| 2150 }, | 2138 }, |
| 2151 'Uniform4iv': { | 2139 'Uniform4iv': { |
| 2152 'type': 'PUTn', | 2140 'type': 'PUTn', |
| 2153 'data_type': 'GLint', | |
| 2154 'count': 4, | 2141 'count': 4, |
| 2155 'decoder_func': 'DoUniform4iv', | 2142 'decoder_func': 'DoUniform4iv', |
| 2156 }, | 2143 }, |
| 2157 'UniformMatrix2fv': { | 2144 'UniformMatrix2fv': { |
| 2158 'type': 'PUTn', | 2145 'type': 'PUTn', |
| 2159 'data_type': 'GLfloat', | |
| 2160 'count': 4, | 2146 'count': 4, |
| 2161 'decoder_func': 'DoUniformMatrix2fv', | 2147 'decoder_func': 'DoUniformMatrix2fv', |
| 2162 }, | 2148 }, |
| 2163 'UniformMatrix3fv': { | 2149 'UniformMatrix3fv': { |
| 2164 'type': 'PUTn', | 2150 'type': 'PUTn', |
| 2165 'data_type': 'GLfloat', | |
| 2166 'count': 9, | 2151 'count': 9, |
| 2167 'decoder_func': 'DoUniformMatrix3fv', | 2152 'decoder_func': 'DoUniformMatrix3fv', |
| 2168 }, | 2153 }, |
| 2169 'UniformMatrix4fv': { | 2154 'UniformMatrix4fv': { |
| 2170 'type': 'PUTn', | 2155 'type': 'PUTn', |
| 2171 'data_type': 'GLfloat', | |
| 2172 'count': 16, | 2156 'count': 16, |
| 2173 'decoder_func': 'DoUniformMatrix4fv', | 2157 'decoder_func': 'DoUniformMatrix4fv', |
| 2174 }, | 2158 }, |
| 2175 'UnmapBufferCHROMIUM': { | 2159 'UnmapBufferCHROMIUM': { |
| 2176 'gen_cmd': False, | 2160 'gen_cmd': False, |
| 2177 'extension': True, | 2161 'extension': True, |
| 2178 'chromium': True, | 2162 'chromium': True, |
| 2179 'client_test': False, | 2163 'client_test': False, |
| 2180 }, | 2164 }, |
| 2181 'UnmapBufferSubDataCHROMIUM': { | 2165 'UnmapBufferSubDataCHROMIUM': { |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 2199 'pepper_interface': 'ChromiumMapSub', | 2183 'pepper_interface': 'ChromiumMapSub', |
| 2200 }, | 2184 }, |
| 2201 'UseProgram': { | 2185 'UseProgram': { |
| 2202 'type': 'Bind', | 2186 'type': 'Bind', |
| 2203 'decoder_func': 'DoUseProgram', | 2187 'decoder_func': 'DoUseProgram', |
| 2204 }, | 2188 }, |
| 2205 'ValidateProgram': {'decoder_func': 'DoValidateProgram'}, | 2189 'ValidateProgram': {'decoder_func': 'DoValidateProgram'}, |
| 2206 'VertexAttrib1f': {'decoder_func': 'DoVertexAttrib1f'}, | 2190 'VertexAttrib1f': {'decoder_func': 'DoVertexAttrib1f'}, |
| 2207 'VertexAttrib1fv': { | 2191 'VertexAttrib1fv': { |
| 2208 'type': 'PUT', | 2192 'type': 'PUT', |
| 2209 'data_type': 'GLfloat', | |
| 2210 'count': 1, | 2193 'count': 1, |
| 2211 'decoder_func': 'DoVertexAttrib1fv', | 2194 'decoder_func': 'DoVertexAttrib1fv', |
| 2212 }, | 2195 }, |
| 2213 'VertexAttrib2f': {'decoder_func': 'DoVertexAttrib2f'}, | 2196 'VertexAttrib2f': {'decoder_func': 'DoVertexAttrib2f'}, |
| 2214 'VertexAttrib2fv': { | 2197 'VertexAttrib2fv': { |
| 2215 'type': 'PUT', | 2198 'type': 'PUT', |
| 2216 'data_type': 'GLfloat', | |
| 2217 'count': 2, | 2199 'count': 2, |
| 2218 'decoder_func': 'DoVertexAttrib2fv', | 2200 'decoder_func': 'DoVertexAttrib2fv', |
| 2219 }, | 2201 }, |
| 2220 'VertexAttrib3f': {'decoder_func': 'DoVertexAttrib3f'}, | 2202 'VertexAttrib3f': {'decoder_func': 'DoVertexAttrib3f'}, |
| 2221 'VertexAttrib3fv': { | 2203 'VertexAttrib3fv': { |
| 2222 'type': 'PUT', | 2204 'type': 'PUT', |
| 2223 'data_type': 'GLfloat', | |
| 2224 'count': 3, | 2205 'count': 3, |
| 2225 'decoder_func': 'DoVertexAttrib3fv', | 2206 'decoder_func': 'DoVertexAttrib3fv', |
| 2226 }, | 2207 }, |
| 2227 'VertexAttrib4f': {'decoder_func': 'DoVertexAttrib4f'}, | 2208 'VertexAttrib4f': {'decoder_func': 'DoVertexAttrib4f'}, |
| 2228 'VertexAttrib4fv': { | 2209 'VertexAttrib4fv': { |
| 2229 'type': 'PUT', | 2210 'type': 'PUT', |
| 2230 'data_type': 'GLfloat', | |
| 2231 'count': 4, | 2211 'count': 4, |
| 2232 'decoder_func': 'DoVertexAttrib4fv', | 2212 'decoder_func': 'DoVertexAttrib4fv', |
| 2233 }, | 2213 }, |
| 2234 'VertexAttribPointer': { | 2214 'VertexAttribPointer': { |
| 2235 'type': 'Manual', | 2215 'type': 'Manual', |
| 2236 'cmd_args': 'GLuint indx, GLintVertexAttribSize size, ' | 2216 'cmd_args': 'GLuint indx, GLintVertexAttribSize size, ' |
| 2237 'GLenumVertexAttribType type, GLboolean normalized, ' | 2217 'GLenumVertexAttribType type, GLboolean normalized, ' |
| 2238 'GLsizei stride, GLuint offset', | 2218 'GLsizei stride, GLuint offset', |
| 2239 'client_test': False, | 2219 'client_test': False, |
| 2240 }, | 2220 }, |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2305 'cmd_args': 'GLenumDrawMode mode, GLint first, GLsizei count, ' | 2285 'cmd_args': 'GLenumDrawMode mode, GLint first, GLsizei count, ' |
| 2306 'GLsizei primcount', | 2286 'GLsizei primcount', |
| 2307 'extension': True, | 2287 'extension': True, |
| 2308 'unit_test': False, | 2288 'unit_test': False, |
| 2309 'pepper_interface': 'InstancedArrays', | 2289 'pepper_interface': 'InstancedArrays', |
| 2310 'defer_draws': True, | 2290 'defer_draws': True, |
| 2311 }, | 2291 }, |
| 2312 'DrawBuffersEXT': { | 2292 'DrawBuffersEXT': { |
| 2313 'type': 'PUTn', | 2293 'type': 'PUTn', |
| 2314 'decoder_func': 'DoDrawBuffersEXT', | 2294 'decoder_func': 'DoDrawBuffersEXT', |
| 2315 'data_type': 'GLenum', | |
| 2316 'count': 1, | 2295 'count': 1, |
| 2317 'client_test': False, | 2296 'client_test': False, |
| 2318 'unit_test': False, | 2297 'unit_test': False, |
| 2319 'extension': True, | 2298 'extension': True, |
| 2320 'pepper_interface': 'DrawBuffers', | 2299 'pepper_interface': 'DrawBuffers', |
| 2321 }, | 2300 }, |
| 2322 'DrawElementsInstancedANGLE': { | 2301 'DrawElementsInstancedANGLE': { |
| 2323 'type': 'Manual', | 2302 'type': 'Manual', |
| 2324 'cmd_args': 'GLenumDrawMode mode, GLsizei count, ' | 2303 'cmd_args': 'GLenumDrawMode mode, GLsizei count, ' |
| 2325 'GLenumIndexType type, GLuint index_offset, GLsizei primcount', | 2304 'GLenumIndexType type, GLuint index_offset, GLsizei primcount', |
| (...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2526 'WaitAllAsyncTexImage2DCHROMIUM': { | 2505 'WaitAllAsyncTexImage2DCHROMIUM': { |
| 2527 'type': 'Manual', | 2506 'type': 'Manual', |
| 2528 'immediate': False, | 2507 'immediate': False, |
| 2529 'client_test': False, | 2508 'client_test': False, |
| 2530 'extension': True, | 2509 'extension': True, |
| 2531 'chromium': True, | 2510 'chromium': True, |
| 2532 }, | 2511 }, |
| 2533 'DiscardFramebufferEXT': { | 2512 'DiscardFramebufferEXT': { |
| 2534 'type': 'PUTn', | 2513 'type': 'PUTn', |
| 2535 'count': 1, | 2514 'count': 1, |
| 2536 'data_type': 'GLenum', | |
| 2537 'cmd_args': 'GLenum target, GLsizei count, ' | 2515 'cmd_args': 'GLenum target, GLsizei count, ' |
| 2538 'const GLenum* attachments', | 2516 'const GLenum* attachments', |
| 2539 'decoder_func': 'DoDiscardFramebufferEXT', | 2517 'decoder_func': 'DoDiscardFramebufferEXT', |
| 2540 'unit_test': False, | 2518 'unit_test': False, |
| 2541 'client_test': False, | 2519 'client_test': False, |
| 2542 'extension': True, | 2520 'extension': True, |
| 2543 }, | 2521 }, |
| 2544 'LoseContextCHROMIUM': { | 2522 'LoseContextCHROMIUM': { |
| 2545 'type': 'Manual', | 2523 'type': 'Manual', |
| 2546 'impl_func': True, | 2524 'impl_func': True, |
| (...skipping 2176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4723 static_cast<cmds::%(name)s::Result*>(shared_memory_address_); | 4701 static_cast<cmds::%(name)s::Result*>(shared_memory_address_); |
| 4724 result->size = 0; | 4702 result->size = 0; |
| 4725 cmds::%(name)s cmd; | 4703 cmds::%(name)s cmd; |
| 4726 cmd.Init(%(args)s); | 4704 cmd.Init(%(args)s); |
| 4727 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd)); | 4705 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd)); |
| 4728 EXPECT_EQ(0u, result->size);%(gl_error_test)s | 4706 EXPECT_EQ(0u, result->size);%(gl_error_test)s |
| 4729 } | 4707 } |
| 4730 """ | 4708 """ |
| 4731 self.WriteInvalidUnitTest(func, file, invalid_test) | 4709 self.WriteInvalidUnitTest(func, file, invalid_test) |
| 4732 | 4710 |
| 4733 | 4711 class ArrayArgTypeHandler(TypeHandler): |
| 4734 class PUTHandler(TypeHandler): | 4712 """Base class for type handlers that handle args that are arrays""" |
| 4735 """Handler for glTexParameter_v, glVertexAttrib_v functions.""" | |
| 4736 | 4713 |
| 4737 def __init__(self): | 4714 def __init__(self): |
| 4738 TypeHandler.__init__(self) | 4715 TypeHandler.__init__(self) |
| 4739 | 4716 |
| 4717 def GetArrayType(self, func): | |
| 4718 """Returns the type of the element in the element array being PUT to.""" | |
| 4719 for arg in func.GetOriginalArgs(): | |
| 4720 if arg.IsPointer(): | |
| 4721 element_type = arg.GetPointedType() | |
| 4722 return element_type | |
| 4723 | |
| 4724 # Special case: array type handler is used for a function that is forwarded | |
| 4725 # to the actual array type implementation | |
| 4726 element_type = func.GetOriginalArgs()[-1].type | |
| 4727 assert all(arg.type == element_type \ | |
| 4728 for arg in func.GetOriginalArgs()[-self.GetArrayCount(func):]) | |
| 4729 return element_type | |
| 4730 | |
| 4731 def GetArrayCount(self, func): | |
| 4732 """Returns the count of the elements in the array being PUT to.""" | |
| 4733 return func.GetInfo('count') | |
| 4734 | |
| 4735 class PUTHandler(ArrayArgTypeHandler): | |
| 4736 """Handler for glTexParameter_v, glVertexAttrib_v functions.""" | |
| 4737 | |
| 4738 def __init__(self): | |
| 4739 ArrayArgTypeHandler.__init__(self) | |
| 4740 | |
| 4740 def WriteServiceUnitTest(self, func, file): | 4741 def WriteServiceUnitTest(self, func, file): |
| 4741 """Writes the service unit test for a command.""" | 4742 """Writes the service unit test for a command.""" |
| 4742 expected_call = "EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s));" | 4743 expected_call = "EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s));" |
| 4743 if func.GetInfo("first_element_only"): | 4744 if func.GetInfo("first_element_only"): |
| 4744 gl_arg_strings = [] | 4745 gl_arg_strings = [] |
| 4745 for count, arg in enumerate(func.GetOriginalArgs()): | 4746 for count, arg in enumerate(func.GetOriginalArgs()): |
| 4746 gl_arg_strings.append(arg.GetValidGLArg(func, count, 0)) | 4747 gl_arg_strings.append(arg.GetValidGLArg(func, count, 0)) |
| 4747 gl_arg_strings[-1] = "*" + gl_arg_strings[-1] | 4748 gl_arg_strings[-1] = "*" + gl_arg_strings[-1] |
| 4748 expected_call = ("EXPECT_CALL(*gl_, %%(gl_func_name)s(%s));" % | 4749 expected_call = ("EXPECT_CALL(*gl_, %%(gl_func_name)s(%s));" % |
| 4749 ", ".join(gl_arg_strings)) | 4750 ", ".join(gl_arg_strings)) |
| 4750 valid_test = """ | 4751 valid_test = """ |
| 4751 TEST_P(%(test_name)s, %(name)sValidArgs) { | 4752 TEST_P(%(test_name)s, %(name)sValidArgs) { |
| 4752 SpecializedSetup<cmds::%(name)s, 0>(true); | 4753 SpecializedSetup<cmds::%(name)s, 0>(true); |
| 4753 cmds::%(name)s cmd; | 4754 cmds::%(name)s cmd; |
| 4754 cmd.Init(%(args)s); | 4755 cmd.Init(%(args)s); |
| 4755 GetSharedMemoryAs<%(data_type)s*>()[0] = %(data_value)s; | 4756 GetSharedMemoryAs<%(data_type)s*>()[0] = %(data_value)s; |
| 4756 %(expected_call)s | 4757 %(expected_call)s |
| 4757 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 4758 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 4758 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4759 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4759 } | 4760 } |
| 4760 """ | 4761 """ |
| 4761 extra = { | 4762 extra = { |
| 4762 'data_type': func.GetInfo('data_type'), | 4763 'data_type': self.GetArrayType(func), |
| 4763 'data_value': func.GetInfo('data_value') or '0', | 4764 'data_value': func.GetInfo('data_value') or '0', |
| 4764 'expected_call': expected_call, | 4765 'expected_call': expected_call, |
| 4765 } | 4766 } |
| 4766 self.WriteValidUnitTest(func, file, valid_test, extra) | 4767 self.WriteValidUnitTest(func, file, valid_test, extra) |
| 4767 | 4768 |
| 4768 invalid_test = """ | 4769 invalid_test = """ |
| 4769 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { | 4770 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| 4770 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); | 4771 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); |
| 4771 SpecializedSetup<cmds::%(name)s, 0>(false); | 4772 SpecializedSetup<cmds::%(name)s, 0>(false); |
| 4772 cmds::%(name)s cmd; | 4773 cmds::%(name)s cmd; |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 4794 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4795 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4795 } | 4796 } |
| 4796 """ | 4797 """ |
| 4797 gl_arg_strings = [] | 4798 gl_arg_strings = [] |
| 4798 gl_any_strings = [] | 4799 gl_any_strings = [] |
| 4799 for count, arg in enumerate(func.GetOriginalArgs()[0:-1]): | 4800 for count, arg in enumerate(func.GetOriginalArgs()[0:-1]): |
| 4800 gl_arg_strings.append(arg.GetValidGLArg(func, count, 0)) | 4801 gl_arg_strings.append(arg.GetValidGLArg(func, count, 0)) |
| 4801 gl_any_strings.append("_") | 4802 gl_any_strings.append("_") |
| 4802 extra = { | 4803 extra = { |
| 4803 'data_ref': ("*" if func.GetInfo('first_element_only') else ""), | 4804 'data_ref': ("*" if func.GetInfo('first_element_only') else ""), |
| 4804 'data_type': func.GetInfo('data_type'), | 4805 'data_type': self.GetArrayType(func), |
| 4805 'data_count': func.GetInfo('count'), | 4806 'data_count': self.GetArrayCount(func), |
| 4806 'data_value': func.GetInfo('data_value') or '0', | 4807 'data_value': func.GetInfo('data_value') or '0', |
| 4807 'gl_args': ", ".join(gl_arg_strings), | 4808 'gl_args': ", ".join(gl_arg_strings), |
| 4808 'gl_any_args': ", ".join(gl_any_strings), | 4809 'gl_any_args': ", ".join(gl_any_strings), |
| 4809 } | 4810 } |
| 4810 self.WriteValidUnitTest(func, file, valid_test, extra) | 4811 self.WriteValidUnitTest(func, file, valid_test, extra) |
| 4811 | 4812 |
| 4812 invalid_test = """ | 4813 invalid_test = """ |
| 4813 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { | 4814 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| 4814 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); | 4815 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); |
| 4815 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_any_args)s, _)).Times(0); | 4816 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_any_args)s, _)).Times(0); |
| 4816 SpecializedSetup<cmds::%(name)s, 0>(false); | 4817 SpecializedSetup<cmds::%(name)s, 0>(false); |
| 4817 %(data_type)s temp[%(data_count)s] = { %(data_value)s, }; | 4818 %(data_type)s temp[%(data_count)s] = { %(data_value)s, }; |
| 4818 cmd.Init(%(all_but_last_args)s, &temp[0]); | 4819 cmd.Init(%(all_but_last_args)s, &temp[0]); |
| 4819 EXPECT_EQ(error::%(parse_result)s, | 4820 EXPECT_EQ(error::%(parse_result)s, |
| 4820 ExecuteImmediateCmd(cmd, sizeof(temp)));%(gl_error_test)s | 4821 ExecuteImmediateCmd(cmd, sizeof(temp)));%(gl_error_test)s |
| 4821 } | 4822 } |
| 4822 """ | 4823 """ |
| 4823 self.WriteInvalidUnitTest(func, file, invalid_test, extra) | 4824 self.WriteInvalidUnitTest(func, file, invalid_test, extra) |
| 4824 | 4825 |
| 4825 def WriteGetDataSizeCode(self, func, file): | 4826 def WriteGetDataSizeCode(self, func, file): |
| 4826 """Overrriden from TypeHandler.""" | 4827 """Overrriden from TypeHandler.""" |
| 4827 code = """ uint32_t data_size; | 4828 code = """ uint32_t data_size; |
| 4828 if (!ComputeDataSize(1, sizeof(%s), %d, &data_size)) { | 4829 if (!ComputeDataSize(1, sizeof(%s), %d, &data_size)) { |
| 4829 return error::kOutOfBounds; | 4830 return error::kOutOfBounds; |
| 4830 } | 4831 } |
| 4831 """ | 4832 """ |
| 4832 file.Write(code % (func.info.data_type, func.info.count)) | 4833 file.Write(code % (self.GetArrayType(func), self.GetArrayCount(func))) |
| 4833 if func.is_immediate: | 4834 if func.is_immediate: |
| 4834 file.Write(" if (data_size > immediate_data_size) {\n") | 4835 file.Write(" if (data_size > immediate_data_size) {\n") |
| 4835 file.Write(" return error::kOutOfBounds;\n") | 4836 file.Write(" return error::kOutOfBounds;\n") |
| 4836 file.Write(" }\n") | 4837 file.Write(" }\n") |
| 4837 | 4838 |
| 4838 def WriteGLES2Implementation(self, func, file): | 4839 def WriteGLES2Implementation(self, func, file): |
| 4839 """Overrriden from TypeHandler.""" | 4840 """Overrriden from TypeHandler.""" |
| 4840 impl_func = func.GetInfo('impl_func') | 4841 impl_func = func.GetInfo('impl_func') |
| 4841 if (impl_func != None and impl_func != True): | 4842 if (impl_func != None and impl_func != True): |
| 4842 return; | 4843 return; |
| 4843 file.Write("%s GLES2Implementation::%s(%s) {\n" % | 4844 file.Write("%s GLES2Implementation::%s(%s) {\n" % |
| 4844 (func.return_type, func.original_name, | 4845 (func.return_type, func.original_name, |
| 4845 func.MakeTypedOriginalArgString(""))) | 4846 func.MakeTypedOriginalArgString(""))) |
| 4846 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") | 4847 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") |
| 4847 func.WriteDestinationInitalizationValidation(file) | 4848 func.WriteDestinationInitalizationValidation(file) |
| 4848 self.WriteClientGLCallLog(func, file) | 4849 self.WriteClientGLCallLog(func, file) |
| 4849 last_arg_name = func.GetLastOriginalArg().name | 4850 last_arg_name = func.GetLastOriginalArg().name |
| 4850 values_str = ' << ", " << '.join( | 4851 values_str = ' << ", " << '.join( |
| 4851 ["%s[%d]" % (last_arg_name, ndx) for ndx in range(0, func.info.count)]) | 4852 ["%s[%d]" % (last_arg_name, ndx) \ |
| 4853 for ndx in range(0, self.GetArrayCount(func))]) | |
| 4852 file.Write(' GPU_CLIENT_LOG("values: " << %s);\n' % values_str) | 4854 file.Write(' GPU_CLIENT_LOG("values: " << %s);\n' % values_str) |
| 4853 for arg in func.GetOriginalArgs(): | 4855 for arg in func.GetOriginalArgs(): |
| 4854 arg.WriteClientSideValidationCode(file, func) | 4856 arg.WriteClientSideValidationCode(file, func) |
| 4855 file.Write(" helper_->%sImmediate(%s);\n" % | 4857 file.Write(" helper_->%sImmediate(%s);\n" % |
| 4856 (func.name, func.MakeOriginalArgString(""))) | 4858 (func.name, func.MakeOriginalArgString(""))) |
| 4857 file.Write(" CheckGLError();\n") | 4859 file.Write(" CheckGLError();\n") |
| 4858 file.Write("}\n") | 4860 file.Write("}\n") |
| 4859 file.Write("\n") | 4861 file.Write("\n") |
| 4860 | 4862 |
| 4861 def WriteGLES2ImplementationUnitTest(self, func, file): | 4863 def WriteGLES2ImplementationUnitTest(self, func, file): |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 4881 } | 4883 } |
| 4882 """ | 4884 """ |
| 4883 cmd_arg_strings = [] | 4885 cmd_arg_strings = [] |
| 4884 for count, arg in enumerate(func.GetCmdArgs()[0:-2]): | 4886 for count, arg in enumerate(func.GetCmdArgs()[0:-2]): |
| 4885 cmd_arg_strings.append(arg.GetValidClientSideCmdArg(func, count, 0)) | 4887 cmd_arg_strings.append(arg.GetValidClientSideCmdArg(func, count, 0)) |
| 4886 gl_arg_strings = [] | 4888 gl_arg_strings = [] |
| 4887 for count, arg in enumerate(func.GetOriginalArgs()[0:-1]): | 4889 for count, arg in enumerate(func.GetOriginalArgs()[0:-1]): |
| 4888 gl_arg_strings.append(arg.GetValidClientSideArg(func, count, 0)) | 4890 gl_arg_strings.append(arg.GetValidClientSideArg(func, count, 0)) |
| 4889 file.Write(code % { | 4891 file.Write(code % { |
| 4890 'name': func.name, | 4892 'name': func.name, |
| 4891 'type': func.GetInfo('data_type'), | 4893 'type': self.GetArrayType(func), |
| 4892 'count': func.GetInfo('count'), | 4894 'count': self.GetArrayCount(func), |
| 4893 'args': ", ".join(gl_arg_strings), | 4895 'args': ", ".join(gl_arg_strings), |
| 4894 'cmd_args': ", ".join(cmd_arg_strings), | 4896 'cmd_args': ", ".join(cmd_arg_strings), |
| 4895 }) | 4897 }) |
| 4896 | 4898 |
| 4897 def WriteImmediateCmdComputeSize(self, func, file): | 4899 def WriteImmediateCmdComputeSize(self, func, file): |
| 4898 """Overrriden from TypeHandler.""" | 4900 """Overrriden from TypeHandler.""" |
| 4899 file.Write(" static uint32_t ComputeDataSize() {\n") | 4901 file.Write(" static uint32_t ComputeDataSize() {\n") |
| 4900 file.Write(" return static_cast<uint32_t>(\n") | 4902 file.Write(" return static_cast<uint32_t>(\n") |
| 4901 file.Write(" sizeof(%s) * %d); // NOLINT\n" % | 4903 file.Write(" sizeof(%s) * %d); // NOLINT\n" % |
| 4902 (func.info.data_type, func.info.count)) | 4904 (self.GetArrayType(func), self.GetArrayCount(func))) |
| 4903 file.Write(" }\n") | 4905 file.Write(" }\n") |
| 4904 file.Write("\n") | 4906 file.Write("\n") |
| 4905 file.Write(" static uint32_t ComputeSize() {\n") | 4907 file.Write(" static uint32_t ComputeSize() {\n") |
| 4906 file.Write(" return static_cast<uint32_t>(\n") | 4908 file.Write(" return static_cast<uint32_t>(\n") |
| 4907 file.Write( | 4909 file.Write( |
| 4908 " sizeof(ValueType) + ComputeDataSize()); // NOLINT\n") | 4910 " sizeof(ValueType) + ComputeDataSize()); // NOLINT\n") |
| 4909 file.Write(" }\n") | 4911 file.Write(" }\n") |
| 4910 file.Write("\n") | 4912 file.Write("\n") |
| 4911 | 4913 |
| 4912 def WriteImmediateCmdSetHeader(self, func, file): | 4914 def WriteImmediateCmdSetHeader(self, func, file): |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4962 file.Write(code % { | 4964 file.Write(code % { |
| 4963 "name": func.name, | 4965 "name": func.name, |
| 4964 "typed_args": func.MakeTypedOriginalArgString(""), | 4966 "typed_args": func.MakeTypedOriginalArgString(""), |
| 4965 "args": func.MakeOriginalArgString(""), | 4967 "args": func.MakeOriginalArgString(""), |
| 4966 }) | 4968 }) |
| 4967 | 4969 |
| 4968 def WriteImmediateFormatTest(self, func, file): | 4970 def WriteImmediateFormatTest(self, func, file): |
| 4969 """Overrriden from TypeHandler.""" | 4971 """Overrriden from TypeHandler.""" |
| 4970 file.Write("TEST_F(GLES2FormatTest, %s) {\n" % func.name) | 4972 file.Write("TEST_F(GLES2FormatTest, %s) {\n" % func.name) |
| 4971 file.Write(" const int kSomeBaseValueToTestWith = 51;\n") | 4973 file.Write(" const int kSomeBaseValueToTestWith = 51;\n") |
| 4972 file.Write(" static %s data[] = {\n" % func.info.data_type) | 4974 file.Write(" static %s data[] = {\n" % self.GetArrayType(func)) |
| 4973 for v in range(0, func.info.count): | 4975 for v in range(0, self.GetArrayCount(func)): |
| 4974 file.Write(" static_cast<%s>(kSomeBaseValueToTestWith + %d),\n" % | 4976 file.Write(" static_cast<%s>(kSomeBaseValueToTestWith + %d),\n" % |
| 4975 (func.info.data_type, v)) | 4977 (self.GetArrayType(func), v)) |
| 4976 file.Write(" };\n") | 4978 file.Write(" };\n") |
| 4977 file.Write(" cmds::%s& cmd = *GetBufferAs<cmds::%s>();\n" % | 4979 file.Write(" cmds::%s& cmd = *GetBufferAs<cmds::%s>();\n" % |
| 4978 (func.name, func.name)) | 4980 (func.name, func.name)) |
| 4979 file.Write(" void* next_cmd = cmd.Set(\n") | 4981 file.Write(" void* next_cmd = cmd.Set(\n") |
| 4980 file.Write(" &cmd") | 4982 file.Write(" &cmd") |
| 4981 args = func.GetCmdArgs() | 4983 args = func.GetCmdArgs() |
| 4982 for value, arg in enumerate(args): | 4984 for value, arg in enumerate(args): |
| 4983 file.Write(",\n static_cast<%s>(%d)" % (arg.type, value + 11)) | 4985 file.Write(",\n static_cast<%s>(%d)" % (arg.type, value + 11)) |
| 4984 file.Write(",\n data);\n") | 4986 file.Write(",\n data);\n") |
| 4985 args = func.GetCmdArgs() | 4987 args = func.GetCmdArgs() |
| 4986 file.Write(" EXPECT_EQ(static_cast<uint32_t>(cmds::%s::kCmdId),\n" | 4988 file.Write(" EXPECT_EQ(static_cast<uint32_t>(cmds::%s::kCmdId),\n" |
| 4987 % func.name) | 4989 % func.name) |
| 4988 file.Write(" cmd.header.command);\n") | 4990 file.Write(" cmd.header.command);\n") |
| 4989 file.Write(" EXPECT_EQ(sizeof(cmd) +\n") | 4991 file.Write(" EXPECT_EQ(sizeof(cmd) +\n") |
| 4990 file.Write(" RoundSizeToMultipleOfEntries(sizeof(data)),\n") | 4992 file.Write(" RoundSizeToMultipleOfEntries(sizeof(data)),\n") |
| 4991 file.Write(" cmd.header.size * 4u);\n") | 4993 file.Write(" cmd.header.size * 4u);\n") |
| 4992 for value, arg in enumerate(args): | 4994 for value, arg in enumerate(args): |
| 4993 file.Write(" EXPECT_EQ(static_cast<%s>(%d), cmd.%s);\n" % | 4995 file.Write(" EXPECT_EQ(static_cast<%s>(%d), cmd.%s);\n" % |
| 4994 (arg.type, value + 11, arg.name)) | 4996 (arg.type, value + 11, arg.name)) |
| 4995 file.Write(" CheckBytesWrittenMatchesExpectedSize(\n") | 4997 file.Write(" CheckBytesWrittenMatchesExpectedSize(\n") |
| 4996 file.Write(" next_cmd, sizeof(cmd) +\n") | 4998 file.Write(" next_cmd, sizeof(cmd) +\n") |
| 4997 file.Write(" RoundSizeToMultipleOfEntries(sizeof(data)));\n") | 4999 file.Write(" RoundSizeToMultipleOfEntries(sizeof(data)));\n") |
| 4998 file.Write(" // TODO(gman): Check that data was inserted;\n") | 5000 file.Write(" // TODO(gman): Check that data was inserted;\n") |
| 4999 file.Write("}\n") | 5001 file.Write("}\n") |
| 5000 file.Write("\n") | 5002 file.Write("\n") |
| 5001 | 5003 |
| 5002 | 5004 |
| 5003 class PUTnHandler(TypeHandler): | 5005 class PUTnHandler(ArrayArgTypeHandler): |
| 5004 """Handler for PUTn 'glUniform__v' type functions.""" | 5006 """Handler for PUTn 'glUniform__v' type functions.""" |
| 5005 | 5007 |
| 5006 def __init__(self): | 5008 def __init__(self): |
| 5007 TypeHandler.__init__(self) | 5009 ArrayArgTypeHandler.__init__(self) |
| 5008 | 5010 |
| 5009 def WriteServiceUnitTest(self, func, file): | 5011 def WriteServiceUnitTest(self, func, file): |
| 5010 """Overridden from TypeHandler.""" | 5012 """Overridden from TypeHandler.""" |
| 5011 TypeHandler.WriteServiceUnitTest(self, func, file) | 5013 ArrayArgTypeHandler.WriteServiceUnitTest(self, func, file) |
| 5012 | 5014 |
| 5013 valid_test = """ | 5015 valid_test = """ |
| 5014 TEST_P(%(test_name)s, %(name)sValidArgsCountTooLarge) { | 5016 TEST_P(%(test_name)s, %(name)sValidArgsCountTooLarge) { |
| 5015 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)); | 5017 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)); |
| 5016 SpecializedSetup<cmds::%(name)s, 0>(true); | 5018 SpecializedSetup<cmds::%(name)s, 0>(true); |
| 5017 cmds::%(name)s cmd; | 5019 cmds::%(name)s cmd; |
| 5018 cmd.Init(%(args)s); | 5020 cmd.Init(%(args)s); |
| 5019 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 5021 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 5020 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 5022 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 5021 } | 5023 } |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5061 } | 5063 } |
| 5062 """ | 5064 """ |
| 5063 gl_arg_strings = [] | 5065 gl_arg_strings = [] |
| 5064 gl_any_strings = [] | 5066 gl_any_strings = [] |
| 5065 arg_strings = [] | 5067 arg_strings = [] |
| 5066 for count, arg in enumerate(func.GetOriginalArgs()[0:-1]): | 5068 for count, arg in enumerate(func.GetOriginalArgs()[0:-1]): |
| 5067 gl_arg_strings.append(arg.GetValidGLArg(func, count, 0)) | 5069 gl_arg_strings.append(arg.GetValidGLArg(func, count, 0)) |
| 5068 gl_any_strings.append("_") | 5070 gl_any_strings.append("_") |
| 5069 arg_strings.append(arg.GetValidArg(func, count, 0)) | 5071 arg_strings.append(arg.GetValidArg(func, count, 0)) |
| 5070 extra = { | 5072 extra = { |
| 5071 'data_type': func.GetInfo('data_type'), | 5073 'data_type': self.GetArrayType(func), |
| 5072 'data_count': func.GetInfo('count'), | 5074 'data_count': self.GetArrayCount(func), |
| 5073 'args': ", ".join(arg_strings), | 5075 'args': ", ".join(arg_strings), |
| 5074 'gl_args': ", ".join(gl_arg_strings), | 5076 'gl_args': ", ".join(gl_arg_strings), |
| 5075 'gl_any_args': ", ".join(gl_any_strings), | 5077 'gl_any_args': ", ".join(gl_any_strings), |
| 5076 } | 5078 } |
| 5077 self.WriteValidUnitTest(func, file, valid_test, extra) | 5079 self.WriteValidUnitTest(func, file, valid_test, extra) |
| 5078 | 5080 |
| 5079 invalid_test = """ | 5081 invalid_test = """ |
| 5080 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { | 5082 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| 5081 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); | 5083 cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); |
| 5082 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_any_args)s, _)).Times(0); | 5084 EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_any_args)s, _)).Times(0); |
| 5083 SpecializedSetup<cmds::%(name)s, 0>(false); | 5085 SpecializedSetup<cmds::%(name)s, 0>(false); |
| 5084 %(data_type)s temp[%(data_count)s * 2] = { 0, }; | 5086 %(data_type)s temp[%(data_count)s * 2] = { 0, }; |
| 5085 cmd.Init(%(all_but_last_args)s, &temp[0]); | 5087 cmd.Init(%(all_but_last_args)s, &temp[0]); |
| 5086 EXPECT_EQ(error::%(parse_result)s, | 5088 EXPECT_EQ(error::%(parse_result)s, |
| 5087 ExecuteImmediateCmd(cmd, sizeof(temp)));%(gl_error_test)s | 5089 ExecuteImmediateCmd(cmd, sizeof(temp)));%(gl_error_test)s |
| 5088 } | 5090 } |
| 5089 """ | 5091 """ |
| 5090 self.WriteInvalidUnitTest(func, file, invalid_test, extra) | 5092 self.WriteInvalidUnitTest(func, file, invalid_test, extra) |
| 5091 | 5093 |
| 5092 def WriteGetDataSizeCode(self, func, file): | 5094 def WriteGetDataSizeCode(self, func, file): |
| 5093 """Overrriden from TypeHandler.""" | 5095 """Overrriden from TypeHandler.""" |
| 5094 code = """ uint32_t data_size; | 5096 code = """ uint32_t data_size; |
| 5095 if (!ComputeDataSize(count, sizeof(%s), %d, &data_size)) { | 5097 if (!ComputeDataSize(count, sizeof(%s), %d, &data_size)) { |
| 5096 return error::kOutOfBounds; | 5098 return error::kOutOfBounds; |
| 5097 } | 5099 } |
| 5098 """ | 5100 """ |
| 5099 file.Write(code % (func.info.data_type, func.info.count)) | 5101 file.Write(code % (self.GetArrayType(func), self.GetArrayCount(func))) |
| 5100 if func.is_immediate: | 5102 if func.is_immediate: |
| 5101 file.Write(" if (data_size > immediate_data_size) {\n") | 5103 file.Write(" if (data_size > immediate_data_size) {\n") |
| 5102 file.Write(" return error::kOutOfBounds;\n") | 5104 file.Write(" return error::kOutOfBounds;\n") |
| 5103 file.Write(" }\n") | 5105 file.Write(" }\n") |
| 5104 | 5106 |
| 5105 def WriteGLES2Implementation(self, func, file): | 5107 def WriteGLES2Implementation(self, func, file): |
| 5106 """Overrriden from TypeHandler.""" | 5108 """Overrriden from TypeHandler.""" |
| 5107 file.Write("%s GLES2Implementation::%s(%s) {\n" % | 5109 file.Write("%s GLES2Implementation::%s(%s) {\n" % |
| 5108 (func.return_type, func.original_name, | 5110 (func.return_type, func.original_name, |
| 5109 func.MakeTypedOriginalArgString(""))) | 5111 func.MakeTypedOriginalArgString(""))) |
| 5110 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") | 5112 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") |
| 5111 func.WriteDestinationInitalizationValidation(file) | 5113 func.WriteDestinationInitalizationValidation(file) |
| 5112 self.WriteClientGLCallLog(func, file) | 5114 self.WriteClientGLCallLog(func, file) |
| 5113 last_arg_name = func.GetLastOriginalArg().name | 5115 last_arg_name = func.GetLastOriginalArg().name |
| 5114 file.Write(""" GPU_CLIENT_LOG_CODE_BLOCK({ | 5116 file.Write(""" GPU_CLIENT_LOG_CODE_BLOCK({ |
| 5115 for (GLsizei i = 0; i < count; ++i) { | 5117 for (GLsizei i = 0; i < count; ++i) { |
| 5116 """) | 5118 """) |
| 5117 values_str = ' << ", " << '.join( | 5119 values_str = ' << ", " << '.join( |
| 5118 ["%s[%d + i * %d]" % ( | 5120 ["%s[%d + i * %d]" % ( |
| 5119 last_arg_name, ndx, func.info.count) for ndx in range( | 5121 last_arg_name, ndx, self.GetArrayCount(func)) for ndx in range( |
| 5120 0, func.info.count)]) | 5122 0, self.GetArrayCount(func))]) |
| 5121 file.Write(' GPU_CLIENT_LOG(" " << i << ": " << %s);\n' % values_str) | 5123 file.Write(' GPU_CLIENT_LOG(" " << i << ": " << %s);\n' % values_str) |
| 5122 file.Write(" }\n });\n") | 5124 file.Write(" }\n });\n") |
| 5123 for arg in func.GetOriginalArgs(): | 5125 for arg in func.GetOriginalArgs(): |
| 5124 arg.WriteClientSideValidationCode(file, func) | 5126 arg.WriteClientSideValidationCode(file, func) |
| 5125 file.Write(" helper_->%sImmediate(%s);\n" % | 5127 file.Write(" helper_->%sImmediate(%s);\n" % |
| 5126 (func.name, func.MakeOriginalArgString(""))) | 5128 (func.name, func.MakeOriginalArgString(""))) |
| 5127 file.Write(" CheckGLError();\n") | 5129 file.Write(" CheckGLError();\n") |
| 5128 file.Write("}\n") | 5130 file.Write("}\n") |
| 5129 file.Write("\n") | 5131 file.Write("\n") |
| 5130 | 5132 |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 5153 for count, arg in enumerate(func.GetCmdArgs()[0:-2]): | 5155 for count, arg in enumerate(func.GetCmdArgs()[0:-2]): |
| 5154 cmd_arg_strings.append(arg.GetValidClientSideCmdArg(func, count, 0)) | 5156 cmd_arg_strings.append(arg.GetValidClientSideCmdArg(func, count, 0)) |
| 5155 gl_arg_strings = [] | 5157 gl_arg_strings = [] |
| 5156 count_param = 0 | 5158 count_param = 0 |
| 5157 for count, arg in enumerate(func.GetOriginalArgs()[0:-1]): | 5159 for count, arg in enumerate(func.GetOriginalArgs()[0:-1]): |
| 5158 gl_arg_strings.append(arg.GetValidClientSideArg(func, count, 0)) | 5160 gl_arg_strings.append(arg.GetValidClientSideArg(func, count, 0)) |
| 5159 if arg.name == "count": | 5161 if arg.name == "count": |
| 5160 count_param = int(arg.GetValidClientSideArg(func, count, 0)) | 5162 count_param = int(arg.GetValidClientSideArg(func, count, 0)) |
| 5161 file.Write(code % { | 5163 file.Write(code % { |
| 5162 'name': func.name, | 5164 'name': func.name, |
| 5163 'type': func.GetInfo('data_type'), | 5165 'type': self.GetArrayType(func), |
| 5164 'count': func.GetInfo('count'), | 5166 'count': self.GetArrayCount(func), |
| 5165 'args': ", ".join(gl_arg_strings), | 5167 'args': ", ".join(gl_arg_strings), |
| 5166 'cmd_args': ", ".join(cmd_arg_strings), | 5168 'cmd_args': ", ".join(cmd_arg_strings), |
| 5167 'count_param': count_param, | 5169 'count_param': count_param, |
| 5168 }) | 5170 }) |
| 5169 | 5171 |
| 5170 def WriteImmediateCmdComputeSize(self, func, file): | 5172 def WriteImmediateCmdComputeSize(self, func, file): |
| 5171 """Overrriden from TypeHandler.""" | 5173 """Overrriden from TypeHandler.""" |
| 5172 file.Write(" static uint32_t ComputeDataSize(GLsizei count) {\n") | 5174 file.Write(" static uint32_t ComputeDataSize(GLsizei count) {\n") |
| 5173 file.Write(" return static_cast<uint32_t>(\n") | 5175 file.Write(" return static_cast<uint32_t>(\n") |
| 5174 file.Write(" sizeof(%s) * %d * count); // NOLINT\n" % | 5176 file.Write(" sizeof(%s) * %d * count); // NOLINT\n" % |
| 5175 (func.info.data_type, func.info.count)) | 5177 (self.GetArrayType(func), self.GetArrayCount(func))) |
| 5176 file.Write(" }\n") | 5178 file.Write(" }\n") |
| 5177 file.Write("\n") | 5179 file.Write("\n") |
| 5178 file.Write(" static uint32_t ComputeSize(GLsizei count) {\n") | 5180 file.Write(" static uint32_t ComputeSize(GLsizei count) {\n") |
| 5179 file.Write(" return static_cast<uint32_t>(\n") | 5181 file.Write(" return static_cast<uint32_t>(\n") |
| 5180 file.Write( | 5182 file.Write( |
| 5181 " sizeof(ValueType) + ComputeDataSize(count)); // NOLINT\n") | 5183 " sizeof(ValueType) + ComputeDataSize(count)); // NOLINT\n") |
| 5182 file.Write(" }\n") | 5184 file.Write(" }\n") |
| 5183 file.Write("\n") | 5185 file.Write("\n") |
| 5184 | 5186 |
| 5185 def WriteImmediateCmdSetHeader(self, func, file): | 5187 def WriteImmediateCmdSetHeader(self, func, file): |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5240 | 5242 |
| 5241 def WriteImmediateFormatTest(self, func, file): | 5243 def WriteImmediateFormatTest(self, func, file): |
| 5242 """Overrriden from TypeHandler.""" | 5244 """Overrriden from TypeHandler.""" |
| 5243 args = func.GetCmdArgs() | 5245 args = func.GetCmdArgs() |
| 5244 count_param = 0 | 5246 count_param = 0 |
| 5245 for value, arg in enumerate(args): | 5247 for value, arg in enumerate(args): |
| 5246 if arg.name == "count": | 5248 if arg.name == "count": |
| 5247 count_param = int(arg.GetValidClientSideArg(func, value, 0)) | 5249 count_param = int(arg.GetValidClientSideArg(func, value, 0)) |
| 5248 file.Write("TEST_F(GLES2FormatTest, %s) {\n" % func.name) | 5250 file.Write("TEST_F(GLES2FormatTest, %s) {\n" % func.name) |
| 5249 file.Write(" const int kSomeBaseValueToTestWith = 51;\n") | 5251 file.Write(" const int kSomeBaseValueToTestWith = 51;\n") |
| 5250 file.Write(" static %s data[] = {\n" % func.info.data_type) | 5252 file.Write(" static %s data[] = {\n" % self.GetArrayType(func)) |
| 5251 for v in range(0, func.info.count * count_param): | 5253 for v in range(0, self.GetArrayCount(func) * count_param): |
| 5252 file.Write(" static_cast<%s>(kSomeBaseValueToTestWith + %d),\n" % | 5254 file.Write(" static_cast<%s>(kSomeBaseValueToTestWith + %d),\n" % |
| 5253 (func.info.data_type, v)) | 5255 (self.GetArrayType(func), v)) |
| 5254 file.Write(" };\n") | 5256 file.Write(" };\n") |
| 5255 file.Write(" cmds::%s& cmd = *GetBufferAs<cmds::%s>();\n" % | 5257 file.Write(" cmds::%s& cmd = *GetBufferAs<cmds::%s>();\n" % |
| 5256 (func.name, func.name)) | 5258 (func.name, func.name)) |
| 5257 file.Write(" const GLsizei kNumElements = %d;\n" % count_param) | 5259 file.Write(" const GLsizei kNumElements = %d;\n" % count_param) |
| 5258 file.Write(" const size_t kExpectedCmdSize =\n") | 5260 file.Write(" const size_t kExpectedCmdSize =\n") |
| 5259 file.Write(" sizeof(cmd) + kNumElements * sizeof(%s) * %d;\n" % | 5261 file.Write(" sizeof(cmd) + kNumElements * sizeof(%s) * %d;\n" % |
| 5260 (func.info.data_type, func.info.count)) | 5262 (self.GetArrayType(func), self.GetArrayCount(func))) |
| 5261 file.Write(" void* next_cmd = cmd.Set(\n") | 5263 file.Write(" void* next_cmd = cmd.Set(\n") |
| 5262 file.Write(" &cmd") | 5264 file.Write(" &cmd") |
| 5263 for value, arg in enumerate(args): | 5265 for value, arg in enumerate(args): |
| 5264 file.Write(",\n static_cast<%s>(%d)" % (arg.type, value + 1)) | 5266 file.Write(",\n static_cast<%s>(%d)" % (arg.type, value + 1)) |
| 5265 file.Write(",\n data);\n") | 5267 file.Write(",\n data);\n") |
| 5266 file.Write(" EXPECT_EQ(static_cast<uint32_t>(cmds::%s::kCmdId),\n" % | 5268 file.Write(" EXPECT_EQ(static_cast<uint32_t>(cmds::%s::kCmdId),\n" % |
| 5267 func.name) | 5269 func.name) |
| 5268 file.Write(" cmd.header.command);\n") | 5270 file.Write(" cmd.header.command);\n") |
| 5269 file.Write(" EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);\n") | 5271 file.Write(" EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);\n") |
| 5270 for value, arg in enumerate(args): | 5272 for value, arg in enumerate(args): |
| 5271 file.Write(" EXPECT_EQ(static_cast<%s>(%d), cmd.%s);\n" % | 5273 file.Write(" EXPECT_EQ(static_cast<%s>(%d), cmd.%s);\n" % |
| 5272 (arg.type, value + 1, arg.name)) | 5274 (arg.type, value + 1, arg.name)) |
| 5273 file.Write(" CheckBytesWrittenMatchesExpectedSize(\n") | 5275 file.Write(" CheckBytesWrittenMatchesExpectedSize(\n") |
| 5274 file.Write(" next_cmd, sizeof(cmd) +\n") | 5276 file.Write(" next_cmd, sizeof(cmd) +\n") |
| 5275 file.Write(" RoundSizeToMultipleOfEntries(sizeof(data)));\n") | 5277 file.Write(" RoundSizeToMultipleOfEntries(sizeof(data)));\n") |
| 5276 file.Write(" // TODO(gman): Check that data was inserted;\n") | 5278 file.Write(" // TODO(gman): Check that data was inserted;\n") |
| 5277 file.Write("}\n") | 5279 file.Write("}\n") |
| 5278 file.Write("\n") | 5280 file.Write("\n") |
| 5279 | 5281 |
| 5280 | 5282 |
| 5281 class PUTXnHandler(TypeHandler): | 5283 class PUTXnHandler(ArrayArgTypeHandler): |
| 5282 """Handler for glUniform?f functions.""" | 5284 """Handler for glUniform?f functions.""" |
| 5283 def __init__(self): | 5285 def __init__(self): |
| 5284 TypeHandler.__init__(self) | 5286 ArrayArgTypeHandler.__init__(self) |
| 5285 | 5287 |
| 5286 def WriteHandlerImplementation(self, func, file): | 5288 def WriteHandlerImplementation(self, func, file): |
| 5287 """Overrriden from TypeHandler.""" | 5289 """Overrriden from TypeHandler.""" |
| 5288 code = """ %(type)s temp[%(count)s] = { %(values)s}; | 5290 code = """ %(type)s temp[%(count)s] = { %(values)s}; |
| 5289 Do%(name)sv(%(location)s, 1, &temp[0]); | 5291 Do%(name)sv(%(location)s, 1, &temp[0]); |
| 5290 """ | 5292 """ |
| 5291 values = "" | 5293 values = "" |
| 5292 args = func.GetOriginalArgs() | 5294 args = func.GetOriginalArgs() |
| 5293 count = int(func.GetInfo('count')) | 5295 count = int(self.GetArrayCount(func)) |
| 5294 num_args = len(args) | 5296 num_args = len(args) |
| 5295 for ii in range(count): | 5297 for ii in range(count): |
| 5296 values += "%s, " % args[len(args) - count + ii].name | 5298 values += "%s, " % args[len(args) - count + ii].name |
| 5297 | 5299 |
| 5298 file.Write(code % { | 5300 file.Write(code % { |
| 5299 'name': func.name, | 5301 'name': func.name, |
| 5300 'count': func.GetInfo('count'), | 5302 'count': self.GetArrayCount(func), |
| 5301 'type': func.GetInfo('data_type'), | 5303 'type': self.GetArrayType(func), |
| 5302 'location': args[0].name, | 5304 'location': args[0].name, |
| 5303 'args': func.MakeOriginalArgString(""), | 5305 'args': func.MakeOriginalArgString(""), |
| 5304 'values': values, | 5306 'values': values, |
| 5305 }) | 5307 }) |
| 5306 | 5308 |
| 5307 def WriteServiceUnitTest(self, func, file): | 5309 def WriteServiceUnitTest(self, func, file): |
| 5308 """Overrriden from TypeHandler.""" | 5310 """Overrriden from TypeHandler.""" |
| 5309 valid_test = """ | 5311 valid_test = """ |
| 5310 TEST_P(%(test_name)s, %(name)sValidArgs) { | 5312 TEST_P(%(test_name)s, %(name)sValidArgs) { |
| 5311 EXPECT_CALL(*gl_, %(name)sv(%(local_args)s)); | 5313 EXPECT_CALL(*gl_, %(name)sv(%(local_args)s)); |
| 5312 SpecializedSetup<cmds::%(name)s, 0>(true); | 5314 SpecializedSetup<cmds::%(name)s, 0>(true); |
| 5313 cmds::%(name)s cmd; | 5315 cmds::%(name)s cmd; |
| 5314 cmd.Init(%(args)s); | 5316 cmd.Init(%(args)s); |
| 5315 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 5317 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 5316 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 5318 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 5317 } | 5319 } |
| 5318 """ | 5320 """ |
| 5319 args = func.GetOriginalArgs() | 5321 args = func.GetOriginalArgs() |
| 5320 local_args = "%s, 1, _" % args[0].GetValidGLArg(func, 0, 0) | 5322 local_args = "%s, 1, _" % args[0].GetValidGLArg(func, 0, 0) |
| 5321 self.WriteValidUnitTest(func, file, valid_test, { | 5323 self.WriteValidUnitTest(func, file, valid_test, { |
| 5322 'name': func.name, | 5324 'name': func.name, |
| 5323 'count': func.GetInfo('count'), | 5325 'count': self.GetArrayCount(func), |
| 5324 'local_args': local_args, | 5326 'local_args': local_args, |
| 5325 }) | 5327 }) |
| 5326 | 5328 |
| 5327 invalid_test = """ | 5329 invalid_test = """ |
| 5328 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { | 5330 TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| 5329 EXPECT_CALL(*gl_, %(name)sv(_, _, _).Times(0); | 5331 EXPECT_CALL(*gl_, %(name)sv(_, _, _).Times(0); |
| 5330 SpecializedSetup<cmds::%(name)s, 0>(false); | 5332 SpecializedSetup<cmds::%(name)s, 0>(false); |
| 5331 cmds::%(name)s cmd; | 5333 cmds::%(name)s cmd; |
| 5332 cmd.Init(%(args)s); | 5334 cmd.Init(%(args)s); |
| 5333 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s | 5335 EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s |
| 5334 } | 5336 } |
| 5335 """ | 5337 """ |
| 5336 self.WriteInvalidUnitTest(func, file, invalid_test, { | 5338 self.WriteInvalidUnitTest(func, file, invalid_test, { |
| 5337 'name': func.GetInfo('name'), | 5339 'name': func.GetInfo('name'), |
| 5338 'count': func.GetInfo('count'), | 5340 'count': self.GetArrayCount(func), |
| 5339 }) | 5341 }) |
| 5340 | 5342 |
| 5341 | 5343 |
| 5342 class GLcharHandler(CustomHandler): | 5344 class GLcharHandler(CustomHandler): |
| 5343 """Handler for functions that pass a single string .""" | 5345 """Handler for functions that pass a single string .""" |
| 5344 | 5346 |
| 5345 def __init__(self): | 5347 def __init__(self): |
| 5346 CustomHandler.__init__(self) | 5348 CustomHandler.__init__(self) |
| 5347 | 5349 |
| 5348 def WriteImmediateCmdComputeSize(self, func, file): | 5350 def WriteImmediateCmdComputeSize(self, func, file): |
| (...skipping 759 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6108 | 6110 |
| 6109 class ImmediatePointerArgument(Argument): | 6111 class ImmediatePointerArgument(Argument): |
| 6110 """A class that represents an immediate argument to a function. | 6112 """A class that represents an immediate argument to a function. |
| 6111 | 6113 |
| 6112 An immediate argument is one where the data follows the command. | 6114 An immediate argument is one where the data follows the command. |
| 6113 """ | 6115 """ |
| 6114 | 6116 |
| 6115 def __init__(self, name, type): | 6117 def __init__(self, name, type): |
| 6116 Argument.__init__(self, name, type) | 6118 Argument.__init__(self, name, type) |
| 6117 | 6119 |
| 6120 def IsPointer(self): | |
| 6121 return True | |
| 6122 | |
| 6123 def GetPointedType(self): | |
| 6124 if "const " in self.type: | |
| 6125 element_type = self.type[6:-1] | |
| 6126 else: | |
| 6127 element_type = self.type[:-1] | |
| 6128 return element_type | |
| 6129 | |
|
vmiura
2014/05/09 18:32:23
nit: Can we make it more robust with a regex?
m
Kimmo Kinnunen
2014/05/12 10:31:44
Done.
| |
| 6118 def AddCmdArgs(self, args): | 6130 def AddCmdArgs(self, args): |
| 6119 """Overridden from Argument.""" | 6131 """Overridden from Argument.""" |
| 6120 pass | 6132 pass |
| 6121 | 6133 |
| 6122 def WriteGetCode(self, file): | 6134 def WriteGetCode(self, file): |
| 6123 """Overridden from Argument.""" | 6135 """Overridden from Argument.""" |
| 6124 file.Write( | 6136 file.Write( |
| 6125 " %s %s = GetImmediateDataAs<%s>(\n" % | 6137 " %s %s = GetImmediateDataAs<%s>(\n" % |
| 6126 (self.type, self.name, self.type)) | 6138 (self.type, self.name, self.type)) |
| 6127 file.Write(" c, data_size, immediate_data_size);\n") | 6139 file.Write(" c, data_size, immediate_data_size);\n") |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6181 class PointerArgument(Argument): | 6193 class PointerArgument(Argument): |
| 6182 """A class that represents a pointer argument to a function.""" | 6194 """A class that represents a pointer argument to a function.""" |
| 6183 | 6195 |
| 6184 def __init__(self, name, type): | 6196 def __init__(self, name, type): |
| 6185 Argument.__init__(self, name, type) | 6197 Argument.__init__(self, name, type) |
| 6186 | 6198 |
| 6187 def IsPointer(self): | 6199 def IsPointer(self): |
| 6188 """Returns true if argument is a pointer.""" | 6200 """Returns true if argument is a pointer.""" |
| 6189 return True | 6201 return True |
| 6190 | 6202 |
| 6203 def GetPointedType(self): | |
| 6204 if "const " in self.type: | |
| 6205 element_type = self.type[6:-1] | |
| 6206 else: | |
| 6207 element_type = self.type[:-1] | |
| 6208 return element_type | |
| 6209 | |
|
vmiura
2014/05/09 18:32:23
nit: same as above.
Kimmo Kinnunen
2014/05/12 10:31:44
Done.
| |
| 6191 def GetValidArg(self, func, offset, index): | 6210 def GetValidArg(self, func, offset, index): |
| 6192 """Overridden from Argument.""" | 6211 """Overridden from Argument.""" |
| 6193 return "shared_memory_id_, shared_memory_offset_" | 6212 return "shared_memory_id_, shared_memory_offset_" |
| 6194 | 6213 |
| 6195 def GetValidGLArg(self, func, offset, index): | 6214 def GetValidGLArg(self, func, offset, index): |
| 6196 """Overridden from Argument.""" | 6215 """Overridden from Argument.""" |
| 6197 return "reinterpret_cast<%s>(shared_memory_address_)" % self.type | 6216 return "reinterpret_cast<%s>(shared_memory_address_)" % self.type |
| 6198 | 6217 |
| 6199 def GetNumInvalidValues(self, func): | 6218 def GetNumInvalidValues(self, func): |
| 6200 """Overridden from Argument.""" | 6219 """Overridden from Argument.""" |
| (...skipping 1865 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8066 "ppapi/shared_impl/ppb_opengles2_shared.cc"]) | 8085 "ppapi/shared_impl/ppb_opengles2_shared.cc"]) |
| 8067 | 8086 |
| 8068 if gen.errors > 0: | 8087 if gen.errors > 0: |
| 8069 print "%d errors" % gen.errors | 8088 print "%d errors" % gen.errors |
| 8070 return 1 | 8089 return 1 |
| 8071 return 0 | 8090 return 0 |
| 8072 | 8091 |
| 8073 | 8092 |
| 8074 if __name__ == '__main__': | 8093 if __name__ == '__main__': |
| 8075 sys.exit(main(sys.argv[1:])) | 8094 sys.exit(main(sys.argv[1:])) |
| OLD | NEW |