Skip to content

Releases: baldurk/renderdoc

Version v1.32

05 Apr 15:05
v1.32
6a89135
Compare
Choose a tag to compare

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.
    Pixel history on a D3D12 capture

Python API changes

  • ReplayController.DebugPixel now takes a structure DebugPixelInputs 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 parameter view 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.

Version v1.31

29 Jan 12:32
v1.31
04bfedc
Compare
Choose a tag to compare

Version v1.31

This version contains some quality of life fixes and expanded SPIR-V debugging support, as well as a new mesh visualisation feature. There are also some important bugfixes for D3D11 and mesh shader usage, and a workaround for a recent nvidia driver bug.

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

  • The UI now has a configuration option to set consistent formatting of byte offset and size fields in the UI.

    By default such fields are displayed as decimal numbers up to a threshold value and then larger values are displayed as hexadecimal, but with the configuration option it can be forced to be either always decimal numbers or always hexadecimal.

  • The SPIR-V debugger now supports debugging of shaders using the buffer device address extension.
    Pointers in this fashion are displayed the same way as GPU pointers elsewhere in the UI, with a resource link that jumps to a buffer viewer with the given pointer type.

    image

    image

  • Added a new 'mesh exploder' visualisation feature contributed by Dan Hawson which allows visualisation of mesh topology via a tweakable per-vertex offset. This can show poor or good vertex sharing by revealing vertices which share positions but are distinct.
    285232907-e46f3c24-c9db-4200-8cec-e53c861b7938
    285232945-40b9ffa1-7d40-480c-a0f7-548da8261310

Python API changes

  • SolidShade enum has been renamed to Visualisation, and similarly the solidShadeMode member of MeshDisplay is renamed to visualisationMode.

Features/Improvements

  • UI: Messages suggesting enabling API validation for more error information now direct to Open Capture with Options to discourage permanently enabling validation.
  • UI: Only show byte range for a single subresource when viewing texture as buffer.
  • UI: When switching between mesh shader draws and compute shader dispatches, preserve pipeline state flowchart.
  • Vulkan: Fail instance creation if RenderDoc layer is explicitly enabled.
  • Vulkan: Add support for 64-bit selectors to OpSwitch statements.
  • Vulkan: When 'ref all resources' is enabled, ensure internal buffers aren't included.
  • D3D11: Improve handling and checking for unsupported sparse textures.
  • Android: Add workaround for broken Android devices that don't properly support layers in apks.

Bugfixes

  • UI: Fix re-calculation of current 3D slice when moving up and down mip levels.
  • UI: Fix a crash after a device lost when using mesh shaders.
  • UI: Fix some tool buttons being unavailable in raw buffer viewer.
  • UI: Fix incorrect error about invalid size when opening DDS files.
  • UI: Fix incorrect tooltip on vulkan pipeline state shader save button.
  • UI: Fix a case where the UI layout would corrupt itself if the event browser was closed when starting the program.
  • Vulkan: Fix incorrect results when shader debugging non-float texture lookups.
  • Vulkan: Fix depth/stencil discard patterns being incorrectly shown for aspects that are not discarded.
  • Vulkan: Fix incorrect image layouts being tracked when multiple command buffers are submitted together.
  • Vulkan: Fix a potential crash when using the triangle size overlay.
  • Vulkan: Fix Depth overlay writing to pixels outside of drawcall for shaders exporting depth.
  • Vulkan: Fix task payload readback on mesh shaders for array types.
  • Vulkan: Fix an error fetching mesh output from mesh shaders if specialisation constants are used.
  • Vulkan: Fix handling of mesh shader draws in pixel history.
  • Vulkan: Don't generate invalid SPIR-V and potentially crash when patching shaders that contain debug information.
  • Vulkan: Fix incorrect error debugging SPIR-V when writing to out of bounds Matrix element.
  • Vulkan: Fix loading incorrect data when reading a row major matrix from a buffer.
  • Vulkan: Fix wireframe overlay when drawcall modifies polygonMode dynamic state.
  • Vulkan: Fix an invalid access when using mesh shaders with inline shader created in pipelines.
  • Vulkan: SPIR-V debugger fix for OpBitcast from Vector to Scalar.
  • Vulkan: When creating mesh shader output fetch pipelines, preserve required subgroup size.
  • Vulkan: Fix a pixel history crash when using dynamic rendering and the target texture is bound as a storage image.
  • Vulkan/D3D12: Fix incorrect indirect parameters being used for displaying mesh output data from mesh shaders.
  • D3D: Fix mismatching shader interfaces if a semantic is used alone but with a non-zero index (i.e. COLOR1 with no COLOR0).
  • D3D11: Fix crash in pipeline state viewer when displaying an empty binding after using the depth overlay and loading multiple captures.
  • D3D11: Fix crash when discarding dynamic staging buffers.
  • D3D12: Fix a potential crash showing whole-pass mesh output with mesh shaders.
  • D3D12: Fix depth overlay writing to pixels outside of drawcall for shaders exporting depth.
  • D3D12: Fix a crash when examining a mesh shader draw where an amplification shader is bound but its payload is unused.

