Skip to content

Releases: baldurk/renderdoc

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.

Version v1.22

23 Sep 15:02
v1.22
387a9e5
Compare
Choose a tag to compare

Version v1.22

This release contains some support for a few new vulkan extensions as well as bug fixes.

As always binary releases are available on renderdoc.org with zip and installer for Windows and binary tarball for linux.

Python API changes

  • The KnownShaderTool has moved from the qrenderdoc module to the renderdoc module.
  • CaptureContext.EditShader takes an additional parameter KnownShaderTool knownTool which indicates the tool that should be preferred for compilation by default, if known.
  • PipeState.IsStripRestartEnabled and PipeState.GetStripRestartIndex have been renamed to IsRestartEnabled and GetRestartIndex and the SupportsRestart helper has been removed, since primitive restart is supported on non-strip topologies on many APIs and will now be reported through it being enabled or not.
  • ShaderDebugState no longer contains a list of sourceVars, this is now available as a per-instruction list in the instInfo which is renamed from lineInfo in the ShaderDebugTrace. Similarly LineColumnInfo has been renamed to InstructionSourceInfo.

Features/Improvements

  • UI: Improved the highlighting of changed variables when stepping/running in the shader debugger.
  • OpenGL: When capture is unsupported on a running program, display the reason why in the connection window as well as in the overlay text.
  • OpenGL: Show bicubic filtering functions in pipeline state viewer.
  • OpenGL: Replay multisampled backbuffers on OpenGL ES.
  • D3D: Display magic quality values better in texture viewer status bar.
  • D3D12: Improve performance for adding patterns into discarded resources.
  • Vulkan: On fastest replay optimisation level don't override renderpass load ops.
  • Vulkan: Optimise contiguous bindings of sparse pages in buffers before passing to the driver.
  • Vulkan: Add support for extensions:
    • VK_EXT_attachment_feedback_loop_layout
    • VK_EXT_primitive_topology_list_restart
    • VK_EXT_primitives_generated_query
    • VK_EXT_depth_clip_control
    • VK_EXT_multisampled_render_to_single_sampled

Bugfixes

  • All: Calculate index buffer size accurately accounting for byte offset.
  • All: Fix the summation of event durations for fake added marker regions.
  • All: Fix a potential crash when opening corrupted captures.
  • UI: When displaying textures as buffers don't add [[row_major]] for non-matrix formats.
  • UI: Fix buffer viewer not properly showing fixed (non-repeating) data over 10kB.
  • UI: Fix buffer viewer export not being limited to the specified range but exporting the whole size of the buffer.
  • D3D: Fix shader debugging with integer texture sampling operations.
  • D3D12: Fix a crash if descriptor indexing accessed an out of bounds descriptor.
  • D3D12: Fix problem identifying bindings in 'arrays' in pipeline state.
  • D3D12: Fix a crash when using resolve attachments in render passes.
  • D3D12: Report AMD's UAVBindSlot feature as supported in AGS.
  • Vulkan: Fix shader source not being visible if no filename was provided.
  • Vulkan: Fix a potential crash when the memory backing BDA buffers is freed without the buffer being destroyed.
  • Vulkan: Fix duplicate vkQueueSubmit2 events being displayed when no command buffers are submitted.
  • Vulkan: Fix a bug with arrayed descriptors of dynamic buffers not counting the number of dynamic offsets correctly.
  • Vulkan: Handle extended dynamic state extensions that were implicitly promoted in 1.3.
  • Vulkan: Fix a crash parsing IDs after longer entry point names.
  • Vulkan: Fix a problem where shader debugging would be wrong if an OpAccessChain only dereferenced a global binding array.
  • Vulkan: Fix a case where shader debugging would display unknown pointers after stepping backwards.
  • Vulkan: Fix a case where resources that are fully overwritten after being referenced in a descriptor set would not properly have their contents replayed.
  • Vulkan: Fix sparse buffers not correctly having contents saved and restored.
  • Vulkan: Fix a bug where promoted extensions wouldn't properly be considered enabled if only a core version were used and zero extensions were enabled.
  • OpenGL: Fix a crash on Intel drivers when capturing GL programs.
  • Android: Work around an Android OS bug causing invalid library loads.

