D3D11_QUERY_DATA_TIMESTAMP_DISJOINT can report Frequency == 0 even when Disjoint == FALSE. Neither the initial CPU/GPU calibration loop nor the per-frame Collect() path guarded against this, so `timestamp * (1000000000 / disjoint.Frequency)` divides by zero and crashes the profiled application with EXCEPTION_INT_DIVIDE_BY_ZERO inside client instrumentation code. Treats a zero frequency the same as an existing guard already does for a disjoint result: skip/retry in calibration, and in Collect() advance the checkpoint and drop the batch via TracyD3D11Panic, matching the existing disjoint-timestamp handling immediately above it.
Tracy Profiler
A real time, nanosecond resolution, remote telemetry, hybrid frame and sampling profiler for games and other applications.
Tracy supports profiling CPU (Direct support is provided for C, C++, Lua, Python and Fortran integration. At the same time, third-party bindings to many other languages exist on the internet, such as Rust, Zig, C#, OCaml, Odin, etc.), GPU (All major graphics/compute APIs: OpenGL, Vulkan, Direct3D 11/12, Metal, OpenCL, CUDA, WebGPU.), memory allocations, locks, context switches, automatically attribute screenshots to captured frames, and much more.
- Documentation for usage and build process instructions
- Releases containing the documentation (
tracy.pdf) and compiled Windows x64 binaries (Tracy-<version>.7z) as assets - Changelog
- Interactive demo
An Introduction to Tracy Profiler in C++ - Marcos Slomp - CppCon 2023
Introduction to Tracy Profiler v0.2
New features in Tracy Profiler v0.3
New features in Tracy Profiler v0.4
New features in Tracy Profiler v0.5
New features in Tracy Profiler v0.6
New features in Tracy Profiler v0.7
New features in Tracy Profiler v0.8



