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
.
- On OpenGL RenderDoc will check for texture completeness and mark incomplete textures as 'empty' in the pipeline state view:
Python breaking changes
typeHint
members in various structs (BoundResource
,TextureDisplay
,TextureSave
) and functions (ReplayOutput.AddThumbnail
,ReplayOutput.PixelHistory
) have been renamed totypeCast
.PickPixel
,GetHistogram
andGetMinMax
are now provided fromReplayController
without the need to create a headlessReplayOutput
. Any implicit parameter previously pulled from theReplayOutput
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.
Features/Improvements
- 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.
Bugfixes
- 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.