Version v1.21

28 Jul 16:51
v1.21
98a9340
Compare
Choose a tag to compare

Version v1.21

This release is primarily maintenance and bug fixing, as well as some small quality of life improvements.

As always binary releases are available on renderdoc.org with zip and installer for Windows and binary tarball for linux.

Python API changes

  • No breaking changes.

Features/Improvements

  • UI: Highlight the current event in the texture viewer context menu that shows resource usage.
  • UI: Improve handling of source-level shader debugging breakpoints.
  • All: Show status in mesh viewer when geometry data is not available, e.g. when using multiview and geometry/tessellation on vulkan.
  • All: Tweaked the in-program overlay to be more readable and better organised, especially around multiple windows.
  • All: Handle applications that don't create any graphics-compatible queues on Vulkan or D3D12 to still be able to capture and replay correctly.
  • Vulkan: Improve the clarity of error messages for incompatible captures, showing the reason for the incompatibility and what device was captured on and replayed on.
  • Vulkan: Implemented tracking of printf statements from geometry shaders.
  • Vulkan: Allow buffer format re-interpreting of push constants.
  • OpenGL: Display the 'intuitive' state of face culling winding, rather than strictly following enums (e.g. when clip origin is non-default, GL_CCW frontface means that clockwise wound polygons are front-facing).

Bugfixes

  • UI: When exporting events from event browser, fix column alignment of event column.
  • UI: Fix an issue locating cbuffer values in the shader debugger when they are used without cbuffer namespace.
  • UI: Ignore whitespace in variable expressions (e.g. struct_var . member) for showing variable tooltips.
  • UI: Fix incorrect data being shown for pages after the first in large buffers.
  • UI: Fix calculation of mip-map co-ordinates for small mips of NPOT textures.
  • UI: Fix panning in arcball controls in mesh view.
  • Windows: Don't allow enabling global hook if short paths are disabled on a given drive.
  • Vulkan: Don't generate an empty source file when an OpSource is encountered with no source, only a language (and/or filename).
  • Vulkan: Fix shader debugging being wrong when constant offsets are provided to image load or sample operations.
  • Vulkan: Fix editing compute shaders not properly remapping entry point name if it changes.
  • Vulkan: Fix a potential error if a command pool is reset while a command buffer is mid-record, and the command buffer is then subsequently recorded again.
  • Vulkan: Fix an issue incorrectly inheriting state from the wrong libraries when using EXT_graphics_pipeline_library.
  • Vulkan: Fix a problem where dynamic rendering state was applied incorrectly in overlays and fetching geometry output.
  • Vulkan: Fix incorrect shader debugging when using arrays of uniform buffer objects.
  • Vulkan: Fix a problem where all features of EXT_extended_dynamic_state would be used if any of them are enabled/supported.
  • Vulkan: Add workaround for Intel windows issue where occlusion queries would not work when used in the pixel history, leading to missing entries.
  • Vulkan: Fix handling of dynamic rasterizer discard not properly ignoring pipeline state set value.
  • Vulkan: Fix incorrect reading of 64-bit values when fetching vertex output data.
  • Vulkan: Fix shader debugging not handling bitcasts between vector and scalar.
  • Vulkan: Use the correct load/store action for stencil with dynamic rendering.
  • Vulkan: Fix Vulkan crash when viewing NV12 in TextureViewer.
  • Vulkan: Fix reflection of multi-dimensional arrays of matrices.
  • Vulkan: Fix detection of buffer packing rules for tightly-packed float3 arrays, which is not valid std430.
  • Vulkan: Handle state changes on the very first event in a command buffer.
  • Vulkan: Fix a bug when using dynamic rendering within secondary command buffers.
  • Vulkan: Fix some issues with buffer formatting of GPU pointers.
  • OpenGL: Fix a potential problem when loading a GLES capture on windows where the wrong set of extensions would be queried.
  • OpenGL: Ensure depth bounds state does not affect overlay rendering.
  • OpenGL: Fix incorrect handling of GL shader include strings.
  • D3D12: Fix a problem where DENY_SHADER_RESOURCE flag was not removed from all possible ways of creating resources.
  • D3D12: Handle renderpass resolve actions properly.
  • D3D12: Make the error message for fetching counters without enabling the artificial "developer mode" more clear.
  • D3D11: Work around an nvidia driver bug copying from >2GB buffers by treating this case as out-of-memory.
  • D3D11: Use bytes generated rather than primitives generated for DrawAuto implementation.

