Version v1.32
This version contains support for pixel history on D3D12, support for the slang shader language and tool, and other smaller improvements and bugfixes.
NOTE: Recent AMD drivers have a problem that for Vulkan and GL may cause problems creating swapchains. On UE5 this can cause fatal errors on or shortly after startup when using Vulkan, and this may also appear as the use of D3D12 in applications that don't use the API. This is an AMD driver issue which has been reported and is planned to be fixed on the AMD side.
As always binary builds with installers, zips and tarballs are available on renderdoc.org.
Main highlights
- Pixel history is now supported on D3D12, many thanks to the contributions by Steve Karolewics and Jovan Ristic.
Python API changes
ReplayController.DebugPixel
now takes a structureDebugPixelInputs
to determine parameters like sample or primitive, and now allows setting the desired multiview or layered rendering view as well.CaptureContext.ViewPixelHistory
takes a new parameterview
with the desired multiview or layered rendering view.
Features/Improvements
- All: Add the ability to right-click and rename a bookmark to give it a custom string name.
- All: Add the ability to right-click and copy from pipeline state stencil state, and the debug messages view.
- All: In the pixel history show depth value written even if no pixel shader is bound.
- All: The pixel history view will show range-scaled colour for integer targets as well as float/normalised targets.
- D3D12: Added support for pixel history.
- D3D12: Allow resource naming for queues and command buffers.
- Vulkan: Added support for the slang tool and shading language.
- Vulkan: Allow debugging specific pixel shader instance based on the multiview or layered rendering index.
- Vulkan: If multiple outputs are declared at the same location and have no names, use component in auto-generated name.
- Vulkan: Add support for extensions:
VK_KHR_calibrated_timestamps
VK_KHR_index_type_uint8
VK_KHR_line_rasterization
VK_KHR_load_store_op_none
VK_KHR_vertex_attribute_divisor
VK_EXT_texture_compression_astc_hdr
(was previously implemented but never reported)
- Android: Improve performance with high-instance count draws when selecting 'show all instances' in mesh viewer.
Bugfixes
- All: Fix the slice information in pipeline bindings tooltips not properly displaying for sub-sliced views.
- All: Fix a rare potential crash closing a capture.
- All: Fix some shader processing tool command lines not properly being replaced when using placeholder arguments.
- All: Fix a crash if the buffer formatter specifies a recursive struct definition (declaring a member of a struct that is of the struct type itself).
- Android: Fix a case where 32-bit incapable devices weren't properly detected when launching remote server.
- Linux: Fix multiple environment modifications when launching programs not properly stacking.
- OpenGL: Fix display and handling of texture views that target subsets of the mipchain of the original texture.
- Vulkan: Fix mesh output not properly accounting for dynamic vertex inputs.
- Vulkan: Fix a potential crash when loading captures with discarding resources.
- Vulkan: Fix spec-incompatible handling of unknown functions in
Get*ProcAddr
. - Vulkan: Fix an issue where incorrect buffer device addresses would be looked up.
- Vulkan: Fix misleading pixel history output when some output components are not written by a shader.
- Vulkan: Fix a case that could crash rebinding descriptor sets depending on pipeline compatibility and descriptor count.
- Vulkan: Fix inconsistent use of user allocation callbacks.
- Vulkan: Fix an error where dynamic state would not properly be restored if it were temporarily invalid with the bound pipeline.
- Vulkan: Fix edge case with
vkEnumeratePhysicalDeviceGroups
if user passes smaller-than-queried array to enumeration. - Vulkan: Fix a race condition if multiple BDA-capable buffers were created or destroyed simultaneously on different threads.
- Vulkan: Improve checking for OOM during mesh output fetch by checking against device-specific maximum memory allocation size before trying to allocate.
- Vulkan: Fix cases where pixel history would not properly decode integer data.
- D3D11: Fix a rare crash capturing with 3D textures reading past the end of mapped data.
- D3D11: Fix a crash when shader debugging if SampleBias is used with an unbound sampler.
- D3D12: Fix a case where the arguments buffer for an ExecuteIndirect would be read out of bounds.
- D3D12: Fix a deadlock if GPU readback is used for mapped memory but the queue being submitted on is blocked by a previous wait.
- D3D12: Strip some impossible-to-use flags from resources when recreating on replay.
- D3D12: Work around mixed support where new barriers can be unsupported but indirectly used by new creation functions.
- D3D12: Properly display depth-stencil target as unbound in pipeline state view if it was previously bound.
- D3D12: Fix quad overdraw overlay not working if current root signature disallows pixel shader access.
- D3D12: Fix a rare crash when binding descriptor tables that go out of bounds of the underlying heap.