Skip to content

Version v1.11

Choose a tag to compare
@baldurk baldurk released this 27 Nov 17:30
· 2081 commits to v1.x since this release

Version v1.11

This version has a number of important bugfixes, including a common crash on closing captures on D3D12 as well as a crash with optional swapchain types on D3D11 that affected UE4 users. There are also some useful feature improvements and quality of life fixes to improve workflows around sharing captures with other people.

Binary releases are available on with zip and installer for Windows and binary tarball for linux.

Main Highlights

  • The texture list in the texture viewer now has columns showing the different common texture properties, and allows sorting and filtering by these:
  • Edited shaders are now considered a modification to the capture in the same way as bookmarks, resource renames and capture notes. This means you get prompted when there are unsaved changes:
    As well as when you do choose to save them, the edits come back when the capture is reloaded. When this happens the edits are not "applied" until you explicitly choose to do so, but the shader editor windows do appear.
  • Capture comments have been enhanced to allow linking to specific events with "@1234" syntax. This can be useful when sharing a capture with someone, specially in combination with the "Show capture comments on load" option which defaults to on. You can describe the issue and link to a particular event:
  • Vulkan shader debugging now supports non-32-bit types, including 8-bit, 16-bit, and 64-bit integers as well as half floats and doubles.
  • The UI side qrenderdoc python API has had a number of improvements to support UI extensions. Many of the built-in windows now have better programmatic controls exposed, and there is a new interface MiniQtHelper to build simple UIs without needing to depend on PySide which may or may not be distributed with the renderdoc build.