Version v1.20

27 May 16:10
v1.20
70676a5
Compare
Choose a tag to compare

Version v1.20

In this release the main improvement is a refresh and update to the buffer viewer, particularly in how it handles fixed (SoA) and repeating (AoS) data and improvements to how you specify custom formats of buffer data. In addition there are a number of bugfixes including some crashes using VK_KHR_dynamic_rendering.

As always binary releases are available on renderdoc.org with zip and installer for Windows and binary tarball for linux.

Main Highlights

  • Views of buffers, either storage/raw buffers or constant buffers, have been refactored and improved.

    Fixed variables now display their offsets within the buffer range and (optionally) padding:
    image

    Vulkan and OpenGL buffers which contain some fixed data before a trailing repeating array of structs (AoS) can now both be displayed at once:
    image

    Packing rules can be specified to significantly reduce or eliminate the need for manual or automatic 'padding' declarations:
    image image

    Constant buffers now generate a complete automatic format:
    image

    The format specifier now supports binary interpretation, enums, and bitfields, for better display of data:
    image

    These formats can also be saved and loaded to presets, and these persist globally across all captures. For more information see the documentation on configuring these formats.

  • Most complex error messages (particularly those that reference some error replaying or problem with the API like a fatal error) now contain better explanations of what problem has happened.
    image
    image

Python API changes

  • The renderdoc.ReplayStatus enumeration has renamed to renderdoc.ResultCode. The enum value names are the same as before.
  • Any functions that returned a renderdoc.ReplayStatus previously now return renderdoc.ResultDetails. This contains both the result code and a string with any further information, but it can be directly compared to a result code enumeration for backwards compatibility.
  • Similarly the renderdoc.ExecuteResult no longer has a member status of type renderdoc.ReplayStatus, it now has result of type renderdoc.ResultDetails. Functions that used to return a Tuple[ReplayStatus, ...] now return Tuple[ResultDetails, ...].
  • Some functions used to return a simple bool success or failure, now also return a renderdoc.ResultDetails.
    • renderdoc.ReplayOutput.AddThumbnail
    • renderdoc.ReplayOutput.SetPixelContext
    • renderdoc.ReplayController.SaveTexture
    • renderdoc.CaptureAccess.WriteSection
    • renderdoc.CaptureAccess.InitResolver
    • renderdoc.CaptureFile.CopyFileTo
    • renderdoc.RemoteServer.Ping
    • renderdoc.StartGlobalHook
  • renderdoc.CaptureFile.ErrorString has been removed as it is no longer necessary - any functions with errors will return the error string in the renderdoc.ResultDetails.
  • qrenderdoc.ExtensionManager.LoadExtension returns a string with any errors, or an empty string for success, instead of a bool.
  • Shader variable representation has changed:
    • Structs now have an explicit renderdoc.VarType.Struct type which will be reported for structs whether or not they have any members.
    • Flag members like renderdoc.ShaderVariable.displayAsHex, renderdoc.ShaderVariable.rowMajor, renderdoc.ShaderVariable.isStruct, have been combined into renderdoc.ShaderVariable.flags.
    • renderdoc.ShaderConstantDescriptor has been removed, and its members inlined into renderdoc.ShaderConstantType, with the exception of the flag members as above renderdoc.ShaderConstantDescriptor.displayAsHex, renderdoc.ShaderConstantDescriptor.displayAsRGB, renderdoc.ShaderConstantDescriptor.rowMajorStorage, which have been combined into renderdoc.ShaderConstantType.flags. renderdoc.ShaderConstantDescriptor.type has been renamed to renderdoc.ShaderConstantType.baseType.
  • renderdoc.VKPipeline.pipelineLayoutResourceId has been removed to support VK_EXT_graphics_pipeline_library. In its place are renderdoc.VKPipeline.pipelineComputeLayoutResourceId, renderdoc.VKPipeline.pipelinePreRastLayoutResourceId, and renderdoc.VKPipeline.pipelineFragmentLayoutResourceId. In cases not using the extension these values may be identical.
  • qrenderdoc.PersistantConfig.BufferFormatter_ShowHelp has been removed.
  • qrenderdoc.IConstantBufferPreviewer has been removed. qrenderdoc.CaptureContext.ViewConstantBuffer now returns a qrenderdoc.IBufferViewer.

