| Index: gpu/config/process_json.py
|
| diff --git a/gpu/config/process_json.py b/gpu/config/process_json.py
|
| index d34c5048170bb0ef60aec2bbf8fffbff276624ec..05ec4a26e172948a6c59b41f1c18d39780ba954b 100755
|
| --- a/gpu/config/process_json.py
|
| +++ b/gpu/config/process_json.py
|
| @@ -7,6 +7,7 @@ import json
|
| import os
|
| import platform
|
| import sys
|
| +from optparse import OptionParser
|
| from subprocess import call
|
|
|
| """Generate data struct from GPU blacklist and driver bug workarounds json."""
|
| @@ -577,31 +578,31 @@ def write_header_file_guard(file, filename, path, begin):
|
| file.write('\n#endif // %s\n' % token)
|
|
|
|
|
| -def process_json_file(json_filename, list_tag,
|
| +def process_json_file(json_filepath, list_tag,
|
| feature_header_filename, total_features, feature_tag,
|
| - output_header_filename, output_data_filename,
|
| - output_helper_filename, output_exception_filename, path,
|
| - export_tag):
|
| - current_dir = os.getcwd()
|
| - os.chdir('../../' + path) # assume python script is under gpu/config
|
| -
|
| - json_file = open(json_filename, 'rb')
|
| + output_header_filepath, output_data_filepath,
|
| + output_helper_filepath, output_exception_filepath, path,
|
| + export_tag, git_format):
|
| + output_header_filename = os.path.basename(output_header_filepath)
|
| + output_helper_filename = os.path.basename(output_helper_filepath)
|
| + output_exception_filename = os.path.basename(output_exception_filepath)
|
| + json_file = open(json_filepath, 'rb')
|
| json_data = json.load(json_file)
|
| json_file.close()
|
| - data_file = open(output_data_filename, 'wb')
|
| + data_file = open(output_data_filepath, 'wb')
|
| data_file.write(_LICENSE)
|
| data_file.write(_DO_NOT_EDIT_WARNING)
|
| data_file.write('#include "%s/%s"\n\n' % (path, output_header_filename))
|
| data_file.write('#include "%s/%s"\n' % (path, output_helper_filename))
|
| data_file.write('#include "%s/%s"\n\n' % (path, output_exception_filename))
|
| - data_helper_file = open(output_helper_filename, 'wb')
|
| + data_helper_file = open(output_helper_filepath, 'wb')
|
| data_helper_file.write(_LICENSE)
|
| data_helper_file.write(_DO_NOT_EDIT_WARNING)
|
| write_header_file_guard(data_helper_file, output_helper_filename, path, True)
|
| data_helper_file.write('#include "gpu/config/%s"\n\n' %
|
| feature_header_filename)
|
| data_helper_file.write('namespace gpu {\n')
|
| - data_exception_file = open(output_exception_filename, 'wb')
|
| + data_exception_file = open(output_exception_filepath, 'wb')
|
| data_exception_file.write(_LICENSE)
|
| data_exception_file.write(_DO_NOT_EDIT_WARNING)
|
| write_header_file_guard(data_exception_file, output_exception_filename, path,
|
| @@ -633,7 +634,7 @@ def process_json_file(json_filename, list_tag,
|
| write_header_file_guard(data_exception_file, output_exception_filename, path,
|
| False)
|
| data_exception_file.close()
|
| - data_header_file = open(output_header_filename, 'wb')
|
| + data_header_file = open(output_header_filepath, 'wb')
|
| data_header_file.write(_LICENSE)
|
| data_header_file.write(_DO_NOT_EDIT_WARNING)
|
| write_header_file_guard(data_header_file, output_header_filename, path, True)
|
| @@ -652,67 +653,94 @@ def process_json_file(json_filename, list_tag,
|
| data_header_file.write('} // namespace gpu\n')
|
| write_header_file_guard(data_header_file, output_header_filename, path, False)
|
| data_header_file.close()
|
| - format_files([output_header_filename, output_data_filename,
|
| - output_helper_filename, output_exception_filename])
|
| -
|
| - os.chdir(current_dir)
|
| -
|
| -
|
| -def process_software_rendering_list():
|
| - total_features = load_software_rendering_list_features('gpu_feature_type.h')
|
| - process_json_file('software_rendering_list.json', 'SoftwareRenderingList',
|
| - 'gpu_feature_type.h', total_features, 'GPU_FEATURE_TYPE_',
|
| - 'software_rendering_list_autogen.h',
|
| - 'software_rendering_list_autogen.cc',
|
| - 'software_rendering_list_arrays_and_structs_autogen.h',
|
| - 'software_rendering_list_exceptions_autogen.h',
|
| - 'gpu/config', 'GPU_EXPORT ')
|
| -
|
| -
|
| -def process_gpu_driver_bug_list():
|
| + if git_format:
|
| + format_files([output_header_filepath, output_data_filepath,
|
| + output_helper_filepath, output_exception_filepath])
|
| +
|
| +
|
| +def process_software_rendering_list(script_dir, output_dir):
|
| + total_features = load_software_rendering_list_features(
|
| + os.path.join(script_dir, 'gpu_feature_type.h'))
|
| + process_json_file(
|
| + os.path.join(script_dir, 'software_rendering_list.json'),
|
| + 'SoftwareRenderingList',
|
| + 'gpu_feature_type.h',
|
| + total_features,
|
| + 'GPU_FEATURE_TYPE_',
|
| + os.path.join(output_dir, 'software_rendering_list_autogen.h'),
|
| + os.path.join(output_dir, 'software_rendering_list_autogen.cc'),
|
| + os.path.join(output_dir,
|
| + 'software_rendering_list_arrays_and_structs_autogen.h'),
|
| + os.path.join(output_dir, 'software_rendering_list_exceptions_autogen.h'),
|
| + 'gpu/config',
|
| + 'GPU_EXPORT ',
|
| + False)
|
| +
|
| +
|
| +def process_gpu_driver_bug_list(script_dir, output_dir):
|
| total_features = load_gpu_driver_bug_workarounds(
|
| - 'gpu_driver_bug_workaround_type.h')
|
| - process_json_file('gpu_driver_bug_list.json', 'GpuDriverBugList',
|
| - 'gpu_driver_bug_workaround_type.h', total_features, '',
|
| - 'gpu_driver_bug_list_autogen.h',
|
| - 'gpu_driver_bug_list_autogen.cc',
|
| - 'gpu_driver_bug_list_arrays_and_structs_autogen.h',
|
| - 'gpu_driver_bug_list_exceptions_autogen.h',
|
| - 'gpu/config', 'GPU_EXPORT ')
|
| -
|
| -
|
| -def process_gpu_control_list_testing():
|
| + os.path.join(script_dir, 'gpu_driver_bug_workaround_type.h'))
|
| + process_json_file(
|
| + os.path.join(script_dir, 'gpu_driver_bug_list.json'),
|
| + 'GpuDriverBugList',
|
| + 'gpu_driver_bug_workaround_type.h',
|
| + total_features,
|
| + '',
|
| + os.path.join(output_dir, 'gpu_driver_bug_list_autogen.h'),
|
| + os.path.join(output_dir, 'gpu_driver_bug_list_autogen.cc'),
|
| + os.path.join(output_dir,
|
| + 'gpu_driver_bug_list_arrays_and_structs_autogen.h'),
|
| + os.path.join(output_dir, 'gpu_driver_bug_list_exceptions_autogen.h'),
|
| + 'gpu/config',
|
| + 'GPU_EXPORT ',
|
| + False)
|
| +
|
| +
|
| +def process_gpu_control_list_testing(script_dir, output_dir):
|
| total_features = ['test_feature_0', 'test_feature_1', 'test_feature_2']
|
| - process_json_file('gpu_control_list_testing.json', 'GpuControlListTesting',
|
| - 'gpu_control_list_testing_data.h', total_features, '',
|
| - 'gpu_control_list_testing_autogen.h',
|
| - 'gpu_control_list_testing_autogen.cc',
|
| - 'gpu_control_list_testing_arrays_and_structs_autogen.h',
|
| - 'gpu_control_list_testing_exceptions_autogen.h',
|
| - 'gpu/config', '')
|
| -
|
| -
|
| -def process_gpu_data_manager_testing():
|
| - total_features = load_software_rendering_list_features('gpu_feature_type.h')
|
| - process_json_file('gpu_data_manager_testing.json', 'GpuDataManagerTesting',
|
| - 'gpu_feature_type.h', total_features, 'GPU_FEATURE_TYPE_',
|
| - 'gpu_data_manager_testing_autogen.h',
|
| - 'gpu_data_manager_testing_autogen.cc',
|
| - 'gpu_data_manager_testing_arrays_and_structs_autogen.h',
|
| - 'gpu_data_manager_testing_exceptions_autogen.h',
|
| - 'content/browser/gpu', '')
|
| -
|
| -
|
| -def write_test_entry_enums(input_json_filename, output_entry_enums_filename,
|
| + process_json_file(
|
| + os.path.join(script_dir, 'gpu_control_list_testing.json'),
|
| + 'GpuControlListTesting',
|
| + 'gpu_control_list_testing_data.h',
|
| + total_features,
|
| + '',
|
| + os.path.join(output_dir, 'gpu_control_list_testing_autogen.h'),
|
| + os.path.join(output_dir, 'gpu_control_list_testing_autogen.cc'),
|
| + os.path.join(output_dir,
|
| + 'gpu_control_list_testing_arrays_and_structs_autogen.h'),
|
| + os.path.join(output_dir, 'gpu_control_list_testing_exceptions_autogen.h'),
|
| + 'gpu/config',
|
| + '',
|
| + True)
|
| +
|
| +
|
| +def process_gpu_data_manager_testing(script_dir, output_dir):
|
| + total_features = load_software_rendering_list_features(
|
| + os.path.join(script_dir, 'gpu_feature_type.h'))
|
| + process_json_file(
|
| + os.path.join(output_dir, 'gpu_data_manager_testing.json'),
|
| + 'GpuDataManagerTesting',
|
| + 'gpu_feature_type.h',
|
| + total_features,
|
| + 'GPU_FEATURE_TYPE_',
|
| + os.path.join(output_dir, 'gpu_data_manager_testing_autogen.h'),
|
| + os.path.join(output_dir, 'gpu_data_manager_testing_autogen.cc'),
|
| + os.path.join(output_dir,
|
| + 'gpu_data_manager_testing_arrays_and_structs_autogen.h'),
|
| + os.path.join(output_dir, 'gpu_data_manager_testing_exceptions_autogen.h'),
|
| + 'content/browser/gpu',
|
| + '',
|
| + True)
|
| +
|
| +
|
| +def write_test_entry_enums(input_json_filepath, output_entry_enums_filepath,
|
| path, list_tag):
|
| - current_dir = os.getcwd()
|
| - os.chdir('../../' + path) # assume python script is under gou/config
|
| -
|
| - json_file = open(input_json_filename, 'rb')
|
| + json_file = open(input_json_filepath, 'rb')
|
| json_data = json.load(json_file)
|
| json_file.close()
|
|
|
| - enum_file = open(output_entry_enums_filename, 'wb')
|
| + output_entry_enums_filename = os.path.basename(output_entry_enums_filepath)
|
| + enum_file = open(output_entry_enums_filepath, 'wb')
|
| enum_file.write(_LICENSE)
|
| enum_file.write(_DO_NOT_EDIT_WARNING)
|
| write_header_file_guard(enum_file, output_entry_enums_filename, path, True)
|
| @@ -731,27 +759,45 @@ def write_test_entry_enums(input_json_filename, output_entry_enums_filename,
|
| enum_file.write('} // namespace gpu\n')
|
| write_header_file_guard(enum_file, output_entry_enums_filename, path, False)
|
| enum_file.close()
|
| - format_files([output_entry_enums_filename])
|
| -
|
| - os.chdir(current_dir)
|
| -
|
| -
|
| -def main():
|
| - dir_path = os.path.dirname(os.path.realpath(__file__))
|
| - os.chdir(dir_path)
|
| - process_software_rendering_list()
|
| - process_gpu_driver_bug_list()
|
| - process_gpu_control_list_testing()
|
| - write_test_entry_enums('gpu_control_list_testing.json',
|
| - 'gpu_control_list_testing_entry_enums_autogen.h',
|
| - 'gpu/config',
|
| - 'GpuControlListTesting')
|
| - process_gpu_data_manager_testing()
|
| - write_test_entry_enums('gpu_data_manager_testing.json',
|
| - 'gpu_data_manager_testing_entry_enums_autogen.h',
|
| - 'content/browser/gpu',
|
| - 'GpuDataManagerTesting')
|
| + format_files([output_entry_enums_filepath])
|
| +
|
| +
|
| +def main(argv):
|
| + parser = OptionParser()
|
| + parser.add_option("--output-dir",
|
| + help="output directory for SoftwareRenderingList and "
|
| + "GpuDriverBugList data files. "
|
| + "If unspecified, these files are not generated.")
|
| + parser.add_option("--skip-testing-data", action="store_false",
|
| + dest="generate_testing_data", default=True,
|
| + help="skip testing data generation.")
|
| + (options, args) = parser.parse_args(args=argv)
|
| +
|
| + script_dir = os.path.dirname(os.path.realpath(__file__))
|
| +
|
| + if options.output_dir != None:
|
| + process_software_rendering_list(script_dir, options.output_dir)
|
| + process_gpu_driver_bug_list(script_dir, options.output_dir)
|
| +
|
| + if options.generate_testing_data:
|
| + # Testing data files are generated by calling the script manually.
|
| + process_gpu_control_list_testing(script_dir, script_dir)
|
| + write_test_entry_enums(
|
| + os.path.join(script_dir, 'gpu_control_list_testing.json'),
|
| + os.path.join(script_dir,
|
| + 'gpu_control_list_testing_entry_enums_autogen.h'),
|
| + 'gpu/config',
|
| + 'GpuControlListTesting')
|
| + chrome_root_dir = os.path.abspath(os.path.join(script_dir, '../../'))
|
| + gpu_data_manager_dir = os.path.join(chrome_root_dir, 'content/browser/gpu')
|
| + process_gpu_data_manager_testing(script_dir, gpu_data_manager_dir)
|
| + write_test_entry_enums(
|
| + os.path.join(gpu_data_manager_dir, 'gpu_data_manager_testing.json'),
|
| + os.path.join(gpu_data_manager_dir,
|
| + 'gpu_data_manager_testing_entry_enums_autogen.h'),
|
| + 'content/browser/gpu',
|
| + 'GpuDataManagerTesting')
|
|
|
|
|
| if __name__ == '__main__':
|
| - sys.exit(main())
|
| + sys.exit(main(sys.argv[1:]))
|
|
|