Version v1.30

04 Dec 17:18
v1.30
5f95fb9
Compare
Choose a tag to compare

Version v1.30

This version contains support for mesh shaders on both Vulkan and D3D12. In addition there are a number of bugfixes including some crashes and a problem affecting recent NV drivers on UE5, as well as some other general improvements.

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 but it's unclear at this point if a workaround is possible.

As always binary builds with installers, zips and tarballs are available on renderdoc.org.

Main Highlights

Mesh shaders are supported with all existing features like pixel history, pipeline state, shader editing, shader printf on Vulkan, as would be expected.

The mesh viewer has been updated to display the relevant information. For task/amplification shaders it will display both the payload output and dispatched size from each threadgroup. Whether or not they are used, the final output from the mesh shader will be displayed for each meshlet that produced some outputs.

The 3D preview has also been updated to show a new solid shading mode which colourises different meshlets with different colours.

(screenshots courtesy of niagara)

Task & Mesh output with meshlet highlighting

It is also possible to filter all views down to either a single meshlet, or a single task and all meshlets produced.

Task & Meshlet filtering

Python API changes

  • The MeshDataStage.Unknown enum value was removed.

Features/Improvements

  • All: Extend depth test overlay to correctly report pass/fail with shader exported depth.
  • UI: Improve tooltips for settings determining Android SDK/JDK.
  • UI: Improve buffer formatter help and link properly to help documentation from UI.
  • UI: Improve D3D12 line anti-aliasing on AMD.
  • Vulkan: Add support for VK_EXT_extended_dynamic_state3 extension.
  • Vulkan: Improve display of output parameters to strip unnecessary gl_PerVertex noise.
  • Android: Fade logo every 45 minutes to alleviate burn-in if server is left running long term.
  • Android: Add handling of limited devices that only support 64-bit ARM and not also 32-bit ARM.
  • D3D12 & Vulkan: Implement support for mesh shading. Interactions with multiview are not supported, and currently there is no mesh input visualisation option and shader debugging is disabled. NOTE: Currently there are known issues both with mesa radv and with dxc's SPIR-V output which are both being investigated.

