| #!/usr/bin/env python |
| # Copyright 2018 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| """code generator for webgpu command buffers.""" |
| |
| import os |
| import os.path |
| import sys |
| from optparse import OptionParser |
| |
| import build_cmd_buffer_lib |
| |
| # Named type info object represents a named type that is used in API call |
| # arguments. The named types are used in 'webgpu_cmd_buffer_functions.txt'. |
| # |
| # Options are documented in build_gles2_cmd_buffer.py/build_raster_cmd_buffer.py |
| _NAMED_TYPE_INFO = { |
| } |
| |
| # A function info object specifies the type and other special data for the |
| # command that will be generated. A base function info object is generated by |
| # parsing the "webgpu_cmd_buffer_functions.txt", one for each function in the |
| # file. These function info objects can be augmented and their values can be |
| # overridden by adding an object to the table below. |
| # |
| # Must match function names specified in "webgpu_cmd_buffer_functions.txt". |
| # |
| # Options are documented in build_gles2_cmd_buffer.py/build_raster_cmd_buffer.py |
| # (Note: some options (like decoder_func and unit_test) currently have no |
| # effect, because WriteServiceImplementation and WriteServiceUnitTests are not |
| # used below.) |
| _FUNCTION_INFO = { |
| 'Dummy': { |
| 'impl_func': False, |
| }, |
| } |
| |
| |
| def main(argv): |
| """This is the main function.""" |
| parser = OptionParser() |
| parser.add_option( |
| "--output-dir", |
| help="base directory for resulting files, under chrome/src. default is " |
| "empty. Use this if you want the result stored under gen.") |
| parser.add_option( |
| "-v", "--verbose", action="store_true", |
| help="prints more output.") |
| |
| (options, _) = parser.parse_args(args=argv) |
| |
| # This script lives under gpu/command_buffer, cd to base directory. |
| os.chdir(os.path.dirname(__file__) + "/../..") |
| base_dir = os.getcwd() |
| build_cmd_buffer_lib.InitializePrefix("WebGPU") |
| gen = build_cmd_buffer_lib.GLGenerator(options.verbose, "2018", |
| _FUNCTION_INFO, _NAMED_TYPE_INFO) |
| gen.ParseGLH("gpu/command_buffer/webgpu_cmd_buffer_functions.txt") |
| |
| # Support generating files under gen/ |
| if options.output_dir != None: |
| os.chdir(options.output_dir) |
| |
| os.chdir(base_dir) |
| |
| gen.WriteCommandIds("gpu/command_buffer/common/webgpu_cmd_ids_autogen.h") |
| gen.WriteFormat("gpu/command_buffer/common/webgpu_cmd_format_autogen.h") |
| gen.WriteFormatTest( |
| "gpu/command_buffer/common/webgpu_cmd_format_test_autogen.h") |
| gen.WriteGLES2InterfaceHeader( |
| "gpu/command_buffer/client/webgpu_interface_autogen.h") |
| gen.WriteGLES2ImplementationHeader( |
| "gpu/command_buffer/client/webgpu_implementation_autogen.h") |
| gen.WriteGLES2Implementation( |
| "gpu/command_buffer/client/webgpu_implementation_impl_autogen.h") |
| gen.WriteGLES2ImplementationUnitTests( |
| "gpu/command_buffer/client/webgpu_implementation_unittest_autogen.h") |
| gen.WriteCmdHelperHeader( |
| "gpu/command_buffer/client/webgpu_cmd_helper_autogen.h") |
| # Note: No gen.WriteServiceImplementation |
| # Note: No gen.WriteServiceUnitTests |
| gen.WriteServiceUtilsHeader( |
| "gpu/command_buffer/service/webgpu_cmd_validation_autogen.h") |
| gen.WriteServiceUtilsImplementation( |
| "gpu/command_buffer/service/" |
| "webgpu_cmd_validation_implementation_autogen.h") |
| |
| build_cmd_buffer_lib.Format(gen.generated_cpp_filenames) |
| |
| if gen.errors > 0: |
| print "%d errors" % gen.errors |
| return 1 |
| return 0 |
| |
| |
| if __name__ == '__main__': |
| sys.exit(main(sys.argv[1:])) |