Features/Improvements

  • UI: Tweak behaviour around closing all captures on shutdown to be more consistent.
  • D3D12: Support the encoded color in obfuscated PIX-style markers.
  • ARM: Update hardware counter library.
  • Vulkan: Add support for some extensions:
    • VK_KHR_pipeline_library
    • VK_EXT_graphics_pipeline_library
    • VK_QCOM_render_pass_store_ops
    • VK_GOOGLE_surfaceless_query

Bugfixes

  • UI: Fix a crash when a corrupted/unusual window layout is loaded.
  • UI: Include resource usage from events in command buffers with no subsequent actions, e.g. a command buffer with only pipeline barriers.
  • UI: Fix variable tooltips for sampler variables in shader debugger.
  • UI: Fix backwards stepping in shader debugging not working consistently around inlined functions.
  • UI: Fix a potential crash in the shader debugger when debug info maps variables to non-existent registers.
  • UI: Fix the display of underlying registers for matrix variables.
  • Windows: Fix a potential crash capturing programs with reduced default thread stack size.
  • Vulkan: Fix a crash when a draw using dynamic rendering needs bindless feedback.
  • Vulkan: Fix an issue where descriptor sets bound before a pipeline could be lost when a discard pattern is filled in between (renderpass or image layout transition discard).
  • Vulkan: Fix a crash when using dynamic rendering and geometry shaders.
  • Vulkan: Fix a crash debugging shaders using arrayed resource binds.
  • Vulkan: Display conservative rasterization state properly in pipeline state viewer.
  • Vulkan: Fix problems with fossilize pipeline export.
  • Vulkan: Fix a potential crash with misaligned copies capturing MSAA images.
  • Vulkan: Fix a crash with vkCmdSetEvent2 that could crash for image & memory barriers.
  • Vulkan: Fix a potential crash selecting an event region with an indirect-count draw inside.
  • Vulkan: Fix a crash when rarely-modified memory is freed mid-capture.
  • Vulkan: Fix an issue using the wrong queue family command buffers for mapped memory GPU readback.
  • D3D: Fix an issue binding small mip tails of sparse images or small buffers.
  • D3D: Fix a crash debugging shaders with debug information that use matrix variables.
  • D3D: Fix a problem using the new custom shader templates where macros wouldn't be defined on D3D.
  • D3D11: Fix a crash using 'verify buffer access' with mapped textures.
  • OpenGL: Fix a use-after-delete when bound textures are deleted, or when a renderbuffer is deleted.
  • OpenGL: Fix a potential crash when applications use unsupported functions.
  • Linux: Fix potential crash with applications that use libEGL.so instead of libGL.so.

Version v1.19

31 Mar 16:46
v1.19
eb1e625
Compare
Choose a tag to compare

Version v1.19

This release has a few new quality of life features as well as a number of bug reports following up from release v1.18.

Binary releases are available on renderdoc.org with zip and installer for Windows and binary tarball for linux.