Bugfixes

  • UI: When loading a layout, close any existing windows which are not present in the new layout to avoid those windows becoming inaccessible or crashing.
  • Vulkan: Fix incorrect flag being used when creating compiled versions of library pipelines.
  • Vulkan: Fix render area not showing correctly when dynamic rendering is active.
  • Vulkan: Work around a validation error when sampling counters during replay.
  • Vulkan: Fixed current event action not always being displayed correctly when going from Texture Viewer Stencil overlay to None overlay.
  • Vulkan: Fix crash during replay of very large variable sized descriptor sets.
  • Vulkan: Fix source level shader debugging not being available on Android.
  • Vulkan: Fix rare error where garbage structs in pNext chain must be ignored.
  • Vulkan: Fix error with overlay display when displayed texture is type-cast.
  • Vulkan: Fix a crash if a descriptor update template references a layout unused elsewhere.
  • Vulkan: Fix entry points incorrectly being returned from VkG*PA for future core versions not enabled.
  • Vulkan: Fix a potential crash with VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT.
  • Vulkan: Fix a bug looking up matching bindings if vertex input bindings were specified out-of-order.
  • D3D: Fix uint/int texture bindings being swapped in custom visualisation shaders.
  • D3D: Disassemble inner coverage builtins in DXBC bytecode.
  • D3D12: Fix a crash if mesh viewer is opened and closed many times.
  • D3D12: Fix a crash when using new D3D12 barriers and ExecuteIndirect.
  • D3D12: Fix failures when trying to slightly over-allocate on tier 3 descriptor heaps.
  • D3D12: Fix crash when disassembling shaders that use embedded root signatures.
  • D3D12: Fix potential crash with invalid out of bounds GPU addresses, while trying to preserve valid out of bounds GPU addresses.
  • GL: Fixed incorrect replay (and potential driver crash) when using glTexImage* APIs and non-zero UNPACK_ROW_LENGTH.
  • GL: Workaround AMD driver behaviour that creates D3D12 device inside GL swapchains.
  • GL: Don't treat unmaps of persistently mapped read-only buffers incorrectly as writes.

Version v1.29

29 Sep 16:22
v1.29
0202a06
Compare
Choose a tag to compare

Version v1.29

This release includes a number of bugfixes since v1.28, as well as improved handling of non-deterministic ExecuteIndirect calls on D3D12.

As always binary builds with installers, zips and tarballs are available on renderdoc.org.

An extra note for anyone with a fork or local changes to RenderDoc - the version of clang-format used upstream has been updated to 15.0. This may necessitate reformats of pending changes if you intend to upstream them.

Python API changes

  • ShaderProcessingTool.CompileShader has a new parameter spirvVer which can be specified to give the SPIR-V version to use when compiling. If left blank the existing default behaviour will be used. Shader reflection data with a SPIR-V version will have that listed under a new @spirver compile flag.

Features/Improvements

  • Refactored handling of ExecuteIndirect to more reliably replay the application's work even in the face of non-deterministic work. Executes with non-deterministic parameters will still not function properly anywhere that the draw parameters are referenced like the event browser, mesh viewer, etc. But selecting subsequent events in the command buffer will now replay the ExecuteIndirect faithfully.
  • The pixel history events still show background colours in part when the row is selected.
  • When editing SPIR-V shaders and recompiling them, wherever possible the same SPIR-V version will be used to recompile them. This is necessary when using features that target a minimum SPIR-V version.

