|
Name |
|
Date |
Size |
#Lines |
LOC |
| .. | | - | - |
| .vscode/ | | 03-May-2024 | - | 183 | 182 |
| build/ | | 03-May-2024 | - | 140 | 97 |
| build_overrides/ | | 03-May-2024 | - | 60 | 51 |
| docs/ | | 03-May-2024 | - | 1,549 | 1,073 |
| extensions/ | | 03-May-2024 | - | 211 | 137 |
| include/ | | 03-May-2024 | - | 137,891 | 115,423 |
| infra/config/ | | 03-May-2024 | - | 80 | 71 |
| src/ | | 03-May-2024 | - | 246,874 | 193,639 |
| tests/ | | 03-May-2024 | - | 151,286 | 145,670 |
| third_party/ | | 03-May-2024 | - | 4,744,291 | 3,874,534 |
| tools/cmake_generate_graphviz/ | | 03-May-2024 | - | 133 | 100 |
| .clang-format | D | 03-May-2024 | 3.2 KiB | 118 | 116 |
| .dir-locals.el | D | 03-May-2024 | 4.5 KiB | 166 | 162 |
| .gitignore | D | 03-May-2024 | 437 | 46 | 41 |
| AUTHORS.txt | D | 03-May-2024 | 378 | 9 | 8 |
| Android.bp | D | 03-May-2024 | 3.3 KiB | 129 | 112 |
| BUILD.gn | D | 03-May-2024 | 5.9 KiB | 229 | 207 |
| CMakeLists.txt | D | 03-May-2024 | 40.1 KiB | 1,030 | 893 |
| CMakeSettings.json | D | 03-May-2024 | 1.5 KiB | 52 | 52 |
| CONTRIBUTING.txt | D | 03-May-2024 | 1.5 KiB | 28 | 24 |
| CONTRIBUTORS.txt | D | 03-May-2024 | 1.4 KiB | 42 | 39 |
| DIR_METADATA | D | 03-May-2024 | 54 | 4 | 3 |
| LICENSE.txt | D | 03-May-2024 | 11.3 KiB | 203 | 169 |
| METADATA | D | 03-May-2024 | 39 | 4 | 3 |
| OWNERS | D | 03-May-2024 | 598 | 18 | 16 |
| README.google | D | 03-May-2024 | 420 | 11 | 9 |
| README.md | D | 03-May-2024 | 6.9 KiB | 124 | 75 |
| README.version | D | 03-May-2024 | 121 | 4 | 3 |
| TEST_MAPPING | D | 03-May-2024 | 78 | 7 | 7 |
| codereview.settings | D | 03-May-2024 | 138 | 5 | 4 |
README.google
README.md
1# SwiftShader
2
3[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
4
5Introduction
6------------
7
8SwiftShader is a high-performance CPU-based implementation of the Vulkan graphics API<sup>1</sup><sup>2</sup>. Its goal is to provide hardware independence for advanced 3D graphics.
9
10> NOTE: SwiftShader's OpenGL ES frontend is no longer supported, and will eventually be removed. Read more about our recommendation to use [ANGLE on top of SwiftShader Vulkan here](ANGLE.md).
11
12Building
13--------
14
15SwiftShader libraries can be built for Windows, Linux, and macOS.\
16Android and Chrome (OS) build environments are also supported.
17
18* **CMake**
19\
20 [Install CMake](https://cmake.org/download/) for Linux, macOS, or Windows and use either [the GUI](https://cmake.org/runningcmake/) or run the following terminal commands:
21 ```
22 cd build
23 cmake ..
24 cmake --build . --parallel
25
26 ./vk-unittests
27 ```
28 Tip: Set the [CMAKE_BUILD_PARALLEL_LEVEL](https://cmake.org/cmake/help/latest/envvar/.CMAKE_BUILD_PARALLEL_LEVEL.html#envvar:CMAKE_BUILD_PARALLEL_LEVEL) environment variable to control the level of parallelism.
29
30
31* **Visual Studio**
32\
33 To build the Vulkan ICD library, use [Visual Studio 2019](https://visualstudio.microsoft.com/vs/community/) to open the project folder and wait for it to run CMake. Open the [CMake Targets View](https://docs.microsoft.com/en-us/cpp/build/cmake-projects-in-visual-studio?view=vs-2019#ide-integration) in the Solution Explorer and select the vk_swiftshader project to [build](https://docs.microsoft.com/en-us/cpp/build/cmake-projects-in-visual-studio?view=vs-2019#building-cmake-projects) it.
34
35
36Usage
37-----
38
39The SwiftShader libraries act as drop-in replacements for graphics drivers.
40
41On Windows, most applications can be made to use SwiftShader's DLLs by placing them in the same folder as the executable. On Linux, the `LD_LIBRARY_PATH` environment variable or `-rpath` linker option can be used to direct applications to search for shared libraries in the indicated directory first.
42
43In general, Vulkan applications look for a shared library named `vulkan-1.dll` on Windows (`vulkan-1.so` on Linux). This 'loader' library then redirects API calls to the actual Installable Client Driver (ICD). SwiftShader's ICD is named `libvk_swiftshader.dll`, but it can be renamed to `vulkan-1.dll` to be loaded directly by the application. Alternatively, you can set the `VK_ICD_FILENAMES` environment variable to the path to `vk_swiftshader_icd.json` file that is generated under the build directory (e.g. `.\SwiftShader\build\Windows\vk_swiftshader_icd.json`). To learn more about how Vulkan loading works, read the [official documentation here](https://github.com/KhronosGroup/Vulkan-Loader/blob/master/loader/LoaderAndLayerInterface.md).
44
45Contributing
46------------
47
48See [CONTRIBUTING.txt](CONTRIBUTING.txt) for important contributing requirements.
49
50The canonical repository for SwiftShader is hosted at:
51https://swiftshader.googlesource.com/SwiftShader
52
53All changes must be reviewed and approved in the [Gerrit](https://www.gerritcodereview.com/) review tool at:
54https://swiftshader-review.googlesource.com
55
56Authenticate your account here:
57https://swiftshader-review.googlesource.com/new-password
58
59All changes require a [Change-ID](https://gerrit-review.googlesource.com/Documentation/user-changeid.html) tag in the commit message. A commit hook may be used to add this tag automatically, and can be found at:
60https://gerrit-review.googlesource.com/tools/hooks/commit-msg. To clone the repository and install the commit hook in one go:
61
62 git clone https://swiftshader.googlesource.com/SwiftShader && (cd SwiftShader && curl -Lo `git rev-parse --git-dir`/hooks/commit-msg https://gerrit-review.googlesource.com/tools/hooks/commit-msg ; chmod +x `git rev-parse --git-dir`/hooks/commit-msg)
63
64Changes are uploaded to Gerrit by executing:
65
66 git push origin HEAD:refs/for/master
67
68When ready, [add](https://gerrit-review.googlesource.com/Documentation/intro-user.html#adding-reviewers) a project [owner](OWNERS) as a reviewer on your change.
69
70Some tests will automatically be run against the change. Notably, [presubmit.sh](tests/presubmit.sh) verifies the change has been formatted using [clang-format 10.0](tests/kokoro/gcp_ubuntu/check_style.sh). Most IDEs come with clang-format support, but may require downgrading to [clang-format version 10.0](https://github.com/llvm/llvm-project/releases/tag/llvmorg-10.0.0).
71
72Testing
73-------
74
75SwiftShader's OpenGL ES implementation can be tested using the [dEQP](https://github.com/KhronosGroup/VK-GL-CTS) test suite.
76
77See [docs/dEQP.md](docs/dEQP.md) for details.
78
79Third-Party Dependencies
80------------------------
81
82The [third_party](third_party/) directory contains projects which originated outside of SwiftShader:
83
84[subzero](third_party/subzero/) contains a fork of the [Subzero](https://chromium.googlesource.com/native_client/pnacl-subzero/) project. It originates from Google Chrome's (Portable) [Native Client](https://developer.chrome.com/native-client) project. The fork was made using [git-subtree](https://github.com/git/git/blob/master/contrib/subtree/git-subtree.txt) to include all of Subzero's history.
85
86[llvm-subzero](third_party/llvm-subzero/) contains a minimized set of LLVM dependencies of the Subzero project.
87
88[PowerVR_SDK](third_party/PowerVR_SDK/) contains a subset of the [PowerVR Graphics Native SDK](https://github.com/powervr-graphics/Native_SDK) for running several sample applications.
89
90[googletest](third_party/googletest/) contains the [Google Test](https://github.com/google/googletest) project, as a Git submodule. It is used for running unit tests for Chromium, and Reactor unit tests. Run `git submodule update --init` to obtain/update the code. Any contributions should be made upstream.
91
92Documentation
93-------------
94
95See [docs/Index.md](docs/Index.md).
96
97Contact
98-------
99
100Public mailing list: [swiftshader@googlegroups.com](https://groups.google.com/forum/#!forum/swiftshader)
101
102General bug tracker: https://g.co/swiftshaderbugs \
103Chrome specific bugs: https://bugs.chromium.org/p/swiftshader
104
105License
106-------
107
108The SwiftShader project is licensed under the Apache License Version 2.0. You can find a copy of it in [LICENSE.txt](LICENSE.txt).
109
110Files in the third_party folder are subject to their respective license.
111
112Authors and Contributors
113------------------------
114
115The legal authors for copyright purposes are listed in [AUTHORS.txt](AUTHORS.txt).
116
117[CONTRIBUTORS.txt](CONTRIBUTORS.txt) contains a list of names of individuals who have contributed to SwiftShader. If you're not on the list, but you've signed the [Google CLA](https://cla.developers.google.com/clas) and have contributed more than a formatting change, feel free to request to be added.
118
119Disclaimer
120----------
121
1221. Trademarks are the property of their respective owners.
1232. This is not an official Google product.
124
README.version