Python API changes

  • The SDObjectData struct has been refactored so the list of children is no longer directly accessible. New interface functions in SDObject are available for accessing children: GetChild(idx), RemoveChild(idx), as well as the existing FindChild(name), NumChildren(), DeleteChildren(). There is also a direct GetParent() accessor now to get the parent of an SDObject.
  • The numChildren member has been removed from SDObjectPODData. This was redundant and the number of children in an object can be accessed through the above interface.
  • ReplayController.DebugVertex now takes a parameter view to specify the multiview to debug, which can be set to 0 if multiview is not in use.
  • SaveCallback and CloseCallback in use by ShaderViewer have a changed signature to account for new parameters ResourceId id, ShaderStage stage in SaveCallback and ShaderViewer viewer, ResourceId id in CloseCallback.


  • UI: When cancelling a long-running shader debug session, display the partial trace instead of nothing.
  • UI: Display stencil values in binary and decimal in tooltips, in texture viewer status bar and pipeline state viewer.
  • UI: Optimised the pipeline state viewer when displaying large numbers of resources.
  • UI: Resource inspector now generates 'pages' of 250 elements for large arrays in any listed initialisation chunks.
  • UI: When displaying FP16 textures with no type hint, default to float rather than unsigned normalised interpretation.
  • UI: Opening textures from the pipeline state view rather than using the texture viewer thumbnails will inherit the typecast from the bound texture view, if one exists.
  • D3D11 & D3D12: Add support for nvapi and AGS shader extensions, including shader debugging support for 64-bit atomics.
  • D3D12: Add support for new D3D12.?? interfaces. No new features are enabled still.
  • Vulkan & D3D12: Optimise memory & CPU use while loading captures with very large descriptor sets/heaps.
  • Vulkan: Fix some extra memory being unnecessarily allocated during capture time.
  • Vulkan: When shader debugging improve the case where multiple aliased pointers write to an object, and only some of the pointers show the change.
  • Vulkan: When showing unused bindings within an array where some are used, display them in italics the same as unused single bindings.
  • Vulkan: Add support for properly debugging vertices in non-zero views when using multiview.
  • Vulkan: Optimised work when working with very large indirect count drawcalls.
  • Vulkan: Implement support for several extensions:
    • VK_KHR_copy_commands2
    • VK_KHR_shader_terminate_invocation
    • VK_EXT_image_robustness
    • VK_EXT_shader_atomic_float
    • VK_EXT_shader_image_atomic_int64


  • All: Restore workaround for D3D11 nvidia driver bug that was accidentally removed that could cause crashes immediately when the UI starts and enumerates available GPUs.
  • All: Work around a rare deadlock on shutdown by skipping winsock cleanup.
  • All: Fix issues with quad overdraw on MSAA targets (works on all APIs but vulkan).
  • All: Fix potential crash or deadlock when shutting down remote server connection.
  • UI: Fix a crash on shutdown (or more rarely immediately) on D3D12 captures after looking at resources in the resource inspector.
  • UI: Fix a crash when opening a texture in buffer viewer.
  • UI: Fix incorrect application of dynamic bindless feedback to bound resources when the resources used aren't in a contiguous range.
  • UI: Fix UAV slot numbers in D3D11 pipeline state viewer.
  • UI: Fix an issue where some texture viewer panels could get closed accidentally. This should no longer be possible and the panels will be re-opened next time if they are closed.
  • UI: Fix the mesh viewer incorrectly considering attributes out of bounds if the vertex buffer stride itself is 0. This is a special case that allows the attributes to be fetched from their base offset.
  • D3D11: Fix a crash when creating SWAP_EFFECT_FLIP_DISCARD swapchains.
  • D3D11: Fix 'resource usage' showing usage from bound graphics shader stages on compute dispatches and vice-versa.
  • D3D11: Tiled resources are reported as unsupported.
  • D3D11: Fix an issue where source debugging would break if a shader contained a #line statement with an explicit empty filename "".
  • D3D12: Properly track and handle residency around the use of the new CREATE_NOT_RESIDENT heap flag.
  • D3D12: Fix handling of ViewInstancing structure inside D3D12_PIPELINE_STATE_STREAM_DESC.
  • D3D12: Fix some crashes serialising DXIL shaders with large numbers of constants.
  • D3D12: Fix crash in overlays when no scissor regions are bound at drawcall.
  • D3D12: Fix failure in pixel shader debugging if the root signature has DENY_PIXEL_SHADER_ROOT_ACCESS.
  • D3D12: Fix a crash if a root signature is created that's an exact duplicate of an internal renderdoc root signature.
  • D3D12: Fix wrong slice being displayed for multisampled RTVs/DSVs.
  • D3D12: Fix display of typeless textures that are cast to UINT.
  • D3D12: Fix a crash if a root signature range specifies more descriptors than exist in the resulting bound descriptor heap.
  • D3D12: Fix wrong disassembly of DXIL shader where constants contain forward references.
  • D3D12: Fix crashes related to caching/pooling serialised command buffer commands.
  • D3D12: Fix error with internal descriptors being treated as static, when they are volatile.
  • D3D12: Fix a race condition if command buffer memory was reset after frame capture stopped but before commands were saved to disk.
  • D3D12: Fix a possible deadlock between queue submissions and a capture starting or finishing on different threads.
  • Vulkan: Fix a crash if vkBind*Memory2 was used to bind multiple resources at once, but only some of the resources are included in the capture.
  • Vulkan: Fix shader debugging bounds checking on array access being off by 1 allowing access out of bounds potentially crashing.
  • Vulkan: Fix crash if VkDeviceGroupDeviceCreateInfo is used (redundantly since we don't support device groups) at device creation time.
  • Vulkan: Fix a crash when writing inline uniform block data.
  • Vulkan: Fix a case where discard patterns weren't properly applied for LOAD_OP_LOAD renderpass attachments with UNDEFINED initial layout.
  • Vulkan: Disable use of KHR_buffer_device_address on AMD on windows for now due to driver issues.
  • Vulkan: Add new capture compatibility check to look for memory allocations that come from non-existant types.
  • Vulkan: Ensure drawcall ID shader builtin is correct when replaying partial indirect multidraws.
  • Vulkan: Fix a case in the pixel history where fragment depth output values were incorrect.
  • Vulkan: Fix a crash when dynamic state is not properly bound at the start of a partially-replayed command buffer.
  • Vulkan: Fix incorrect array layer being used when debugging shaders that sample from cubemap arrays.
  • Vulkan: Fix the text overlay breaking if frame 0 is captured.
  • Vulkan: Fix issues with registering headless or display plane surfaces.
  • Vulkan: Fix a problem where depending on the bound memory regions, mapped memory updates to opaque tiled resources could get replayed leading to driver hangs.
  • Vulkan: Fix picking vertices in the mesh viewer when inverse viewport height is in use.
  • Vulkan: Fix vertex offset not being applied to VertexIndex shader builtin when fetching mesh output.
  • Vulkan: Fix an issue in shader debugging where incremental access chains could reach the wrong offset in SSBO accesses.
  • Vulkan: Fix baseVertex being stored incorrectly for indirect indexed draws.
  • Vulkan: Fix crashes with overlays when rasterizer discard is enabled and some pipeline state is not valid (e.g. no viewports set).
  • Vulkan: Fix a memory leak if command buffers are only freed/reset and the command pool is never reset.
  • Vulkan: Fix a race condition if command buffer memory was reset after frame capture stopped but before commands were saved to disk.
  • Vulkan: Fix issues with re-use of command buffers being individually reset in a command pool.
  • OpenGL: Fix a rare crash on 32-bit programs where insufficient space is reserved for serialised buffer contents.
  • OpenGL: Fix a crash if a resource is deleted in a captured frame and recreated before the capture ends.
  • OpenGL: Add protection against the use of 0-byte allocated buffers.
  • OpenGL: Fix some missing query enums that weren't properly handled.
  • OpenGL: Fix some GL errors trying to set invalid program bindings for separable programs.
  • OpenGL: Fix an issue applying multisample array framebuffer attachment bindings.
  • OpenGL: Fix texture views of 3D textures not properly propagating the depth of the underlying texture.
  • Android: Fix an issue where on Android 10+ devices the RenderDoc layer could get stuck active when launching the program with RenderDoc closed.