Skip to content

Version v0.28

Choose a tag to compare
@baldurk baldurk released this 25 Apr 23:50

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

Version v0.28

This release is mostly a collection of bugfixes from the last few months - a large number are Vulkan related, but some are from crash uploads and other bug reports. There are a few new features though!

For those who compile the code or are interested in development there have been some behind the scenes improvements - things like better organisation of build configurations, a new assert macro, extra warning levels enabled and the removal of the crash when no debugger is present if a non-release build fails an assert or hits an error message. If you're curious try building the code and have a poke around - that's the beauty of open source after all!


  • A button on the texture viewer to open the texture contents in the buffer viewer for custom raw formatting and inspect. Be careful not to make too many columns (you might be tempted to create texture_width columns) as the .NET control crashes hard 😢.
  • Support for separate unstripped shader debug info - thanks to Arne Schober!
    • This allows a workaround for shaders needing embedded debug info but normal builds not wanting that disk size overhead. Instead you can compile the shaders in debug, save the unstripped blobs somewhere on disk, and then annotate the stripped blob with a file path. Then RenderDoc will know to find the unstripped blobs from elsewhere.
    • You can also specify the file path at runtime with SetPrivateData. For more information see the docs!
  • .cap files can be opened via file->open and drag & drop.
  • A new button to abort the running of a python script.
  • When buffer viewers are opened from an API's pipeline state, any offset or length from the views is applied to the initial layout.
  • A new experimental statistics view - thanks to Michael Vance!
    • Adds a new pane with rudimentary API surface area statistics, such as draw call counts, resource sets, sampler & constant buffer updates, etc.
    • This functionality is currently only supported on DX11.
    • Information is currently presented in a primitive text-based view, but we plan to move to a proper set of UI primitives in the future.
    • API coverage is incomplete but covers the majority of the pipeline.
    • Future work will be centered around completing API coverage, enhancing detection of redundancy, proper UI support, and automation of capture and export of API statistics.
  • Input layouts now pick up names set with SetPrivateData.
  • The pan is kept consistent for textures with an integer multiple of dimensions. So when you're looking at a downsample chain that goes from 256x256 to 128x128 to 64x64, you won't have to re-zoom and re-pan when switching between these textures.

General Bugfixes

  • The installer now packages and runs the appropriate VS2010 redistributable in case you don't already have it.
  • When y-flip was enabled, texture pixel picking co-ordinates were off by one.
  • Fixed some depth textures not displaying as depth and instead just as if they were red-green.
  • When editing and replacing shaders, the pipeline state instantly refreshes, instead of needing you to manually select another drawcall then back to the first.
  • An OpenGL performance regression is fixed - push/pop debug labels were spamming out debug messages to the log file and tanking framerate.
  • When saving logs they're immediately added to the recent files list.
  • Fixed a bug that caused calling glUseProgramStages mid-frame for different stages to not replay correctly.
  • D3D11 input layouts are now dependency tracked instead of all being included in the replay
  • Fixes for calling glBindTexture with ID 0 - on replay the texture would not be correctly unbound.
  • Fixes for separablee shader patching.
  • In the API view glSamplerParameter and similar enum parameters now display as strings.
  • Fix for glShaderSoruce being passed multiple negative lengths - thanks to @olvaffe!
  • Treat baseVertex correctly as signed instead of unsigned, fixing crashes when it was negative
  • Fixes for some OpenGL context creation failures and broken attrib list parsing.
  • Some OpenGL shader compile fixes for intel.
  • Fix for EXT_depth_bounds_test not being available.
  • Some D3D11 constant buffer packing fixes.
  • Fix to allow capturing oculus programs - D3D11 fix to QueryInterface() of IUnknown - thanks to Jamie Hayes!
  • Reduce stack size in log function - previously it was allocating 4kb of stack which could cause pressure on threads with small stacks.
  • Fix an OpenGL crash when using custom shaders in the texture view.
  • A speculative OpenGL fix for a crash when functions like glTextureImage2D was called with no texture bound.
  • Fix a crash copy-pasting in the UI with nothing selected in the pipeline view.
  • Fix a failure when saving really low resolution images as JPG.
  • Several fixes for saving 2-component textures.
  • Minor fixes for quad overdraw ramp decoding on extreme overdraw amounts (>= 64).

Vulkan Bugfixes

  • Fix a crash when passing oldSwapchain to swapchain creation - typically on resize.
  • Fix a random crash exposed by changes in the post-release loader versions around physical device enumeration.
  • Fix the vulkan nag message on the capture screen not working properly with RenderDoc installs on UNC paths.
  • Fixes for sparse descriptor sets where not all bindings are used contiguously.
  • Reduced compute workgroup size for running on older cards with lower limits.
  • Support for an implicit memory unmap before free.
  • Fix a crash if swapchains are created with invisible windows.
  • Some protection against invalid/misconfigured code.
  • Fixes for 32-bit - it just plain didn't work before!
  • Improvements to the API view to show flags/masks as strings.
  • Fix for vkCmdDispatch calls not working when stepping through a frame.
  • Many more code validity improvements.
  • Many improvements and fixes to SPIR-V reflection and disassembly.