Bugfixes

  • All: Correctly load 3D textures with mipchains in image viewer.
  • All: Fix memory overwrite when saving a single slice of a texture.
  • All: Fixed error message which sometimes prevented valid DDS files from being opened.
  • All: Prevent crash in capture connection windows during shutdown.
  • All: Try to work around Android devices that take many seconds to enumerate installed programs to reduce the chance of a time out, and don't treat package names as local filenames if the timeout is hit.
  • All: Don't allow shader debugging tooltip to show over the top of a context menu.
  • All: Prevent a potential crash if corrupted data was received over a socket connection.
  • All: Fix a potential crash on startup if file access failed to the config file.
  • All: Fix pixel history 'debug pixel' text being incorrect when listing primitive ID.
  • GL: Improve handling of uniform arrays of size one.
  • GL: Fix thumbnail generation sometimes inverting middle two lines of the capture thumbnail image.
  • GL: Changed resource preview tooltip to be multi-line instead of a single line.
  • GL: Corrected layered depth buffer texture pipeline state tooltip from incorrectly displaying slices.
  • GL: Try to prevent some crashes in cases where the GL driver fails to map a buffer.
  • Vulkan: Fix SPIR-V shader debugger for specialisation constants using OpLogicalNot.
  • Vulkan: Allow override of GPU driver to select software drivers like llvmpipe.
  • Vulkan: Fix SPIR-V parsing of OpExecutionModeId specifying compute threadgroup size.
  • Vulkan: Use up-to-date image layouts for processing pixel history, if images are transitioned immediately before use.
  • Vulkan: Fix a case where pixel history would break if a small number of draws had a large amount of overdraw each.
  • Vulkan: Work around an nvidia driver bug setting dynamic state in between binding identical static pipelines.
  • Vulkan: Handle non-sparsely resident images correctly.
  • Vulkan: Fix some indirect-count draws handling.
  • D3D: Improve hlsl shader source debug stepping when the source shader contains empty filename directives i.e. #line XXX "".
  • D3D: Be more robust in parsing DXBC containers with unexpected data.
  • D3D11: Improve pixel history handling of discarded fragments.
  • D3D11: Fix incorrect pipeline state tooltips for MSAA textures referencing mips that can't exist.
  • D3D11: Prevent overlays from being rendered incorrectly and causing stale data when selecting different events.
  • D3D11: Fix a problem where an application creating too many D3D11 state objects would not be able to release some and retry due to a cache not being cleared.
  • D3D12: Avoid potential crash in nvidia driver when setting 0 UINTs as root constants.
  • D3D12: Remove a spurious validation warning that could appear from internal RenderDoc use.
  • D3D12: Fix an incorrect check when handling new version 2 depth-stencil pipeline chunks.
  • D3D12: Make sure resource usage has the correct EID for trailing barriers in command buffers with no subsequent draws.
  • D3D12: Fix serialisation of GPU addresses being based on buffers, when D3D12 doesn't require or bounds check against buffers for addresses but only uses underlying heaps.
  • D3D12: Fix a potential problem with mapped CPU memory uploads not properly propagating before GPU work.

Version v1.28

31 Jul 14:01
v1.28
Compare
Choose a tag to compare

Version v1.28

This release includes a number of bugfixes since v1.27, and includes a new capture option to aid capturing on Vulkan memory-constrained systems.

As always binary builds with installers, zips and tarballs are available on renderdoc.org.

Python API changes

  • renderdoc.ResultCode.ReplayOutOfMemory and renderdoc.ResultCode.ReplayDeviceLost have been renamed to renderdoc.ResultCode.OutOfMemory and renderdoc.ResultCode.DeviceLost.

Features/Improvements

  • Improved capture writing process for larger captures especially on Vulkan & D3D12 to improve the time taken to write a capture to disk.
  • Added a 'soft memory limit' capture option to reduce the chance of out-of-memory errors during capture, currently implemented only for Vulkan due to Linux and Android being platforms prone to OOM.
  • Tweaked the display of checkboxes with RenderDoc's style to display with an X, for the sake of the low contrast dark theme where checkbox fills were not as clear as the normal light theme.
  • Add support for glCopyImageSubData on GLES copying from uncompressed to compressed textures.
  • Add support for several vulkan extensions:
    • VK_EXT_provoking_vertex
    • VK_EXT_attachment_feedback_loop_dynamic_state
    • VK_EXT_image_2d_view_of_3d

