Version v1.23
This release comes with a number of optimisations for Vulkan and D3D12 captures, especially those with 'bindless' style approaches with many resources bound and accessible at once. There should be a general improvement of performance across capture and replay, if you find that you are having problems with slowdown do please get in touch so that I can investigate since I can only work with what I'm aware of.
In this version is also full support for vulkan source-level shader debugging, from any compiler that can produce NonSemantic.Shader.DebugInfo.100
debug annotations. On glslang this can be produced via the -gVS
switch, and on dxc with -fspv-debug=vulkan-with-source
. For more information consult your shader compiler's documentation.
As always binary builds with installers, zips and tarballs are available on renderdoc.org.
Python API changes
VKDescriptorBinding.type
has been removed as types are no longer uniform per-type with mutable descriptors. This element has been moved intoVKBindingElement.type
.
Features/Improvements
- UI: When trying to connect to a remote host using an incompatible version, display the version it is running. This is only supported as of v1.23 and newer, older versions will all report as 'older than v1.23'.
- UI: The buffer formatted allows stdint types like
uint8_t
orint32_t
. - All: Add an in-application API function to set a title for an ongoing capture.
- Linux: Use
$HOME
as a backup ifgetpwuid
fails. - Vulkan/D3D12: Add a number of optimisations to D3D12 and Vulkan both during capture and on replay, to improve performance. This would affect programs using bindless and large number of resources most.
- Vulkan/D3D12: When doing feedback on bindless resources, if a pixel shader is never invoked due to being offscreen/clipped, treat that as valid and display no resources as used instead of falling back to showing all resources.
- Vulkan: Give a default name to un-named children in constant buffer structs.
- Vulkan: Add support for extensions:
VK_EXT_mutable_descriptor_type
VK_AMD_memory_overallocation_behavior
VK_EXT_pageable_device_local_memory
- D3D12: Relax the requirement for D3D12Core.dll to be signed by microsoft on trusted captures. This works around an issue where UE5.1 re-signed D3D12Core.dll as coming from epic, causing it to be rejected. The signature check will still be applied on files marked as untrusted e.g. downloaded from the internet.
- OpenGL: Allow use of OVR extensions on desktop GL.
- OpenGL: In the case that two different incompatibly-typed shader variables are both bound to the same texture slot, display this as an error in the pipeline state view.
Bugfixes
- UI: Clear event browser find results correctly between opening captures.
- UI: When viewing a texture as a buffer, ensure scalar packing is used for pretend formats like RGB.
- UI: Display missing shader processing tool executables more clearly instead of listing them as having exited normally.
- UI: Fix crash handler not properly running in official builds to catch and report crashes.
- Linux: Fix a bug from KDE where injected code made OpenGL directly through linked function pointers and went into capturing hooking path.
- Python: Return SSBO and atomic buffers in the read-write resources list for OpenGL.
- OpenGL: Comply with overly strict pipeline matching rules for I/O variables when creating custom display shaders.
- Vulkan: Fix a bug where resources that are completely overwritten by a direct command like copy/clear would not properly store their contents if they were accessed via shader before that in the same command buffer.
- Vulkan: Explicitly fail
vkCreateDevice
when creating multiple simultaneous logical devices, which is legal but RenderDoc does not support. - Vulkan: Fix handling of beginning and ending dynamic rendering inside secondary command buffers.
- Vulkan: Fix an issue with shader debugging across repeated function calls to the same function.
- Vulkan: Fix calculation of scalar size of structs, which are not sized as a multiple of their alignment (i.e. no trailing padding).
- Vulkan: Fix a potential crash when fetching pixel history when many fragments in the same event overwrite the desired pixel.
- Vulkan: Fix a few cases where pNext structs with empty/do-nothing contents were not properly ignored.
- Vulkan: Handle multiple streams properly when fetching transform feedback output from geometry shaders - only the rasterized stream is fetched.
- Vulkan: Fix a crash on drivers with more than 3 queue family types.
- Vulkan: Fix display of attachments in pipeline state view when they are not listed in order or have gaps.
- Vulkan: Fix an error if an application passes a too-small array into
vkEnumeratePhysicalDevices
. - Vulkan: Fix a crash when replaying captures that use
VkPipelineViewportDepthClipControlCreateInfoEXT
. - Vulkan: Fix an error showing a discard pattern on D24X8 textures.
- Vulkan: Fix a validation error providing instance divisors for non-instanced vertex attributes.
- Vulkan: Fix a validation error with a missing Flat interpolator on added built-in inputs when patching SPIR-V.
- Vulkan: Fix the pipeline state view not correctly showing depth biases.
- D3D: Fix shader debugging ddx/ddy being flipped when sampling using implicit derivatives.
- D3D: Sanitise invalid values being returned for resinfo due to marker/automatic values like 0 or
0xffffffff
being used in desc structs. - D3D: Work around suspected AMD driver bug returning incorrect frontface data.
- D3D11: Fix a problem where release builds would not properly fallback during load if debug layers were requested but not available.
- D3D12: Fix a problem during shader debugging where incorrect root descriptors would be used when looking for root SRVs.
- D3D12: In shader debugging fix handling of RANGE_OFFSET_APPEND in D3D12 when dealing with tables having multiple ranges of different types that could lead to incorrect descriptors being used.
- D3D12: When shader debugging use depth value to better select which candidate fragment to debug.
- D3D12: Fix calculation of strides when accessing root buffer descriptors as structured.
- D3D12: Fix clamping of mip/slice count in pipeline state view from view desc structs.