Commit Graph

615 Commits

Author SHA1 Message Date
Bartosz Taudul
0da09bc62b Use pdqsort. 2017-12-08 23:14:55 +01:00
Bartosz Taudul
2c4eaf162d Add pdqsort.
https://github.com/orlp/pdqsort.git
979c0a05f3e78977dc1f5218d13234d7ee89d1e7
2017-12-08 23:02:48 +01:00
Bartosz Taudul
48678b3bd7 Drop bitfield usage. 2017-12-05 22:34:48 +01:00
Bartosz Taudul
5407676f1f Microoptimize thread bit operations. 2017-12-05 22:22:07 +01:00
Bartosz Taudul
52df06d478 Calculate and use thread bit. 2017-12-05 22:09:53 +01:00
Bartosz Taudul
b578554223 Reserve lockmap timeline. 2017-12-05 21:55:00 +01:00
Bartosz Taudul
081087b9ce Drop an indirection level in plots. 2017-12-05 21:24:09 +01:00
Bartosz Taudul
702f235c1b Reserve-and-use functionality in Vector. 2017-12-05 21:23:51 +01:00
Bartosz Taudul
c58f1b09d1 Allow RW access to Vector's data. 2017-12-05 21:23:39 +01:00
Bartosz Taudul
a33e70567b Add GUI for GPU context hiding. 2017-11-30 15:34:52 +01:00
Bartosz Taudul
5246098c79 GPU context hiding plumbing. 2017-11-30 15:31:31 +01:00
Bartosz Taudul
dd8694350e Add zoom-to-range animation. 2017-11-27 22:41:30 +01:00
Bartosz Taudul
ba80b0c16a Use one common function for zooming to range. 2017-11-27 22:12:26 +01:00
Bartosz Taudul
eeca0676df Even simpler lock state combining. 2017-11-26 21:37:57 +01:00
Bartosz Taudul
50795cdf43 Declare buffer at function start. 2017-11-26 17:27:51 +01:00
Bartosz Taudul
b82434d7c3 No need for lambda in sort. 2017-11-26 17:13:24 +01:00
Bartosz Taudul
91758423cd Optimize lock state combining.
There are four possible lock states:
1. Nothing
2. HasLock
3. HasBlockingLock
4. WaitLock

The previous switch was implementing the following state transition:

s\n| 1 | 2 | 3 | 4
---+---+---+---+---
 1 | 1 | 2 | 3 | 4
---+---+---+---+---
 2 | 2 | 2 | 3 | 4
---+---+---+---+---
 3 | 3 | 3 | 3 | 4
---+---+---+---+---
 4 | 4 | 4 | 4 | 4

