Commit Graph

46 Commits

Author SHA1 Message Date
Bartosz Taudul
f6d320ebdc Detect time domains available for calibration. 2020-07-07 21:25:35 +02:00
Bartosz Taudul
dc91affdc5 Allow creating calibrated VK context. 2020-07-07 21:25:35 +02:00
Ben Vanik
5029c12de1
Capture Vulkan timestamps at BOTTOM_OF_PIPE instead of TOP_OF_PIPE
This is so that the GPU will wait for all previous commands to finish (hit bottom of pipe) before taking the enter timestamp and then whatever was recorded within the scope to finish (hit bottom of pipe) before taking the leave timestamp. TOP_OF_PIPE (particularly at the scope exit) was just recording the time of when the recorded work within the VkCtxScope was starting (hit top of the pipe) and not waiting for it to complete.
2020-06-05 15:02:04 -07:00
Bartosz Taudul
54a029356d Explicitly store GPU context type. 2020-05-27 18:16:53 +02:00
Bartosz Taudul
fad7e72fd4 Harden against uninitialized rpmalloc.
Initialize rpmalloc either by explicitly calling InitRPMallocThread(),
or by forcing initialization of thread local variables block.
2020-05-19 13:51:11 +02:00
Bartosz Taudul
35a2baf5ef GPU zones may also be inactive. 2020-01-25 17:44:46 +01:00
Bartosz Taudul
ba61a9ed84 Transfer time deltas, not absolute times.
This change significantly reduces network bandwidth requirements.

Implemented for:
- CPU zones,
- GPU zones,
- locks,
- plots,
- memory events.
2019-10-24 00:06:41 +02:00
Bartosz Taudul
0f68e1e981 Send thread id in GPU zone end message.
We don't care about OpenGL zone thread ids, so the identifier is zeroed.
2019-09-23 16:06:14 +02:00
Bartosz Taudul
daf64c703a Serialize Vulkan GPU profiling messages.
Since Vulkan can be multi-threaded, the guarantee of GPU time data
arriving after CPU time data can't be held with asynchronous messages.
Use serial queue instead.
2019-09-23 15:38:16 +02:00
Bartosz Taudul
a6a3f45810 Fill in thread id during dequeue, not during enqueue. 2019-07-30 01:15:14 +02:00
Bartosz Taudul
89928fde7b Queue must be always able to alloc. 2019-07-29 22:13:16 +02:00
Bartosz Taudul
55c9f41060 Vulkan queue doesn't need to be stored. 2019-07-25 18:54:32 +02:00
Bartosz Taudul
0aa0b4ac8a Try lower query counts in out-of-memory situations. 2019-06-26 16:43:56 +02:00
Bartosz Taudul
659631fc06 Make vulkan query count variable. 2019-06-26 16:42:51 +02:00
Bartosz Taudul
06a41708a7 Move TLS accesses close together. 2019-06-24 19:38:44 +02:00
Bartosz Taudul
3f914834b7 Hide rest of statics. 2019-02-19 19:33:37 +01:00
Bartosz Taudul
2421e05c27 Prevent direct access to s_profiler. 2019-02-19 18:38:08 +01:00
Bartosz Taudul
d865d1cc87 Disallow direct access to s_token. 2019-02-19 18:27:00 +01:00
Bartosz Taudul
c9c4d2845a Provide empty {Gpu,Vk}CtxScope classes if tracy is disabled.
This may be needed if some wrapping is done, abstracting the OpenGL and
Vulkan tracing.
2019-02-18 14:45:09 +01:00
Bartosz Taudul
a95e8a5424 Hide internals behind TracyVkCtx typedef. 2019-01-14 12:40:54 +01:00
Bartosz Taudul
070888f80d Make it possible to have multiple vulkan contexts.
API change!
2019-01-10 17:11:17 +01:00
Bartosz Taudul
ae288c6a6a Move vulkan macros at the end of TracyVulkan.hpp. 2019-01-10 16:41:04 +01:00
Bartosz Taudul
537cee911c Allow forcing call stack capture. 2018-12-13 14:43:37 +01:00
Bartosz Taudul
128577d7bf Remove parenthesis from TracyVkDestroy macro. 2018-08-28 16:45:05 +02:00
Bartosz Taudul
31c2ddb8ac Rename client's SourceLocation to SourceLocationData. 2018-07-28 00:34:04 +02:00
Bartosz Taudul
dbdc530f1c Named GPU zones. 2018-07-26 20:15:39 +02:00
Bartosz Taudul
3737e122cf Of course, this can't work without stupid fuckery. 2018-07-26 19:59:55 +02:00
Bartosz Taudul
1111980f1f Make source location names unique. 2018-07-26 19:22:19 +02:00
Arvid Gerstmann
6b87aecdce Wrap concurrentqueue in tracy namespace 2018-07-13 20:01:27 +02:00
Bartosz Taudul
0cbeea97a2 Support on-demand Vulkan tracing. 2018-07-11 17:03:00 +02:00
Bartosz Taudul
1f7246f6b9 Defer OpenGL/Vulkan context announce. 2018-07-11 15:00:30 +02:00
Bartosz Taudul
e5b133073c Disable all tracing if TRACY_ON_DEMAND is defined. 2018-07-10 20:49:51 +02:00
Bartosz Taudul
62267399bc Send query ids of GPU times. 2018-06-22 16:19:53 +02:00
Bartosz Taudul
69c461cda3 Results MUST be available here. 2018-06-22 16:09:35 +02:00
Bartosz Taudul
51c5f47ae2 Transfer query ids of GPU events. 2018-06-22 15:57:54 +02:00
Bartosz Taudul
55ddb64352 GPU context counter is now 8 bit. 2018-06-22 15:10:23 +02:00
Bartosz Taudul
b213e5f415 Vulkan zone callstack collection. 2018-06-22 01:47:08 +02:00
Bartosz Taudul
a1424c4112 Vulkan tracing is not thread safe. 2018-06-22 01:41:28 +02:00
Bartosz Taudul
7a23f677dd Vulkan and OpenGL must share idx pool. 2018-06-18 01:10:43 +02:00
Bartosz Taudul
53e3eee9ee Delay query until results are available.
This will query for the new values with a bit of lag, but it ignores
issues with broken drivers...
2018-06-17 20:56:46 +02:00
Bartosz Taudul
4767dbad5b Workaround Nvidia bugs.
This solution is still bad, as it really does wait for the query
results, which stalls the CPU.
2018-06-17 20:48:02 +02:00
Bartosz Taudul
684ba455a2 Send GPU zone thread handle. 2018-06-17 18:55:38 +02:00
Bartosz Taudul
6102f17e29 Better way to write zero value. 2018-06-17 18:55:38 +02:00
Bartosz Taudul
cb77e8dc1c There's no notion of main thread in vulkan. 2018-06-17 18:29:12 +02:00
Bartosz Taudul
8495e5b094 Send timestamp period in GPU context announcement. 2018-06-17 18:21:15 +02:00
Bartosz Taudul
9c11e0fc5b Vulkan tracing. 2018-06-17 18:14:37 +02:00