Skip to content

Version v1.20

Compare
Choose a tag to compare
@baldurk baldurk released this 27 May 16:10
· 1875 commits to v1.x since this release
v1.20
70676a5

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.