Main Highlights

  • Custom visualisation shaders have been refactored to be more portable and re-usable between APIs. Existing custom shaders will continue to work without modification, however it's recommended that you consult the documentation and/or new custom shader templates, to see how macros are now used to abstract around different binding models. This means a newly written HLSL custom shader should work both for D3D11/D3D12 as well as HLSL on Vulkan without modification.

  • The location breadcrumbs in the event browser now has an edit button to edit the 'path' as a text string. This can also be copy-pasted like a URL to jump to a known location in a new capture, or share a location with someone else making captures without needing to share a capture containing bookmarks.
    image

    image

    image

  • GL programs that use unsupported functions will now be explicitly disabled from capture. This also applies to unsupported extensions, as it seems to be common among GL programs to not correctly check for which extensions are supported when running.

    This only applies to if these functions are called at all. If they are queried but never called, this restriction will not apply.

    image

Python API changes

  • renderdoc.BecomeRemoteServer now accepts a port parameter, which can be set to 0 to listen on the default port.

Features/Improvements

  • UI: Display KHR_depth_stencil_resolve attachment in vulkan pipeline state viewer.
  • UI: When right clicking on captures in the connection panel show an option to rename the capture.
  • UI: When connecting to an existing instance of a captured program, don't display captures which have been deleted since they were made.
  • All: The shader debugger now allows displaying watch variables with a colour swatch showing the colour for floating point values. Watch variables may now refer to structs and other complex types, and when some struct members are not available at the current step they will show the previous known values.
  • All: On remote host replay, only fetch multisampled texture samples lazily when needed to display. Thumbnails display only sample 0 instead of all samples resolved.
  • All: Remote host servers can now specify a custom port to listen on, which is specified in the UI with hostname:12345, which allows multiple independent replays on a single host.
  • D3D12: Added support for SM6.6 direct heap access display in the pipeline state view. Since minimal debug information exists for these accesses, only raw heap indices are shown for the resources.
  • Windows: When LaunchReplayUI is called from the in-application API, the UI process will no longer inherit handles from the captured process.
  • Windows: Use _NT_SYMBOL_PATH where available as search path for callstacks.
  • Linux: Fatal errors during startup such as e.g. running under wayland are printed to stderr.
  • Vulkan: In shader printf statements show the view index as part of the location.
  • Vulkan: Add support for VK_KHR_fragment_shading_rate, VK_QCOM_render_pass_shader_resolve and VK_QCOM_fragment_density_map_offset.
  • Vulkan: Implement support for separate shader debug blobs from magic value tags.
  • Vulkan: Add support for multiple presents at once in one call to vkQueuePresentKHR
  • Vulkan: Optimised readback of MSAA textures on some mobile GPUs.

