forked from baldurk/renderdoc
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Split up CONTRIBUTING.md and move it under docs/
- Loading branch information
Showing
12 changed files
with
369 additions
and
339 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,13 +9,13 @@ RenderDoc is a frame-capture based graphics debugger, currently available for Vu | |
|
||
If you have any questions, suggestions or problems or you can [create an issue](https://github.com/baldurk/renderdoc/issues/new) here on github, [email me directly](mailto:[email protected]) or [come into IRC](https://kiwiirc.com/client/irc.freenode.net/#renderdoc) to discuss it. | ||
|
||
To install on windows run the appropriate installer for your OS ([64-bit](https://renderdoc.org/stable/1.0/RenderDoc_1.0_64.msi) | [32-bit](https://renderdoc.org/stable/1.0/RenderDoc_1.0_32.msi)) or download the portable zip from the [builds page](https://renderdoc.org/builds). On linux there is a [binary tarball](https://renderdoc.org/stable/1.0/renderdoc_1.0.tar.gz) available, or your distribution may package it. If not you can [build from source](CONTRIBUTING.md#compiling). | ||
To install on windows run the appropriate installer for your OS ([64-bit](https://renderdoc.org/stable/1.0/RenderDoc_1.0_64.msi) | [32-bit](https://renderdoc.org/stable/1.0/RenderDoc_1.0_32.msi)) or download the portable zip from the [builds page](https://renderdoc.org/builds). On linux there is a [binary tarball](https://renderdoc.org/stable/1.0/renderdoc_1.0.tar.gz) available, or your distribution may package it. If not you can [build from source](docs/CONTRIBUTING/Compiling.md). | ||
|
||
* **Downloads**: https://renderdoc.org/builds ( [Symbol server](https://renderdoc.org/symbols) ) | ||
* **Documentation**: [HTML online](https://renderdoc.org/docs), [CHM in builds](https://renderdoc.org/docs/renderdoc.chm), [Videos](http://www.youtube.com/user/baldurkarlsson/) | ||
* **Contact**: [[email protected]](mailto:[email protected]), [#renderdoc on freenode IRC](https://kiwiirc.com/client/irc.freenode.net/#renderdoc) | ||
* **Code of Conduct**: [Contributor Covenant](docs/CODE_OF_CONDUCT.md) | ||
* **Information for contributors**: [CONTRIBUTING.md](CONTRIBUTING.md), [Compilation instructions](CONTRIBUTING.md#compiling), [Roadmap](https://github.com/baldurk/renderdoc/wiki/Roadmap) | ||
* **Information for contributors**: [All contribution information](docs/CONTRIBUTING.md), [Compilation instructions](docs/CONTRIBUTING/Compiling.md), [Roadmap](https://github.com/baldurk/renderdoc/wiki/Roadmap) | ||
|
||
Screenshots | ||
-------------- | ||
|
@@ -58,10 +58,13 @@ License | |
|
||
RenderDoc is released under the MIT license, see [LICENSE.md](LICENSE.md) for full text as well as 3rd party library acknowledgements. | ||
|
||
Compiling | ||
--------- | ||
|
||
Building RenderDoc is fairly straight forward on most platforms. See [Compiling.md](docs/CONTRIBUTING/Compiling.md) for more details. | ||
|
||
Contributing & Development | ||
-------------- | ||
|
||
Building RenderDoc is fairly straight forward. See [CONTRIBUTING.md](CONTRIBUTING.md#compiling) for more details. | ||
|
||
I've added some notes on how to contribute, as well as where to get started looking through the code in [CONTRIBUTING.md](CONTRIBUTING.md). | ||
I've added some notes on how to contribute, as well as where to get started looking through the code in [Developing-Change.md](docs/CONTRIBUTING/Developing-Change.md). All contribution information is available under [CONTRIBUTING.md](docs/CONTRIBUTING.md). | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
# Contributing to RenderDoc | ||
|
||
This document is split up and organised into several sections to aid reading and linking. For small changes like one-line fixes or minor tweaks then you can just read the [quick start section](#quick-start) below. | ||
|
||
Don't worry about reading all of these documents end-to-end and getting everything perfect the first time. The point of this information isn't to be restrictive about rules and reject contributions, but to give people guidance and help about how to contribute. I'm happy to help out with any changes needed to get your PR ready to merge, until you get the hang of things. If you're unfamiliar with git and need help making any changes, feel free to ask as well! | ||
|
||
If you're a regular contributor or if you have a larger amount of code to change, please do read through these as it will make life easier for everyone if you to follow along with these guidelines from the start. | ||
|
||
## Code of Conduct | ||
|
||
I want to ensure that anyone can contribute to RenderDoc with only the next bug to worry about. For that reason the project has adopted the [contributor covenent](CODE_OF_CONDUCT.md) as a code of conduct to be enforced for anyone taking part in RenderDoc development. This includes any comments on issues or any public discussion e.g. in the #renderdoc IRC channel. | ||
|
||
If you have any queries or concerns in this regard you can get in touch with me [directly over email](mailto:[email protected]). | ||
|
||
## Copyright / Contributor License Agreement | ||
|
||
Any code you submit will become part of the repository and be distributed under the [RenderDoc license](../LICENSE.md). By submitting code to the project you agree that the code is your own work and that you have the ability to give it to the project. | ||
|
||
You also agree by submitting your code that you grant all transferrable rights to the code to the project maintainer, including for example re-licensing the code, modifying the code, distributing in source or binary forms. Specifically this includes a requirement that you assign copyright to the project maintainer (Baldur Karlsson). For this reason, do not modify any copyright statements in files in any PRs. | ||
|
||
## Contributing information | ||
|
||
1. [Dependencies](CONTRIBUTING/Dependencies.md) | ||
2. [Compiling](CONTRIBUTING/Compiling.md) | ||
3. [Preparing commits](CONTRIBUTING/Preparing-Commits.md) | ||
4. [Developing a change](CONTRIBUTING/Developing-Change.md) | ||
5. [Testing](CONTRIBUTING/Testing.md) | ||
6. [Code Explanation](CONTRIBUTING/Code-Explanation.md) | ||
|
||
## Quick Start | ||
|
||
The two things you'll need to bear in mind for a small change are the [commit message](CONTRIBUTING/Preparing-Commits.md#commit-messages) and [code formatting](CONTRIBUTING/Preparing-Commits.md#code-formatting). | ||
|
||
Commit messages should have a first line with a **maximum of 72 characters**, then a gap, then if you need it a longer explanation in any format you want. The reason for this is that limiting the first line to 72 characters means that `git log` and github's history always displays the full message without it being truncated. | ||
|
||
For more information, check the section about [commit messages](CONTRIBUTING/Preparing-Commits.md#commit-messages). | ||
|
||
Code should be formatted using **clang-format 3.8**. The reason we fix a specific version of clang-format is that unfortunately different versions can format code in different ways using the same config file, so this would cause problems with automatic verification of code formatting. | ||
|
||
For more information, check the section about [code formatting](CONTRIBUTING/Preparing-Commits.md#code-formatting). | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
# Code Explanation | ||
|
||
There are [several pages](https://github.com/baldurk/renderdoc/wiki/Code-Dives) on the wiki explaining different aspects of how the code fits together - like how the capture-side works vs replay-side, how shader debugging works, etc. | ||
|
||
renderdoc/ | ||
CMakeLists.txt ; The cmake file, will recurse into subdirectories to build them | ||
renderdoc.sln ; VS2015 solution for windows building | ||
renderdoc/ | ||
3rdparty/ ; third party utilities & libraries included | ||
drivers/ ; API-specific back-ends, can be individually skipped/removed | ||
... ; everything else in here consists of the core renderdoc runtime | ||
renderdoccmd/ ; A small C++ utility program that runs to do various little tasks | ||
renderdocshim/ ; A tiny C DLL using only kernel32.dll that is used for global hooking | ||
qrenderdoc/ ; The Qt UI layer built on top of renderdoc/ | ||
docs/ ; source documentation for the .chm file or http://docs.renderdoc.org/ | ||
util/ ; folder for utility/support files - e.g. build scripts, installers, CI config |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
# Compiling | ||
|
||
## Windows | ||
|
||
The main [renderdoc.sln](renderdoc.sln) is a VS2015 solution. It should also compile in VS2017, just select to update the compilers if you don't have the 2015 compilers available. | ||
|
||
There are no external dependencies apart from the Windows SDK and any version will work, otherwise all libraries/headers needed to build are included in the git checkout. | ||
|
||
On windows, the `Development` configuration is recommended for day-to-day dev. It's debuggable but not too slow. The `Release` configuration is then obviously what you should compile for any builds you'll send out to people or if you want to evaluate performance. | ||
|
||
## Linux | ||
|
||
First check that you have all of the [required dependencies](Dependencies.md#linux). | ||
|
||
Currently linux should work with gcc 5+ and clang 3.4+ as it requires C++14 compiler support. The Travis CI builds with gcc-6.0 and clang-3.5. Within reason other compilers will be supported if the required patches are minimal. Distribution packages should be built with the `Release` CMake build type so that warnings do not trigger errors. To build just run: | ||
|
||
``` | ||
cmake -DCMAKE_BUILD_TYPE=Debug -Bbuild -H. | ||
make -C build | ||
``` | ||
|
||
Configuration is available for cmake, [documented elsewhere](https://cmake.org/documentation/). You can override the compiler with environment variables `CC` and `CXX`, and there are some options you can toggle in the root CMakeLists files such as `cmake -DENABLE_GL=OFF`. | ||
|
||
## Mac | ||
|
||
First check that you have all of the [required dependencies](Dependencies.md#mac). | ||
|
||
Mac support is pretty early and while it will compile, it's not usable for debugging yet and is not officially supported. Builds happen with cmake the same way as Linux. | ||
|
||
## Android | ||
|
||
First check that you have all of the [required dependencies](Dependencies.md#android). | ||
|
||
To build the components required to debug an Android target invoke cmake and enable `BUILD_ANDROID=On`: | ||
|
||
``` | ||
mkdir build-android | ||
cd build-android | ||
cmake -DBUILD_ANDROID=On -DANDROID_ABI=armeabi-v7a .. | ||
make | ||
``` | ||
|
||
On Windows, you need to specify the 'generator' type to the cmake invocation. The exact parameter will depend on your bash shell, but options are e.g. `-G "MSYS Makefiles"` or `-G "MinGW Makefiles"`, i.e.: | ||
|
||
``` | ||
cmake -DBUILD_ANDROID=On -DANDROID_ABI=armeabi-v7a -G "MSYS Makefiles" .. | ||
``` | ||
|
||
### Note: | ||
|
||
With GLES programs on Android, the built-in hooking method doesn't always work. If you have trouble with crashes or problems capturing GLES programs, try enabling building with [interceptor-lib](renderdoc/3rdparty/interceptor-lib/README.md). **WARNING**: Building this requires a hefty dependency. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,172 @@ | ||
# Dependencies | ||
|
||
## Windows | ||
|
||
On Windows there are no dependencies - you can always compile the latest version just by downloading the code and compiling the solution in Visual Studio. If you want to modify the Qt UI with a WYSIWYG editor you will need a version of Qt installed - at least version 5.6. | ||
|
||
## Linux | ||
|
||
Requirements for the core library and renderdoccmd are `libx11`, `libxcb`, `libxcb-keysyms` and `libGL`. The exact are packages for these vary by distribution. | ||
|
||
For qrenderdoc you need Qt5 >= 5.6 along with the 'svg' and 'x11extras' packages. You also need `python3-dev` for the python integration, and `bison`, `autoconf`, `automake` and `libpcre3-dev` for building the custom SWIG tool for generating bindings. | ||
|
||
This is the apt-get line you'd need to install the requirements bar Qt on Ubuntu 14.04 or above: | ||
|
||
``` | ||
sudo apt-get install libx11-dev libx11-xcb-dev mesa-common-dev libgl1-mesa-dev libxcb-keysyms1-dev cmake python3-dev bison autoconf automake libpcre3-dev | ||
``` | ||
|
||
Your version of Ubuntu might not include a recent enough Qt version, so you can use [Stephan Binner's ppas](https://launchpad.net/~beineri) to install a more recent version of Qt. At least 5.6.2 is required. If you choose to instead install an [official Qt release](https://download.qt.io/official_releases/qt/) or build Qt from source, add `-DQMAKE_QT5_COMMAND=/path/to/qmake` to your cmake arguments. | ||
|
||
For Archlinux (as of 2017.04.18) you'll need: | ||
|
||
``` | ||
sudo pacman -S libx11 libxcb xcb-util-keysyms mesa libgl qt5-base qt5-svg qt5-x11extras cmake python3 bison autoconf automake pcre | ||
``` | ||
|
||
For Gentoo (as of 2017.04.18), you'll need: | ||
|
||
``` | ||
sudo emerge --ask x11-libs/libX11 x11-libs/libxcb x11-libs/xcb-util-keysyms dev-util/cmake dev-qt/qtcore dev-qt/qtgui dev-qt/qtwidgets dev-qt/qtsvg dev-qt/qtx11extras sys-devel/bison sys-devel/autoconf sys-devel/automake dev-lang/python dev-libs/libpcre | ||
``` | ||
|
||
Checking that at least Qt 5.6 installs. | ||
|
||
On CentOS 7 (as of 2018.01.18), you'll need to install from several repos: | ||
|
||
``` | ||
# Dependencies in default repo | ||
yum install libX11-devel libxcb-devel mesa-libGL-devel xcb-util-keysyms-devel cmake qt5-qtbase-devel qt5-qtsvg-devel qt5-qtx11extras-devel bison autoconf automake pcre-devel | ||
# python3 via EPEL | ||
yum install epel-release | ||
yum install python34-devel | ||
# Newer GCC via SCL's devtoolset-7 | ||
yum install centos-release-scl | ||
yum install devtoolset-7 | ||
``` | ||
|
||
Then when building, you must first set up the devtoolset-7 from SCL: | ||
``` | ||
scl enable devtoolset-7 bash | ||
``` | ||
|
||
And build within the resulting bash shell, which has the tools first in PATH. | ||
|
||
On any distribution if you find qmake isn't available under its default name, or if `qmake -v` lists a Qt4 version, make sure you have qtchooser installed in your package manager and use it to select Qt5. This might be done by exporting `QT_SELECT=qt5`, but check with your distribution for details. | ||
|
||
For some distributions such as CentOS, the Qt5 qmake command is `qmake-qt5`. To select this explicitly, pass `-DQMAKE_QT5_COMMAND=qmake-qt5` when invoking `cmake`. | ||
|
||
If you know the required packages for another distribution, please share (or pull request this file!) | ||
|
||
## Mac | ||
|
||
Mac requires a recent version of CMake, and the same Qt version as the other platforms (at least 5.6.2). If you're using [homebrew](http://brew.sh) then this will do the trick: | ||
|
||
``` | ||
brew install cmake qt5 | ||
brew link qt5 --force | ||
``` | ||
|
||
## Android | ||
|
||
To build for Android, you must download components of the Android SDK, the Android NDK, and Java Development Kit. | ||
|
||
If you've already got the tools required, simply set the following three environment variables: | ||
|
||
``` | ||
export ANDROID_SDK=<path_to_sdk_root> | ||
export ANDROID_NDK=<path_to_ndk_root> | ||
export JAVA_HOME=<path_to_jdk_root> | ||
``` | ||
|
||
Otherwise, below are steps to acquire the tools for each platform. | ||
|
||
### Android Dependencies on Windows | ||
|
||
JDK can be installed from the following [link](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html). | ||
|
||
``` | ||
set JAVA_HOME=<path_to_jdk_root> | ||
``` | ||
|
||
Android NDK and SDK: | ||
|
||
``` | ||
# Set up the Android SDK | ||
set ANDROID_SDK=<path_to_desired_setup> | ||
cd %ANDROID_SDK% | ||
wget https://dl.google.com/android/repository/sdk-tools-windows-3859397.zip | ||
unzip sdk-tools-windows-3859397.zip | ||
cd tools\bin | ||
sdkmanager --sdk_root=%ANDROID_SDK% "build-tools;26.0.1" "platforms;android-23" | ||
# Accept the license | ||
# Set up the Android NDK | ||
cd %ANDROID_SDK% | ||
wget http://dl.google.com/android/repository/android-ndk-r14b-windows-x86_64.zip | ||
unzip android-ndk-r14b-windows-x86_64.zip | ||
set ANDROID_NDK=%ANDROID_SDK%\android-ndk-r14b | ||
``` | ||
|
||
### Android Dependencies on Linux | ||
|
||
The Java Development Kit can be installed with: | ||
|
||
``` | ||
sudo apt-get install openjdk-8-jdk | ||
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 | ||
``` | ||
|
||
The Android SDK and NDK can be set up with the following steps. They are also mirrored in our Travis-CI [setup script](util/travis/android_setup.sh) for Android. We are currently targeting build-tools 26.0.1 and NDK r14b. | ||
|
||
SDK links are pulled from [here](https://developer.android.com/studio/index.html). | ||
|
||
NDK links are pulled from [here](https://developer.android.com/ndk/downloads/older_releases.html). | ||
|
||
``` | ||
# Set up Android SDK | ||
export ANDROID_SDK=<path_to_desired_setup> | ||
pushd $ANDROID_SDK | ||
wget http://dl.google.com/android/repository/sdk-tools-linux-3859397.zip | ||
unzip sdk-tools-linux-3859397.zip | ||
cd tools/bin/ | ||
./sdkmanager --sdk_root=$ANDROID_SDK "build-tools;26.0.1" "platforms;android-23" | ||
# Accept the license | ||
# Set up Android NDK | ||
pushd $ANDROID_SDK | ||
wget http://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip | ||
unzip android-ndk-r14b-linux-x86_64.zip | ||
export ANDROID_NDK=$ANDROID_SDK/android-ndk-r14b | ||
``` | ||
|
||
### Android Dependencies on Mac | ||
|
||
JDK can be installed with brew: | ||
|
||
``` | ||
brew cask install java | ||
export JAVA_HOME="$(/usr/libexec/java_home)" | ||
``` | ||
|
||
Android NDK and SDK: | ||
|
||
``` | ||
# Set up Android SDK | ||
export ANDROID_SDK=<path_to_desired_setup> | ||
pushd $ANDROID_SDK | ||
wget https://dl.google.com/android/repository/sdk-tools-darwin-3859397.zip | ||
unzip sdk-tools-darwin-3859397.zip | ||
cd tools/bin/ | ||
./sdkmanager --sdk_root=$ANDROID_SDK "build-tools;26.0.1" "platforms;android-23" | ||
# Accept the license | ||
# Set up Android NDK | ||
pushd $ANDROID_SDK | ||
wget https://dl.google.com/android/repository/android-ndk-r14b-darwin-x86_64.zip | ||
unzip android-ndk-r14b-darwin-x86_64.zip | ||
export ANDROID_NDK=$ANDROID_SDK/android-ndk-r14b | ||
``` | ||
|
Oops, something went wrong.