Skip to content

Version v0.24

Choose a tag to compare
@baldurk baldurk released this 02 May 12:38

Binary zips and installers for this release (and others) can be found on the builds page. Both stable and beta builds are up to date with this release, but beta builds will be updated more regularly. You can choose which type of release you want to install and receive updates for.

Version v0.24

This release is by and large a collection of bugfixes both from crash reports that people sent in and other bugs that have been reported. There's not much new functionality as I was busy for most of April moving country for my new job.

OpenGL captures are not backwards compatible and old captures will not load in this version - once GL support is fully completed this will not happen so often. D3D11 captures are backwards compatible, and old captures will open in v0.24.


  • OpenGL contexts that aren't created via CreateContextAttribs will now be disallowed for capturing, as they are very likely to be pre-3.2. RenderDoc will use super-old fixed function GL to display the text overlay, so that even 2.0 or older contexts will work. Contexts created via CreateContextAttribs will be captured, regardless of whether they are compatibility or core profile, to allow more programs to use RenderDoc. This is a bit dubious as RenderDoc still only supports core profile OpenGL, but hopefully this line in the sand will prevent most old programs will allowing through few incompatible programs. (sort of a feature!)
  • A few places in the UI now use a monospaced font, such as mesh output and constant buffer viewer. There is a new option in the general category to display all data everywhere (such as pipeline state viewer, event browser, etc) in a monospaced font.
  • GL draw elements calls will now support passing indices as a direct memory pointer, as a concession to old GL code. Note that all vertex data must still be in vertex buffers in a VAO, direct memory pointers are not supported here.
  • Resources are now tracked by usage in OpenGL, so the timeline bar will correctly indicate reads and writes per resource, as well as the thumbnail right-click menus in the texture viewer.
  • RenderDoc should now handle having multiple APIs alive in a program, which in this case means GL and D3D11. Cycling between active windows will cycle between all APIs alive.
  • Added in-API ways to detect RenderDoc. GL via this extension and D3D11 via querying the device for UUID A7AA6116-9C8D-4BBA-9083-B4D816B71B78.


  • GL cubemap and array textures weren't properly showing the slice or face for mips above level 0.
  • When invalid indices like 0xcccccccc or 0xbaadf00d etc were used (probably by accident - but this is a debugger after all) for the Post VS mesh data we would stream-out all indices between the minimum e.g. 0 and that value, even if only a small subset were used. This caused out of memory and driver crashes. Instead we now only stream-out the indices used.
  • Fixed a crash when debugging such an invalid index.
  • Fixed a crash if vertex instance rate is 0 for instanced data (which is valid - the first element is used for every vertex).
  • Copy, Resolve and GenerateMips calls will now show up with draw calls in the event browser, to make it more clear where these events happen in the frame.
  • Fixed a crash if the constant buffer viewer is still open when a log is closed.
  • Fixed a crash if for some reason a shader debug trace comes back with no states.
  • Crash fix with CopySubresourceRegion if a box is specified.
  • Fix depth render target being larger than the colour render targets in D3D11 (was detected as invalid, but D3D11 allows this).
  • Fix from @vvuk - Present1() was using the wrong DXGI interface.
  • Fix a crash introduced in previous version, where SetPredication(NULL) would not be replayed and predicates would be left bound - which caused driver crashes.
  • Fixed some crashes if an index buffer wasn't multiple of 4 bytes, and fixed GL unsigned byte indices.
  • Fixed a couple of problems with the "remove empty marker groups" option - a crash if a marker group has an empty group as a child, and fixed calculating timings completely screwing up the drawcall list.
  • ld_structured was incorrectly looking at only UAVs to calculate its stride, instead it should check for the matching resource.
  • A few DX bytecode instructions assign to a scalar destination from a vector source, and these needed a fixup in the debugging to properly handle swizzles.
  • Fixed some crashes and problems with shader editing when the source has multiple files with #includes
  • With the SPDB debug chunk (which is produced by new d3dcompiler versions) #defines that are specified on the command line or to D3DCompile are now used when editing, to recompile the shader.
  • Executing python scripts that Invoke onto the render thread will now catch any python exceptions that are thrown on that thread, instead of crashing with an uncaught exception.
  • Shader debugging variable tooltips now show hex as well as int and float, and the register windows now show the tooltips as well as the source window.
  • Fixed some crashes if ctrl-c is pressed without a log loaded, and added copy-paste handlers to the GL pipeline state view.
  • Fixed a crash with the GL text overlay in-program, if the string is formatted very long and/or the glMap fails.
  • When redeclaring gl_in and gl_out in a GL shader only one of the redeclarations would be added, this is fixed.
  • Fixed shader debugging 'run to' command checking instruction number against trace length - which could be different whenever flow control occurs.
  • Outputting matrices from a shader in GL will now be listed correctly in the mesh output.
  • Clamped mips in textures without mips (but that aren't created immutable) to correctly bind when calculating min/max or histogram.
  • ID3D11Debug interface is wrapped, so that querying for ID3D11InfoQueue via it will return our dummy info queue.
  • The disassembly source window has a custom right-click menu now with relevant controls.
  • Temporary captures from a program connection window are kept around for longer even when saving them to a file. This prevents captures from being lost if a user saves them, then deletes the saved capture, and wants to save the capture again.
  • Fix a crash if an invalid filename is passed to D3DCompile as the source filename.
  • Fixed mesh preview window for geometry & tessellation output.
  • MultiDraw drawcalls now correctly create a nested section in timeline bar.
  • Fixed a crash if glUseProgramStages is called with program=0 to unbind.
  • Fixed an edge case where RenderDoc would incorrectly cause a program to run out of D3D11 state objects by caching them aggressively, if the program creates many temporary objects that are all unique.