/gits

API capture-replay tool for Vulkan, OpenCL, Intel oneAPI Level Zero and OpenGL

Primary LanguageC++MIT LicenseMIT

Graphics Intercept and Trace Solution (GITS)

Graphics Intercept and Trace Solution is a capture-replay tool for Vulkan, OpenCL, Intel oneAPI Level Zero and OpenGL.

GITS allows you to record sequences of API calls. You can either serialize them into binary traces called streams that can be replayed later or you can generate a C++ project from them (we call it CCode).

GITS has been used for years to help develop and validate Intel GPU drivers. The development is mainly focused on enabling applications, not APIs or extensions. We implement support for API calls when we encounter apps using them.

GITS is a collection of command line tools originally aimed at driver developers, but we think it can be useful to other users as well. If you are a game developer who wants to analyze frames using a graphical tool, GPA or a similar tool is what you should look at.

Distribution

Currently we do not provide prebuilt binaries. To build GITS you need a c++ compiler + buildsystem as well as python3. The full process is described in the documentation.

Usage

To record an application, you will have to inject our dynamic library (called the interceptor) into it:

  • On Windows, this is typically done by copying a DLL into the app directory.
  • On Linux, by manipulating loader environment variables.
  • When recording Vulkan, it is also possible to use GITS as a Vulkan layer instead.

To replay the stream, pass it as an argument to the gitsPlayer executable. See the player's built-in help (gitsPlayer --help) for usage info.

GITS also allows recording streams containing only a subset of API calls made by the application (e.g., only select frames). We call them substreams or subcaptures.

More information can be found in the Usage section of the documentation.

Contributing

For information on how to contribute, see contributing. All contributions are subject to our code of conduct.

If you want to report security issues, see security.

License

GITS is licensed under the terms in license.

GITS uses third-party software which are available under their own licenses. See GITS 3rd party programs for more info.