Bugfixes

  • All: Fix potential crash reading configuration file.
  • All: Add better protection against invalid DDS file headers.
  • All: Refuse to open EXR files that are too large (larger than maximum texture dimensions of 16384x16384).
  • All: When opening a file type that is entirely unrecognised, report it as that instead of assuming it is a corrupted capture file.
  • All: Fix generation of buffer format strings for R11G11B10 textures viewed as buffers.
  • Linux: Fix a potential crash & failure of pipeline thumbnails when built against newer Qt versions.
  • Android: Work around driver crash in emulation of glGetTexImage.
  • D3D12: Prevent use of new barriers on older beta SDKs with crashes.
  • D3D12: Fix highlighted vertex/triangle not being properly perspective corrected in the mesh viewer.
  • D3D12: Avoid crash when drawing Texture viewer overlay for an unbound resource.
  • D3D12: Fix incorrect parameter display in ExecuteIndirect calls.
  • D3D12: Avoid crash when indexed draw is called with no index buffer.
  • D3D12: Fix a crash fetching bindless feedback for shaders with only SM6.6 resource accesses.
  • D3D12: Fix a potential crash when Set*Root32BitConstants is called with 0 constants.
  • D3D12: Fix a potential device lost when resetting new barrier layouts.
  • D3D12: Fix root signature elements with registers being displayed without a corresponding shader binding.
  • Vulkan: Fix a crash when going through fallback path in bindless feedback with no BDA support.
  • Vulkan: Fix detection of rendering to mip levels in pixel history.
  • Vulkan: Fix shader debugging handling of arrays of textures.
  • Vulkan: Fix size calculation for non-32-bit values at the end of constant buffers.
  • Vulkan: Fix buffer formatting and shader disassembly of arrays of pointers.
  • Vulkan: Fix a potential crash when fetching mesh output data if primitive restart is used.
  • GL: Fix programs that recreate textures mid-frame.
  • GL: Fix pixel history handling of multidraw draws.
  • GL: Mute/hide any errors generated in DX interop functions.
  • GL: Handle HALF_FLOAT typed values in glClear*.
  • GL: Treat BGRA8 textures imported from DX as RGBA8 since GL doesn't support BGRA8.
  • GL: Fix pixel history having incorrect depth test results reported for multiple overlapping fragments.
  • GLES: Fix pixel history reporting test failures incorrectly.

Version v1.27

02 Jun 17:51
v1.27
35b13a8
Compare
Choose a tag to compare

Version v1.27

This release includes a number of bugfixes since v1.26, as well as support for the latest D3D12 SDK 1.610.1.

As always binary builds with installers, zips and tarballs are available on renderdoc.org.

Python API changes

  • D3D12Sampler.borderColor has been split into D3D12Sampler.borderColorType and D3D12Sampler.borderColorValue, and similarly for VKSampler.borderColor into VKSampler.borderColorType and VKSampler.borderColorValue, to allow for integer border colour types.
  • D3D12RasterizerState.multisampleEnable and D3D12RasterizerState.lineRasterMode have been removed and replaced with D3D12RasterizerState.lineRasterMode of type LineRaster.

Features/Improvements

  • D3D12: Add support for new SDK 1.610.1:
  • New state functionality
  • New sampler creation parameters and PSO chunks
  • New barrier API
  • All: Show explicit dropdown arrow for tool buttons with menus.
  • All: Report Windows 11 separately in analytics.
  • Vulkan & D3D12: Optimisations to capture time overhead and GPU Syncs.
  • D3D11: Disable query for undocumented internal D3D interface in composition API.