Bugfixes

  • All: Fix an issue where the pixel context view would be incorrect when using custom display shaders.
  • All: Fix issues with pipeline-based disassembly information not updating when shaders are edited.
  • All: Fix a case where fatal errors like device lost or out of memory would not be properly reported when first loading a capture.
  • All: Fix a potential crash on device lost if it happened in early initialisation.
  • UI: Fix some issues with scrollbars being inconsistent with zoom and pan in texture viewer.
  • UI: Don't reset focus when changing values in the compute debug thread selector.
  • UI: Fix multiple shader debug search paths being lost when closing the UI.
  • UI: Fix a crash in the UI when Qt accessibility features are enabled.
  • UI: Fix an out-of-order error that caused the texture viewer histogram to lag behind until refreshed when using custom shaders.
  • Vulkan: Fix fatal error detection and handling.
  • Vulkan: Treat failed memory maps as fatal errors.
  • Vulkan: Fix an object leak when displaying textures with custom display shaders.
  • Vulkan: Demote reported driver version for 1.3 vulkan drivers that don't support bufferDeviceAddressCaptureReplay.
  • Vulkan: Fix core version check on physical devices, which could potentially cause a crash on 1.3 drivers when application doesn't use 1.3.
  • Vulkan: Fix handling of non-32bit types in shader debugging and data display. In particular this affected half types.
  • Vulkan: Fix a potential driver/GPU timeout applying discard patterns to very large textures.
  • Vulkan: Fix a number of validation issues identified.
  • Vulkan: Fix VkCommandBufferInheritanceRenderingInfo::flags being incorrectly serialised.
  • Vulkan: Handle KHR_dynamic_rendering inheritance into secondary command buffers.
  • Vulkan: Fix dynamic vertex inputs from VK_EXT_vertex_input_dynamic_state not being propagated properly.
  • Vulkan: Fix a crash when using VK_KHR_dynamic_rendering_info with DONT_CARE load ops.
  • D3D: Fix debugging of shaders with multiple switch statements
  • D3D: Fix recursion check when hooking creation functions to be thread-local instead of global. Caused multithreaded D3D device creation to sometimes fail to hook properly.
  • D3D11: When no sampler object is bound to a used sampler state, show correct default values in pipeline state.
  • D3D12: Fix debugging shaders where the root signature denies access to pixel shaders.
  • D3D12: Disable dxil.dll validator entirely as it crashes on valid code (previously it was only on for debug-only builds).
  • D3D12: Fix handling of empty structs in DXIL editing.
  • D3D12: Fix a race condition with threads evicting resources while RenderDoc is working on them.
  • D3D12: Handle unspec'd difference in behaviour from mesa's DXIL emitter.
  • D3D12: Fix large sampler heaps corrupting the filter parameter in the 'resource initialisation parameters' view.
  • GL: Fix handling of extension function hooks in EGL.
  • GL: Add hooked implementation of wglMakeContextCurrentARB
  • GL: When bound objects like buffers or VAOs are deleted, don't leave dangling pointers.

Version v1.18

25 Jan 15:16
v1.18
3996d03
Compare
Choose a tag to compare

Version v1.18

This release only has a small number of changes, and primarily adds support for the just-released Vulkan 1.3 including full support for everything in the Roadmap 2022 profile.

Please note: Upon installing a Vulkan 1.3 driver and creating a 1.3 Vulkan instance older versions of RenderDoc will be disabled automatically by the Vulkan loader, to prevent incompatibility problems. This release or newer will be required to debug Vulkan 1.3 applications, applications initialising Vulkan 1.2 or older can still be debugged by older versions of RenderDoc.

Binary releases are available on renderdoc.org with zip and installer for Windows and binary tarball for linux.

Main Highlights

  • Full support for Vulkan 1.3 as well as the Roadmap 2022 profile including the new VK_KHR_global_priority promoted extension.

  • The primary font used in the UI can now be customised, as well as the secondary monospaced font.

    RenderDoc with the font customised to Comic Sans MS

Python API changes

  • No backwards-incompatible API changes.

Features/Improvements

  • UI: When multiple capture connections are open and the program is closed, clicking 'No to all' will ask the user if they want to close all capture connections and discard all captures.
  • API: The in-application API now has a new function ShowReplayUI which acts similarly to LaunchReplayUI but instead it will try to re-use an existing UI provided an active connection is currently open between an instance of the UI and the application. Together with IsTargetControlConnected this can be used for repeated captures to open the UI if needed, but not open multiple copies.
  • Vulkan: Allow introspection of DONT_CARE storing renderpasses even on fastest replay mode.
  • Vulkan: Allow debugging SPIR-V 1.6 modules.
  • Vulkan: Add support for some extensions:
    • VK_EXT_4444_formats
    • VK_EXT_texture_compression_astc_hdr
    • VK_KHR_global_priority

