Skip to content

Version v1.13

Choose a tag to compare
@baldurk baldurk released this 29 Mar 16:03
· 2790 commits to v1.x since this release

Version v1.13

This is primarily a maintenance release, fixing a number of bugs. This release also adds support for sparse resources on both Vulkan and D3D12. These features are now reported as supported when queried for and should function correctly. Note that it's expected that sparse uses are primarily used for defragmentation and manual virtual memory management, not for "megatexture" like uses where significant amounts of the texture are unmapped. The cost for capturing will be proportional to the total size of the texture whether mapped or not.

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

Python API changes

  • Primitive topology topology and index byte width indexByteWidth are no longer stored per-drawcall in DrawcallDescription. These now come from the pipeline state consistently, even on GL where these parameters are specified per-draw in the API.
  • Removed callstack member in APIEvent. The callstack is available by looking up the structured chunk via chunkIndex and examining the chunk's metadata.


  • UI: Some tweaks to the dark theme.
  • UI: Don't display empty draws with numInstances = 0 even if they have valid state for an instance.
  • UI: Added a quick bookmark toggle to the context menu in the event browser.
  • Linux: Properly implemented 'hook child processes' such that children do not get hooked when this isn't enabled, and children will always consistently get hooked if it is.
  • D3D12: Display variable rate shading state in pipeline state viewer.
  • D3D12: Add support for nvapi wrapped/hooked PSO creation functions.
  • OpenGL: Add handling for ARB_clip_control when displaying in mesh viewer and texture viewer.
  • Vulkan: Ignore platform-specific external resource extensions when loading captures.
  • Vulkan: Add support for new extensions
    • VK_KHR_zero_initialize_workgroup_memory
    • VK_KHR_workgroup_memory_explicit_layout (not currently supported in shader debugging)
    • VK_KHR_synchronization2


  • All: Add remapping code to allow displaying block-compressed 3D DDS files on linux.
  • UI: Fix an issue where the vulkan layer registration warning wouldn't display properly on high DPI screens.
  • UI: Correctly clamp current event to always be on screen in the timeline bar.
  • UI: Fix calculation of nested buffer offsets in buffer format strings.
  • UI: Fix calculation of byte length in raw buffer viewer when using offsets - length is relative to the offset not the buffer start.
  • UI: Fix display of double data in mesh viewer.
  • D3D: Allow any UUID to be queried from IDXGISwapchain::GetBuffer as long as it's compatible with the D3D11/D3D12 resource interface.
  • D3D: Fix incorrect application of constant buffer alignment rules to structured buffers.
  • D3D: Fix debugging of typed buffer loads with non-32-bit wide elements.
  • D3D: Fix an issue with nvapi extensions on SM5.0 shaders.
  • D3D12: Fix a crash parsing DXIL which contained a self-referential phi node.
  • D3D12: Fix incorrectly generated default cbuffer definition when reflection is stripped from DXIL shader.
  • D3D12: Fix potential device removal when opening very large captures with many command lists.
  • D3D12: Fix a crash calling RSSetShadingRateImage.
  • D3D12: Fix variable shading rate state not being properly applied when selecting a draw.
  • D3D12: Fix reflection in some cases on DXIL causing incorrect buffer strides.
  • D3D12: Handle empty AS/MS shader subobjects in pipeline create.
  • D3D12: Fix a crash when replaying ExecuteIndirect with MaxCommandCount == 0.
  • D3D12: Fix a crash when a root signature specifies multiple UAVs in different space at register 0.
  • Vulkan: Fix serialisation of very small descriptor sets where insufficient space was reserved in the output file.
  • Vulkan: Fix event counting when trailing events in a command buffer existed, that could lead to crashes selecting draws.
  • Vulkan: Fix an issue with incorrect SPIR-V being generated when shader inputs are declared as 16-bit types.
  • Vulkan: Fix VkImageFormatListCreateInfo not being properly respected when mutating formats for MSAA textures.
  • Vulkan: Fix an interaction between the clear-before-X overlays and bindless shader feedback, causing the overlay to break when first selecting draws with arrayed resources.
  • Vulkan: Fix a device lost error on vulkan implementations where some memory types cannot be bound to buffers.
  • Vulkan: Fix a crash when variable descriptor count arrays are used to shrink a descriptor array size.
  • Vulkan: Fix issue with vkBindBufferMemory2 causing memory contents not to be properly recorded.
  • Vulkan: Fix invalid specialisation constants when patching compute pipelines (for bindless feedback or shader editing).
  • Vulkan: Fix a crash reading invalid sampler data when updating descriptor sets with immutable samplers.
  • Vulkan: Fix some cases that could transition resources from UNDEFINED incorrectly.
  • Vulkan: Fix invalid SPIR-V being generated when patching some shaders.
  • Vulkan: Fix an infinite loop when disassembling SPIR-V that contains an empty infinite loop.
  • Vulkan: Fix a crash when using null descriptors from EXT_robustness2 in push descriptors.
  • OpenGL: Fix a crash when structured exporting a capture containing multisampled textures.
  • OpenGL: Properly list stencil-only framebuffer attachments.
  • OpenGL: Fix a crash when programs are linked with no valid shaders.
  • OpenGL: Fix errors on drivers that don't support anisotropy.
  • OpenGL: Fix handling of multisampled renderbuffers not working in histogram & min/max features.
  • Linux: Fix a problem when injected processes would think they are being debugged and terminate on error messages.
  • Linux: Fix missing hooking of glXCreateNewContext.