Bugfixes

  • All: Fix potential crash when reading large amounts of data from sockets.
  • All: Fix potential crash when serialising strings if length is corrupted.
  • All: Fix potential crashes/fatal errors rendering 0x0 thumbnails.
  • All: Remove fatal errors in XML codec and have error handling for corrupted XML.
  • All: Sanitise strings printed when received from target control/remote server.
  • All: Save any capture changes (renames/bookmarks) to local file when remotely replaying.
  • UI: Fix potential race when destroying windows while command is in flight
  • Linux: Don't open symlinks when opening logfile.
  • Linux: Try to handle processes on linux that fork without exec.
  • Linux: Work around bash overriding getenv/setenv with custom implementation.
  • Android: Make timeouts waiting for process to start just depressingly high.
  • Android: Speculative fix for Android thread race condition.
  • Windows: Ignore windows.storage.dll which spams a huge number of LoadLibrary calls.
  • D3D: Fix shader debugging using wrong operand to look up resources in some gather4 opcodes.
  • D3D11: Fix handling of RestoreDeferredContextState during capture if state isn't restored.
  • D3D12: Add fatal error handling if a map fails during replay.
  • D3D12: Add GPU syncs between potential moves of work across different queues.
  • D3D12: Fix a bug with incorrect forward reference detection in DXIL.
  • D3D12: Fix a discrepancy in DXIL disassembly from dxc.
  • D3D12: Fix crash when D3D12 descriptor table is bound off the end of a heap.
  • D3D12: Handle some unusually formatted DXIL shaders with missing implicit pointer types.
  • OpenGL: Add workaround for Intel bug in pixel history.
  • OpenGL: Don't show stencil for non-final fragments.
  • OpenGL: Fix pixel history being affected by pixel pack/unpack state.
  • OpenGL: Fix pixel history not using full precision depth.
  • OpenGL: Fix pixel history on framebuffers that don't have stencil.
  • OpenGL: Fix reporting of 10:10:10:2 resource formats.
  • OpenGL: Fix some GL pixel history cases where not all events would be replayed correctly.
  • OpenGL: Fix state tracking issues in GL pixel history.
  • OpenGL: Handle drawbuffers when they aren't simple direct 1:1 with attachments
  • OpenGL: Work around nvidia bug with failing GLX query.
  • GLES: Fix requiring some proper GL GLSL extensions on GLES for blit shader.
  • GLES: Fix use of proper GL function that's not available on GLES.
  • GLES: Remove reset notification EGL context attribute preventing context sharing.
  • Vulkan: Add fallback for shader feedback on Intel GPUs without int64 support.
  • Vulkan: Disable buggy vulkan layers.
  • Vulkan: Don't include discard in resource usage until end of renderpass.
  • Vulkan: Fix a bug causing present fence extension to crash.
  • Vulkan: Fix a missing flush for mapped non-coherent memory.
  • Vulkan: Fix a potential GPU timeout on draws with huge number of instances with GS.
  • Vulkan: Fix an incorrect use of GetInstanceProcAddr when initialising vkCreateDevice.
  • Vulkan: Fix crashes for input structures with builtins.
  • Vulkan: Fix depth results for fragments in pixel history.
  • Vulkan: Fix detection of scalar packing from only matrix layout.
  • Vulkan: Fix pixel history on framebuffers that don't have stencil.
  • Vulkan: Fix separate stencil operations being applied properly with dynamic rendering.
  • Vulkan: Fix uint/int bindings being broken in custom shader templates.
  • Vulkan: Manually check and report depth bounds test in vulkan pixel history.
  • Vulkan: Work around further broken Intel occlusion queries in pixel history.

Version v1.26

31 Mar 20:12
v1.26
4524cdd
Compare
Choose a tag to compare

Version v1.26

This release enables the pixel history feature for OpenGL captures, with an implementation contributed by Orson Baines, Zi Ming He, John Kattukudiyil, Ting Cai, and Tony Tascioglu. In addition it contains a number of improvements and bugfixes over v1.25.

As always binary builds with installers, zips and tarballs are available on renderdoc.org.

Python API changes

  • None.

Features/Improvements

  • OpenGL: Pixel history is now supported on OpenGL.
    image
  • Vulkan: Improve the heuristic for when to use a GPU readback for reading mapped memory over CPU reads.
  • D3D12: Enable that same heuristic that was accidentally disabled in a previous release.
  • D3D12: DXIL handling refactored once again, to more closely clone LLVM's codebase and be more reliable at editing/patching.

