| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2011 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 GL/GLES extension wrangler.""" | 6 """code generator for GL/GLES extension wrangler.""" |
| 7 | 7 |
| 8 import os | 8 import os |
| 9 import collections | 9 import collections |
| 10 import re | 10 import re |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 'GLbitfield mask, GLenum filter', }, | 70 'GLbitfield mask, GLenum filter', }, |
| 71 { 'return_type': 'void', | 71 { 'return_type': 'void', |
| 72 'names': ['glBufferData'], | 72 'names': ['glBufferData'], |
| 73 'arguments': 'GLenum target, GLsizei size, const void* data, GLenum usage', }, | 73 'arguments': 'GLenum target, GLsizei size, const void* data, GLenum usage', }, |
| 74 { 'return_type': 'void', | 74 { 'return_type': 'void', |
| 75 'names': ['glBufferSubData'], | 75 'names': ['glBufferSubData'], |
| 76 'arguments': 'GLenum target, GLint offset, GLsizei size, const void* data', }, | 76 'arguments': 'GLenum target, GLint offset, GLsizei size, const void* data', }, |
| 77 { 'return_type': 'GLenum', | 77 { 'return_type': 'GLenum', |
| 78 'names': ['glCheckFramebufferStatusEXT', | 78 'names': ['glCheckFramebufferStatusEXT', |
| 79 'glCheckFramebufferStatus'], | 79 'glCheckFramebufferStatus'], |
| 80 'arguments': 'GLenum target', }, | 80 'arguments': 'GLenum target', |
| 81 'logging_code': """ |
| 82 GL_SERVICE_LOG("GL_RESULT: " << GLES2Util::GetStringEnum(result)); |
| 83 """, }, |
| 81 { 'return_type': 'void', | 84 { 'return_type': 'void', |
| 82 'names': ['glClear'], | 85 'names': ['glClear'], |
| 83 'arguments': 'GLbitfield mask', }, | 86 'arguments': 'GLbitfield mask', }, |
| 84 { 'return_type': 'void', | 87 { 'return_type': 'void', |
| 85 'names': ['glClearColor'], | 88 'names': ['glClearColor'], |
| 86 'arguments': 'GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha', }, | 89 'arguments': 'GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha', }, |
| 87 { 'return_type': 'void', | 90 { 'return_type': 'void', |
| 88 'names': ['glClearDepth'], | 91 'names': ['glClearDepth'], |
| 89 'arguments': 'GLclampd depth', }, | 92 'arguments': 'GLclampd depth', }, |
| 90 { 'return_type': 'void', | 93 { 'return_type': 'void', |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 252 'names': ['glGetAttribLocation'], | 255 'names': ['glGetAttribLocation'], |
| 253 'arguments': 'GLuint program, const char* name', }, | 256 'arguments': 'GLuint program, const char* name', }, |
| 254 { 'return_type': 'void', | 257 { 'return_type': 'void', |
| 255 'names': ['glGetBooleanv'], | 258 'names': ['glGetBooleanv'], |
| 256 'arguments': 'GLenum pname, GLboolean* params', }, | 259 'arguments': 'GLenum pname, GLboolean* params', }, |
| 257 { 'return_type': 'void', | 260 { 'return_type': 'void', |
| 258 'names': ['glGetBufferParameteriv'], | 261 'names': ['glGetBufferParameteriv'], |
| 259 'arguments': 'GLenum target, GLenum pname, GLint* params', }, | 262 'arguments': 'GLenum target, GLenum pname, GLint* params', }, |
| 260 { 'return_type': 'GLenum', | 263 { 'return_type': 'GLenum', |
| 261 'names': ['glGetError'], | 264 'names': ['glGetError'], |
| 262 'arguments': 'void', }, | 265 'arguments': 'void', |
| 266 'logging_code': """ |
| 267 GL_SERVICE_LOG("GL_RESULT: " << GLES2Util::GetStringError(result)); |
| 268 """, }, |
| 263 { 'return_type': 'void', | 269 { 'return_type': 'void', |
| 264 'names': ['glGetFloatv'], | 270 'names': ['glGetFloatv'], |
| 265 'arguments': 'GLenum pname, GLfloat* params', }, | 271 'arguments': 'GLenum pname, GLfloat* params', }, |
| 266 { 'return_type': 'void', | 272 { 'return_type': 'void', |
| 267 'names': ['glGetFramebufferAttachmentParameterivEXT', | 273 'names': ['glGetFramebufferAttachmentParameterivEXT', |
| 268 'glGetFramebufferAttachmentParameteriv'], | 274 'glGetFramebufferAttachmentParameteriv'], |
| 269 'arguments': 'GLenum target, ' | 275 'arguments': 'GLenum target, ' |
| 270 'GLenum attachment, GLenum pname, GLint* params', }, | 276 'GLenum attachment, GLenum pname, GLint* params', }, |
| 271 { 'return_type': 'GLenum', | 277 { 'return_type': 'GLenum', |
| 272 'names': ['glGetGraphicsResetStatusARB'], | 278 'names': ['glGetGraphicsResetStatusARB'], |
| (...skipping 801 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1074 """Generates gl_binding_autogen_x.cc""" | 1080 """Generates gl_binding_autogen_x.cc""" |
| 1075 | 1081 |
| 1076 # Write file header. | 1082 # Write file header. |
| 1077 file.write('// Copyright (c) 2011 The Chromium Authors. All rights reserved.\n
') | 1083 file.write('// Copyright (c) 2011 The Chromium Authors. All rights reserved.\n
') |
| 1078 file.write('// Use of this source code is governed by a BSD-style license that
can be\n') | 1084 file.write('// Use of this source code is governed by a BSD-style license that
can be\n') |
| 1079 file.write('// found in the LICENSE file.\n') | 1085 file.write('// found in the LICENSE file.\n') |
| 1080 file.write('\n') | 1086 file.write('\n') |
| 1081 file.write('// This file is automatically generated.\n') | 1087 file.write('// This file is automatically generated.\n') |
| 1082 file.write('\n') | 1088 file.write('\n') |
| 1083 file.write('#include <string>\n') | 1089 file.write('#include <string>\n') |
| 1090 file.write('#include "gpu/command_buffer/common/gles2_cmd_utils.h"\n') |
| 1084 file.write('#include "ui/gfx/gl/gl_bindings.h"\n') | 1091 file.write('#include "ui/gfx/gl/gl_bindings.h"\n') |
| 1085 file.write('#include "ui/gfx/gl/gl_context.h"\n') | 1092 file.write('#include "ui/gfx/gl/gl_context.h"\n') |
| 1086 file.write('#include "ui/gfx/gl/gl_implementation.h"\n') | 1093 file.write('#include "ui/gfx/gl/gl_implementation.h"\n') |
| 1087 | 1094 |
| 1088 # Write definitions for booleans indicating which extensions are available. | 1095 # Write definitions for booleans indicating which extensions are available. |
| 1089 file.write('\n') | 1096 file.write('\n') |
| 1097 file.write('using gpu::gles2::GLES2Util;\n') |
| 1098 file.write('\n') |
| 1090 file.write('namespace gfx {\n') | 1099 file.write('namespace gfx {\n') |
| 1091 file.write('\n') | 1100 file.write('\n') |
| 1092 for extension, ext_functions in used_extension_functions: | 1101 for extension, ext_functions in used_extension_functions: |
| 1093 file.write('bool g_%s;\n' % extension) | 1102 file.write('bool g_%s;\n' % extension) |
| 1094 | 1103 |
| 1095 # Write definitions of function pointers. | 1104 # Write definitions of function pointers. |
| 1096 file.write('\n') | 1105 file.write('\n') |
| 1097 file.write('static bool g_debugBindingsInitialized;\n') | 1106 file.write('static bool g_debugBindingsInitialized;\n') |
| 1098 file.write('static void UpdateDebugGLExtensionBindings();\n') | 1107 file.write('static void UpdateDebugGLExtensionBindings();\n') |
| 1099 file.write('\n') | 1108 file.write('\n') |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1158 argument_names = re.sub( | 1167 argument_names = re.sub( |
| 1159 r'(const )?[a-zA-Z0-9_]+\** ([a-zA-Z0-9_]+)', r'\2', arguments) | 1168 r'(const )?[a-zA-Z0-9_]+\** ([a-zA-Z0-9_]+)', r'\2', arguments) |
| 1160 argument_names = re.sub( | 1169 argument_names = re.sub( |
| 1161 r'(const )?[a-zA-Z0-9_]+\** ([a-zA-Z0-9_]+)', r'\2', argument_names) | 1170 r'(const )?[a-zA-Z0-9_]+\** ([a-zA-Z0-9_]+)', r'\2', argument_names) |
| 1162 log_argument_names = re.sub( | 1171 log_argument_names = re.sub( |
| 1163 r'const char\* ([a-zA-Z0-9_]+)', r'CONSTCHAR_\1', arguments) | 1172 r'const char\* ([a-zA-Z0-9_]+)', r'CONSTCHAR_\1', arguments) |
| 1164 log_argument_names = re.sub( | 1173 log_argument_names = re.sub( |
| 1165 r'(const )?[a-zA-Z0-9_]+\* ([a-zA-Z0-9_]+)', | 1174 r'(const )?[a-zA-Z0-9_]+\* ([a-zA-Z0-9_]+)', |
| 1166 r'CONSTVOID_\2', log_argument_names) | 1175 r'CONSTVOID_\2', log_argument_names) |
| 1167 log_argument_names = re.sub( | 1176 log_argument_names = re.sub( |
| 1177 r'(?<!E)GLenum ([a-zA-Z0-9_]+)', r'GLenum_\1', log_argument_names) |
| 1178 log_argument_names = re.sub( |
| 1168 r'(const )?[a-zA-Z0-9_]+\** ([a-zA-Z0-9_]+)', r'\2', | 1179 r'(const )?[a-zA-Z0-9_]+\** ([a-zA-Z0-9_]+)', r'\2', |
| 1169 log_argument_names) | 1180 log_argument_names) |
| 1170 log_argument_names = re.sub( | 1181 log_argument_names = re.sub( |
| 1171 r'(const )?[a-zA-Z0-9_]+\** ([a-zA-Z0-9_]+)', r'\2', | 1182 r'(const )?[a-zA-Z0-9_]+\** ([a-zA-Z0-9_]+)', r'\2', |
| 1172 log_argument_names) | 1183 log_argument_names) |
| 1173 log_argument_names = re.sub( | 1184 log_argument_names = re.sub( |
| 1174 r'CONSTVOID_([a-zA-Z0-9_]+)', | 1185 r'CONSTVOID_([a-zA-Z0-9_]+)', |
| 1175 r'static_cast<const void*>(\1)', log_argument_names); | 1186 r'static_cast<const void*>(\1)', log_argument_names); |
| 1176 log_argument_names = re.sub( | 1187 log_argument_names = re.sub( |
| 1177 r'CONSTCHAR_([a-zA-Z0-9_]+)', r'\1', log_argument_names); | 1188 r'CONSTCHAR_([a-zA-Z0-9_]+)', r'\1', log_argument_names); |
| 1178 log_argument_names = log_argument_names.replace(',', ' << ", " <<'); | 1189 log_argument_names = re.sub( |
| 1190 r'GLenum_([a-zA-Z0-9_]+)', r'GLES2Util::GetStringEnum(\1)', |
| 1191 log_argument_names) |
| 1192 log_argument_names = log_argument_names.replace(',', ' << ", " <<') |
| 1179 if argument_names == 'void' or argument_names == '': | 1193 if argument_names == 'void' or argument_names == '': |
| 1180 argument_names = '' | 1194 argument_names = '' |
| 1181 log_argument_names = '' | 1195 log_argument_names = '' |
| 1182 else: | 1196 else: |
| 1183 log_argument_names = " << " + log_argument_names | 1197 log_argument_names = " << " + log_argument_names |
| 1184 function_name = names[0] | 1198 function_name = names[0] |
| 1185 if return_type == 'void': | 1199 if return_type == 'void': |
| 1186 file.write(' GL_SERVICE_LOG("%s" << "(" %s << ")");\n' % | 1200 file.write(' GL_SERVICE_LOG("%s" << "(" %s << ")");\n' % |
| 1187 (function_name, log_argument_names)) | 1201 (function_name, log_argument_names)) |
| 1188 file.write(' g_debug_%s(%s);\n' % | 1202 file.write(' g_debug_%s(%s);\n' % |
| 1189 (function_name, argument_names)) | 1203 (function_name, argument_names)) |
| 1204 if 'logging_code' in func: |
| 1205 file.write("%s\n" % func['logging_code']) |
| 1190 else: | 1206 else: |
| 1191 file.write(' GL_SERVICE_LOG("%s" << "(" %s << ")");\n' % | 1207 file.write(' GL_SERVICE_LOG("%s" << "(" %s << ")");\n' % |
| 1192 (function_name, log_argument_names)) | 1208 (function_name, log_argument_names)) |
| 1193 file.write(' %s result = g_debug_%s(%s);\n' % | 1209 file.write(' %s result = g_debug_%s(%s);\n' % |
| 1194 (return_type, function_name, argument_names)) | 1210 (return_type, function_name, argument_names)) |
| 1195 file.write(' GL_SERVICE_LOG("GL_RESULT: " << result);\n'); | 1211 if 'logging_code' in func: |
| 1212 file.write("%s\n" % func['logging_code']) |
| 1213 else: |
| 1214 file.write(' GL_SERVICE_LOG("GL_RESULT: " << result);\n'); |
| 1196 file.write(' return result;\n') | 1215 file.write(' return result;\n') |
| 1197 if 'logging_code' in func: | |
| 1198 file.write("%s\n" % func['logging_code']) | |
| 1199 file.write('}\n') | 1216 file.write('}\n') |
| 1200 file.write('} // extern "C"\n') | 1217 file.write('} // extern "C"\n') |
| 1201 | 1218 |
| 1202 # Write function to initialize the debug function pointers. | 1219 # Write function to initialize the debug function pointers. |
| 1203 file.write('\n') | 1220 file.write('\n') |
| 1204 file.write('void InitializeDebugGLBindings%s() {\n' % set_name.upper()) | 1221 file.write('void InitializeDebugGLBindings%s() {\n' % set_name.upper()) |
| 1205 for func in functions: | 1222 for func in functions: |
| 1206 first_name = func['names'][0] | 1223 first_name = func['names'][0] |
| 1207 file.write(' if (!g_debug_%s) {\n' % first_name) | 1224 file.write(' if (!g_debug_%s) {\n' % first_name) |
| 1208 file.write(' g_debug_%s = g_%s;\n' % (first_name, first_name)) | 1225 file.write(' g_debug_%s = g_%s;\n' % (first_name, first_name)) |
| (...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1439 source_file.close() | 1456 source_file.close() |
| 1440 | 1457 |
| 1441 source_file = open(os.path.join(dir, 'gl_bindings_autogen_mock.cc'), 'wb') | 1458 source_file = open(os.path.join(dir, 'gl_bindings_autogen_mock.cc'), 'wb') |
| 1442 GenerateMockSource(source_file, GL_FUNCTIONS) | 1459 GenerateMockSource(source_file, GL_FUNCTIONS) |
| 1443 source_file.close() | 1460 source_file.close() |
| 1444 return 0 | 1461 return 0 |
| 1445 | 1462 |
| 1446 | 1463 |
| 1447 if __name__ == '__main__': | 1464 if __name__ == '__main__': |
| 1448 sys.exit(main(sys.argv[1:])) | 1465 sys.exit(main(sys.argv[1:])) |
| OLD | NEW |