def get_file_renders(self, args): supported_extensions = [] with open(args.supported_extensions) as f: supported_extensions_json = json.loads(f.read()) supported_extensions = supported_extensions_json[ 'supported_extensions'] params = compute_params( etree.parse(args.gl_xml).getroot(), supported_extensions) return [ FileRender('opengl/OpenGLFunctionsBase.cpp', 'dawn_native/opengl/OpenGLFunctionsBase_autogen.cpp', [params]), FileRender('opengl/OpenGLFunctionsBase.h', 'dawn_native/opengl/OpenGLFunctionsBase_autogen.h', [params]), FileRender('opengl/opengl_platform.h', 'dawn_native/opengl/opengl_platform_autogen.h', [params]), ]
def get_file_renders(self, args): with open(args.dawn_json) as f: loaded_json = json.loads(f.read()) api_params = parse_json(loaded_json) targets = args.targets.split(',') wire_json = None if args.wire_json: with open(args.wire_json) as f: wire_json = json.loads(f.read()) base_params = { 'Name': lambda name: Name(name), 'as_annotated_cType': lambda arg: annotated(as_cTypeEnumSpecialCase(arg.type), arg), 'as_annotated_cppType': lambda arg: annotated(as_cppType(arg.type.name), arg), 'as_cEnum': as_cEnum, 'as_cEnumDawn': as_cEnumDawn, 'as_cppEnum': as_cppEnum, 'as_cMethod': as_cMethod, 'as_cMethodDawn': as_cMethodDawn, 'as_MethodSuffix': as_MethodSuffix, 'as_cProc': as_cProc, 'as_cProcDawn': as_cProcDawn, 'as_cType': as_cType, 'as_cTypeDawn': as_cTypeDawn, 'as_cppType': as_cppType, 'convert_cType_to_cppType': convert_cType_to_cppType, 'as_varName': as_varName, 'decorate': decorate, 'c_methods': lambda typ: c_methods(api_params['types'], typ), 'c_methods_sorted_by_name': get_c_methods_sorted_by_name(api_params), } renders = [] if 'dawn_headers' in targets: renders.append(FileRender('webgpu.h', 'src/include/dawn/webgpu.h', [base_params, api_params])) renders.append(FileRender('dawn_proc_table.h', 'src/include/dawn/dawn_proc_table.h', [base_params, api_params])) if 'dawncpp_headers' in targets: renders.append(FileRender('webgpu_cpp.h', 'src/include/dawn/webgpu_cpp.h', [base_params, api_params])) if 'dawn_proc' in targets: renders.append(FileRender('dawn_proc.c', 'src/dawn/dawn_proc.c', [base_params, api_params])) if 'dawncpp' in targets: renders.append(FileRender('webgpu_cpp.cpp', 'src/dawn/webgpu_cpp.cpp', [base_params, api_params])) if 'mock_webgpu' in targets: mock_params = [ base_params, api_params, { 'has_callback_arguments': has_callback_arguments } ] renders.append(FileRender('mock_webgpu.h', 'src/dawn/mock_webgpu.h', mock_params)) renders.append(FileRender('mock_webgpu.cpp', 'src/dawn/mock_webgpu.cpp', mock_params)) if 'dawn_native_utils' in targets: frontend_params = [ base_params, api_params, { 'as_frontendType': lambda typ: as_frontendType(typ), # TODO as_frontendType and friends take a Type and not a Name :( 'as_annotated_frontendType': lambda arg: annotated(as_frontendType(arg.type), arg) } ] renders.append(FileRender('dawn_native/ValidationUtils.h', 'src/dawn_native/ValidationUtils_autogen.h', frontend_params)) renders.append(FileRender('dawn_native/ValidationUtils.cpp', 'src/dawn_native/ValidationUtils_autogen.cpp', frontend_params)) renders.append(FileRender('dawn_native/wgpu_structs.h', 'src/dawn_native/wgpu_structs_autogen.h', frontend_params)) renders.append(FileRender('dawn_native/wgpu_structs.cpp', 'src/dawn_native/wgpu_structs_autogen.cpp', frontend_params)) renders.append(FileRender('dawn_native/ProcTable.cpp', 'src/dawn_native/ProcTable.cpp', frontend_params)) if 'dawn_wire' in targets: additional_params = compute_wire_params(api_params, wire_json) wire_params = [ base_params, api_params, { 'as_wireType': as_wireType, 'as_annotated_wireType': lambda arg: annotated(as_wireType(arg.type), arg), }, additional_params ] renders.append(FileRender('dawn_wire/WireCmd.h', 'src/dawn_wire/WireCmd_autogen.h', wire_params)) renders.append(FileRender('dawn_wire/WireCmd.cpp', 'src/dawn_wire/WireCmd_autogen.cpp', wire_params)) renders.append(FileRender('dawn_wire/client/ApiObjects.h', 'src/dawn_wire/client/ApiObjects_autogen.h', wire_params)) renders.append(FileRender('dawn_wire/client/ApiProcs.cpp', 'src/dawn_wire/client/ApiProcs_autogen.cpp', wire_params)) renders.append(FileRender('dawn_wire/client/ApiProcs.h', 'src/dawn_wire/client/ApiProcs_autogen.h', wire_params)) renders.append(FileRender('dawn_wire/client/ClientBase.h', 'src/dawn_wire/client/ClientBase_autogen.h', wire_params)) renders.append(FileRender('dawn_wire/client/ClientHandlers.cpp', 'src/dawn_wire/client/ClientHandlers_autogen.cpp', wire_params)) renders.append(FileRender('dawn_wire/client/ClientPrototypes.inc', 'src/dawn_wire/client/ClientPrototypes_autogen.inc', wire_params)) renders.append(FileRender('dawn_wire/server/ServerBase.h', 'src/dawn_wire/server/ServerBase_autogen.h', wire_params)) renders.append(FileRender('dawn_wire/server/ServerDoers.cpp', 'src/dawn_wire/server/ServerDoers_autogen.cpp', wire_params)) renders.append(FileRender('dawn_wire/server/ServerHandlers.cpp', 'src/dawn_wire/server/ServerHandlers_autogen.cpp', wire_params)) renders.append(FileRender('dawn_wire/server/ServerPrototypes.inc', 'src/dawn_wire/server/ServerPrototypes_autogen.inc', wire_params)) return renders
def get_file_renders(self, args): with open(args.dawn_json) as f: loaded_json = json.loads(f.read()) targets = args.targets.split(',') wire_json = None if args.wire_json: with open(args.wire_json) as f: wire_json = json.loads(f.read()) renders = [] params_dawn = parse_json(loaded_json, enabled_tags=['dawn', 'native', 'deprecated']) metadata = params_dawn['metadata'] RENDER_PARAMS_BASE = make_base_render_params(metadata) api = metadata.api.lower() prefix = metadata.proc_table_prefix.lower() if 'dawn_headers' in targets: renders.append( FileRender('api.h', 'src/include/dawn/' + api + '.h', [RENDER_PARAMS_BASE, params_dawn])) renders.append( FileRender('dawn_proc_table.h', 'src/include/dawn/' + prefix + '_proc_table.h', [RENDER_PARAMS_BASE, params_dawn])) if 'dawncpp_headers' in targets: renders.append( FileRender('api_cpp.h', 'src/include/dawn/' + api + '_cpp.h', [RENDER_PARAMS_BASE, params_dawn])) renders.append( FileRender('api_cpp_print.h', 'src/include/dawn/' + api + '_cpp_print.h', [RENDER_PARAMS_BASE, params_dawn])) if 'dawn_proc' in targets: renders.append( FileRender('dawn_proc.c', 'src/dawn/' + prefix + '_proc.c', [RENDER_PARAMS_BASE, params_dawn])) renders.append( FileRender('dawn_thread_dispatch_proc.cpp', 'src/dawn/' + prefix + '_thread_dispatch_proc.cpp', [RENDER_PARAMS_BASE, params_dawn])) if 'webgpu_dawn_native_proc' in targets: renders.append( FileRender('dawn_native/api_dawn_native_proc.cpp', 'src/dawn_native/webgpu_dawn_native_proc.cpp', [RENDER_PARAMS_BASE, params_dawn])) if 'dawncpp' in targets: renders.append( FileRender('api_cpp.cpp', 'src/dawn/' + api + '_cpp.cpp', [RENDER_PARAMS_BASE, params_dawn])) if 'webgpu_headers' in targets: params_upstream = parse_json(loaded_json, enabled_tags=['upstream', 'native']) renders.append( FileRender('api.h', 'webgpu-headers/' + api + '.h', [RENDER_PARAMS_BASE, params_upstream])) if 'emscripten_bits' in targets: params_emscripten = parse_json( loaded_json, enabled_tags=['upstream', 'emscripten']) renders.append( FileRender('api.h', 'emscripten-bits/' + api + '.h', [RENDER_PARAMS_BASE, params_emscripten])) renders.append( FileRender('api_cpp.h', 'emscripten-bits/' + api + '_cpp.h', [RENDER_PARAMS_BASE, params_emscripten])) renders.append( FileRender('api_cpp.cpp', 'emscripten-bits/' + api + '_cpp.cpp', [RENDER_PARAMS_BASE, params_emscripten])) renders.append( FileRender('api_struct_info.json', 'emscripten-bits/' + api + '_struct_info.json', [RENDER_PARAMS_BASE, params_emscripten])) renders.append( FileRender( 'library_api_enum_tables.js', 'emscripten-bits/library_' + api + '_enum_tables.js', [RENDER_PARAMS_BASE, params_emscripten])) if 'mock_api' in targets: mock_params = [ RENDER_PARAMS_BASE, params_dawn, { 'has_callback_arguments': has_callback_arguments } ] renders.append( FileRender('mock_api.h', 'src/dawn/mock_' + api + '.h', mock_params)) renders.append( FileRender('mock_api.cpp', 'src/dawn/mock_' + api + '.cpp', mock_params)) if 'dawn_native_utils' in targets: frontend_params = [ RENDER_PARAMS_BASE, params_dawn, { # TODO: as_frontendType and co. take a Type, not a Name :( 'as_frontendType': lambda typ: as_frontendType(metadata, typ), 'as_annotated_frontendType': \ lambda arg: annotated(as_frontendType(metadata, arg.type), arg), } ] impl_dir = metadata.impl_dir + '/' if metadata.impl_dir else '' native_dir = impl_dir + Name( metadata.native_namespace).snake_case() namespace = metadata.namespace renders.append( FileRender('dawn_native/ValidationUtils.h', 'src/' + native_dir + '/ValidationUtils_autogen.h', frontend_params)) renders.append( FileRender( 'dawn_native/ValidationUtils.cpp', 'src/' + native_dir + '/ValidationUtils_autogen.cpp', frontend_params)) renders.append( FileRender( 'dawn_native/dawn_platform.h', 'src/' + native_dir + '/' + prefix + '_platform_autogen.h', frontend_params)) renders.append( FileRender( 'dawn_native/api_structs.h', 'src/' + native_dir + '/' + namespace + '_structs_autogen.h', frontend_params)) renders.append( FileRender( 'dawn_native/api_structs.cpp', 'src/' + native_dir + '/' + namespace + '_structs_autogen.cpp', frontend_params)) renders.append( FileRender('dawn_native/ProcTable.cpp', 'src/' + native_dir + '/ProcTable.cpp', frontend_params)) renders.append( FileRender('dawn_native/ChainUtils.h', 'src/' + native_dir + '/ChainUtils_autogen.h', frontend_params)) renders.append( FileRender('dawn_native/ChainUtils.cpp', 'src/' + native_dir + '/ChainUtils_autogen.cpp', frontend_params)) renders.append( FileRender( 'dawn_native/api_absl_format.h', 'src/' + native_dir + '/' + api + '_absl_format_autogen.h', frontend_params)) renders.append( FileRender( 'dawn_native/api_absl_format.cpp', 'src/' + native_dir + '/' + api + '_absl_format_autogen.cpp', frontend_params)) renders.append( FileRender('dawn_native/ObjectType.h', 'src/' + native_dir + '/ObjectType_autogen.h', frontend_params)) renders.append( FileRender('dawn_native/ObjectType.cpp', 'src/' + native_dir + '/ObjectType_autogen.cpp', frontend_params)) if 'dawn_wire' in targets: additional_params = compute_wire_params(params_dawn, wire_json) wire_params = [ RENDER_PARAMS_BASE, params_dawn, { 'as_wireType': lambda type : as_wireType(metadata, type), 'as_annotated_wireType': \ lambda arg: annotated(as_wireType(metadata, arg.type), arg), }, additional_params ] renders.append( FileRender('dawn_wire/ObjectType.h', 'src/dawn_wire/ObjectType_autogen.h', wire_params)) renders.append( FileRender('dawn_wire/WireCmd.h', 'src/dawn_wire/WireCmd_autogen.h', wire_params)) renders.append( FileRender('dawn_wire/WireCmd.cpp', 'src/dawn_wire/WireCmd_autogen.cpp', wire_params)) renders.append( FileRender('dawn_wire/client/ApiObjects.h', 'src/dawn_wire/client/ApiObjects_autogen.h', wire_params)) renders.append( FileRender('dawn_wire/client/ApiProcs.cpp', 'src/dawn_wire/client/ApiProcs_autogen.cpp', wire_params)) renders.append( FileRender('dawn_wire/client/ClientBase.h', 'src/dawn_wire/client/ClientBase_autogen.h', wire_params)) renders.append( FileRender('dawn_wire/client/ClientHandlers.cpp', 'src/dawn_wire/client/ClientHandlers_autogen.cpp', wire_params)) renders.append( FileRender( 'dawn_wire/client/ClientPrototypes.inc', 'src/dawn_wire/client/ClientPrototypes_autogen.inc', wire_params)) renders.append( FileRender('dawn_wire/server/ServerBase.h', 'src/dawn_wire/server/ServerBase_autogen.h', wire_params)) renders.append( FileRender('dawn_wire/server/ServerDoers.cpp', 'src/dawn_wire/server/ServerDoers_autogen.cpp', wire_params)) renders.append( FileRender('dawn_wire/server/ServerHandlers.cpp', 'src/dawn_wire/server/ServerHandlers_autogen.cpp', wire_params)) renders.append( FileRender( 'dawn_wire/server/ServerPrototypes.inc', 'src/dawn_wire/server/ServerPrototypes_autogen.inc', wire_params)) return renders
def get_file_renders(self, args): with open(args.dawn_json) as f: loaded_json = json.loads(f.read()) api_params = parse_json(loaded_json) targets = args.targets.split(',') wire_json = None if args.wire_json: with open(args.wire_json) as f: wire_json = json.loads(f.read()) base_params = { 'Name': lambda name: Name(name), 'as_annotated_cType': lambda arg: annotated(as_cType(arg.type.name), arg), 'as_annotated_cppType': lambda arg: annotated(as_cppType(arg.type.name), arg), 'as_cEnum': as_cEnum, 'as_cppEnum': as_cppEnum, 'as_cMethod': as_cMethod, 'as_MethodSuffix': as_MethodSuffix, 'as_cProc': as_cProc, 'as_cType': as_cType, 'as_cppType': as_cppType, 'convert_cType_to_cppType': convert_cType_to_cppType, 'as_varName': as_varName, 'decorate': decorate, } renders = [] c_params = { 'native_methods': lambda typ: c_native_methods(api_params['types'], typ) } cpp_params = { 'native_methods': lambda typ: cpp_native_methods(api_params['types'], typ) } if 'dawn_headers' in targets: renders.append( FileRender('api.h', 'dawn/dawn.h', [base_params, api_params, c_params])) renders.append( FileRender('apicpp.h', 'dawn/dawncpp.h', [base_params, api_params, cpp_params])) if 'libdawn' in targets: additional_params = { 'native_methods': lambda typ: cpp_native_methods(api_params['types'], typ) } renders.append( FileRender('api.c', 'dawn/dawn.c', [base_params, api_params, c_params])) renders.append( FileRender('apicpp.cpp', 'dawn/dawncpp.cpp', [base_params, api_params, cpp_params])) if 'mock_dawn' in targets: renders.append( FileRender('mock_api.h', 'mock/mock_dawn.h', [base_params, api_params, c_params])) renders.append( FileRender('mock_api.cpp', 'mock/mock_dawn.cpp', [base_params, api_params, c_params])) if 'dawn_native_utils' in targets: frontend_params = [ base_params, api_params, c_params, { 'as_frontendType': lambda typ: as_frontendType( typ ), # TODO as_frontendType and friends take a Type and not a Name :( 'as_annotated_frontendType': lambda arg: annotated(as_frontendType(arg.type), arg) } ] renders.append( FileRender('dawn_native/ValidationUtils.h', 'dawn_native/ValidationUtils_autogen.h', frontend_params)) renders.append( FileRender('dawn_native/ValidationUtils.cpp', 'dawn_native/ValidationUtils_autogen.cpp', frontend_params)) renders.append( FileRender('dawn_native/api_structs.h', 'dawn_native/dawn_structs_autogen.h', frontend_params)) renders.append( FileRender('dawn_native/api_structs.cpp', 'dawn_native/dawn_structs_autogen.cpp', frontend_params)) renders.append( FileRender('dawn_native/ProcTable.cpp', 'dawn_native/ProcTable.cpp', frontend_params)) if 'dawn_wire' in targets: additional_params = compute_wire_params(api_params, wire_json) wire_params = [ base_params, api_params, c_params, { 'as_wireType': lambda typ: typ.name.CamelCase() + '*' if typ.category == 'object' else as_cppType(typ.name) }, additional_params ] renders.append( FileRender('dawn_wire/WireCmd.h', 'dawn_wire/WireCmd_autogen.h', wire_params)) renders.append( FileRender('dawn_wire/WireCmd.cpp', 'dawn_wire/WireCmd_autogen.cpp', wire_params)) renders.append( FileRender('dawn_wire/client/ApiObjects.h', 'dawn_wire/client/ApiObjects_autogen.h', wire_params)) renders.append( FileRender('dawn_wire/client/ApiProcs.cpp', 'dawn_wire/client/ApiProcs_autogen.cpp', wire_params)) renders.append( FileRender('dawn_wire/client/ApiProcs.h', 'dawn_wire/client/ApiProcs_autogen.h', wire_params)) renders.append( FileRender('dawn_wire/client/ClientBase.h', 'dawn_wire/client/ClientBase_autogen.h', wire_params)) renders.append( FileRender('dawn_wire/client/ClientHandlers.cpp', 'dawn_wire/client/ClientHandlers_autogen.cpp', wire_params)) renders.append( FileRender('dawn_wire/client/ClientPrototypes.inc', 'dawn_wire/client/ClientPrototypes_autogen.inc', wire_params)) renders.append( FileRender('dawn_wire/server/ServerBase.h', 'dawn_wire/server/ServerBase_autogen.h', wire_params)) renders.append( FileRender('dawn_wire/server/ServerDoers.cpp', 'dawn_wire/server/ServerDoers_autogen.cpp', wire_params)) renders.append( FileRender('dawn_wire/server/ServerHandlers.cpp', 'dawn_wire/server/ServerHandlers_autogen.cpp', wire_params)) renders.append( FileRender('dawn_wire/server/ServerPrototypes.inc', 'dawn_wire/server/ServerPrototypes_autogen.inc', wire_params)) return renders
def get_file_renders(self, args): with open(args.webnn_json) as f: loaded_json = json.loads(f.read()) api_params = parse_json(loaded_json) targets = args.targets.split(',') base_params = { 'Name': lambda name: Name(name), 'as_annotated_cType': \ lambda arg: annotated(as_cTypeEnumSpecialCase(arg.type), arg), 'as_annotated_cppType': \ lambda arg: annotated(as_cppType(arg.type.name), arg), 'as_cEnum': as_cEnum, 'as_cEnumDawn': as_cEnumDawn, 'as_cppEnum': as_cppEnum, 'as_cMethod': as_cMethod, 'as_cMethodDawn': as_cMethodDawn, 'as_MethodSuffix': as_MethodSuffix, 'as_cProc': as_cProc, 'as_cProcDawn': as_cProcDawn, 'as_cType': as_cType, 'as_cTypeDawn': as_cTypeDawn, 'as_cppType': as_cppType, 'as_jsEnumValue': as_jsEnumValue, 'convert_cType_to_cppType': convert_cType_to_cppType, 'as_varName': as_varName, 'decorate': decorate, 'c_methods': lambda typ: c_methods(api_params['types'], typ), 'c_methods_sorted_by_name': \ get_c_methods_sorted_by_name(api_params), } renders = [] if 'webnn_headers' in targets: renders.append( FileRender('webnn.h', 'src/include/webnn/webnn.h', [base_params, api_params])) renders.append( FileRender('webnn_proc_table.h', 'src/include/webnn/webnn_proc_table.h', [base_params, api_params])) if 'webnncpp_headers' in targets: renders.append( FileRender('webnn_cpp.h', 'src/include/webnn/webnn_cpp.h', [base_params, api_params])) if 'webnn_proc' in targets: renders.append( FileRender('webnn_proc.c', 'src/webnn/webnn_proc.c', [base_params, api_params])) if 'webnncpp' in targets: renders.append( FileRender('webnn_cpp.cpp', 'src/webnn/webnn_cpp.cpp', [base_params, api_params])) if 'emscripten_bits' in targets: renders.append( FileRender('webnn_struct_info.json', 'src/webnn/webnn_struct_info.json', [base_params, api_params])) renders.append( FileRender('library_webnn_enum_tables.js', 'src/webnn/library_webnn_enum_tables.js', [base_params, api_params])) if 'mock_webnn' in targets: mock_params = [ base_params, api_params, { 'has_callback_arguments': has_callback_arguments } ] renders.append( FileRender('mock_webnn.h', 'src/webnn/mock_webnn.h', mock_params)) renders.append( FileRender('mock_webnn.cpp', 'src/webnn/mock_webnn.cpp', mock_params)) if 'webnn_native_utils' in targets: frontend_params = [ base_params, api_params, { # TODO: as_frontendType and co. take a Type, not a Name :( 'as_frontendType': lambda typ: as_frontendType(typ), 'as_annotated_frontendType': \ lambda arg: annotated(as_frontendType(arg.type), arg), } ] renders.append( FileRender('webnn_native/ValidationUtils.h', 'src/webnn_native/ValidationUtils_autogen.h', frontend_params)) renders.append( FileRender('webnn_native/ValidationUtils.cpp', 'src/webnn_native/ValidationUtils_autogen.cpp', frontend_params)) renders.append( FileRender('webnn_native/webnn_structs.h', 'src/webnn_native/webnn_structs_autogen.h', frontend_params)) renders.append( FileRender('webnn_native/webnn_structs.cpp', 'src/webnn_native/webnn_structs_autogen.cpp', frontend_params)) renders.append( FileRender('webnn_native/ProcTable.cpp', 'src/webnn_native/ProcTable.cpp', frontend_params)) return renders