Bugfixes

  • All: Fix an issue with thumbnails being stale in some situations.
  • All: Fix a crash when a completion modifier like ctrl-space or ctrl-E is used in an edit box with no completion options.
  • All: Speculative fix for a race condition with performance counter viewer windows.
  • All: Fix RGP captures being unable to trigger remotely.
  • All: Fix cumulative calculation of durations for fake profile markers.
  • All: Disable Qt behaviour where typing a key in the buffer viewer would try to 'find' that letter, causing large hangs on very large meshes.
  • All: Fix a crash in rare cases when showing tooltips for some columns in mesh viewer.
  • All: Fix a problem where editing an environment variable modification to have an empty value made it unselectable.
  • All: Fix terminology being reversed between D3D and GL/Vulkan for the shader stages in resource usage.
  • Linux: Create utility GL contexts as explicitly matching the used API, in case GLES is being used.
  • Android: Increase timeout for remote servers starting to 5 seconds because Android is a garbage platform and a tiny program can't start in under a second.
  • D3D: Fix an issue with debugging pixel shaders trying to artificially create matching I/O signatures with preceeding stages when SV_PrimitiveID is used.
  • D3D: Fix an issue where a missing callstack on the first instruction of debugging could cause step-over/step-into to misbehave.
  • D3D12: Fix a crash that can happen when device lost happens during load.
  • D3D12: Stop using dxc type annotations as they are broken.
  • D3D12: Fix several new DXIL formulations or features.
  • D3D12: Don't initialise AMD extensions when AMD driver is detected as loaded, if it's not currently in use.
  • D3D12: Fix a problem capturing when a mapped buffer is not used directly but instead aliased with buffers on the same heap that are then used.
  • D3D12: Fix missing specified colour formats on internal PSO.
  • D3D12: Fix a deadlock if a resource is mapped while a capturing is finishing and cleaning up captured maps.
  • Vulkan: Fix a crash when using extension-only defined queue families.
  • Vulkan: Fix a crash when external/foreign queue families are used.
  • Vulkan: Fix a crash deleting a BDA buffer while another is being created.
  • Vulkan: Fix handling of dynamic rendering shading rate attachments.
  • Vulkan/GL: Fix handling of stencil-only multisampled textures.
  • GLES: Remove unsupported EGL extensions (currently only EGL_KHR_no_config_context) which cannot be supported.
  • GL: Work around driver issue on Intel windows by declaring extra extension in internal shaders
  • GL: Update window size before processing context activation, to fix an issue with incorrect window size on captures of frame 0.

Version v1.25

01 Feb 21:10
v1.25
d47e79a
Compare
Choose a tag to compare

Version v1.25

This release primarily collects a number of bug fixes since v1.24, though it also includes provided support for nvidia's counter SDK (which requires manual installation) as well as a number of vulkan extensions.

As always binary builds with installers, zips and tarballs are available on renderdoc.org.

Python API changes

  • VKBindingElement.ycbcrSwizzle has been renamed to VKBindingElement.samplerSwizzle.

Features/Improvements

  • All: nvidia counters can now be obtained via the performance counter viewer. This requires the manual installation of the nvidia SDK obtained separately.
  • Python: The bindings now report not-equal instead of throwing an exception when comparing between incompatible types.
  • Android: Change listing of Android packages for new Android version that requires different parameters.
  • D3D12: Resource usage depends less on root signatures and more on shader reflection, which should reduce false positives of resources being reported as used on events when they are bound but unused.
  • Vulkan: Display depth resolve textures in texture viewer thumbnails.
  • Vulkan: Add support for several extensions:
    • VK_EXT_rasterization_order_attachment_access
    • VK_EXT_acquire_drm_display
    • VK_EXT_surface_maintenance1
    • VK_EXT_swapchain_maintenance1
    • VK_EXT_border_color_swizzle
    • VK_EXT_non_seamless_cube_map
    • VK_EXT_depth_clamp_zero_one
    • VK_EXT_image_view_min_lod

