Version v1.20
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:
Vulkan and OpenGL buffers which contain some fixed data before a trailing repeating array of structs (AoS) can now both be displayed at once:
Packing rules can be specified to significantly reduce or eliminate the need for manual or automatic 'padding' declarations:
Constant buffers now generate a complete automatic format:
The format specifier now supports binary interpretation, enums, and bitfields, for better display of data:
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.
Python API changes
- The
renderdoc.ReplayStatus
enumeration has renamed torenderdoc.ResultCode
. The enum value names are the same as before. - Any functions that returned a
renderdoc.ReplayStatus
previously now returnrenderdoc.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 memberstatus
of typerenderdoc.ReplayStatus
, it now hasresult
of typerenderdoc.ResultDetails
. Functions that used to return aTuple[ReplayStatus, ...]
now returnTuple[ResultDetails, ...]
. - Some functions used to return a simple
bool
success or failure, now also return arenderdoc.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 therenderdoc.ResultDetails
.qrenderdoc.ExtensionManager.LoadExtension
returns a string with any errors, or an empty string for success, instead of abool
.- 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 intorenderdoc.ShaderVariable.flags
. renderdoc.ShaderConstantDescriptor
has been removed, and its members inlined intorenderdoc.ShaderConstantType
, with the exception of the flag members as aboverenderdoc.ShaderConstantDescriptor.displayAsHex
,renderdoc.ShaderConstantDescriptor.displayAsRGB
,renderdoc.ShaderConstantDescriptor.rowMajorStorage
, which have been combined intorenderdoc.ShaderConstantType.flags
.renderdoc.ShaderConstantDescriptor.type
has been renamed torenderdoc.ShaderConstantType.baseType
.
- Structs now have an explicit
renderdoc.VKPipeline.pipelineLayoutResourceId
has been removed to supportVK_EXT_graphics_pipeline_library
. In its place arerenderdoc.VKPipeline.pipelineComputeLayoutResourceId
,renderdoc.VKPipeline.pipelinePreRastLayoutResourceId
, andrenderdoc.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 aqrenderdoc.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.