Skip to content

Version v0.27

Choose a tag to compare
@baldurk baldurk released this 16 Feb 14:02

Binary downloads of this release are now up on the builds page.

Version v0.27

It's been about 12 months since I posted that I was adding OpenGL support - and that was 1 year after RenderDoc's release. It's fitting then that just a little before RenderDoc's 2 year anniversary I can happily reveal support for the recently released Vulkan 1.0 API. I've been working since last september on including Vulkan support in RenderDoc at the same time as the launch of the API.

This is the reason why development has been quiet on github recently, as most work was happening behind the scenes. There are some other features and improvements in this release as well, so check the notes below to see them all.

The RenderDoc installer is also shipped in the Vulkan SDK - this is absolutely identical to what you download above or build from code here, just repackaged seamlessly into the SDK.

Side note: The in-application API was bumped to 1.0.1 for a minor bugfix. Going by semantic versioning, this is a backwards-compatible change so any code loading 1.0.0 will get 1.0.1 and everything will work.


  • Vulkan 1.0 support!
  • Added a warning if D3D11.1 calls are captured and the replay is not able to run them.
  • If SetResourceName is called on the same resource many times, we de-duplicate and only serialise the last.
  • When viewing a really massive buffer the UI could have trouble displaying enough rows. Instead, we clamp the row count to 200,000 and display a warning to view other sections with the row/byte offset.
  • Support added for displaying and picking S8 textures on GL.
  • GL errors are cleared after operations that might potentially generate them (such as RenderDoc's fetch/apply state vector).
  • GL hooks are added for wglSwapBuffers, wglSwapLayerBuffers and wglSwapMultipleBuffers.
  • When viewing an image rather than a capture, added a retry when reloading the file on change, in case the change is detected while the file is still locked by another program.
  • Picking vertices in the mesh viewer will enable synchronisation between the input and output views.
  • Buffer viewer elements that are NaN/Inf will display properly.
  • Images saved with only one channel visible are saved as greyscale instead.
  • If a custom shader is used to view a texture, then the results of that custom visualisation will be displayed, rather than the source texture.
  • Viewport/scissor overlay should now hopefully be clearer to see.
  • Added support for reverse-z projection matrices in mesh viewer unprojection
  • When StartFrameCapture() is called from the API, if there is a window identified (i.e. it's not just NULL, NULL) then make that window active.
  • The texture viewer input thumbnails now show inputs from all shader stages, not just pixel shader.


  • Fixed a crash if an update check was ongoing when the main window was closed.
  • Fixed a common crash on shutdown when closing D3D11 captures that began happening, due to a mismanaged refcount on ID3D11DeviceContext.
  • Fix GL crash with glMultiDrawElements.
  • Fix some incorrect GL state setting.
  • Fix IsFrameCapturing API to return true for captures triggered with TriggerCapture().
  • Add mutex around destruction code that could be run on multiple threads at the same time.
  • Possible fix for crash on linux depending on global initialisation order.
  • Fix an edge-case with wglShareLists by avoiding creating any internal GL data for overlay rendering until the last possible minute in SwapBuffers.
  • Stop an erroneous warning firing while shader debugging.
  • Fix find-in-files not properly clearing previous results.
  • Fix a GL crash if buffer orphaning isn't properly detected.
  • Remove queries to GL_TEXTURE_COMPRESSED and decide for ourselves based on the internal format.
  • Improve handling of difficult GL context juggling between threads when capturing.
  • Fixed a case where compute debugging would incorrectly complain that the thread index was out of bounds.
  • When glUseProgramStages is called mid-frame, we now correctly replay it instead of caching it incorrectly.
  • When depth or stencil test is disabled, the overlay now shows all-green instead of what would have happened.
  • Added an overlay 'clear before draw/pass' that shows only the results of the selection on the current RT.
  • Fixed an overly-strict check for compatibility between IA bytecode and VS bytecode input signature.
  • When modifying GLSL, we now handle whitespace better around #version and other directives
  • Changed the shortcut for File -> Exit as it was clashing with File -> Recent Capture Settings
  • Fixed pixel history on depth-stencil targets from going badly wrong.
  • When saving a log, change the window title from the temporary filename.
  • Fixed texture viewer scrollbars being inconsistent and annoying, which caused them not to map properly to the full range of scrolling.
  • Fixed a crash if a find dialog is open when the shader window closes
  • Fixed a possible failure in the version updater when it goes to restart the program.
  • Always return typed component format for images, fixes a potential problem saving e.g. EXR images from typeless formatted textures.
  • Fix a case on GL where FBO attachments of a specific mip wouldn't properly be restored on replay.