Bugfixes

  • All: Don't treat out-of-memory as a fatal error in the specific case when we're fetching mesh output data, as this is deliberately handled gracefully.
  • All: When replaying remotely such as on an android device, fix shader editing not properly updating shader reflection.
  • Vulkan: Fix an issue with automatic layout transitions in renderpasses not properly specifying IGNORED queue families.
  • Vulkan: Fix problems with separate load and store ops for depth and stencil aspects.
  • Vulkan: Fixed handling of stencil-only textures.
  • Vulkan: Fix a case where replay would fail if the application specified VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT and the compile was skipped at capture time due to a duplicate PSO.
  • Vulkan: Fix a crash handling unused attachments with VK_KHR_dynamic_rendering.
  • Vulkan: Fix tracking of event IDs in debug messages to more closely match up to the event with out-of-order command buffer recording.
  • Vulkan: Fix calculation of memory alignment requirements for externally imported memory.
  • Vulkan: Fix a crash debugging SPIR-V 1.3+ shaders when KHR_buffer_device_address is available.
  • Vulkan: Fix a crash if descriptors are copied from and then deleted mid-capture.
  • Vulkan: Fix a crash on subsequent captures after the first if a KHR_buffer_device_address buffer is bound to memory.
  • Vulkan: Fix a hang if replaying KHR_synchronization2 queue submissions with semaphore waits.
  • Vulkan: Fix a crash querying for KHR_buffer_device_address buffer addresses before memory binds when using vkBindBufferMemory2.
  • Vulkan: Protect against write-after-write hazards when applying initial states to overlapping resources.
  • Vulkan: Fix shader messages not being propagated when replaying remotely, such as on an android device.
  • D3D: Fix packing when UAV buffers don't require 16-byte alignment of structs.
  • D3D: Allow passing a NULL device handle into IDXGIOutput::FindClosestMatchingMode.
  • D3D12: Query the driver for supported shader model and then further clamp, rather than clamping only ourselves and potentially reporting higher support than the driver has.
  • D3D12: Fix a crash patching very simple/small DXIL shaders.
  • OpenGL: Fix handling of glBindProgramPipeline with a pipeline of 0, which could cause application-visible errors in glGetError.
  • OpenGL: Fix a memory leak exporting structured data.

Version v1.17

26 Nov 17:38
v1.17
22d4dc4
Compare
Choose a tag to compare

Version v1.17

This is RenderDoc's last release of the year and focusses mostly on some quality of life improvements and expanded Vulkan extension support.

Binary releases are available on renderdoc.org with zip and installer for Windows and binary tarball for linux.

Main Highlights

  • Support for the new Vulkan extension VK_KHR_dynamic_rendering which allows dynamic renderpasses to be recorded at command record time across command buffers without needing to create renderpass or framebuffer objects up-front.

  • The resource inspector has some sorting options now - you can sort by alphabetical (the previous default), creation order (in terms of their original creation in the application), or by recently viewed. When sorted by recently viewed, the resources at the top are the most recently viewed in the resource inspector itself and will be resorted as resources are viewed.

    image

    image

    image

  • Compute shader debugging can now be launched either by split workgroup & thread ID, or by global thread ID.

    image

  • The mesh viewer now allows you to select the axis convention of input vertex data for e.g. Z-up instead of Y-up or left/right-handed.

    image

    image

Python API changes

  • ReplayController.GetCBufferVariableContents now takes a ShaderStage parameter after the pipeline and shader, to allow disambiguation on APIs like vulkan where a single shader object can have multiple shader stages with the same entry point name.
  • D3D12RootSignatureRange.rootElement has been renamed to D3D12RootSignatureRange.rootSignatureIndex to make it more clear that this refers to the original element and to distinguish from the split-by-range elements in the pipeline state.

