baldurk e9a47112d4 Prepare for actually serialising pNext pointers in structs
* Any struct with a pNext pointer gets a Deserialise function, to clean
  up any dynamically allocated chains.
* The mechanism is as follows:
  - On writing, walk the pNext chain (assuming there is one) and skip
    any structs we don't care to serialise.
  - When we reach a struct we do want to serialise, save a nullable (i.e
    optional) VkStructureType* for it, then recurse and serialise the
    nullable casted struct.
  - If there is no pNext (or none we care about) we serialise a NULL
    VkStructureType*
  - On reading, we serialise the VkStructureType*. If it's NULL, rename
    it to look like a void *pNext = NULL.
  - If it's not NULL, use the structure type to serialise a nullable
    struct of the right type, and recurse.
* The pNext chain is dynamically allocated, which is why it gets cleaned
  up in the Deserialise() function.
2018-04-24 19:23:32 +01:00
2018-03-13 13:32:21 +00:00
2018-03-06 16:13:32 +00:00

MIT licensed Travis CI AppVeyor Coverity Scan

RenderDoc is a frame-capture based graphics debugger, currently available for Vulkan, D3D11, D3D12, OpenGL, and OpenGL ES development on Windows 7 - 10, Linux, and Android. It is completely open-source under the MIT license.

If you have any questions, suggestions or problems or you can create an issue here on github, email me directly or come into IRC to discuss it.

To install on windows run the appropriate installer for your OS (64-bit | 32-bit) or download the portable zip from the builds page. On linux there is a binary tarball available, or your distribution may package it. If not you can build from source.

Screenshots

Texture view Pixel history & shader debug
Mesh viewer Pipeline viewer & constants

API Support

Windows Linux Android
Vulkan ✔️ ✔️ ✔️
OpenGL ES 2.0 - 3.2 ✖️ ✔️ ✔️
OpenGL 3.2+ Core ✔️ ✔️ N/A
D3D11 & D3D12 ✔️ N/A N/A
OpenGL 2.0 Compatibility ✖️ ✖️ N/A
D3D9 & 10 ✖️ N/A N/A
Metal N/A N/A N/A

Downloads

There are binary releases available, built from the release targets. If you just want to use the program and you ended up here, this is what you want :).

It's recommended that if you're new you start with the stable builds. Nightly builds are available every day from master branch here if you need it, but correspondingly may be less stable.

Documentation

The text documentation is available online for the latest stable version, as well as in renderdoc.chm in any build. It's built from restructured text with sphinx.

As mentioned above there are some youtube videos showing the use of some basic features and an introduction/overview.

There is also a great presentation by @Icetigris which goes into some details of how RenderDoc can be used in real world situations: slides are up here.

License

RenderDoc is released under the MIT license, see LICENSE.md for full text as well as 3rd party library acknowledgements.

Contributing & Development

Building RenderDoc is fairly straight forward. See CONTRIBUTING.md 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.

Languages
C++ 79.6%
C 16.6%
Python 2.5%
Objective-C++ 0.4%
HLSL 0.2%
Other 0.6%