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 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 | 60 |
61 # Capabilites selected with glEnable | 61 # Capabilites selected with glEnable |
62 _CAPABILITY_FLAGS = [ | 62 _CAPABILITY_FLAGS = [ |
63 {'name': 'blend'}, | 63 {'name': 'blend'}, |
64 {'name': 'cull_face'}, | 64 {'name': 'cull_face'}, |
65 {'name': 'depth_test', 'state_flag': 'clear_state_dirty_'}, | 65 {'name': 'depth_test', 'state_flag': 'clear_state_dirty_'}, |
66 {'name': 'dither', 'default': True}, | 66 {'name': 'dither', 'default': True}, |
67 {'name': 'polygon_offset_fill'}, | 67 {'name': 'polygon_offset_fill'}, |
68 {'name': 'sample_alpha_to_coverage'}, | 68 {'name': 'sample_alpha_to_coverage'}, |
69 {'name': 'sample_coverage'}, | 69 {'name': 'sample_coverage'}, |
70 {'name': 'scissor_test'}, | 70 {'name': 'scissor_test', 'state_flag': 'clear_state_dirty_'}, |
71 {'name': 'stencil_test', 'state_flag': 'clear_state_dirty_'}, | 71 {'name': 'stencil_test', 'state_flag': 'clear_state_dirty_'}, |
72 ] | 72 ] |
73 | 73 |
74 _STATES = { | 74 _STATES = { |
75 'ClearColor': { | 75 'ClearColor': { |
76 'type': 'Normal', | 76 'type': 'Normal', |
77 'func': 'ClearColor', | 77 'func': 'ClearColor', |
78 'enum': 'GL_COLOR_CLEAR_VALUE', | 78 'enum': 'GL_COLOR_CLEAR_VALUE', |
79 'states': [ | 79 'states': [ |
80 {'name': 'color_clear_red', 'type': 'GLfloat', 'default': '0.0f'}, | 80 {'name': 'color_clear_red', 'type': 'GLfloat', 'default': '0.0f'}, |
(...skipping 1123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1204 }, | 1204 }, |
1205 'ClearColor': { | 1205 'ClearColor': { |
1206 'type': 'StateSet', | 1206 'type': 'StateSet', |
1207 'state': 'ClearColor', | 1207 'state': 'ClearColor', |
1208 }, | 1208 }, |
1209 'ClearDepthf': { | 1209 'ClearDepthf': { |
1210 'type': 'StateSet', | 1210 'type': 'StateSet', |
1211 'state': 'ClearDepthf', | 1211 'state': 'ClearDepthf', |
1212 'decoder_func': 'glClearDepth', | 1212 'decoder_func': 'glClearDepth', |
1213 'gl_test_func': 'glClearDepth', | 1213 'gl_test_func': 'glClearDepth', |
| 1214 'valid_args': { |
| 1215 '0': '0.5f' |
| 1216 }, |
1214 }, | 1217 }, |
1215 'ColorMask': { | 1218 'ColorMask': { |
1216 'type': 'StateSet', | 1219 'type': 'StateSet', |
1217 'state': 'ColorMask', | 1220 'state': 'ColorMask', |
1218 'no_gl': True, | 1221 'no_gl': True, |
1219 'expectation': False, | 1222 'expectation': False, |
1220 }, | 1223 }, |
1221 'ConsumeTextureCHROMIUM': { | 1224 'ConsumeTextureCHROMIUM': { |
1222 'decoder_func': 'DoConsumeTextureCHROMIUM', | 1225 'decoder_func': 'DoConsumeTextureCHROMIUM', |
1223 'type': 'PUT', | 1226 'type': 'PUT', |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1268 'type': 'Create', | 1271 'type': 'Create', |
1269 'client_test': False, | 1272 'client_test': False, |
1270 }, | 1273 }, |
1271 'BlendColor': { | 1274 'BlendColor': { |
1272 'type': 'StateSet', | 1275 'type': 'StateSet', |
1273 'state': 'BlendColor', | 1276 'state': 'BlendColor', |
1274 }, | 1277 }, |
1275 'BlendEquation': { | 1278 'BlendEquation': { |
1276 'type': 'StateSetRGBAlpha', | 1279 'type': 'StateSetRGBAlpha', |
1277 'state': 'BlendEquation', | 1280 'state': 'BlendEquation', |
| 1281 'valid_args': { |
| 1282 '0': 'GL_FUNC_SUBTRACT' |
| 1283 }, |
1278 }, | 1284 }, |
1279 'BlendEquationSeparate': { | 1285 'BlendEquationSeparate': { |
1280 'type': 'StateSet', | 1286 'type': 'StateSet', |
1281 'state': 'BlendEquation', | 1287 'state': 'BlendEquation', |
| 1288 'valid_args': { |
| 1289 '0': 'GL_FUNC_SUBTRACT' |
| 1290 }, |
1282 }, | 1291 }, |
1283 'BlendFunc': { | 1292 'BlendFunc': { |
1284 'type': 'StateSetRGBAlpha', | 1293 'type': 'StateSetRGBAlpha', |
1285 'state': 'BlendFunc', | 1294 'state': 'BlendFunc', |
1286 }, | 1295 }, |
1287 'BlendFuncSeparate': { | 1296 'BlendFuncSeparate': { |
1288 'type': 'StateSet', | 1297 'type': 'StateSet', |
1289 'state': 'BlendFunc', | 1298 'state': 'BlendFunc', |
1290 }, | 1299 }, |
1291 'SampleCoverage': {'decoder_func': 'DoSampleCoverage'}, | 1300 'SampleCoverage': {'decoder_func': 'DoSampleCoverage'}, |
1292 'StencilFunc': { | 1301 'StencilFunc': { |
1293 'type': 'StencilFrontBack', | 1302 'type': 'StateSetFrontBack', |
1294 'state': 'StencilFunc', | 1303 'state': 'StencilFunc', |
1295 }, | 1304 }, |
1296 'StencilFuncSeparate': { | 1305 'StencilFuncSeparate': { |
1297 'type': 'StencilFrontBack', | 1306 'type': 'StateSetFrontBackSeparate', |
1298 'state': 'StencilFunc', | 1307 'state': 'StencilFunc', |
1299 }, | 1308 }, |
1300 'StencilOp': { | 1309 'StencilOp': { |
1301 'type': 'StateSetFrontBack', | 1310 'type': 'StateSetFrontBack', |
1302 'state': 'StencilOp', | 1311 'state': 'StencilOp', |
| 1312 'valid_args': { |
| 1313 '1': 'GL_INCR' |
| 1314 }, |
1303 }, | 1315 }, |
1304 'StencilOpSeparate': { | 1316 'StencilOpSeparate': { |
1305 'type': 'StateSetFrontBackSeparate', | 1317 'type': 'StateSetFrontBackSeparate', |
1306 'state': 'StencilOp', | 1318 'state': 'StencilOp', |
| 1319 'valid_args': { |
| 1320 '1': 'GL_INCR' |
| 1321 }, |
1307 }, | 1322 }, |
1308 'Hint': {'decoder_func': 'DoHint'}, | 1323 'Hint': {'decoder_func': 'DoHint'}, |
1309 'CullFace': {'type': 'StateSet', 'state': 'CullFace'}, | 1324 'CullFace': {'type': 'StateSet', 'state': 'CullFace'}, |
1310 'FrontFace': {'type': 'StateSet', 'state': 'FrontFace'}, | 1325 'FrontFace': {'type': 'StateSet', 'state': 'FrontFace'}, |
1311 'DepthFunc': {'type': 'StateSet', 'state': 'DepthFunc'}, | 1326 'DepthFunc': {'type': 'StateSet', 'state': 'DepthFunc'}, |
1312 'LineWidth': {'type': 'StateSet', 'state': 'LineWidth'}, | 1327 'LineWidth': { |
| 1328 'type': 'StateSet', |
| 1329 'state': 'LineWidth', |
| 1330 'valid_args': { |
| 1331 '0': '0.5f' |
| 1332 }, |
| 1333 }, |
1313 'PolygonOffset': { | 1334 'PolygonOffset': { |
1314 'type': 'StateSet', | 1335 'type': 'StateSet', |
1315 'state': 'PolygonOffset', | 1336 'state': 'PolygonOffset', |
1316 }, | 1337 }, |
1317 'DeleteBuffers': { | 1338 'DeleteBuffers': { |
1318 'type': 'DELn', | 1339 'type': 'DELn', |
1319 'gl_test_func': 'glDeleteBuffersARB', | 1340 'gl_test_func': 'glDeleteBuffersARB', |
1320 'resource_type': 'Buffer', | 1341 'resource_type': 'Buffer', |
1321 'resource_types': 'Buffers', | 1342 'resource_types': 'Buffers', |
1322 }, | 1343 }, |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1355 'DepthMask': { | 1376 'DepthMask': { |
1356 'type': 'StateSet', | 1377 'type': 'StateSet', |
1357 'state': 'DepthMask', | 1378 'state': 'DepthMask', |
1358 'no_gl': True, | 1379 'no_gl': True, |
1359 'expectation': False, | 1380 'expectation': False, |
1360 }, | 1381 }, |
1361 'DetachShader': {'decoder_func': 'DoDetachShader'}, | 1382 'DetachShader': {'decoder_func': 'DoDetachShader'}, |
1362 'Disable': { | 1383 'Disable': { |
1363 'decoder_func': 'DoDisable', | 1384 'decoder_func': 'DoDisable', |
1364 'impl_func': False, | 1385 'impl_func': False, |
| 1386 'client_test': False, |
1365 }, | 1387 }, |
1366 'DisableVertexAttribArray': { | 1388 'DisableVertexAttribArray': { |
1367 'decoder_func': 'DoDisableVertexAttribArray', | 1389 'decoder_func': 'DoDisableVertexAttribArray', |
1368 'impl_decl': False, | 1390 'impl_decl': False, |
1369 }, | 1391 }, |
1370 'DrawArrays': { | 1392 'DrawArrays': { |
1371 'type': 'Manual', | 1393 'type': 'Manual', |
1372 'cmd_args': 'GLenumDrawMode mode, GLint first, GLsizei count', | 1394 'cmd_args': 'GLenumDrawMode mode, GLint first, GLsizei count', |
1373 }, | 1395 }, |
1374 'DrawElements': { | 1396 'DrawElements': { |
1375 'type': 'Manual', | 1397 'type': 'Manual', |
1376 'cmd_args': 'GLenumDrawMode mode, GLsizei count, ' | 1398 'cmd_args': 'GLenumDrawMode mode, GLsizei count, ' |
1377 'GLenumIndexType type, GLuint index_offset', | 1399 'GLenumIndexType type, GLuint index_offset', |
1378 'client_test': False | 1400 'client_test': False |
1379 }, | 1401 }, |
1380 'Enable': { | 1402 'Enable': { |
1381 'decoder_func': 'DoEnable', | 1403 'decoder_func': 'DoEnable', |
1382 'impl_func': False, | 1404 'impl_func': False, |
| 1405 'client_test': False, |
1383 }, | 1406 }, |
1384 'EnableVertexAttribArray': { | 1407 'EnableVertexAttribArray': { |
1385 'decoder_func': 'DoEnableVertexAttribArray', | 1408 'decoder_func': 'DoEnableVertexAttribArray', |
1386 'impl_decl': False, | 1409 'impl_decl': False, |
1387 }, | 1410 }, |
1388 'Finish': { | 1411 'Finish': { |
1389 'impl_func': False, | 1412 'impl_func': False, |
1390 'client_test': False, | 1413 'client_test': False, |
1391 'decoder_func': 'DoFinish', | 1414 'decoder_func': 'DoFinish', |
1392 }, | 1415 }, |
(...skipping 536 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1929 'client_test': False, | 1952 'client_test': False, |
1930 'pepper_interface': 'ChromiumMapSub', | 1953 'pepper_interface': 'ChromiumMapSub', |
1931 }, | 1954 }, |
1932 'UnmapTexSubImage2DCHROMIUM': { | 1955 'UnmapTexSubImage2DCHROMIUM': { |
1933 'gen_cmd': False, | 1956 'gen_cmd': False, |
1934 'extension': True, | 1957 'extension': True, |
1935 'chromium': True, | 1958 'chromium': True, |
1936 'client_test': False, | 1959 'client_test': False, |
1937 'pepper_interface': 'ChromiumMapSub', | 1960 'pepper_interface': 'ChromiumMapSub', |
1938 }, | 1961 }, |
1939 'UseProgram': {'decoder_func': 'DoUseProgram', 'unit_test': False}, | 1962 'UseProgram': { |
| 1963 'decoder_func': 'DoUseProgram', |
| 1964 'impl_func': False, |
| 1965 'unit_test': False, |
| 1966 }, |
1940 'ValidateProgram': {'decoder_func': 'DoValidateProgram'}, | 1967 'ValidateProgram': {'decoder_func': 'DoValidateProgram'}, |
1941 'VertexAttrib1f': {'decoder_func': 'DoVertexAttrib1f'}, | 1968 'VertexAttrib1f': {'decoder_func': 'DoVertexAttrib1f'}, |
1942 'VertexAttrib1fv': { | 1969 'VertexAttrib1fv': { |
1943 'type': 'PUT', | 1970 'type': 'PUT', |
1944 'data_type': 'GLfloat', | 1971 'data_type': 'GLfloat', |
1945 'count': 1, | 1972 'count': 1, |
1946 'decoder_func': 'DoVertexAttrib1fv', | 1973 'decoder_func': 'DoVertexAttrib1fv', |
1947 }, | 1974 }, |
1948 'VertexAttrib2f': {'decoder_func': 'DoVertexAttrib2f'}, | 1975 'VertexAttrib2f': {'decoder_func': 'DoVertexAttrib2f'}, |
1949 'VertexAttrib2fv': { | 1976 'VertexAttrib2fv': { |
(...skipping 893 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2843 | 2870 |
2844 def __init__(self): | 2871 def __init__(self): |
2845 TypeHandler.__init__(self) | 2872 TypeHandler.__init__(self) |
2846 | 2873 |
2847 def WriteHandlerImplementation(self, func, file): | 2874 def WriteHandlerImplementation(self, func, file): |
2848 """Overrriden from TypeHandler.""" | 2875 """Overrriden from TypeHandler.""" |
2849 state_name = func.GetInfo('state') | 2876 state_name = func.GetInfo('state') |
2850 state = _STATES[state_name] | 2877 state = _STATES[state_name] |
2851 states = state['states'] | 2878 states = state['states'] |
2852 args = func.GetOriginalArgs() | 2879 args = func.GetOriginalArgs() |
| 2880 code = [] |
2853 for ndx,item in enumerate(states): | 2881 for ndx,item in enumerate(states): |
2854 file.Write(" state_.%s = %s;\n" % (item['name'], args[ndx].name)) | 2882 code.append("state_.%s != %s" % (item['name'], args[ndx].name)) |
| 2883 file.Write(" if (%s) {\n" % " ||\n ".join(code)) |
| 2884 for ndx,item in enumerate(states): |
| 2885 file.Write(" state_.%s = %s;\n" % (item['name'], args[ndx].name)) |
2855 if 'state_flag' in state: | 2886 if 'state_flag' in state: |
2856 file.Write(" %s = true;\n" % state['state_flag']) | 2887 file.Write(" %s = true;\n" % state['state_flag']) |
2857 if not func.GetInfo("no_gl"): | 2888 if not func.GetInfo("no_gl"): |
2858 file.Write(" %s(%s);\n" % | 2889 file.Write(" %s(%s);\n" % |
2859 (func.GetGLFunctionName(), func.MakeOriginalArgString(""))) | 2890 (func.GetGLFunctionName(), func.MakeOriginalArgString(""))) |
| 2891 file.Write(" }\n") |
2860 | 2892 |
2861 | 2893 |
2862 class StateSetRGBAlphaHandler(TypeHandler): | 2894 class StateSetRGBAlphaHandler(TypeHandler): |
2863 """Handler for commands that simply set state that have rgb/alpha.""" | 2895 """Handler for commands that simply set state that have rgb/alpha.""" |
2864 | 2896 |
2865 def __init__(self): | 2897 def __init__(self): |
2866 TypeHandler.__init__(self) | 2898 TypeHandler.__init__(self) |
2867 | 2899 |
2868 def WriteHandlerImplementation(self, func, file): | 2900 def WriteHandlerImplementation(self, func, file): |
2869 """Overrriden from TypeHandler.""" | 2901 """Overrriden from TypeHandler.""" |
2870 state_name = func.GetInfo('state') | 2902 state_name = func.GetInfo('state') |
2871 state = _STATES[state_name] | 2903 state = _STATES[state_name] |
2872 states = state['states'] | 2904 states = state['states'] |
2873 args = func.GetOriginalArgs() | 2905 args = func.GetOriginalArgs() |
2874 num_args = len(args) | 2906 num_args = len(args) |
2875 for ndx, item in enumerate(states): | 2907 code = [] |
2876 file.Write(" state_.%s = %s;\n" % | 2908 for ndx,item in enumerate(states): |
| 2909 code.append("state_.%s != %s" % (item['name'], args[ndx % num_args].name)) |
| 2910 file.Write(" if (%s) {\n" % " ||\n ".join(code)) |
| 2911 for ndx,item in enumerate(states): |
| 2912 file.Write(" state_.%s = %s;\n" % |
2877 (item['name'], args[ndx % num_args].name)) | 2913 (item['name'], args[ndx % num_args].name)) |
2878 if 'state_flag' in state: | 2914 if 'state_flag' in state: |
2879 file.Write(" %s = true;\n" % state['state_flag']) | 2915 file.Write(" %s = true;\n" % state['state_flag']) |
2880 if not func.GetInfo("no_gl"): | 2916 if not func.GetInfo("no_gl"): |
2881 file.Write(" %s(%s);\n" % | 2917 file.Write(" %s(%s);\n" % |
2882 (func.GetGLFunctionName(), func.MakeOriginalArgString(""))) | 2918 (func.GetGLFunctionName(), func.MakeOriginalArgString(""))) |
| 2919 file.Write(" }\n") |
2883 | 2920 |
2884 | 2921 |
2885 class StateSetFrontBackSeparateHandler(TypeHandler): | 2922 class StateSetFrontBackSeparateHandler(TypeHandler): |
2886 """Handler for commands that simply set state that have front/back.""" | 2923 """Handler for commands that simply set state that have front/back.""" |
2887 | 2924 |
2888 def __init__(self): | 2925 def __init__(self): |
2889 TypeHandler.__init__(self) | 2926 TypeHandler.__init__(self) |
2890 | 2927 |
2891 def WriteHandlerImplementation(self, func, file): | 2928 def WriteHandlerImplementation(self, func, file): |
2892 """Overrriden from TypeHandler.""" | 2929 """Overrriden from TypeHandler.""" |
2893 state_name = func.GetInfo('state') | 2930 state_name = func.GetInfo('state') |
2894 state = _STATES[state_name] | 2931 state = _STATES[state_name] |
2895 states = state['states'] | 2932 states = state['states'] |
2896 args = func.GetOriginalArgs() | 2933 args = func.GetOriginalArgs() |
2897 face = args[0].name | 2934 face = args[0].name |
2898 num_args = len(args) | 2935 num_args = len(args) |
| 2936 file.Write(" bool changed = false;\n") |
2899 for group_ndx, group in enumerate(Grouper(num_args - 1, states)): | 2937 for group_ndx, group in enumerate(Grouper(num_args - 1, states)): |
2900 file.Write(" if (%s == %s || %s == GL_FRONT_AND_BACK) {\n" % | 2938 file.Write(" if (%s == %s || %s == GL_FRONT_AND_BACK) {\n" % |
2901 (face, ('GL_FRONT', 'GL_BACK')[group_ndx], face)) | 2939 (face, ('GL_FRONT', 'GL_BACK')[group_ndx], face)) |
| 2940 code = [] |
2902 for ndx, item in enumerate(group): | 2941 for ndx, item in enumerate(group): |
2903 file.Write(" state_.%s = %s;\n" % (item['name'], args[ndx + 1].name)) | 2942 code.append("state_.%s != %s" % (item['name'], args[ndx + 1].name)) |
| 2943 file.Write(" changed |= %s;\n" % " ||\n ".join(code)) |
2904 file.Write(" }\n") | 2944 file.Write(" }\n") |
| 2945 file.Write(" if (changed) {\n") |
| 2946 for group_ndx, group in enumerate(Grouper(num_args - 1, states)): |
| 2947 file.Write(" if (%s == %s || %s == GL_FRONT_AND_BACK) {\n" % |
| 2948 (face, ('GL_FRONT', 'GL_BACK')[group_ndx], face)) |
| 2949 for ndx, item in enumerate(group): |
| 2950 file.Write(" state_.%s = %s;\n" % |
| 2951 (item['name'], args[ndx + 1].name)) |
| 2952 file.Write(" }\n") |
2905 if 'state_flag' in state: | 2953 if 'state_flag' in state: |
2906 file.Write(" %s = true;\n" % state['state_flag']) | 2954 file.Write(" %s = true;\n" % state['state_flag']) |
2907 if not func.GetInfo("no_gl"): | 2955 if not func.GetInfo("no_gl"): |
2908 file.Write(" %s(%s);\n" % | 2956 file.Write(" %s(%s);\n" % |
2909 (func.GetGLFunctionName(), func.MakeOriginalArgString(""))) | 2957 (func.GetGLFunctionName(), func.MakeOriginalArgString(""))) |
| 2958 file.Write(" }\n") |
2910 | 2959 |
2911 | 2960 |
2912 class StateSetFrontBackHandler(TypeHandler): | 2961 class StateSetFrontBackHandler(TypeHandler): |
2913 """Handler for commands that simply set state that set both front/back.""" | 2962 """Handler for commands that simply set state that set both front/back.""" |
2914 | 2963 |
2915 def __init__(self): | 2964 def __init__(self): |
2916 TypeHandler.__init__(self) | 2965 TypeHandler.__init__(self) |
2917 | 2966 |
2918 def WriteHandlerImplementation(self, func, file): | 2967 def WriteHandlerImplementation(self, func, file): |
2919 """Overrriden from TypeHandler.""" | 2968 """Overrriden from TypeHandler.""" |
2920 state_name = func.GetInfo('state') | 2969 state_name = func.GetInfo('state') |
2921 state = _STATES[state_name] | 2970 state = _STATES[state_name] |
2922 states = state['states'] | 2971 states = state['states'] |
2923 args = func.GetOriginalArgs() | 2972 args = func.GetOriginalArgs() |
2924 face = args[0].name | |
2925 num_args = len(args) | 2973 num_args = len(args) |
| 2974 code = [] |
2926 for group_ndx, group in enumerate(Grouper(num_args, states)): | 2975 for group_ndx, group in enumerate(Grouper(num_args, states)): |
2927 for ndx, item in enumerate(group): | 2976 for ndx, item in enumerate(group): |
2928 file.Write(" state_.%s = %s;\n" % (item['name'], args[ndx].name)) | 2977 code.append("state_.%s != %s" % (item['name'], args[ndx].name)) |
| 2978 file.Write(" if (%s) {\n" % " ||\n ".join(code)) |
| 2979 for group_ndx, group in enumerate(Grouper(num_args, states)): |
| 2980 for ndx, item in enumerate(group): |
| 2981 file.Write(" state_.%s = %s;\n" % (item['name'], args[ndx].name)) |
2929 if 'state_flag' in state: | 2982 if 'state_flag' in state: |
2930 file.Write(" %s = true;\n" % state['state_flag']) | 2983 file.Write(" %s = true;\n" % state['state_flag']) |
2931 if not func.GetInfo("no_gl"): | 2984 if not func.GetInfo("no_gl"): |
2932 file.Write(" %s(%s);\n" % | 2985 file.Write(" %s(%s);\n" % |
2933 (func.GetGLFunctionName(), func.MakeOriginalArgString(""))) | 2986 (func.GetGLFunctionName(), func.MakeOriginalArgString(""))) |
| 2987 file.Write(" }\n") |
| 2988 |
2934 | 2989 |
2935 class CustomHandler(TypeHandler): | 2990 class CustomHandler(TypeHandler): |
2936 """Handler for commands that are auto-generated but require minor tweaks.""" | 2991 """Handler for commands that are auto-generated but require minor tweaks.""" |
2937 | 2992 |
2938 def __init__(self): | 2993 def __init__(self): |
2939 TypeHandler.__init__(self) | 2994 TypeHandler.__init__(self) |
2940 | 2995 |
2941 def WriteServiceImplementation(self, func, file): | 2996 def WriteServiceImplementation(self, func, file): |
2942 """Overrriden from TypeHandler.""" | 2997 """Overrriden from TypeHandler.""" |
2943 pass | 2998 pass |
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3369 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") | 3424 file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n") |
3370 func.WriteDestinationInitalizationValidation(file) | 3425 func.WriteDestinationInitalizationValidation(file) |
3371 self.WriteClientGLCallLog(func, file) | 3426 self.WriteClientGLCallLog(func, file) |
3372 for arg in func.GetOriginalArgs(): | 3427 for arg in func.GetOriginalArgs(): |
3373 arg.WriteClientSideValidationCode(file, func) | 3428 arg.WriteClientSideValidationCode(file, func) |
3374 | 3429 |
3375 code = """ if (Is%(type)sReservedId(%(id)s)) { | 3430 code = """ if (Is%(type)sReservedId(%(id)s)) { |
3376 SetGLError(GL_INVALID_OPERATION, "%(name)s\", \"%(id)s reserved id"); | 3431 SetGLError(GL_INVALID_OPERATION, "%(name)s\", \"%(id)s reserved id"); |
3377 return; | 3432 return; |
3378 } | 3433 } |
3379 Bind%(type)sHelper(%(arg_string)s); | 3434 if (Bind%(type)sHelper(%(arg_string)s)) { |
3380 helper_->%(name)s(%(arg_string)s); | 3435 helper_->%(name)s(%(arg_string)s); |
| 3436 } |
3381 } | 3437 } |
3382 | 3438 |
3383 """ | 3439 """ |
3384 name_arg = None | 3440 name_arg = None |
3385 if len(func.GetOriginalArgs()) == 1: | 3441 if len(func.GetOriginalArgs()) == 1: |
3386 # Bind functions that have no target (like BindVertexArrayOES) | 3442 # Bind functions that have no target (like BindVertexArrayOES) |
3387 name_arg = func.GetOriginalArgs()[0] | 3443 name_arg = func.GetOriginalArgs()[0] |
3388 else: | 3444 else: |
3389 # Bind functions that have both a target and a name (like BindTexture) | 3445 # Bind functions that have both a target and a name (like BindTexture) |
3390 name_arg = func.GetOriginalArgs()[1] | 3446 name_arg = func.GetOriginalArgs()[1] |
3391 | 3447 |
3392 file.Write(code % { | 3448 file.Write(code % { |
3393 'name': func.name, | 3449 'name': func.name, |
3394 'arg_string': func.MakeOriginalArgString(""), | 3450 'arg_string': func.MakeOriginalArgString(""), |
3395 'id': name_arg.name, | 3451 'id': name_arg.name, |
3396 'type': name_arg.resource_type, | 3452 'type': name_arg.resource_type, |
3397 'lc_type': name_arg.resource_type.lower(), | 3453 'lc_type': name_arg.resource_type.lower(), |
3398 }) | 3454 }) |
3399 | 3455 |
| 3456 def WriteGLES2ImplementationUnitTest(self, func, file): |
| 3457 """Overrriden from TypeHandler.""" |
| 3458 code = """ |
| 3459 TEST_F(GLES2ImplementationTest, %(name)s) { |
| 3460 struct Cmds { |
| 3461 %(name)s cmd; |
| 3462 }; |
| 3463 Cmds expected; |
| 3464 expected.cmd.Init(%(cmd_args)s); |
| 3465 |
| 3466 gl_->%(name)s(%(args)s); |
| 3467 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); |
| 3468 ClearCommands(); |
| 3469 gl_->%(name)s(%(args)s); |
| 3470 EXPECT_TRUE(NoCommandsWritten()); |
| 3471 } |
| 3472 """ |
| 3473 cmd_arg_strings = [] |
| 3474 for count, arg in enumerate(func.GetCmdArgs()): |
| 3475 cmd_arg_strings.append(arg.GetValidClientSideCmdArg(func, count, 0)) |
| 3476 count += 1 |
| 3477 gl_arg_strings = [] |
| 3478 for count, arg in enumerate(func.GetOriginalArgs()): |
| 3479 gl_arg_strings.append(arg.GetValidClientSideArg(func, count, 0)) |
| 3480 file.Write(code % { |
| 3481 'name': func.name, |
| 3482 'args': ", ".join(gl_arg_strings), |
| 3483 'cmd_args': ", ".join(cmd_arg_strings), |
| 3484 }) |
| 3485 |
3400 | 3486 |
3401 class GENnHandler(TypeHandler): | 3487 class GENnHandler(TypeHandler): |
3402 """Handler for glGen___ type functions.""" | 3488 """Handler for glGen___ type functions.""" |
3403 | 3489 |
3404 def __init__(self): | 3490 def __init__(self): |
3405 TypeHandler.__init__(self) | 3491 TypeHandler.__init__(self) |
3406 | 3492 |
3407 def InitFunction(self, func): | 3493 def InitFunction(self, func): |
3408 """Overrriden from TypeHandler.""" | 3494 """Overrriden from TypeHandler.""" |
3409 pass | 3495 pass |
(...skipping 2896 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6306 interface = PepperInterface(interface) | 6392 interface = PepperInterface(interface) |
6307 self.pepper_interfaces.append(interface) | 6393 self.pepper_interfaces.append(interface) |
6308 self.interface_info[interface.GetName()] = interface | 6394 self.interface_info[interface.GetName()] = interface |
6309 | 6395 |
6310 def AddFunction(self, func): | 6396 def AddFunction(self, func): |
6311 """Adds a function.""" | 6397 """Adds a function.""" |
6312 self.functions.append(func) | 6398 self.functions.append(func) |
6313 | 6399 |
6314 def GetTypeHandler(self, name): | 6400 def GetTypeHandler(self, name): |
6315 """Gets a type info for the given type.""" | 6401 """Gets a type info for the given type.""" |
6316 if name in self._type_handlers: | 6402 if len(name): |
6317 return self._type_handlers[name] | 6403 if name in self._type_handlers: |
| 6404 return self._type_handlers[name] |
| 6405 else: |
| 6406 raise KeyError("no such type handler: %s" % name) |
6318 return self._empty_type_handler | 6407 return self._empty_type_handler |
6319 | 6408 |
6320 def GetFunctionInfo(self, name): | 6409 def GetFunctionInfo(self, name): |
6321 """Gets a type info for the given function name.""" | 6410 """Gets a type info for the given function name.""" |
6322 if name in self._function_info: | 6411 if name in self._function_info: |
6323 return self._function_info[name] | 6412 return self._function_info[name] |
6324 return self._empty_function_info | 6413 return self._empty_function_info |
6325 | 6414 |
6326 def Log(self, msg): | 6415 def Log(self, msg): |
6327 """Prints something if verbose is true.""" | 6416 """Prints something if verbose is true.""" |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6481 file = CHeaderWriter(filename) | 6570 file = CHeaderWriter(filename) |
6482 | 6571 |
6483 for func in self.functions: | 6572 for func in self.functions: |
6484 if True: | 6573 if True: |
6485 #gen_cmd = func.GetInfo('gen_cmd') | 6574 #gen_cmd = func.GetInfo('gen_cmd') |
6486 #if gen_cmd == True or gen_cmd == None: | 6575 #if gen_cmd == True or gen_cmd == None: |
6487 func.WriteCmdHelper(file) | 6576 func.WriteCmdHelper(file) |
6488 | 6577 |
6489 file.Close() | 6578 file.Close() |
6490 | 6579 |
6491 def WriteContextStateHeader(self, filename): | 6580 def WriteServiceContextStateHeader(self, filename): |
6492 """Writes the context state header.""" | 6581 """Writes the service context state header.""" |
6493 file = CHeaderWriter( | 6582 file = CHeaderWriter( |
6494 filename, | 6583 filename, |
6495 "// It is included by context_state.h\n") | 6584 "// It is included by context_state.h\n") |
6496 file.Write("struct EnableFlags {\n") | 6585 file.Write("struct EnableFlags {\n") |
6497 file.Write(" EnableFlags();\n") | 6586 file.Write(" EnableFlags();\n") |
6498 for capability in _CAPABILITY_FLAGS: | 6587 for capability in _CAPABILITY_FLAGS: |
6499 file.Write(" bool %s;\n" % capability['name']) | 6588 file.Write(" bool %s;\n" % capability['name']) |
6500 file.Write("};\n\n") | 6589 file.Write("};\n\n") |
6501 | 6590 |
6502 for state_name in sorted(_STATES.keys()): | 6591 for state_name in sorted(_STATES.keys()): |
6503 state = _STATES[state_name] | 6592 state = _STATES[state_name] |
6504 for item in state['states']: | 6593 for item in state['states']: |
6505 file.Write("%s %s;\n" % (item['type'], item['name'])) | 6594 file.Write("%s %s;\n" % (item['type'], item['name'])) |
6506 file.Write("\n") | 6595 file.Write("\n") |
6507 | 6596 |
6508 file.Close() | 6597 file.Close() |
6509 | 6598 |
6510 def WriteContextStateImpl(self, filename): | 6599 def WriteClientContextStateHeader(self, filename): |
6511 """Writes the context state implementation.""" | 6600 """Writes the client context state header.""" |
| 6601 file = CHeaderWriter( |
| 6602 filename, |
| 6603 "// It is included by client_context_state.h\n") |
| 6604 file.Write("struct EnableFlags {\n") |
| 6605 file.Write(" EnableFlags();\n") |
| 6606 for capability in _CAPABILITY_FLAGS: |
| 6607 file.Write(" bool %s;\n" % capability['name']) |
| 6608 file.Write("};\n\n") |
| 6609 |
| 6610 file.Close() |
| 6611 |
| 6612 def WriteContextStateGetters(self, file, class_name): |
| 6613 """Writes the state getters.""" |
| 6614 for gl_type in ["GLint", "GLfloat"]: |
| 6615 file.Write(""" |
| 6616 bool %s::GetStateAs%s( |
| 6617 GLenum pname, %s* params, GLsizei* num_written) const { |
| 6618 switch (pname) { |
| 6619 """ % (class_name, gl_type, gl_type)) |
| 6620 for state_name in _STATES.keys(): |
| 6621 state = _STATES[state_name] |
| 6622 if 'enum' in state: |
| 6623 file.Write(" case %s:\n" % state['enum']) |
| 6624 file.Write(" *num_written = %d;\n" % len(state['states'])) |
| 6625 file.Write(" if (params) {\n") |
| 6626 for ndx,item in enumerate(state['states']): |
| 6627 file.Write(" params[%d] = static_cast<%s>(%s);\n" % |
| 6628 (ndx, gl_type, item['name'])) |
| 6629 file.Write(" }\n") |
| 6630 file.Write(" return true;\n") |
| 6631 else: |
| 6632 for item in state['states']: |
| 6633 file.Write(" case %s:\n" % item['enum']) |
| 6634 file.Write(" *num_written = 1;\n") |
| 6635 file.Write(" if (params) {\n") |
| 6636 file.Write(" params[0] = static_cast<%s>(%s);\n" % |
| 6637 (gl_type, item['name'])) |
| 6638 file.Write(" }\n") |
| 6639 file.Write(" return true;\n") |
| 6640 for capability in _CAPABILITY_FLAGS: |
| 6641 file.Write(" case GL_%s:\n" % capability['name'].upper()) |
| 6642 file.Write(" *num_written = 1;\n") |
| 6643 file.Write(" if (params) {\n") |
| 6644 file.Write( |
| 6645 " params[0] = static_cast<%s>(enable_flags.%s);\n" % |
| 6646 (gl_type, capability['name'])) |
| 6647 file.Write(" }\n") |
| 6648 file.Write(" return true;\n") |
| 6649 file.Write(""" default: |
| 6650 return false; |
| 6651 } |
| 6652 } |
| 6653 """) |
| 6654 |
| 6655 def WriteServiceContextStateImpl(self, filename): |
| 6656 """Writes the context state service implementation.""" |
6512 file = CHeaderWriter( | 6657 file = CHeaderWriter( |
6513 filename, | 6658 filename, |
6514 "// It is included by context_state.cc\n") | 6659 "// It is included by context_state.cc\n") |
6515 code = [] | 6660 code = [] |
6516 for capability in _CAPABILITY_FLAGS: | 6661 for capability in _CAPABILITY_FLAGS: |
6517 code.append("%s(%s)" % | 6662 code.append("%s(%s)" % |
6518 (capability['name'], | 6663 (capability['name'], |
6519 ('false', 'true')['default' in capability])) | 6664 ('false', 'true')['default' in capability])) |
6520 file.Write("ContextState::EnableFlags::EnableFlags()\n : %s {\n}\n" % | 6665 file.Write("ContextState::EnableFlags::EnableFlags()\n : %s {\n}\n" % |
6521 ",\n ".join(code)) | 6666 ",\n ".join(code)) |
(...skipping 29 matching lines...) Expand all Loading... |
6551 file.Write( | 6696 file.Write( |
6552 " gl%s(%s, %s);\n" % | 6697 " gl%s(%s, %s);\n" % |
6553 (state['func'], ('GL_FRONT', 'GL_BACK')[ndx], ", ".join(args))) | 6698 (state['func'], ('GL_FRONT', 'GL_BACK')[ndx], ", ".join(args))) |
6554 else: | 6699 else: |
6555 args = [] | 6700 args = [] |
6556 for item in state['states']: | 6701 for item in state['states']: |
6557 args.append('%s' % item['name']) | 6702 args.append('%s' % item['name']) |
6558 file.Write(" gl%s(%s);\n" % (state['func'], ", ".join(args))) | 6703 file.Write(" gl%s(%s);\n" % (state['func'], ", ".join(args))) |
6559 file.Write("}\n") | 6704 file.Write("}\n") |
6560 | 6705 |
| 6706 file.Write("""bool ContextState::GetEnabled(GLenum cap) const { |
| 6707 switch (cap) { |
| 6708 """) |
| 6709 for capability in _CAPABILITY_FLAGS: |
| 6710 file.Write(" case GL_%s:\n" % capability['name'].upper()) |
| 6711 file.Write(" return enable_flags.%s;\n" % capability['name']) |
| 6712 file.Write(""" default: |
| 6713 GPU_NOTREACHED(); |
| 6714 return false; |
| 6715 } |
| 6716 } |
| 6717 """) |
| 6718 |
| 6719 self.WriteContextStateGetters(file, "ContextState") |
| 6720 file.Close() |
| 6721 |
| 6722 def WriteClientContextStateImpl(self, filename): |
| 6723 """Writes the context state client side implementation.""" |
| 6724 file = CHeaderWriter( |
| 6725 filename, |
| 6726 "// It is included by client_context_state.cc\n") |
| 6727 code = [] |
| 6728 for capability in _CAPABILITY_FLAGS: |
| 6729 code.append("%s(%s)" % |
| 6730 (capability['name'], |
| 6731 ('false', 'true')['default' in capability])) |
| 6732 file.Write( |
| 6733 "ClientContextState::EnableFlags::EnableFlags()\n : %s {\n}\n" % |
| 6734 ",\n ".join(code)) |
| 6735 file.Write("\n") |
| 6736 |
| 6737 file.Write(""" |
| 6738 bool ClientContextState::SetCapabilityState( |
| 6739 GLenum cap, bool enabled, bool* changed) { |
| 6740 *changed = false; |
| 6741 switch (cap) { |
| 6742 """) |
| 6743 for capability in _CAPABILITY_FLAGS: |
| 6744 file.Write(" case GL_%s:\n" % capability['name'].upper()) |
| 6745 file.Write(""" if (enable_flags.%(name)s != enabled) { |
| 6746 *changed = true; |
| 6747 enable_flags.%(name)s = enabled; |
| 6748 } |
| 6749 return true; |
| 6750 """ % capability) |
| 6751 file.Write(""" default: |
| 6752 return false; |
| 6753 } |
| 6754 } |
| 6755 """) |
| 6756 file.Write("""bool ClientContextState::GetEnabled( |
| 6757 GLenum cap, bool* enabled) const { |
| 6758 switch (cap) { |
| 6759 """) |
| 6760 for capability in _CAPABILITY_FLAGS: |
| 6761 file.Write(" case GL_%s:\n" % capability['name'].upper()) |
| 6762 file.Write(" *enabled = enable_flags.%s;\n" % capability['name']) |
| 6763 file.Write(" return true;\n") |
| 6764 file.Write(""" default: |
| 6765 return false; |
| 6766 } |
| 6767 } |
| 6768 """) |
6561 file.Close() | 6769 file.Close() |
6562 | 6770 |
6563 def WriteServiceImplementation(self, filename): | 6771 def WriteServiceImplementation(self, filename): |
6564 """Writes the service decorder implementation.""" | 6772 """Writes the service decorder implementation.""" |
6565 file = CHeaderWriter( | 6773 file = CHeaderWriter( |
6566 filename, | 6774 filename, |
6567 "// It is included by gles2_cmd_decoder.cc\n") | 6775 "// It is included by gles2_cmd_decoder.cc\n") |
6568 | 6776 |
6569 for func in self.functions: | 6777 for func in self.functions: |
6570 if True: | 6778 if True: |
(...skipping 16 matching lines...) Expand all Loading... |
6587 """ % capability) | 6795 """ % capability) |
6588 else: | 6796 else: |
6589 file.Write(""" state_.enable_flags.%(name)s = enabled; | 6797 file.Write(""" state_.enable_flags.%(name)s = enabled; |
6590 return true; | 6798 return true; |
6591 """ % capability) | 6799 """ % capability) |
6592 file.Write(""" default: | 6800 file.Write(""" default: |
6593 NOTREACHED(); | 6801 NOTREACHED(); |
6594 return false; | 6802 return false; |
6595 } | 6803 } |
6596 } | 6804 } |
6597 | |
6598 bool GLES2DecoderImpl::DoIsEnabled(GLenum cap) { | |
6599 switch (cap) { | |
6600 """) | |
6601 for capability in _CAPABILITY_FLAGS: | |
6602 file.Write(" case GL_%s:\n" % capability['name'].upper()) | |
6603 file.Write(" return state_.enable_flags.%s;\n" % | |
6604 capability['name']) | |
6605 file.Write(""" default: | |
6606 NOTREACHED(); | |
6607 return false; | |
6608 } | |
6609 } | |
6610 """) | |
6611 for gl_type in ["GLint", "GLfloat"]: | |
6612 file.Write(""" | |
6613 bool GLES2DecoderImpl::GetStateAs%s( | |
6614 GLenum pname, %s* params, GLsizei* num_written) { | |
6615 switch (pname) { | |
6616 """ % (gl_type, gl_type)) | |
6617 for state_name in _STATES.keys(): | |
6618 state = _STATES[state_name] | |
6619 if 'enum' in state: | |
6620 file.Write(" case %s:\n" % state['enum']) | |
6621 file.Write(" *num_written = %d;\n" % len(state['states'])) | |
6622 file.Write(" if (params) {\n") | |
6623 for ndx,item in enumerate(state['states']): | |
6624 file.Write(" params[%d] = static_cast<%s>(state_.%s);\n" % | |
6625 (ndx, gl_type, item['name'])) | |
6626 file.Write(" }\n") | |
6627 file.Write(" return true;\n") | |
6628 else: | |
6629 for item in state['states']: | |
6630 file.Write(" case %s:\n" % item['enum']) | |
6631 file.Write(" *num_written = 1;\n") | |
6632 file.Write(" if (params) {\n") | |
6633 file.Write(" params[0] = static_cast<%s>(state_.%s);\n" % | |
6634 (gl_type, item['name'])) | |
6635 file.Write(" }\n") | |
6636 file.Write(" return true;\n") | |
6637 for capability in _CAPABILITY_FLAGS: | |
6638 file.Write(" case GL_%s:\n" % capability['name'].upper()) | |
6639 file.Write(" *num_written = 1;\n") | |
6640 file.Write(" if (params) {\n") | |
6641 file.Write(" params[0] = static_cast<%s>(" | |
6642 "state_.enable_flags.%s);\n" % | |
6643 (gl_type, capability['name'])) | |
6644 file.Write(" }\n") | |
6645 file.Write(" return true;\n") | |
6646 file.Write(""" default: | |
6647 return false; | |
6648 } | |
6649 } | |
6650 """) | 6805 """) |
6651 file.Close() | 6806 file.Close() |
6652 | 6807 |
6653 def WriteServiceUnitTests(self, filename): | 6808 def WriteServiceUnitTests(self, filename): |
6654 """Writes the service decorder unit tests.""" | 6809 """Writes the service decorder unit tests.""" |
6655 num_tests = len(self.functions) | 6810 num_tests = len(self.functions) |
6656 FUNCTIONS_PER_FILE = 98 # hard code this so it doesn't change. | 6811 FUNCTIONS_PER_FILE = 98 # hard code this so it doesn't change. |
6657 count = 0 | 6812 count = 0 |
6658 for test_num in range(0, num_tests, FUNCTIONS_PER_FILE): | 6813 for test_num in range(0, num_tests, FUNCTIONS_PER_FILE): |
6659 count += 1 | 6814 count += 1 |
(...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7171 gen.WriteGLES2InterfaceStub("client/gles2_interface_stub_autogen.h") | 7326 gen.WriteGLES2InterfaceStub("client/gles2_interface_stub_autogen.h") |
7172 gen.WriteGLES2InterfaceStubImpl( | 7327 gen.WriteGLES2InterfaceStubImpl( |
7173 "client/gles2_interface_stub_impl_autogen.h") | 7328 "client/gles2_interface_stub_impl_autogen.h") |
7174 gen.WriteGLES2ImplementationHeader("client/gles2_implementation_autogen.h") | 7329 gen.WriteGLES2ImplementationHeader("client/gles2_implementation_autogen.h") |
7175 gen.WriteGLES2Implementation("client/gles2_implementation_impl_autogen.h") | 7330 gen.WriteGLES2Implementation("client/gles2_implementation_impl_autogen.h") |
7176 gen.WriteGLES2ImplementationUnitTests( | 7331 gen.WriteGLES2ImplementationUnitTests( |
7177 "client/gles2_implementation_unittest_autogen.h") | 7332 "client/gles2_implementation_unittest_autogen.h") |
7178 gen.WriteGLES2CLibImplementation("client/gles2_c_lib_autogen.h") | 7333 gen.WriteGLES2CLibImplementation("client/gles2_c_lib_autogen.h") |
7179 gen.WriteCmdHelperHeader("client/gles2_cmd_helper_autogen.h") | 7334 gen.WriteCmdHelperHeader("client/gles2_cmd_helper_autogen.h") |
7180 gen.WriteServiceImplementation("service/gles2_cmd_decoder_autogen.h") | 7335 gen.WriteServiceImplementation("service/gles2_cmd_decoder_autogen.h") |
7181 gen.WriteContextStateHeader("service/context_state_autogen.h") | 7336 gen.WriteServiceContextStateHeader("service/context_state_autogen.h") |
7182 gen.WriteContextStateImpl("service/context_state_impl_autogen.h") | 7337 gen.WriteServiceContextStateImpl("service/context_state_impl_autogen.h") |
| 7338 gen.WriteClientContextStateHeader("client/client_context_state_autogen.h") |
| 7339 gen.WriteClientContextStateImpl( |
| 7340 "client/client_context_state_impl_autogen.h") |
7183 gen.WriteServiceUnitTests("service/gles2_cmd_decoder_unittest_%d_autogen.h") | 7341 gen.WriteServiceUnitTests("service/gles2_cmd_decoder_unittest_%d_autogen.h") |
7184 gen.WriteServiceUtilsHeader("service/gles2_cmd_validation_autogen.h") | 7342 gen.WriteServiceUtilsHeader("service/gles2_cmd_validation_autogen.h") |
7185 gen.WriteServiceUtilsImplementation( | 7343 gen.WriteServiceUtilsImplementation( |
7186 "service/gles2_cmd_validation_implementation_autogen.h") | 7344 "service/gles2_cmd_validation_implementation_autogen.h") |
7187 gen.WriteCommonUtilsHeader("common/gles2_cmd_utils_autogen.h") | 7345 gen.WriteCommonUtilsHeader("common/gles2_cmd_utils_autogen.h") |
7188 gen.WriteCommonUtilsImpl("common/gles2_cmd_utils_implementation_autogen.h") | 7346 gen.WriteCommonUtilsImpl("common/gles2_cmd_utils_implementation_autogen.h") |
7189 | 7347 |
7190 if gen.errors > 0: | 7348 if gen.errors > 0: |
7191 print "%d errors" % gen.errors | 7349 print "%d errors" % gen.errors |
7192 return 1 | 7350 return 1 |
7193 return 0 | 7351 return 0 |
7194 | 7352 |
7195 | 7353 |
7196 if __name__ == '__main__': | 7354 if __name__ == '__main__': |
7197 sys.exit(main(sys.argv[1:])) | 7355 sys.exit(main(sys.argv[1:])) |
OLD | NEW |