Features/Improvements

  • UI: The performance counter viewer now displays only visible events when synced with the event browser, respecting the current filter.
  • UI: Custom visualisation shaders can now access the selected min/max range.
  • UI: Add functionality to reset an edited shader to original. Also it's easier to explicitly toggle between edited and original version being active without removing code changes.
  • All: Handle B8G8R8A8_UNORM legacy non-DXGI format case when loading DDS files.
  • OpenGL: Allow readback of 2D array and 3D textures for initial contents of textures from previous frames.
  • OpenGL: Add support for 3D ASTC compressed textures.
  • Vulkan: Add an option to export the current vulkan pipeline state & dependencies to a fossilize database. This is likely primarily useful for driver developers extracting out a pipeline, but could also be useful for minimising and sharing repro cases.
  • Vulkan: Remove VK_KHR_win32_keyed_mutex extension with other external memory extensions on replay as it's not required and may improve capture portability.
  • Vulkan: Support bool parameters in shader debug printf.
  • Vulkan: On oculus allow loading the bundled validation layers in the OS.
  • Vulkan: Don't list source debugging as available unless source debug information is present.
  • Vulkan: Add support for a number of new extensions:
    • VK_KHR_dynamic_rendering
    • VK_KHR_format_feature_flags2
    • VK_KHR_maintenance4
    • VK_KHR_present_id
    • VK_KHR_present_wait
    • VK_KHR_shader_integer_dot_product
    • VK_KHR_shader_subgroup_uniform_control_flow
    • VK_EXT_color_write_enable
    • VK_EXT_extended_dynamic_state2
    • VK_EXT_fragment_density_map2
    • VK_EXT_global_priority_query
    • VK_EXT_load_store_op_none
    • VK_EXT_rgba10x6_formats
    • VK_EXT_shader_atomic_float2
    • VK_EXT_vertex_input_dynamic_state
    • VK_EXT_ycbcr_2plane_444_formats

Bugfixes

  • UI: Fix texture viewer scrollbars not properly updating when zoom level changes.
  • UI: Fix potentially misleading root signature index listed in D3D12 pipeline state view.
  • UI: Fix internal formatting tags being exported or put on the clipboard from the event browser.
  • UI: Fix pipeline state viewer HTML export crashes.
  • UI: Internal/hidden properties in resource inspector creation calls are no longer displayed.
  • UI: Fix mesh picking for unusual or reverse-depth perspective projection.
  • UI: Prevent shader messages from previously opened captures showing up in later unrelated captures.
  • Linux: Fix a potential crash/hang when invoking shader editing tools.
  • Vulkan: Fix assignment of 64-bit array/matrix input values to locations.
  • Vulkan: Use shader stage to disambiguate entry points with the same entry point name in a SPIR-V module.
  • Vulkan: Fix texel read/write to respect format conversion when debugging shaders
  • Vulkan: Improve event browser summary of vkCreateRenderPass2.
  • Vulkan: Fix a crash writing to an offset within inline UBOs.
  • Vulkan: Fix a crash when using SUBSAMPLED images with the fragment density map extension.
  • Vulkan: Fix behaviour around skipping invalid padding descriptors when using overflowing descriptor update behaviour.
  • Vulkan & GL: single basic element buffers without a surrounding struct are handled correctly. In particular this is relevant for matrices that may require per-row/column padding.
  • Vulkan: Fix heavy memory use when specialisation constant IDs are very high.
  • Vulkan: Fix a potential crash patching SPIR-V modules with multiple pixel shader entry points.
  • Vulkan: Fix invalid SPIR-V being generated for vertex shaders that use subgroup operations.
  • GL: Add workaround to qualcomm driver bug reading cubemap faces as corrupt data.
  • GL: Fix a crash when fetching counter values over multidraw GL draws.
  • GL: Try to fetch necessary data for capture when multiple threads are emitting GL commands. Note that generally this is not supported or recommended.
  • GL: Fix texture type recorded for texture views of glCreate'd textures that are never bound directly.
  • GL: Correctly serialise query-to-buffer copies that happen via glGet functions.
  • GL: Add missing alias handling of EXT_map_buffer_range functions.
  • D3D11: Remove some resource MISC flags from shared resources that cause problems on replay.
  • D3D11: Snapshot contents of shared resources that are imported mid-frame.
  • D3D11: Fix pipeline state statistics counters.
  • D3D12: Fix a crash when ExecuteIndirect is called on a compute only command buffer.
  • D3D12: Fix quad overdraw not working when a drawcall's vertex shader outputs don't write to position as the first element.
  • D3D12: Fix a case where DXIL fails to patch correctly.
  • D3D12: Fix a bug where placed resources with freed heaps would cause crashes.
  • D3D12: Fix a crash fetching timestamps for events on copy queues.