Skip to content
Choose a tag to compare

Version v1.6

@baldurk baldurk released this
· 3067 commits to v1.x since this release
Choose a tag to compare

Version v1.6

It's a new year and a new release of RenderDoc! This release includes support for the hot-off-the-presses Vulkan 1.2. It also contains many bugfixes and improvements in general.

For the few people running v1.3 still, please see the previous release notes for v1.4 to ensure you kill any runaway crash handler processes before upgrading. This won't be mentioned in future release notes as the number of reported users on v1.3 is extremely small by this point.

Binary releases are available in the usual place with zip and installer for Windows and binary tarball for linux.

Main highlights

  • Add support for newly released Vulkan 1.2. This includes all of the component extensions wrapped up in that release as well as the new compacted feature structs and an updated layer for 1.2 instances.
  • Add UI support for typed GPU pointers in buffers - see VK_KHR_buffer_device_address.
    Pointers in constant buffers
    Pointers in buffers
  • On OpenGL RenderDoc will check for texture completeness and mark incomplete textures as 'empty' in the pipeline state view:
    OpenGL incomplete texture checking

Python breaking changes

  • typeHint members in various structs (BoundResource, TextureDisplay, TextureSave) and functions (ReplayOutput.AddThumbnail, ReplayOutput.PixelHistory) have been renamed to typeCast.
  • PickPixel, GetHistogram and GetMinMax are now provided from ReplayController without the need to create a headless ReplayOutput. Any implicit parameter previously pulled from the ReplayOutput are now explicit function parameters.
  • API functions have been updated to not directly take a mip level, array layer, sample, etc. Now any time a subresource needs to be specified a Subresource object is passed which specifies the mip, array layer, and sample.
  • The CaptureAccess.InitResolver function takes an additional boolean parameter to indicate if resolving symbols should be interactive (e.g. prompting the user to locate symbol files) or non-interactive.


  • Add support for a number of Vulkan extensions:
    • VK_KHR_buffer_device_address
    • VK_KHR_shader_clock
    • VK_KHR_spirv_1_4
    • VK_KHR_timeline_semaphore
    • VK_KHR_performance_query
    • VK_KHR_separate_depth_stencil_layouts
    • VK_EXT_buffer_device_address
    • VK_EXT_tooling_info
  • Whitelist some already-supported GLES extensions:
    • GL_EXT_blend_func_extended
    • GL_EXT_clear_texture
    • GL_EXT_clip_control
    • GL_EXT_conservative_depth
    • GL_EXT_depth_clamp
    • GL_EXT_draw_transform_feedback
    • GL_EXT_float_blend
    • GL_EXT_frag_depth
    • GL_EXT_instanced_arrays
    • GL_EXT_map_buffer_range
    • GL_EXT_multi_draw_indirect
    • GL_EXT_multisample_compatibility
    • GL_EXT_multisampled_render_to_texture2
    • GL_EXT_occlusion_query_boolean
    • GL_EXT_render_snorm
    • GL_EXT_texture_mirror_clamp_to_edge
    • GL_EXT_texture_query_lod
    • GL_EXT_texture_shadow_lod
    • GL_OES_blend_equation_separate
    • GL_OES_blend_func_separate
    • GL_OES_blend_subtract
    • GL_OES_element_index_uint
    • GL_OES_framebuffer_object
    • GL_OES_texture_cube_map
    • GL_OES_texture_mirrored_repeat
  • Also whitelist GL_EXT_texture_shadow_lod on GL
  • Improve calculation and display of range histogram to be more intuitive.
  • Add support of EGL with OpenGL on linux.
  • Improve default buffer format string for very small (less than 16 byte) buffers.
  • Improved handling of vulkan layer registration on linux in different scenarios.
  • Don't use full filename as texture name in image viewer.
  • Fall back to EGL for GL replay if GLX can't be initialised and EGL is compiled & supports GL hack.
  • Add support for DXGI desktop duplication API.
  • Add a 'sync views' option for the performance counter viewer, to always scroll to the selected event when it changes.
  • Implement OpenSharedResource1 and ResourceByName on D3D11.
  • Add support for shared fence imports on D3D11 and D3D12.
  • Add an error if android intent arguments are obviously badly formatted.
  • Reduce timeout time if an android program fails to start.
  • Remove legacy assumptions that 1 capture is 1 frame. Present() calls are serialised properly instead of being implicitly added at the end of the frame, and if a capture is API triggered it won't refer to frame numbers.
  • Add support for serialising framebuffer invalidate calls in GL.
  • Support typeless textures in D3D APIs when replaying on a GL proxy.
  • Serialise initial contents of multisampled textures on GL.
  • If buffer formatter help text is hidden, save that state and don't show it again until it's toggled on.
  • Add 'expand all' menu item to resource inspector window.
  • Add fake expanded root signature elements in structured data (visible in resource inspector window), to allow browsing the unpacked blob.
  • Allow inspecting hidden UAV counters at any time via a faked separate 4-byte buffer.
  • Export float-sized texture formats to full floats in EXR files.
  • Serialise ClearState() calls in D3D12 command lists.
  • Refactor camera controls in buffer viewer slightly, instead of explicitly being named 'WASD' they are now 'flycam', and should work regardless of keyboard layout.
  • Add sensible default parameters for mesh replay API structures.
  • The 'clear before X' overlays now clear the depth output if it's selected, as well as just the colour outputs. This is only possible if the test is 'directional' - equal/not equal and always/never depth functions cannot be cleared.
  • When selecting a vkBeginCommandBuffer event, nothing inside the command buffer is replayed.
  • Improve replay performance of vulkan captures with very large texture arrays that are potentially split per-subresource for layout tracking.


  • Remove temporary capture files from recent files list.
  • Fix a crash if the event browser is closed when opening a capture.
  • Fix a bug that could corrupt data in ExecuteIndirect parameters.
  • Fix fetching of driver disassembly for Vulkan and D3D12.
  • Fix some painting not reacting to different fonts correctly.
  • Fix handling of ZIP files failing with >65535 files.
  • Fix incorrect display of sample mask in D3D12 pipeline state.
  • Don't display typed buffers as structured in D3D11 pipeline state.
  • Fix bug with structured buffer loads on D3D11 shader debugging.
  • Fix crash if capture is queued for frame 0 on D3D12 but no window presentation happens.
  • Fix calculation of dataSize and using wrong pitch in WriteToSubresource.
  • Don't crash if vertex buffer stride is 0 when picking vertices.
  • Don't crash when an unsupported Android device is connected.
  • Fix error when loading validation layers in vulkan replay.
  • Fix incorrect bounds check when looking up D3D12 constant buffer in higher spaces.
  • Fix byte-addressed 4-component loads in shader debugging.
  • Don't register debug callback on GL when structured-exporting.
  • Fix case where D3D shader debug data didn't find correct filenames due to / and \ mismatches.
  • Fix status bar display of A8 textures.
  • Fix fetching of view parameters for MSAA array textures on D3D11.
  • Don't serialise vkGetFenceStatus and similar each time if called in a rapid loop.
  • Fix calculation of array byte stride for structs with padding in DXBC.
  • Only read pImmutableSamplers pointer for sampler descriptors.
  • Add support for some legacy aliases of formats in DDS reader.
  • Fix crash if static instanced data is out of bounds when vertex debugging.
  • Fix a few issues with 1D array textures on GL.
  • Fix crash with backbuffers in GL that are 0 width or height.
  • Fix capture and replay of D3D12 render passes.
  • Fix double-preprocess of GLSL shaders removing fallback path for when ARB_gpu_shader5 is unsupported.
  • Correctly filter the list of supported formats in renderdoccmd convert.
  • Fix crash dereferencing image attachments when using imageless framebuffer in vulkan.
  • Fix crash on shutdown if adb needs to be shut down.
  • Disable compute support on GL if the reported version is less than 4.2, even if the extension is reported.
  • Fix potential crashes if UI windows are closed while render work is ongoing.
  • Avoid pixel unpack state messing with proxy texture data upload.
  • Fix GL proxying of some texture formats.
  • Fix a bug saving out mips in D3D12.
  • Fix QueryInterface for ID3D12Device..
  • Handle D3D12 devices being singleton-per-adapter.
  • Fix a bug capturing if a D3D12 queue is destroyed before the end of a capture.
  • Fix a number of texture-related bugs on all APIs.
  • Fix packing of single component input registers in shader debugging.
  • Fix D3D12_FEATURE_DATA_D3D12_OPTIONS5 being partially uninitialised.
  • Ensure we set all wrapping modes to clamp when displaying textures in GL.
  • Fix serialisation of CreateCommittedResource1 that failed wrongly.
  • Fix layouts for vulkan image contents initialization.
  • Ensure that depth/stencil aspects are always transitioned together on vulkan.
  • Ensure we prepare initial states for late-created programs with glCreateShaderProgramv.
  • When a capture is loaded in the API inspector, populate the events.
  • Fix cases where shader debugging values would get wrongly denormal-flushed.
  • Don't flush parameters to bufinfo/resinfo opcodes in D3D11.
  • Fix cases where invalid vkMapMemory calls could be made for empty regions.
  • Fix generated HLSL edit stubs not using correct binding numbers.
  • Fix errors in internal GL texture creation if pixel packing buffers are bound.
  • Fix a crash if an ExecuteIndirect argument buffer is in an UPLOAD heap.
  • Don't set unsupported parameters for rectangle textures on GL.
  • Fix case in shader debugging buffer loads where resource swizzle wasn't correctly applied.
  • Fix D3D12 BeginEvent/SetMarker interpretation of plain strings.
  • Fix use of unsized formats in promotion to direct_state_access for old-style multisampled image GL initialisation.
  • Don't crash if window size is 0 width or height.
  • Fix a case where non-aligned buffer sizes could cause an over-copy in vulkan initial states by using aligned size instead of true size.
  • Fix capture of plain non-pointer versions of glVertexAttrib*.
  • Fix crash when using SPIR-V for vertex shaders on GL drivers that support more than 16 vertex attributes.
  • Fix indirect-count draws in secondary command buffers on vulkan.
  • Fix possible crashes with SAMPLER descriptors that have immutable samplers.
  • Disable sparse feature bits in vulkan physical device properties.
  • Fix a case where the wrong layout transition would be executed on vulkan, possibly leading to discarded textures.
  • Fix handling of renderpass barriers on slices of 3D textures.
  • Fix SPIR-V processing of vector constants.
  • Fix re-used handles in descriptor sets causing refcounting problems on vulkan.
  • Fix potential crash with parameters in VkDescriptorUpdateTemplateCreateInfo.
  • Fix problem with corrupt parameters when fetching data for 3D depth/stencil textures on Vulkan.
  • Fix projection guessing controls sometimes being enabled when unused.
  • Improve handling of VK_REMAINING_* enums in Vulkan.
  • Fix memory leak importing zip.xml files.
  • Fix leak when connecting to processes from the UI.
  • Add documentation for Create*WindowingData replay API functions.
  • Fix uninitialised shader variable in internal texture-render shaders on GL and Vulkan.
  • Fix incorrect HLSL-to-register mapping for single component shader interface variables.
  • Fix loading of 1D texture files in image viewer.
  • Fixes for building on VS2019.
  • Fix buffers referenced only in ExecuteIndirect calls and no-where else not being correctly included in captures on D3D12.
  • Account for MSAA sample count when calculating byte size of textures.
  • Fix incorrect error message being displayed if Android APK failed to install.
  • Fix an error if the application is using VAO 0 and also calls glDeleteVertexArrays on VAO 0 (which should be ignored).
  • If a zero-sized or uninitialised buffer is bound as a VB on GL, skip any draws as invalid.
  • Fix handling of applications like apitrace incorrectly using dlsym(RTLD_NEXT) to access GL without loading GL.
  • Replay exactly to vkBeginCommandBuffer and no further when it is selected.
  • Detect and skip invalid GL draws with zero-sized buffers.
  • Fix text contrast in pixel history view with dark UI theme.
  • Handle vertex shaders with no outputs in GL transform feedback.
  • Fix potential crash when stale dynamic descriptors are still bound in draws that don't use their descriptor sets.
  • Fix internal resources being included in captures when using D3D12On7.
  • Fixed glClear not listing the framebuffer contents as output targets.