BigWheels is a cross-platform, API agnostic framework to build graphics applications.
Supported platforms:
- Windows
- Linux
- Android
Supported graphics APIs:
- DirectX 12
- Vulkan
Note: This is not an officially supported Google product.
- Software
- Linux
- C++17 compliant compiler (clang 10+ or gcc 9+)
- Visual Studio Code or CLI
- Recent Vulkan SDK
- 1.3.216.0 or later
- Windows
- Visual Studio 2019 or 2022, or Visual Studio Code
- Recent Vulkan SDK
- 1.3.216.0 or later
- Recent version of Windows SDK
- 10.0.22621.0 or later
- Android
- Android Studio, 2022.1.1 Patch 2 or later
- Recent version of NDK
- 25.1.8937393 or later
- Linux
- Hardware (not an exhaustive list)
- AMD
- Vega GPUs
- Vega 56
- Vega 64
- Navi GPUs
- Radeon 5700
- Radeon 5700 XT
- Radeon 6700 XT
- Vega GPUs
- NVIDIA
- 30x0 GPUs
- 20x0 GPUs
- 16x0 GPus
- 10x0 GPUs
- This is iffy - some of the later more recent DX12 and Vulkan features many not work.
- Intel
- None tested
- AMD
See the documentation for instructions on how to build and run BigWheels and the sample projects.
BigWheels uses GoogleTest for its unit testing framework. Unit tests can be optionally disabled from the build with -DPPX_BUILD_TESTS=OFF
.
To add a new test:
- Add and write a new test file under
src/test/
, e.g.src/test/new_test.cpp
. - Add the new file name to the list of test sources in
src/test/CMakeLists.txt
.
To build tests (without running them), use ninja build-tests
. Test binaries are output in test/
.
To run tests (they will be built if needed), use ninja run-tests
.
BigWheels includes a variety of benchmarks that test graphics fundamentals under the benchmarks
folder. See the documentation for benchmarks on how to build and run them.
If you don't have a compatible GPU, you can use a software renderer to run BigWheels applications. See the documentation for software rendering options for Vulkan and DirectX.
We run automated workflows for testing as part of PR submissions. See the documentation for information on what is tested and common maintenance tasks.
See this document