As can be seen, the switch effectively searches for the highest state
possible. This change implements it as such.
2017-11-26 16:42:50 +01:00
Bartosz Taudul
c044884dd9 Fix signed/unsigned mismatch. 2017-11-26 02:36:38 +01:00
Bartosz Taudul
6bbed5db82 Increase plot min/max value legibility. 2017-11-26 02:32:00 +01:00
Bartosz Taudul
4b548156b1 Proper display of negative time. 2017-11-26 02:24:13 +01:00
Bartosz Taudul
b2b3e7d739 Draw timescale. 2017-11-26 02:18:17 +01:00
Bartosz Taudul
e495cb959e Fix StringRef initialization. 2017-11-26 01:43:08 +01:00
Bartosz Taudul
d40488ccf1 Add more numeric separators. 2017-11-25 15:48:41 +01:00
Bartosz Taudul
cd26a6f8ff Improve text legibility by drawing text shadow. 2017-11-25 15:45:16 +01:00
Bartosz Taudul
2f9a3f7046 Colors are always in RGB order. 2017-11-25 15:33:10 +01:00
Bartosz Taudul
4d99560f7c Add some more numeric separators. 2017-11-25 13:50:41 +01:00
Bartosz Taudul
2e88f30e15 Display number of lock events in tooltip. 2017-11-25 13:48:03 +01:00
Bartosz Taudul
a515bf8878 Perform GPU to CPU resynchronization on each collect event. 2017-11-25 13:33:57 +01:00
Bartosz Taudul
0100266234 Use consistent names. 2017-11-25 13:14:16 +01:00
Bartosz Taudul
f2a19c4593 Use flat_hash_map for source location payload map. 2017-11-24 01:10:12 +01:00
Bartosz Taudul
7a13892754 Split srcloc check and creation. 2017-11-24 01:05:42 +01:00
Bartosz Taudul
184039d500 One check in CheckSourceLocation. 2017-11-24 00:53:04 +01:00
Bartosz Taudul
ccb39ad4bd Just one early exit check in CheckString/CheckThreadString. 2017-11-24 00:45:55 +01:00
Bartosz Taudul
79dec4eafe Display compression ratio and uncompressed data throughput. 2017-11-23 01:23:40 +01:00
Bartosz Taudul
7f74d35955 Workaround MSVC inlining bugs.
The previous code was not inlineable.
2017-11-22 01:54:50 +01:00
Bartosz Taudul
5d7fd5805a Don't hash pointers and such. 2017-11-22 00:23:43 +01:00
Bartosz Taudul
48624f29f7 Optimize searches. 2017-11-21 02:28:46 +01:00
Bartosz Taudul
a7e85c5b76 No need to populate string map when loading dump. 2017-11-21 02:16:58 +01:00
Bartosz Taudul
d5ea8a86a4 Remove GPU context indirection. 2017-11-21 02:10:41 +01:00
Bartosz Taudul
63c070228c Remove indirection in plot storage. 2017-11-21 02:06:17 +01:00
Bartosz Taudul
dca6cf0aa5 Use push_back_non_empty where appropriate. 2017-11-20 02:14:18 +01:00
Bartosz Taudul
7bf6bbbb94 Use back_and_pop in GPU zone processing. 2017-11-20 02:04:45 +01:00
Bartosz Taudul
43ed934204 Force inline file read and write functions. 2017-11-19 22:02:04 +01:00
Bartosz Taudul
59c7cf2bcd Force inline functions that have single path of execution. 2017-11-19 20:01:39 +01:00
Bartosz Taudul
47c23c9066 Force inline NewZone. 2017-11-19 19:39:25 +01:00
Bartosz Taudul
19db1a3f1f Optimize UpdateLockCount. 2017-11-19 19:35:16 +01:00
Bartosz Taudul
c1a79c0622 Force inline checker functions. 2017-11-19 19:23:07 +01:00
Bartosz Taudul
94bd563753 Back-and-pop operation on Vector. 2017-11-19 19:17:54 +01:00
Bartosz Taudul
a4e909a740 Fix braino. 2017-11-19 19:13:43 +01:00
Bartosz Taudul
7a4c6b3d68 Split heavy used functions into check and add parts. 2017-11-19 17:58:56 +01:00
Bartosz Taudul
89448b473e Don't check for nullptr, if already know there isn't one. 2017-11-19 17:28:12 +01:00
Bartosz Taudul
1e6707c609 Add no-nullptr-check push_back to Vector. 2017-11-19 17:27:51 +01:00
Bartosz Taudul
8c30f75b4d Prevent inlining of vector reallocation function. 2017-11-19 17:15:24 +01:00
Bartosz Taudul
ff35f2960a Remove a level of indirection. 2017-11-19 16:27:23 +01:00
Bartosz Taudul
08b8c6ec1b Optimize slab initializing allocation. 2017-11-19 13:53:39 +01:00
Bartosz Taudul
ca5d35e6cd Slab offset can be 32 bit.
This reduces memory system pressure.
2017-11-19 13:38:55 +01:00
Bartosz Taudul
0fe4232015 Optimize string wrappers initialization. 2017-11-19 13:36:03 +01:00
Bartosz Taudul
0770ed8ee6 Optimize ptr walking. 2017-11-19 13:22:08 +01:00
Bartosz Taudul
b3e0d2660d Properly use zone stack when inserting new zones.
CPU zones stack was also moved to thread data struct.
2017-11-19 01:16:21 +01:00
Bartosz Taudul
17fdd2bcbf Zone tooltip cosmetics. 2017-11-18 13:47:05 +01:00
Bartosz Taudul
ac68cde9f3 Render zero nanosecond zones. 2017-11-18 13:40:49 +01:00
Bartosz Taudul
68f8bb906e New context events are not serialized. 2017-11-18 01:49:44 +01:00
Bartosz Taudul
f73e8aaa59 Display thread zone counts. 2017-11-18 01:14:55 +01:00
Bartosz Taudul
429b44ca54 Add separators to GPU zone counts. 2017-11-18 01:14:50 +01:00
Bartosz Taudul
123de74fca Thread thread zone count. 2017-11-18 01:14:16 +01:00
Bartosz Taudul
cc3d18d51d Count GPU zones. 2017-11-18 01:07:28 +01:00
Bartosz Taudul
cd275fee9d Thread information window. 2017-11-18 01:03:40 +01:00
Bartosz Taudul
b6079f8c9a Display number of top-level zones. 2017-11-18 01:03:32 +01:00
Bartosz Taudul
4ba40016ce Display GPU context appearance info. 2017-11-18 00:56:05 +01:00
Bartosz Taudul
82edca301f Tooltip cosmetics. 2017-11-18 00:51:04 +01:00
Bartosz Taudul
18252feeeb Display GPU context information tooltip. 2017-11-18 00:34:16 +01:00
Bartosz Taudul
1a4889116e Store GPU accuracy bits info. 2017-11-18 00:34:16 +01:00
Bartosz Taudul
515443605d memset on non-POD data is UB. 2017-11-16 02:19:52 +01:00
Bartosz Taudul
e579374504 Remove unused variable. 2017-11-16 00:35:04 +01:00
Bartosz Taudul
c4ca6f8205 Proper initialization order. 2017-11-16 00:33:10 +01:00
Bartosz Taudul
abd0676cea Use flat_hash_map. 2017-11-15 23:15:59 +01:00
Bartosz Taudul
0d7ba57fa4 Move flat_hash_map to tracy namespace. 2017-11-15 23:04:07 +01:00
Bartosz Taudul
3bc483bd9e Add flat_hash_map.
https://github.com/skarupke/flat_hash_map.git
2ceada9f7fb5c6d808e33546882fc63662e10e79
2017-11-15 23:02:35 +01:00
Bartosz Taudul
3f5603ad96 Use global lock for processing of incoming events. 2017-11-15 22:33:11 +01:00
Bartosz Taudul
a3ba188af5 Manual initialization of GpuEvents. 2017-11-15 22:21:02 +01:00
Bartosz Taudul
54c5cfce66 No funny links to licenses. 2017-11-15 22:18:45 +01:00
Bartosz Taudul
afa9eec5dd Manual ZoneEvent vector initialization. 2017-11-15 22:13:23 +01:00
Bartosz Taudul
13d8d9255e Use benaphore instead of mutex. 2017-11-15 21:49:41 +01:00
Bartosz Taudul
6cc2ea8d0e Don't need recursive version. 2017-11-15 21:44:55 +01:00
Bartosz Taudul
100b814069 Wrap benaphore in tracy namespace, etc. 2017-11-15 21:42:55 +01:00
Bartosz Taudul
f85facf2af Add Preshing's benaphore implementation.
https://github.com/preshing/cpp11-on-multicore.git
41ac9c73dfa32e2fbc0af6668358092fafdfcae4
2017-11-15 21:40:46 +01:00
Bartosz Taudul
3a60a28a71 Don't allocate unneeded memory. 2017-11-15 21:26:58 +01:00
Bartosz Taudul
1445341068 Don't try to draw GPU zones with no timing data. 2017-11-15 10:56:28 +01:00
Bartosz Taudul
334224dd36 Support transfer of zone name in source location payload. 2017-11-15 10:56:28 +01:00
Bartosz Taudul
7187e1e5f5 Some strings are always indices.
This saves 4 bytes.
2017-11-15 10:56:27 +01:00
Bartosz Taudul
7da59a55cc Don't search for string in map, if it's known there's nothing there. 2017-11-15 10:56:27 +01:00
Bartosz Taudul
8b2af369ad Store zone text in StringRef. Use name from source location. 2017-11-15 10:56:27 +01:00
Bartosz Taudul
c43eb29ce0 Don't send source location pointer in query reply.
Since reply order is the same as the query order, the server already
knows what source location it receives. This observation allows placing
zone name into the source location struct.
2017-11-14 23:06:45 +01:00
Bartosz Taudul
5c872b2137 Simplify GPU context handling. 2017-11-14 00:48:26 +01:00
Bartosz Taudul
d56f44a220 Remove zone block split on color change.
While this makes the collapsed block color variation nonexistent, it
also enables proper optimization of rendering.
2017-11-12 01:53:03 +01:00
Bartosz Taudul
3ef0d1333f Sticky display of GPU related CPU time. 2017-11-12 01:32:21 +01:00
Bartosz Taudul
cff8f9ebd7 GPU zone highlight. 2017-11-12 01:28:07 +01:00
Bartosz Taudul
e40f029b19 GPU info window. 2017-11-12 01:25:44 +01:00
Bartosz Taudul
dcc2b3fb09 Save/load GPU events. 2017-11-12 01:12:28 +01:00
Bartosz Taudul
7db21f23b5 Fix GPU zones triangle color. 2017-11-12 01:05:55 +01:00
Bartosz Taudul
d61e03f879 Show when GPU commands were issued. 2017-11-11 23:13:54 +01:00
Bartosz Taudul
af81d999e9 Draw GPU zones. 2017-11-11 22:56:05 +01:00
Bartosz Taudul
84100bd459 Store proper source location. 2017-11-11 22:48:54 +01:00
Bartosz Taudul
7ebaa46f75 GPU time transfer. 2017-11-11 22:08:47 +01:00
Bartosz Taudul
a0729d3500 Implement single element erase() in TracyVector. 2017-11-11 22:07:23 +01:00
Bartosz Taudul
7e3ddfff1f Store proper cpu time. 2017-11-11 22:07:08 +01:00
Bartosz Taudul
6fcdb924e8 CPU-side GPU event transfer. 2017-11-11 21:09:48 +01:00
Bartosz Taudul
b208df8829 Add pop_back() to TracyVector. 2017-11-11 20:51:03 +01:00
Bartosz Taudul
3c00ce0958 GPU context registration. 2017-11-11 19:44:09 +01:00
Bartosz Taudul
ce35009c63 Move structs out of TracyView. 2017-11-11 19:21:25 +01:00
Bartosz Taudul
8868cad7b1 Fix typo. 2017-11-11 19:01:31 +01:00
Bartosz Taudul
81735aea2f Support for setting zone names in lua. 2017-11-11 17:56:41 +01:00
Bartosz Taudul
59ec40c045 Preemptive transfer of source location payload. 2017-11-11 15:59:30 +01:00
Bartosz Taudul
7f3b8f4647 Preemptive message text delivery. 2017-11-11 15:41:21 +01:00
Bartosz Taudul
76e11174dc Preemptive sending of custom strings. 2017-11-11 15:22:55 +01:00
Bartosz Taudul
35391d08f1 TracyCountBits should be static inline. 2017-11-11 02:46:41 +01:00
Bartosz Taudul
88d4580631 Proper initialization order. 2017-11-11 02:44:51 +01:00
Bartosz Taudul
f1ac7e9d49 Remove unused variable. 2017-11-11 02:42:17 +01:00
Bartosz Taudul
ca4483ecf5 Prevent source location payload duplication. 2017-11-11 02:31:51 +01:00
Bartosz Taudul
24084cbcd2 Standard way of string reference storage in SourceLocation.
StringRef::isptr was changed to isidx, as initialization of empty
SourceLocation zeroes the struct.
2017-11-11 02:02:47 +01:00
Bartosz Taudul
947cd04e5e General solution for string pointer/index problem. 2017-11-11 01:39:34 +01:00
Bartosz Taudul
96ce90c6ed Common storage for plot names. 2017-11-10 19:41:37 +01:00
Bartosz Taudul
5ec3ccd595 Store m_strings in common string storage. 2017-11-10 19:30:17 +01:00
Bartosz Taudul
b28fdc94ce Use common string storage for thread names. 2017-11-10 19:24:12 +01:00
Bartosz Taudul
1baf7faf8f Construct temporary in-place string. 2017-11-10 19:15:00 +01:00
Bartosz Taudul
51459d724c Don't use std::string to pass strings. 2017-11-10 18:39:43 +01:00
Bartosz Taudul
d9bdd56208 String pointer translation map is now named pointerMap. 2017-11-10 18:24:20 +01:00
Bartosz Taudul
8e78e38334 String map is not needed when reading timeline. 2017-11-10 18:22:41 +01:00
Bartosz Taudul
2887753b5d Separate custom string processing from string storage. 2017-11-10 17:45:19 +01:00
Bartosz Taudul
f6af913fd3 Remove ability to disable LZ4 compression. 2017-11-10 17:34:11 +01:00
Bartosz Taudul
44ee282b6e Store custom strings in an addressable vector. 2017-11-10 17:13:30 +01:00
Bartosz Taudul
0aef1b6d4d Proper tooltip for one condensed lock block. 2017-11-07 22:14:54 +01:00
Bartosz Taudul
4821a58720 Fix frame line flicker on big zoom. 2017-11-07 22:11:27 +01:00
Bartosz Taudul
8727910289 Snap lines to pixel grid. 2017-11-07 22:02:27 +01:00
Bartosz Taudul
2ca28b779a Display proper tooltip when only 1 zone is too small to display. 2017-11-07 21:51:21 +01:00
Bartosz Taudul
bb59eafda4 Remove zone block rounding. 2017-11-07 21:48:24 +01:00
Bartosz Taudul
d34a01eb96 Remove lock block rounding. 2017-11-07 21:46:17 +01:00
Bartosz Taudul
e869b6ead9 Proper drawing of lock inaccuracy indicators. 2017-11-07 01:51:30 +01:00
Bartosz Taudul
5d2f2beb53 Increase zoom speed. 2017-11-06 01:04:49 +01:00
Bartosz Taudul
58ef34ce42 Save/load source location payloads. 2017-11-05 21:36:22 +01:00
Bartosz Taudul
c6a7bcb086 Store source location payloads.
No saving yet. No detection of duplicate entries.
2017-11-05 21:24:50 +01:00
Bartosz Taudul
8178b61973 Wrap access to source location function and file. 2017-11-05 21:03:08 +01:00
Bartosz Taudul
3d2450fc10 Store source locations in a proper data structure. 2017-11-05 20:54:49 +01:00
Bartosz Taudul
bc77aa8d26 Source location payload transfer. No storage yet. 2017-11-05 16:46:00 +01:00
Bartosz Taudul
1323596ab2 Use switch instead of if ladder. 2017-11-05 16:14:51 +01:00
Bartosz Taudul
0fb5f012ce Lua profiling framework. No source location transfer yet. 2017-11-05 15:06:28 +01:00
Bartosz Taudul
9524b6447e Pack LockEvent data, saving one byte. 2017-10-29 16:49:22 +01:00
Bartosz Taudul
34123de977 Reduce custom vector size 16 -> 13 bytes. 2017-10-28 23:12:11 +02:00
Bartosz Taudul
1a117b330f Prevent lock event overdraw.
If two lock events would overdraw (and they were), it was very easy for
a non-blocking zone to completely hide a blocking one.
2017-10-28 22:44:41 +02:00
Bartosz Taudul
0edbe38334 Improve locks visibility. 2017-10-28 22:34:52 +02:00