Commit Graph

1180 Commits

Author SHA1 Message Date
Bartosz Taudul
cf3bf4378b No need to return MemEvent ptr from DrawAddress(). 2018-07-17 23:13:56 +02:00
Bartosz Taudul
18a460e782 Clicking on mem address in alloc list displays info window. 2018-07-17 23:08:10 +02:00
Bartosz Taudul
0889334462 Add memory allocation info window. 2018-07-17 23:03:03 +02:00
Bartosz Taudul
6485a090ed Separate small callstack button setup. 2018-07-17 22:53:38 +02:00
Bartosz Taudul
fc310ce15a Fix check. 2018-07-17 18:29:07 +02:00
Rokas Kupstys
8a8faa3d6c Added __has_include(<execution>) back. 2018-07-17 19:25:26 +03:00
Rokas Kupstys
5c75fe292f Fix msvc builds when required c++ standard version is set to lower than c++17.
Also use latest available c++ standard which allows using older VS versions that only support c++14.
2018-07-17 18:29:48 +03:00
Rokas Kupstys
ab8d2c553a Merged in rokups/tracy/fix-unix-build (pull request #15)
Fix build errors with some compilers due to using std::max(float, double).
2018-07-17 14:21:20 +00:00
Rokas Kupstys
064385fc62 Define ImVec2 math operators only when IMGUI_DEFINE_MATH_OPERATORS is undefined. 2018-07-17 16:37:45 +03:00
Rokas Kupstys
abfa90012f Fix build errors with some compilers due to using std::max(float, double). 2018-07-17 16:36:41 +03:00
Bartosz Taudul
807d2a02bc Display collapsed zones counts with separators. 2018-07-16 01:24:43 +02:00
Bartosz Taudul
acf3bc7d43 Show only contended locks by default. 2018-07-15 20:29:35 +02:00
Bartosz Taudul
c6ea032de3 GPU source location may not yet be available. 2018-07-15 19:00:40 +02:00
Bartosz Taudul
21da3bca63 Don't create lz4buf on stack. 2018-07-14 16:02:33 +02:00
Bartosz Taudul
561d2dc360 Use the fastest mutex available.
The selection is based on the following test results:

MSVC:
=== Lock test, 6 threads ===
=> NonRecursiveBenaphore
     No contention: 11.641 ns/iter
     2 thread contention: 141.559 ns/iter
     3 thread contention: 242.733 ns/iter
     4 thread contention: 409.807 ns/iter
     5 thread contention: 561.544 ns/iter
     6 thread contention: 785.845 ns/iter
=> std::mutex
     No contention: 19.190 ns/iter
     2 thread contention: 39.305 ns/iter
     3 thread contention: 58.999 ns/iter
     4 thread contention: 59.532 ns/iter
     5 thread contention: 103.539 ns/iter
     6 thread contention: 110.314 ns/iter
=> std::shared_timed_mutex
     No contention: 45.487 ns/iter
     2 thread contention: 96.351 ns/iter
     3 thread contention: 142.871 ns/iter
     4 thread contention: 184.999 ns/iter
     5 thread contention: 336.608 ns/iter
     6 thread contention: 542.551 ns/iter
=> std::shared_mutex
     No contention: 10.861 ns/iter
     2 thread contention: 17.495 ns/iter
     3 thread contention: 31.126 ns/iter
     4 thread contention: 40.468 ns/iter
     5 thread contention: 15.677 ns/iter
     6 thread contention: 64.505 ns/iter

Cygwin (clang):
=== Lock test, 6 threads ===
=> NonRecursiveBenaphore
     No contention: 11.536 ns/iter
     2 thread contention: 121.082 ns/iter
     3 thread contention: 396.430 ns/iter
     4 thread contention: 672.555 ns/iter
     5 thread contention: 1327.761 ns/iter
     6 thread contention: 14151.955 ns/iter
=> std::mutex
     No contention: 62.583 ns/iter
     2 thread contention: 3990.464 ns/iter
     3 thread contention: 7161.189 ns/iter
     4 thread contention: 9870.820 ns/iter
     5 thread contention: 12355.178 ns/iter
     6 thread contention: 14694.903 ns/iter
=> std::shared_timed_mutex
     No contention: 91.687 ns/iter
     2 thread contention: 1115.037 ns/iter
     3 thread contention: 4183.792 ns/iter
     4 thread contention: 15283.491 ns/iter
     5 thread contention: 27812.477 ns/iter
     6 thread contention: 35028.140 ns/iter
=> std::shared_mutex
     No contention: 91.764 ns/iter
     2 thread contention: 1051.826 ns/iter
     3 thread contention: 5574.720 ns/iter
     4 thread contention: 15721.416 ns/iter
     5 thread contention: 27721.487 ns/iter
     6 thread contention: 35420.404 ns/iter

Linux (x64):
=== Lock test, 6 threads ===
=> NonRecursiveBenaphore
     No contention: 13.487 ns/iter
     2 thread contention: 210.317 ns/iter
     3 thread contention: 430.855 ns/iter
     4 thread contention: 510.533 ns/iter
     5 thread contention: 1003.609 ns/iter
     6 thread contention: 1787.683 ns/iter
=> std::mutex
     No contention: 12.403 ns/iter
     2 thread contention: 157.122 ns/iter
     3 thread contention: 186.791 ns/iter
     4 thread contention: 265.073 ns/iter
     5 thread contention: 283.778 ns/iter
     6 thread contention: 270.687 ns/iter
=> std::shared_timed_mutex
     No contention: 21.509 ns/iter
     2 thread contention: 150.179 ns/iter
     3 thread contention: 256.574 ns/iter
     4 thread contention: 415.351 ns/iter
     5 thread contention: 611.532 ns/iter
     6 thread contention: 944.695 ns/iter
=> std::shared_mutex
     No contention: 20.805 ns/iter
     2 thread contention: 157.034 ns/iter
     3 thread contention: 244.025 ns/iter
     4 thread contention: 406.269 ns/iter
     5 thread contention: 387.985 ns/iter
     6 thread contention: 468.550 ns/iter

Linux (arm64):
=== Lock test, 6 threads ===
=> NonRecursiveBenaphore
     No contention: 20.891 ns/iter
     2 thread contention: 211.037 ns/iter
     3 thread contention: 409.962 ns/iter
     4 thread contention: 657.441 ns/iter
     5 thread contention: 828.405 ns/iter
     6 thread contention: 1131.827 ns/iter
=> std::mutex
     No contention: 50.884 ns/iter
     2 thread contention: 103.620 ns/iter
     3 thread contention: 332.429 ns/iter
     4 thread contention: 620.802 ns/iter
     5 thread contention: 783.943 ns/iter
     6 thread contention: 834.002 ns/iter
=> std::shared_timed_mutex
     No contention: 64.948 ns/iter
     2 thread contention: 173.191 ns/iter
     3 thread contention: 490.352 ns/iter
     4 thread contention: 660.668 ns/iter
     5 thread contention: 1014.546 ns/iter
     6 thread contention: 1451.553 ns/iter
=> std::shared_mutex
     No contention: 64.521 ns/iter
     2 thread contention: 195.222 ns/iter
     3 thread contention: 490.819 ns/iter
     4 thread contention: 654.786 ns/iter
     5 thread contention: 955.759 ns/iter
     6 thread contention: 1282.544 ns/iter
2018-07-14 00:39:01 +02:00
Bartosz Taudul
a26ab263dd Select/unselect all plot visibility. 2018-07-14 00:10:38 +02:00
Bartosz Taudul
f4f7e58e88 Add select/unselect all threads visibility option. 2018-07-14 00:08:37 +02:00
Arvid Gerstmann
0b1c2ebc8f Define M_PI_2 if not already done 2018-07-13 23:41:12 +02:00
Bartosz Taudul
96042891f7 Reintroduce explicit template type for std::lock_guard.
Requested in issue #4 for support of older MSVC versions.
2018-07-13 12:30:29 +02:00
Bartosz Taudul
90a874f311 Require MSVC 15.7 for <execution> support. 2018-07-13 12:26:02 +02:00
Bartosz Taudul
c8b5b9447d Ignore dangling memory frees in on-demand mode. 2018-07-12 01:35:32 +02:00
Bartosz Taudul
e5064dec1e Store on-demand connection state. 2018-07-12 01:21:04 +02:00
Bartosz Taudul
d1ddaa8d59 Store frame offset in trace dumps. 2018-07-10 22:56:41 +02:00
Bartosz Taudul
fe449f366f Use frame offset for frame count and missed frames display. 2018-07-10 22:51:24 +02:00
Bartosz Taudul
a78981e040 Store on-demand frame offset. 2018-07-10 22:42:00 +02:00
Bartosz Taudul
6a9caabc63 Send on-demand initial payload message. 2018-07-10 22:37:39 +02:00
Bartosz Taudul
c056f3be41 Send keep alive messages to determine if client disconnected. 2018-07-10 21:39:17 +02:00
Bartosz Taudul
a5381337f6 Don't use obsolete function. 2018-07-10 20:49:29 +02:00
Bartosz Taudul
045f792e84 Keep one profiler window size for all captures. 2018-07-10 20:47:09 +02:00
Bartosz Taudul
c7952e4d4f Move "without profiling" to tooltip in zone info window. 2018-06-29 19:02:44 +02:00
Bartosz Taudul
4ae317109d Improve compare menu histogram tooltip. 2018-06-29 18:57:49 +02:00
Bartosz Taudul
b190a15ef6 Display numerical thread id in memory plot tooltip. 2018-06-29 18:54:19 +02:00
Bartosz Taudul
9329c761f6 Improve plot tooltips. 2018-06-29 18:52:28 +02:00
Bartosz Taudul
bcd2fc027d Improve lock tooltips. 2018-06-29 18:49:47 +02:00
Bartosz Taudul
a918d9a401 Improve compressed zones tooltips. 2018-06-29 18:47:33 +02:00
Bartosz Taudul
c8361205da Improve timeline tooltips. 2018-06-29 18:46:05 +02:00
Bartosz Taudul
8228f4131b Improve frame header tooltip. 2018-06-29 18:44:07 +02:00
Bartosz Taudul
c92d8cf7a3 Improve frame list tooltips. 2018-06-29 18:43:23 +02:00
Bartosz Taudul
201a40fb04 Improve readability of callstack tooltips. 2018-06-29 18:41:06 +02:00
Bartosz Taudul
400ee1c752 Improve readability of zone tooltips. 2018-06-29 18:39:20 +02:00
Bartosz Taudul
fbe0ad437e Remove "without profiling" entry from zone tooltip. 2018-06-29 18:36:58 +02:00
Bartosz Taudul
d01c14c2f3 Improve readability of compare menu. 2018-06-29 18:35:40 +02:00
Bartosz Taudul
91dd8f5d52 Improve readability of find zone menu. 2018-06-29 18:33:01 +02:00
Bartosz Taudul
8f4b09edc3 Improve zone info windows readability. 2018-06-29 18:27:34 +02:00
Bartosz Taudul
275a79e1c9 Display custom zone name in find zone results list. 2018-06-29 16:20:24 +02:00
Bartosz Taudul
ab18869ce6 Display custom zone name in zone tooltip. 2018-06-29 16:15:59 +02:00
Bartosz Taudul
09c38f17e6 Display custom zone name in zone info window. 2018-06-29 16:14:31 +02:00
Bartosz Taudul
cb100e261c Return custom zone names. 2018-06-29 16:12:40 +02:00
Bartosz Taudul
053284b1c7 Process custom free-form zone names. 2018-06-29 16:12:17 +02:00
Bartosz Taudul
865e8d8506 Extract zone name getting functionality. 2018-06-29 15:14:20 +02:00
Bartosz Taudul
2866cafda5 Adapt histogram height to font size. 2018-06-29 00:44:05 +02:00
Bartosz Taudul
f82e8aa98f Adapt plot height to font size. 2018-06-29 00:38:56 +02:00
Bartosz Taudul
cc196ff0a8 Adapt frames view to font size. 2018-06-29 00:35:44 +02:00
Bartosz Taudul
41e8648701 Adjust GPU zones to set time drift. 2018-06-28 01:12:25 +02:00
Bartosz Taudul
bab798c13c GPU context time drift storage. 2018-06-28 01:08:08 +02:00
Bartosz Taudul
0b9559c05b Retrieval of GPU context from GPU zone. 2018-06-28 01:07:21 +02:00
Bartosz Taudul
4a467b6d03 Remove GPU resync leftovers. 2018-06-28 00:48:23 +02:00
Bartosz Taudul
c3238a496d No need to check for frame function name match.
Firstly, the match is not necessarily possible (e.g. on Linux the source
location function names and callstack frame names are two completely
different things).

Secondly, the first current zone callstack frame (which is matched to
some callstack frame of previous zone) is the frame in which a zone was
captured, and it will already be present in the zone trace. The
callstack frame omission should be therefore unconditional.
2018-06-24 17:38:32 +02:00
Bartosz Taudul
d7a85983a5 Make callstack hash less shitty. 2018-06-24 17:30:54 +02:00
Bartosz Taudul
ab2945b988 Slab allocator is not thread safe. 2018-06-24 17:10:46 +02:00
Bartosz Taudul
77e139e900 Insert true call stack frames into zone trace. 2018-06-24 16:57:57 +02:00
Bartosz Taudul
b0aa13f4af Callstack getters are const. 2018-06-24 16:15:49 +02:00
Bartosz Taudul
fa62603c77 Move zone trace loop handler to a separate function. 2018-06-24 15:54:36 +02:00
Bartosz Taudul
858628918b Force inline AddCallstackPayload. 2018-06-24 15:28:09 +02:00
Bartosz Taudul
d78126e60f Improve callstack payload hashing speed. 2018-06-24 15:25:53 +02:00
Bartosz Taudul
17194cb591 Allow copying callstack frames name/file to clipboard. 2018-06-22 20:44:57 +02:00
Bartosz Taudul
b8f7a4daac Mention purple line indicating middle of timeline. 2018-06-22 20:34:08 +02:00
Bartosz Taudul
9c2aab733d Allow centering timeline on memory alloc/free time. 2018-06-22 20:32:38 +02:00
Bartosz Taudul
5f5fe7c6aa Add tip about centering timeline on message. 2018-06-22 20:23:56 +02:00
Bartosz Taudul
39eccd5b08 Extract "center view at time" function. 2018-06-22 20:21:02 +02:00
Bartosz Taudul
11cf650be6 Fix GPU queries ordering.
With multithreaded Vulkan rendering it is possible that GPU time queries
will be sent in a different order than the originating CPU queries were
made. This commit changes the in-order queue to a map of queries,
waiting to be resolved.
2018-06-22 16:37:54 +02:00
Bartosz Taudul
af0c64c888 Remove GPU resync support.
The whole concept is not really reliable. And it forces CPU to GPU sync,
which is bad.
2018-06-22 16:34:51 +02:00
Bartosz Taudul
cd5ca3e754 Don't use hash table to store 256 pointers. 2018-06-22 15:14:44 +02:00
Bartosz Taudul
55ddb64352 GPU context counter is now 8 bit. 2018-06-22 15:10:23 +02:00
Bartosz Taudul
d13fc2413f Highlight callstack button in zone info windows. 2018-06-22 02:24:36 +02:00
Bartosz Taudul
3a885bb8fd Support callstack collection for OpenGL GPU zones. 2018-06-22 02:13:35 +02:00
Bartosz Taudul
e5f673eaa0 Allow viewing callstack from gpu zone info window. 2018-06-22 01:58:25 +02:00
Bartosz Taudul
35dc2f796e Process GpuZoneBeginCallstack queue event. 2018-06-22 01:56:32 +02:00
Bartosz Taudul
4992ae6b39 Take callstack field in ZoneEvent into account in save/load. 2018-06-22 01:30:08 +02:00
Bartosz Taudul
e40c5068c9 Allow viewing callstack from zone info window. 2018-06-22 01:21:51 +02:00
Bartosz Taudul
5e01a8ead9 Process callstack queue event. 2018-06-22 01:15:49 +02:00
Bartosz Taudul
205a4e4ca2 Add callstack index to ZoneEvent. 2018-06-22 01:11:03 +02:00
Bartosz Taudul
978e168cbd Handle ZoneBeginCallstack queue event.
This is identical to ZoneBegin handling, but requires some additional
bookkeeping to account for the incoming callstack information.
2018-06-22 01:07:25 +02:00
Bartosz Taudul
3404d191f0 Fix non-unique child ids in memory window. 2018-06-22 00:10:00 +02:00
Bartosz Taudul
3f7ab10323 Don't show line number if it's 0. 2018-06-21 13:26:04 +02:00
Bartosz Taudul
973eab2b4a Fix typo. 2018-06-20 23:42:00 +02:00
Bartosz Taudul
2a618c90d5 Properly save compressed thread in GPU events. 2018-06-20 23:12:49 +02:00
Bartosz Taudul
cef972fe25 Remove parenthesis from callstack location. 2018-06-20 17:07:48 +02:00
Bartosz Taudul
7912807133 Wait for transfer of pending callback frames. 2018-06-20 14:57:48 +02:00
Bartosz Taudul
60395c85e0 Wait for pending callstacks. 2018-06-20 14:54:08 +02:00
Bartosz Taudul
e95ca3930d Make all allocation list alloc/free buttons clickable. 2018-06-20 14:50:07 +02:00
Bartosz Taudul
a9fa8f966b Fix "zone free" indentation in allocation list. 2018-06-20 14:44:24 +02:00
Bartosz Taudul
bc565e65d1 Better callstack info window layout. 2018-06-20 14:41:00 +02:00
Bartosz Taudul
0d509ea3a6 Add missing EndColumns() call. 2018-06-20 14:37:55 +02:00
Bartosz Taudul
be0a70a5c1 Highlight actively inspected callstack. 2018-06-20 13:49:23 +02:00
Bartosz Taudul
15ff98b64a Push detailed callstack to a separate window.
Only show function names (no source files or line numbers) in callstack
tooltip.
2018-06-20 13:23:08 +02:00
Bartosz Taudul
9a5329b97d Save and load callstack frames. 2018-06-20 01:59:25 +02:00
Bartosz Taudul
e56ee377f4 Fix off-by-one. 2018-06-20 01:54:27 +02:00
Bartosz Taudul
88b1955a5a Filename in callstack frame is not a persistent pointer. 2018-06-20 01:26:05 +02:00
Bartosz Taudul
56479b86fa Display frame details in callstack tooltip. 2018-06-20 01:19:10 +02:00
Bartosz Taudul
4000f27e15 Stack frame accessor. 2018-06-20 01:18:59 +02:00
Bartosz Taudul
0c0afa5ac7 Process callstack frames. 2018-06-20 01:07:09 +02:00
Bartosz Taudul
203744cdd9 Callstack frame queries. 2018-06-20 00:25:26 +02:00
Bartosz Taudul
4ba95145da Display raw callstack payload. 2018-06-19 22:19:33 +02:00
Bartosz Taudul
4eea85fdad Callstack payload accessor. 2018-06-19 22:19:20 +02:00
Bartosz Taudul
06f34052a5 Have to track callstacks of both alloc and free. 2018-06-19 22:08:47 +02:00
Bartosz Taudul
0de279005b Load saved callstack payload. 2018-06-19 22:05:15 +02:00
Bartosz Taudul
14b71e988b Properly skip memory event data. 2018-06-19 22:05:15 +02:00
Bartosz Taudul
4033d74479 Callstack payload index 0 is invalid. 2018-06-19 22:05:15 +02:00
Bartosz Taudul
b6e71dd909 Load memory event callstack index. 2018-06-19 21:51:06 +02:00
Bartosz Taudul
7c1333ce2f Save callstack payload. 2018-06-19 21:39:52 +02:00
Bartosz Taudul
2940230fcf Save callstack index in memory events. 2018-06-19 21:39:42 +02:00
Bartosz Taudul
e03493f082 Store callstack index as uint32_t. 2018-06-19 21:39:22 +02:00
Bartosz Taudul
77db91253b Assign callstack idx to memory event. 2018-06-19 21:34:36 +02:00
Bartosz Taudul
c28465aa7c Store unique callstack payloads. 2018-06-19 21:16:02 +02:00
Bartosz Taudul
87467a472c Add variable sized const array. 2018-06-19 21:16:02 +02:00
Bartosz Taudul
cbc9ede3ca No-op callstack payload handling. 2018-06-19 19:31:16 +02:00
Bartosz Taudul
6a63d09a49 Don't check for each type, if range check is possible. 2018-06-19 19:31:16 +02:00
Bartosz Taudul
e51eef3dcd Process memory events with callstack. 2018-06-19 18:52:45 +02:00
Bartosz Taudul
59dc55002b Callstack ptr in server data structures.
Will be probably reduced to 32-bit index later on.
2018-06-19 18:52:10 +02:00
Bartosz Taudul
021dd853b9 Differentiate Vulkan/OpenGL in options menu. 2018-06-18 01:08:56 +02:00
Bartosz Taudul
6e1ab9ae7a Display per-GPU-event threads. 2018-06-17 19:09:56 +02:00
Bartosz Taudul
bb0631585c Store thread id of GPU events. 2018-06-17 19:07:07 +02:00
Bartosz Taudul
cfd7ac3957 Map compressed thread id 0 to real thread id 0. 2018-06-17 19:03:06 +02:00
Bartosz Taudul
d5a4c693d8 Take GPU timestamp period into account. 2018-06-17 18:49:56 +02:00
Bartosz Taudul
f33584516b Fix yet another regression. 2018-06-17 18:37:38 +02:00
Bartosz Taudul
cc973a5091 Differentiate Vulkan and OpenGL contexts. 2018-06-17 18:33:05 +02:00
Bartosz Taudul
dcd6cac078 Save GPU timestamp period.
Bump file version to 0.3.2.
2018-06-17 18:27:42 +02:00
Bartosz Taudul
2be1d1d2b2 Use proper type. 2018-06-07 13:30:46 +02:00
Bartosz Taudul
6956aed769 Fix selecting last bin with log time in find zone. 2018-06-06 23:36:21 +02:00
Bartosz Taudul
b4ce0c281b Total time is also already known in compare view. 2018-06-06 23:17:13 +02:00
Bartosz Taudul
d49be792ba Cache bin containers in compare view. 2018-06-06 23:09:46 +02:00
Bartosz Taudul
da5d35c364 Cache bin containers in find zone. 2018-06-06 23:06:00 +02:00
Bartosz Taudul
2950f3c70c Total time is already known. 2018-06-06 23:00:18 +02:00
Bartosz Taudul
8a4d88f2b3 tmin and tmax don't change. 2018-06-06 23:00:03 +02:00
Bartosz Taudul
be8d3f47cd Use fast log10. 2018-06-06 01:59:31 +02:00
Bartosz Taudul
8696c81e7d Implement fast frexpf. 2018-06-06 01:59:31 +02:00
Bartosz Taudul
60b24249d3 Use explicit value for 1/log2(10). 2018-06-06 01:52:46 +02:00
Bartosz Taudul
39c1b20184 Don't care about previous values. 2018-06-06 01:23:49 +02:00
Bartosz Taudul
1c47e22eca Add log10f approximation.
Based on https://community.arm.com/tools/f/discussions/4292/cmsis-dsp-new-functionality-proposal/22621#22621
2018-06-06 01:23:29 +02:00
Bartosz Taudul
859bf01992 Support displaying self times in statistics view. 2018-06-06 00:47:16 +02:00
Bartosz Taudul
e5d35d443d Missing initializer. 2018-06-06 00:47:11 +02:00
Bartosz Taudul
b7930f67da Calculate total self time of zones. 2018-06-06 00:39:22 +02:00
Bartosz Taudul
785a30a68b Implement going to next/previous frame. 2018-06-02 22:27:35 +02:00
Bartosz Taudul
1cddf8436c ZoomToRange() already enables pause. 2018-06-02 22:09:07 +02:00
Bartosz Taudul
5a7304171d Fix allocation times displayed in plot tooltip. 2018-05-27 20:22:58 +02:00
Bartosz Taudul
8ed59c261b Open memory address info after clicking on mem plot item. 2018-05-27 20:17:20 +02:00
Bartosz Taudul
9898066a7a Display additional memory event info in mem plot tooltips. 2018-05-27 20:11:33 +02:00
Bartosz Taudul
3ea5fd93ed Simple and not so simple draw plot point functions. 2018-05-27 19:51:45 +02:00
Bartosz Taudul
0a79243332 Display thread from which message originated on msg list. 2018-05-25 21:14:15 +02:00
Bartosz Taudul
53aea660c8 Store thread id in MessageData. 2018-05-25 21:10:38 +02:00
Bartosz Taudul
bb0246730f Don't save MessageData padding.
This requires file version bump to 0.3.1.
2018-05-25 21:10:38 +02:00
Bartosz Taudul
8118e41559 Use columns to display message list. 2018-05-25 21:10:38 +02:00
Bartosz Taudul
312c20b0bc Fallback to pdqsort if parallel STL is not available. 2018-05-12 22:41:18 +02:00
Bartosz Taudul
920bfc8c82 Parallelize (big) sorts in worker. 2018-05-08 01:40:22 +02:00
Bartosz Taudul
dbc963d55c Drop template argument from std::lock_guard. 2018-05-08 01:25:16 +02:00
Bartosz Taudul
3768ed5dd7 Don't reconstruct mem plot if there's no mem event data. 2018-05-04 16:08:16 +02:00
Bartosz Taudul
e7ffe288e6 One less FileWrite::Write() call. 2018-05-04 15:11:19 +02:00
Bartosz Taudul
e058bb34c1 CompressThread body must be available. 2018-05-03 18:43:51 +02:00
Bartosz Taudul
a46d27f312 Parallelize file reading.
Use spin-locks for synchronization.

IsEOF() is now buggy, but the bug chance is fairly low (1/65536) - it
can happen when the last compressed block has exactly max decompressed
block size. Don't care about it much, as it's only used to open old
archives.
2018-05-03 17:56:43 +02:00
Bartosz Taudul
3d13ea09e8 Move block decompression to a separate function. 2018-05-03 17:29:58 +02:00
Bartosz Taudul
7d32ef8c8b Restrict mem events list size. 2018-05-02 19:40:35 +02:00
Bartosz Taudul
f2cb04ea8d Allow going back to the previous zone info. 2018-05-02 19:25:52 +02:00
Bartosz Taudul
1cc798cea3 Construct zone info stack. 2018-05-02 19:23:46 +02:00
Bartosz Taudul
e28022f735 Don't display alloc, free threads on two lines. 2018-05-02 19:07:34 +02:00
Bartosz Taudul
f2f712b8db Optional display of each mem event in zone info window. 2018-05-02 19:03:34 +02:00
Bartosz Taudul
dac6a65156 Infer total mem usage change from alloc and free changes. 2018-05-02 18:41:11 +02:00
Bartosz Taudul
14ca2198dd Force inline simple Vector ops. 2018-05-02 18:27:37 +02:00
Bartosz Taudul
bbf1e9f111 Only include memory events from zone thread. 2018-05-02 18:13:13 +02:00
Bartosz Taudul
4584ef9e88 Use memory events to calculate zone memory changes. 2018-05-02 18:06:27 +02:00
Bartosz Taudul
b18841aa75 Store ordered list of memory frees. 2018-05-02 17:59:50 +02:00
Bartosz Taudul
ce1f56ea0f Display zone memory statistics.
Note that this information is incorrect, as it accounts for memory
events in all threads.
2018-05-02 17:46:09 +02:00
Bartosz Taudul
fd59ac0125 Only calculate zone child data if child list is displayed. 2018-05-02 17:23:32 +02:00
Bartosz Taudul
754e79b443 Setup memory plot pointer on dump load. 2018-05-02 17:18:52 +02:00
Bartosz Taudul
1512f3584c Show appropriate message when there's no memory data collected. 2018-05-01 17:28:02 +02:00
Bartosz Taudul
e5934b409a Don't use Vector for memory pages storage.
Vector has POT data size and we know exactly how much is needed.
2018-05-01 17:26:34 +02:00
Bartosz Taudul
7266a979c3 Omit stack. 2018-05-01 02:13:49 +02:00
Bartosz Taudul
5deeb8426f Specialized Read function writing directly to registers. 2018-05-01 02:13:49 +02:00
Bartosz Taudul
8beb1c1a39 Add thread compression cache.
Observation: calls to CompressThread() are likely to be repeated with
the same value. Exploit that by storing last query and its result.
2018-05-01 01:29:25 +02:00
Bartosz Taudul
ec58aa4ce1 Don't increase vector size in each iteration. 2018-04-30 13:57:12 +02:00
Bartosz Taudul
e41ce5523c Allow explicit setting of vector size. 2018-04-30 13:56:58 +02:00
Bartosz Taudul
553e3ca38b Optimize mem plot reconstruction loop. 2018-04-30 13:45:36 +02:00
Bartosz Taudul
76f0c8fafe Sort source location zones on a separate thread. 2018-04-30 03:54:09 +02:00
Bartosz Taudul
63e4f6fa04 Directly store values. 2018-04-30 03:30:19 +02:00
Bartosz Taudul
8d854b1c8f Force inline flat_hash_map find. 2018-04-30 03:09:50 +02:00
Bartosz Taudul
a2d3ad35f0 Force inline common slab allocation paths. 2018-04-30 02:47:16 +02:00
Bartosz Taudul
b598300186 Split FileRead::Skip into small and big part. 2018-04-30 02:31:03 +02:00
Bartosz Taudul
b1a440647d Remove one level of indirection in FileWrite. 2018-04-30 02:29:05 +02:00
Bartosz Taudul
fd46651c32 Remove one level of indirection in FileRead. 2018-04-30 02:26:15 +02:00
Bartosz Taudul
4c521ce92a Loaded traces may be unloaded. 2018-04-30 01:16:08 +02:00
Bartosz Taudul
e5cb241c19 Optimize creation of vector of frees. 2018-04-29 13:40:47 +02:00
Bartosz Taudul
3eb73b8d43 Move memory plot reconstruction to a background thread. 2018-04-29 13:40:04 +02:00
Bartosz Taudul
a8ce01eeb1 Push next no space check variant. 2018-04-29 13:39:06 +02:00
Bartosz Taudul
bc84ebc338 Read/write LockEvent data in one go. 2018-04-29 03:41:58 +02:00
Bartosz Taudul
c5133e0b4e Walk lockmap timeline pointer. 2018-04-29 03:41:58 +02:00
Bartosz Taudul
9769cc4d7d Read/write most of MemEvent in one go. 2018-04-29 03:41:58 +02:00
Bartosz Taudul
d5f0f0939d No need to track min memory usage.
At least if client instrumentation was not broken and the data makes
sense.
2018-04-29 02:57:20 +02:00
Bartosz Taudul
7fdc6f5453 Zero as initial max value is fine too. 2018-04-29 02:56:23 +02:00
Bartosz Taudul
723f98d24b Overflow checks are not needed. 2018-04-29 02:47:25 +02:00
Bartosz Taudul
b06f445de9 Don't use stack to write two values... 2018-04-29 02:32:20 +02:00
Bartosz Taudul
333d3a92c8 Perform memory usage calculation on doubles. 2018-04-29 02:29:06 +02:00
Bartosz Taudul
aceaed25b9 Walk plot data pointer. 2018-04-29 02:11:47 +02:00
Bartosz Taudul
868fbace5a Don't compress thread twice, if it's the same. 2018-04-29 02:04:51 +02:00
Bartosz Taudul
fdaebc2bd8 No need to perform space check here. 2018-04-29 01:38:54 +02:00
Bartosz Taudul
dc1396012e Add assert checking that there's space. 2018-04-29 01:38:35 +02:00
Bartosz Taudul
d64f0390da Don't use std::sort. 2018-04-29 01:23:30 +02:00
Bartosz Taudul
925b6c2617 Display y-range of plots. 2018-04-28 16:44:36 +02:00
Bartosz Taudul
7df7bf1745 Begin memory plot with no memory usage. 2018-04-28 16:26:45 +02:00
Bartosz Taudul
a0b8ed2e50 Restore memory plot when loading data dump. 2018-04-28 16:26:45 +02:00
Bartosz Taudul
afa432a087 Non-user plots must have predefined names. 2018-04-28 16:26:45 +02:00
Bartosz Taudul
d8bfe7de2e Create memory plot based on memory alloc/free events. 2018-04-28 15:49:12 +02:00
Bartosz Taudul
cd34ed6968 Two plot types: user and memory.
Only user plots are saved in a dump file.
2018-04-28 15:48:05 +02:00
Bartosz Taudul
2a427ba87a Fix typo. 2018-04-22 02:24:34 +02:00
Bartosz Taudul
ecabf24c4e Optional normalization of compared data. 2018-04-22 02:19:22 +02:00
Bartosz Taudul
d06890b55d Add missing tree pop. 2018-04-22 01:28:55 +02:00
Bartosz Taudul
1fb47899b2 Fix skipping lock data with new dump version. 2018-04-22 01:26:51 +02:00
Bartosz Taudul
470bfb5c02 Don't load unneeded data. 2018-04-22 01:00:17 +02:00
Bartosz Taudul
41738469f1 Add trace compare window. 2018-04-22 00:52:33 +02:00
Bartosz Taudul
436cd2b6cf Drop '###Profiler' from capture name. 2018-04-21 23:29:28 +02:00
Bartosz Taudul
28380f2d25 Move bad version dialogs to a separate file. 2018-04-21 23:19:48 +02:00
Bartosz Taudul
ea2be1bce9 Fix custom ImVec2 operators. 2018-04-21 23:19:13 +02:00
Bartosz Taudul
1d044b494b Don't enforce main window buttons width. 2018-04-21 22:42:32 +02:00
Bartosz Taudul
880eb7cbdd Don't display zone names in find zone menu zones list. 2018-04-21 22:34:19 +02:00
Bartosz Taudul
2ef9fe0743 Enable log time in find zone menu by default. 2018-04-21 22:21:15 +02:00
Bartosz Taudul
d1e185e176 Cleanup message data. 2018-04-21 20:36:33 +02:00
Bartosz Taudul
4cd9cf5dd9 Cleanup zone data. 2018-04-21 20:34:29 +02:00
Bartosz Taudul
0de5bcacaf Free plot data. 2018-04-21 20:12:16 +02:00
Bartosz Taudul
dda25cf66a Cosmetics. 2018-04-21 20:11:59 +02:00
Bartosz Taudul
adf8a126c6 More space for text on main window buttons. 2018-04-21 19:30:49 +02:00
Bartosz Taudul
a4e1bb05f3 Use proper format strings. 2018-04-21 19:26:55 +02:00
Bartosz Taudul
ade97b7ab6 Add hours to time-to-string conversion. 2018-04-21 17:01:10 +02:00
Bartosz Taudul
ad91b9b002 Expand maximum view span from 1 minute to 1 hour. 2018-04-21 16:53:17 +02:00
Bartosz Taudul
cb298893e7 Fix skipping lock data. 2018-04-21 16:02:36 +02:00
Bartosz Taudul
121cced681 Don't save unneeded lock data.
Store only the minimal lock information required and calculate lock
counts, wait lists, etc. at load time.
2018-04-21 15:42:08 +02:00
Bartosz Taudul
764792d8db Try to not crash when opening invalid files.
Tracy will now perform a number of checks when trying to read a dump
file:
1. The file must have at least 4 bytes of data.
2. There should be a 4 byte header to indicate the file was saved by
   tracy. This is a breaking change in file format.
3. Old header-less files are still supported, but there's a new check
   for data validity. The first 4 bytes of file (as an uint32) must be
   less or equal to max LZ4 data packet size. This requires the first
   two bytes to be 00 00 or 00 01, which should catch most invalid
   files.
2018-04-21 14:53:40 +02:00
Bartosz Taudul
a63f214964 Use static assert where static assert is due. 2018-04-21 14:47:15 +02:00
Bartosz Taudul
36efe96e9d Throw exception when trying to open unsupported dump version. 2018-04-21 14:18:42 +02:00
Bartosz Taudul
3793a37b2b Use small buttons in statistics window. 2018-04-21 14:17:42 +02:00
Bartosz Taudul
d9fd1ce74a Add dump file header. 2018-04-21 13:45:48 +02:00
Bartosz Taudul
6c2d7628ee Don't draw off-screen gpu zones. 2018-04-20 23:28:19 +02:00
Bartosz Taudul
a2779eccaf Don't draw off-screen zones. 2018-04-20 23:19:04 +02:00
Bartosz Taudul
9fc14d2faf Don't draw off-screen plots. 2018-04-20 23:00:26 +02:00
Bartosz Taudul
cd7a1cffe8 Don't draw off-screen locks. 2018-04-20 22:53:31 +02:00
Bartosz Taudul
723fad84a7 Don't draw off-screen zone timeline labels. 2018-04-20 22:45:29 +02:00
Bartosz Taudul
84fd351fba Allow partial load of data from dump. 2018-04-20 16:03:09 +02:00
Bartosz Taudul
cc65e52663 Allow skipping data when reading file. 2018-04-20 14:27:20 +02:00
Bartosz Taudul
6120b3e922 Change -1 comparisons to "0" comparisons. 2018-04-14 16:50:04 +02:00
Bartosz Taudul
d0d5528e99 Disable histogram highlight using right mouse button. 2018-04-14 15:21:22 +02:00
Bartosz Taudul
3df7c70f99 Optimize mem alloc processing. 2018-04-10 16:06:01 +02:00
Bartosz Taudul
be50fb26b5 Remove useless assert. 2018-04-10 14:37:17 +02:00