blob: 12bc53da11541952fb97af272a1f751dd6a3cd48 [file] [log] [blame] [view]
Nicolas Capensa5eaa8d2017-07-26 13:55:52 -04001# SwiftShader
Nicolas Capensc9d61ae2017-06-28 00:58:48 -04002
Nicolas Capensa5eaa8d2017-07-26 13:55:52 -04003[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![Build Status](https://travis-ci.org/google/swiftshader.svg?branch=master)](https://travis-ci.org/google/swiftshader) [![Build status](https://ci.appveyor.com/api/projects/status/yrmyvb34j22jg1uj?svg=true)](https://ci.appveyor.com/project/c0d1f1ed/swiftshader)
Nicolas Capens1703e0f2016-05-12 17:27:05 -04004
Nicolas Capensfe5861b2018-08-03 16:01:48 -04005Introduction
6------------
7
Nicolas Capens645a8de2019-09-24 10:20:27 -04008SwiftShader is a high-performance CPU-based implementation of the Vulkan, OpenGL ES, and Direct3D 9 graphics APIs<sup>1</sup><sup>2</sup>. Its goal is to provide hardware independence for advanced 3D graphics.
Nicolas Capens1703e0f2016-05-12 17:27:05 -04009
Nicolas Capensfe5861b2018-08-03 16:01:48 -040010Building
11--------
12
Ben Claytone2d8b122019-02-07 18:13:16 +000013SwiftShader libraries can be built for Windows, Linux, and Mac OS X.\
Nicolas Capensfe5861b2018-08-03 16:01:48 -040014Android and Chrome (OS) build environments are also supported.
15
16* **Visual Studio**
Ben Claytone2d8b122019-02-07 18:13:16 +000017\
Nicolas Capensa580e2d2019-10-03 22:40:25 -040018 For building 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.
19
20 There is also a legacy [SwiftShader.sln](SwiftShader.sln) file for Visual Studio 2017 for building OpenGL ES and Direct3D libraries. Output DLLs will be placed in the _out_ subfolder. Sample executables such as _OGLES3ColourGrading_ can be found under the Tests solution folder and can be run from the IDE.
Nicolas Capensfe5861b2018-08-03 16:01:48 -040021
22* **CMake**
23
24 [Install CMake](https://cmake.org/download/) for Linux, Mac OS X, or Windows and use either [the IDE](https://cmake.org/runningcmake/) or run the following terminal commands:
25
Ben Claytone2d8b122019-02-07 18:13:16 +000026 cd build
Nicolas Capensfe5861b2018-08-03 16:01:48 -040027 cmake ..
28 make --jobs=8
29
Ben Claytoneba396c2019-04-07 12:42:43 +010030 ./gles-unittests
Nicolas Capens64d537a2018-10-02 12:40:12 -040031 ./OGLES2HelloAPI
32
Nicolas Capens1703e0f2016-05-12 17:27:05 -040033Usage
Nicolas Capens9eaa19c2017-06-28 11:13:55 -040034-----
Nicolas Capens1703e0f2016-05-12 17:27:05 -040035
36The SwiftShader libraries act as drop-in replacements for graphics drivers.
37
38On 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.
39
40Contributing
Nicolas Capens9eaa19c2017-06-28 11:13:55 -040041------------
Nicolas Capens1703e0f2016-05-12 17:27:05 -040042
Nicolas Capenscf83d162016-07-02 23:41:30 -040043See [CONTRIBUTING.txt](CONTRIBUTING.txt) for important contributing requirements.
Nicolas Capens1703e0f2016-05-12 17:27:05 -040044
Nicolas Capenscf83d162016-07-02 23:41:30 -040045The canonical repository for SwiftShader is hosted at:
Nicolas Capens1703e0f2016-05-12 17:27:05 -040046https://swiftshader.googlesource.com/SwiftShader
47
Nicolas Capenscf83d162016-07-02 23:41:30 -040048All changes must be reviewed and approved in the [Gerrit](https://www.gerritcodereview.com/) review tool at:
Nicolas Capens1703e0f2016-05-12 17:27:05 -040049https://swiftshader-review.googlesource.com
50
Nicolas Capenscf83d162016-07-02 23:41:30 -040051Authenticate your account here:
52https://swiftshader-review.googlesource.com/new-password
53
54All 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:
Ben Claytone2d8b122019-02-07 18:13:16 +000055https://gerrit-review.googlesource.com/tools/hooks/commit-msg. To clone the repository and install the commit hook in one go:
Nicolas Capens1703e0f2016-05-12 17:27:05 -040056
57 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)
58
Nicolas Capensfe5861b2018-08-03 16:01:48 -040059Changes are uploaded to Gerrit by executing:
Nicolas Capens1703e0f2016-05-12 17:27:05 -040060
61 git push origin HEAD:refs/for/master
62
Nicolas Capensfe5861b2018-08-03 16:01:48 -040063Testing
64-------
65
Nicolas Capens5a5ffe52019-08-09 13:12:27 -040066SwiftShader's OpenGL ES implementation can be tested using the [dEQP](https://github.com/KhronosGroup/VK-GL-CTS) test suite.
Nicolas Capensfe5861b2018-08-03 16:01:48 -040067
68See [docs/dEQP.md](docs/dEQP.md) for details.
69
Nicolas Capens3532c692017-05-18 11:22:26 -040070Third-Party Dependencies
71------------------------
72
73The [third_party](third_party/) directory contains projects which originated outside of SwiftShader:
74
Nicolas Capens3532c692017-05-18 11:22:26 -040075[subzero](third_party/subzero/) contains a fork of the [Subzero](https://chromium.googlesource.com/native_client/pnacl-subzero/) project. It is part of Google Chrome's (Portable) [Native Client](https://developer.chrome.com/native-client) project. Its authoritative source is at [https://chromium.googlesource.com/native_client/pnacl-subzero/](https://chromium.googlesource.com/native_client/pnacl-subzero/). 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, and until further notice it should **not** diverge from the upstream project. Contributions must be tested using the [README](third_party/subzero/docs/README.rst) instructions, reviewed at [https://chromium-review.googlesource.com](https://chromium-review.googlesource.com/q/project:native_client%252Fpnacl-subzero), and then pulled into the SwiftShader repository.
76
77[llvm-subzero](third_party/llvm-subzero/) contains a minimized set of LLVM dependencies of the Subzero project.
78
79[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.
80
81[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.
82
Nicolas Capens63883022016-05-30 11:03:26 -040083Documentation
84-------------
85
Nicolas Capens1bc61382016-05-30 15:29:09 -040086See [docs/Index.md](docs/Index.md).
Nicolas Capens63883022016-05-30 11:03:26 -040087
Nicolas Capens1703e0f2016-05-12 17:27:05 -040088Contact
Nicolas Capens9eaa19c2017-06-28 11:13:55 -040089-------
Nicolas Capens1703e0f2016-05-12 17:27:05 -040090
Nicolas Capensd851f232016-08-01 15:36:23 -040091Public mailing list: [swiftshader@googlegroups.com](https://groups.google.com/forum/#!forum/swiftshader)
Nicolas Capens1703e0f2016-05-12 17:27:05 -040092
Ben Claytone2d8b122019-02-07 18:13:16 +000093General bug tracker: https://g.co/swiftshaderbugs\
Nicolas Capensdb309b62018-05-22 14:49:35 -040094Chrome specific bugs: https://bugs.chromium.org/p/swiftshader
Nicolas Capens22b17b02016-06-17 13:39:18 -040095
Nicolas Capens1703e0f2016-05-12 17:27:05 -040096License
Nicolas Capens9eaa19c2017-06-28 11:13:55 -040097-------
Nicolas Capens1703e0f2016-05-12 17:27:05 -040098
Nicolas Capenscf83d162016-07-02 23:41:30 -040099The SwiftShader project is licensed under the Apache License Version 2.0. You can find a copy of it in [LICENSE.txt](LICENSE.txt).
Nicolas Capens1703e0f2016-05-12 17:27:05 -0400100
101Files in the third_party folder are subject to their respective license.
102
103Authors and Contributors
Nicolas Capens9eaa19c2017-06-28 11:13:55 -0400104------------------------
Nicolas Capens1703e0f2016-05-12 17:27:05 -0400105
Nicolas Capenscf83d162016-07-02 23:41:30 -0400106The legal authors for copyright purposes are listed in [AUTHORS.txt](AUTHORS.txt).
Nicolas Capens1703e0f2016-05-12 17:27:05 -0400107
Nicolas Capenscf83d162016-07-02 23:41:30 -0400108[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.
Nicolas Capens1703e0f2016-05-12 17:27:05 -0400109
110Disclaimer
Nicolas Capens9eaa19c2017-06-28 11:13:55 -0400111----------
Nicolas Capens1703e0f2016-05-12 17:27:05 -0400112
1131. Trademarks are the property of their respective owners.
Nicolas Capens645a8de2019-09-24 10:20:27 -04001142. We do not claim official conformance with the Direct3D and OpenGL graphics APIs at this moment.
Nicolas Capens88f5ec62017-06-13 10:10:22 -04001153. This is not an official Google product.