Bugfixes

  • All: Fix handling of certain texture formats with DDS view and texture saving.
  • All: Fix an out-of-bounds crash in the event browser.
  • All: Add some more early-outs if a fatal graphics error is detected, to avoid crashing by continuing on.
  • All: Fix some rounding issues with mips of non-power-of-two textures where some texels were unselectable.
  • All: Fix the calculation of struct packing on std140 with padding at the end of the struct.
  • All: Sanitise types and variable names to valid identifiers when generating buffer formats.
  • All: Speculative fix for UI crash with texture preview windows being destroyed while a queued display is in flight.
  • All: Fix a potential threading crash if the RenderDoc API is accessed while being used internally to communicate with a connected UI.
  • All: Fix an out-of-date by one problem with histogram display in the texture viewer when using custom display shaders, that could show stale data.
  • D3D: Fix an issue with shader stepping in D3D shaders where stepping over/back over would be off by one instruction.
  • D3D: Fix shader debugging of non-array textures potentially using garbage data for an array slice index.
  • D3D11: Fix corrupted data when uploading non-power-of-two block compressed textures via initial data in CreateTexture2D calls.
  • D3D12: Fix a potential crash when changing between bindless draws with different root signatures.
  • D3D12: Fix a regression that caused direct heap accessed resources to not show up correctly in the pipeline state view.
  • D3D12: Fix potential collisions with existing vertex UAVs when patching UAVs to be pixel shader available, causing failures to debug pixels when vertex UAVs are in use.
  • D3D12: Fix handling of stream PSO creations with missing subobjects not having correct default values.
  • D3D12: Fix crash during capture if sparse textures are used and only some mips are mapped.
  • D3D12: Fix calculation of stride for partial updates of opaque mip tail in sparse textures.
  • D3D12: Handle new type of name mangling in dxil.
  • D3D12: Fix a crash when fetching counters if D3D12 debug layer is enabled.
  • Vulkan: Fix a problem reporting empty descriptors as used with bindless access, leading to some resources not being displayed properly.
  • Vulkan: Fix use of immutable samplers with push descriptors not working properly.
  • Vulkan: Fix a crash if a pipeline layout is used only in a push descriptor command and nowhere else.
  • Vulkan: Fix a crash selecting a draw if BDA nested pointer types are used (pointer to struct containing a pointer).
  • Vulkan: Fix a crash fetching counter data on compute-only queues.
  • Vulkan: Fix a crash when directly selecting CmdEvent2 events in the event browser.
  • Vulkan: Fix crash with descriptor-patching fallback path when not using BDA for internal buffers.
  • Vulkan: Correct Intel driver version decoding so that workarounds aren't applied wrongly.
  • Vulkan: Apply driver workarounds based on driverID when it's available.
  • Vulkan: Fix use of graphics pipeline library with specialisation data for shader reflection applied in a linked pipeline.
  • Vulkan: Fix handling of specialisation constant operations that return bool.
  • Vulkan: In cases that detectably have a feedback loop over attachments in a renderpass, disable discard patterns that could potentially pollute replay.
  • Vulkan: Allow handling for debugging 3D and cubemap depth textures.
  • Vulkan: Fix vulkan disassembly to show DebugValue so that every steppable instruction has a unique disassembly line.
  • Vulkan: Fix handling of structure strides that are more than 64kB in shader struct definitions.
  • Vulkan: Handle inline VkShaderModuleCreateInfo on a pNext chain in compute PSOs as well as graphics PSOs.
  • Vulkan: Fix shader debugging with sampler descriptors that are immutable samplers.
  • Vulkan & GL: Disable sample mask for normal texture overlays.
  • GL: Fix display of wireframe overlay on Android devices when using baseVertex in a drawcall.
  • GL: Allow specialisation of SPIR-V tool command lines based on GL vs Vulkan SPIR-V, and apply this to spirv-cross by default.
  • GL: Allow the use of GL_EXT_shader_framebuffer_fetch on proper desktop GL as well as GLES.

Version v1.24

05 Dec 15:30
v1.24
f3fd33d
Compare
Choose a tag to compare

Version v1.24

This is a hotfix release, containing a fix for a common D3D12 crash that could happen when analysing a capture using bindless resource access. There are no other changes on any API from v1.23.

The crash affected captures using bindless resource access, and would happen if the mesh viewer is open (even in the background) when a texture viewer overlay was enabled. Since the first two conditions are very commonly true and the effect is a crash, I considered this significant enough to do a hotfix release rather than wait for the normal release cycle.

Updated binary builds with installers, zips and tarballs are available on renderdoc.org now.

Version v1.23

29 Nov 19:03
v1.23
Compare
Choose a tag to compare

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 into VKBindingElement.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 or int32_t.
  • All: Add an in-application API function to set a title for an ongoing capture.
  • Linux: Use $HOME as a backup if getpwuid 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.