Commit Graph

746 Commits

Author SHA1 Message Date
Bartosz Taudul
64f3c55ba5 Display zone group time. 2018-03-20 16:56:11 +01:00
Bartosz Taudul
e6d5f3f5fc Store common variables in registers to prevent aliasing. 2018-03-20 16:49:29 +01:00
Bartosz Taudul
d8f7903a97 Use flat hash map for ptr mapping during data load. 2018-03-20 15:44:13 +01:00
Bartosz Taudul
720e5a0468 First check if valid, then search in map. 2018-03-20 15:41:06 +01:00
Bartosz Taudul
fe6c753f12 Store lock thread map in flat hash map. 2018-03-20 15:40:25 +01:00
Bartosz Taudul
765a1ececf Move nohash<> from TracyWorker to flat hash map. 2018-03-20 15:40:11 +01:00
Bartosz Taudul
37808ec4c7 Fix the horribly inefficient Visible() and ShowFull() methods. 2018-03-20 15:33:38 +01:00
Bartosz Taudul
ceeae3c2cf Restore ordering of source location zones after load. 2018-03-20 14:56:42 +01:00
Bartosz Taudul
ad37f0857b Highlight selected zone group on histogram. 2018-03-20 14:37:58 +01:00
Bartosz Taudul
64e05e4726 Put found zones list into a subchild. 2018-03-20 12:56:26 +01:00
Bartosz Taudul
ce3f0bd596 Add separator to zone tooltips. 2018-03-19 16:14:01 +01:00
Bartosz Taudul
d5e0858982 Display thread in GPU zone tooltip. 2018-03-19 16:13:12 +01:00
Bartosz Taudul
4d34ccc30c Unify zone info window thread retrieval. 2018-03-19 16:11:44 +01:00
Bartosz Taudul
0f6ec65b65 GPU zone thread getter. 2018-03-19 16:11:37 +01:00
Bartosz Taudul
5a32cd7984 Show zone thread in zone info popup. 2018-03-19 16:08:50 +01:00
Bartosz Taudul
0d831e452b Add ability to group zones by user text. 2018-03-19 16:01:36 +01:00
Bartosz Taudul
05eb4b7ebc Don't use memcpy to terminate string. 2018-03-19 15:41:28 +01:00
Bartosz Taudul
1fbe1621e7 Display zone exclusive time as progress bar. 2018-03-19 02:30:40 +01:00
Bartosz Taudul
3b34ebf544 Unify GPU info window child selection with the rest of lists. 2018-03-19 02:25:24 +01:00
Bartosz Taudul
efe3eda845 Display thread in zone info windows. 2018-03-19 02:22:08 +01:00
Bartosz Taudul
2eece7c1f3 Reorder instructions. 2018-03-18 23:46:34 +01:00
Bartosz Taudul
ce2bf7c207 Use Vector instead of std::vector for thread zone list. 2018-03-18 21:15:31 +01:00
Bartosz Taudul
8dabe47602 Stop processing new zones on invalid time span.
When processing will resume in the next frame, the zone will hopefully
have a proper end time.
2018-03-18 21:06:26 +01:00
Bartosz Taudul
8b3e53bfad Don't ignore first thread. 2018-03-18 20:53:31 +01:00
Bartosz Taudul
d0519499f4 Store thread id next to zone ptr in source location zone list. 2018-03-18 20:45:49 +01:00
Bartosz Taudul
777d672e05 Thread id compression/decompression. 2018-03-18 20:45:22 +01:00
Bartosz Taudul
40c6f01a41 Perform search after condition was verified, not before. 2018-03-18 20:25:00 +01:00
Bartosz Taudul
3ac98beb5a Use precalculated min/max time spans. 2018-03-18 20:20:24 +01:00
Bartosz Taudul
0f1f7c6813 Calculate min/max time spans for source locations. 2018-03-18 20:15:45 +01:00
Bartosz Taudul
43c3fe25ba Put source location zone data into a struct. 2018-03-18 20:08:57 +01:00
Bartosz Taudul
f5b0f34827 Using std::vector instead of Vector is no longer possible. 2018-03-18 19:56:53 +01:00
Bartosz Taudul
77fa8f54a6 Restore per-thread zone list functionality. 2018-03-18 16:41:58 +01:00
Bartosz Taudul
d08c10c5b6 Add functionality for getting zone thread. 2018-03-18 16:38:42 +01:00
Bartosz Taudul
616269e849 Display zone counts in matched source locations. 2018-03-18 16:11:08 +01:00
Bartosz Taudul
af3559afed Only display results for a single source location match. 2018-03-18 16:07:07 +01:00
Bartosz Taudul
7a4e7cbf86 Reduce data collection if TRACY_NO_STATISTICS is defined.
Statistical data collection is only useful if it's meant to be used.
Otherwise it only incurs CPU and memory cost.
2018-03-18 12:55:54 +01:00
Bartosz Taudul
4baea4a74f Don't hash source location zones keys. 2018-03-18 03:25:14 +01:00
Bartosz Taudul
67774698af Only use direct zone end time for find zone data.
This prevents temporary timing artifacts from affecting histogram graph.
Previously the graph would flicker, because some shorter than usual
timing data was reported and the graph tried to compensate for a single
frame when such data was present.
2018-03-18 02:53:41 +01:00
Bartosz Taudul
e6b3f373c5 Add direct zone end getter. 2018-03-18 02:53:00 +01:00
Bartosz Taudul
746df21ad9 Live updates of find zone data.
TODO: found zones list. Currently only histogram view is available.
2018-03-18 02:43:17 +01:00
Bartosz Taudul
c807b3f7ef Getter for source location zones. 2018-03-18 02:35:39 +01:00
Bartosz Taudul
9830fa297e Store per-source-location zone lists. 2018-03-18 02:05:33 +01:00
Bartosz Taudul
c5c81a73bc Skip initialization of StringIdx.
That memory will be loaded from file.
2018-03-17 14:43:02 +01:00
Bartosz Taudul
a4d46219df File read buffer doesn't need to be preserved. 2018-03-17 14:22:36 +01:00
Bartosz Taudul
41d8ca0814 Split read/write functions into small and big variants. 2018-03-17 13:57:32 +01:00
Bartosz Taudul
79418d0c57 Move locks, zones, etc in options menu out of view. 2018-03-15 23:33:05 +01:00
Bartosz Taudul
81ff554c7d Don't call ReadTimeline() when there's nothing to read. 2018-03-15 22:54:10 +01:00
Bartosz Taudul
9dfa9c95cb Read and write whole ZoneEvent/GpuEvent data at once. 2018-03-15 21:59:16 +01:00
Bartosz Taudul
e5796af196 More efficient vector filling. 2018-03-15 21:42:00 +01:00
Bartosz Taudul
c510c9705b No need to check for reserved space. 2018-03-15 21:32:06 +01:00
Bartosz Taudul
b7ba64a223 Microoptimize ReadTimeline(). 2018-03-15 21:27:36 +01:00
Bartosz Szreder
124170b804 Fix compile warnings. 2018-03-14 00:30:57 +01:00
Bartosz Taudul
a14ff62e64 Decrease minimum spacing between tick labels on linear histogram. 2018-03-05 20:33:04 +01:00
Bartosz Taudul
f361d7484d Put selection information next to each other. 2018-03-05 20:30:21 +01:00
Bartosz Taudul
f39d4c415d Count time spent in histogram selection. 2018-03-05 20:23:58 +01:00
Bartosz Taudul
e9e3e46ea2 Display time instead of counts in cumulate time mode. 2018-03-05 20:19:05 +01:00
Bartosz Taudul
f733758652 Time accumulation histogram mode. 2018-03-05 20:15:18 +01:00
Bartosz Taudul
4005f22ecf Clear selection only on right mouse click. Add tooltip. 2018-03-05 20:05:20 +01:00
Bartosz Taudul
3e931432cf Don't calculate logarithms more than once. 2018-03-05 13:20:24 +01:00
Bartosz Taudul
68f652c40f Put total time and max counts on the same line. 2018-03-04 23:25:33 +01:00
Bartosz Taudul
3a8c976285 Clear histogram range selection by right mouse click. 2018-03-04 23:20:35 +01:00
Bartosz Taudul
f510d8d2e7 Update item counts in thread list. 2018-03-04 23:17:36 +01:00
Bartosz Taudul
3dd14c9e01 Filter found zones according to selection. 2018-03-04 23:07:38 +01:00
Bartosz Taudul
f42d8cee38 Selection of time range on histogram. 2018-03-04 22:52:36 +01:00
Bartosz Taudul
dee7fd27be Move mouse highlight data to a separate struct. 2018-03-04 22:21:35 +01:00
Bartosz Taudul
f7829a7eae Store matches in a map. 2018-03-04 22:11:50 +01:00
Bartosz Taudul
754279d6f1 Allow narrowing down search results by source location. 2018-03-04 21:17:38 +01:00
Bartosz Taudul
2c508c1f79 Display list of matched source locations in search window. 2018-03-04 21:10:10 +01:00
Bartosz Taudul
5c1aec723d Fix thread name clashes in ImGui. 2018-03-04 18:52:32 +01:00
Bartosz Taudul
fa46445537 Add label to separate found zones from rest of find dialog. 2018-03-04 18:44:33 +01:00
Bartosz Taudul
a34bb97d78 Unify zone children and find zone list behavior. 2018-03-04 18:42:18 +01:00
Bartosz Taudul
f44e9bbd7b Make zone info child list "selectable". 2018-03-04 18:40:32 +01:00
Bartosz Taudul
a7e7f59f96 Zoom-to-zone on middle click on found item. 2018-03-04 18:35:40 +01:00
Bartosz Taudul
5cb917e868 No nonsense union. 2018-03-04 17:52:51 +01:00
Bartosz Taudul
5afdccfc46 Properly initialize data.
Unused bitbield bits and inactive string index/reference had thrash
values in release builds, which prevented de-duplication of source
location payloads.
2018-03-04 17:47:26 +01:00
Bartosz Taudul
e9395cd988 Reconstruct source location payload map on data load. 2018-03-04 17:22:34 +01:00
Bartosz Taudul
a374114358 Use proper encoding of source location. 2018-03-04 17:17:37 +01:00
Bartosz Taudul
9170cfd943 First entry in sourceLocationExpand is special. 2018-03-04 16:57:57 +01:00
Bartosz Taudul
80da271a2c Don't match source location on a per-zone basis. 2018-03-04 16:53:13 +01:00
Bartosz Taudul
b48602f5d1 Implement search for matching source locations. 2018-03-04 16:52:45 +01:00
Bartosz Taudul
f8c5f28372 Use Vector for source location expand storage. 2018-03-04 16:32:51 +01:00
Bartosz Taudul
f99c6eec78 Simplify code. 2018-03-04 16:23:28 +01:00
Bartosz Taudul
b09bae07c4 Change default find parameters to unlimited. 2018-03-04 16:07:10 +01:00
Bartosz Taudul
87cfd98b69 No need for fractional time part on graph ticks. 2018-02-28 15:38:32 +01:00
Bartosz Taudul
2891ecc526 Logarithmic scale histogram ticks. 2018-02-28 15:20:52 +01:00
Bartosz Szreder
0fb35b42f8 Merged in bartosz_szreder/tracy (pull request #3)
Split data handling code from the view.
2018-02-23 14:12:01 +00:00
Bartosz Szreder
3b9639a9de Tweak included header files in View and Worker. 2018-02-23 15:08:20 +01:00
Bartosz Taudul
6406df6f45 Display total time. 2018-02-22 12:44:55 +01:00
Bartosz Taudul
ffb28a3d0d More concise time range display. 2018-02-22 12:38:43 +01:00
Bartosz Szreder
bae1c02ad0 Worker thread will take care of itself. 2018-02-21 16:41:37 +01:00
Bartosz Szreder
9e3f18a62a Split data handling code from the view. 2018-02-21 16:41:37 +01:00
Bartosz Taudul
fbaf59c9a6 Ignore zero-time zones in search. 2018-02-21 15:25:28 +01:00
Bartosz Taudul
785ab2927b Calculate proper label offsets. 2018-02-21 15:18:30 +01:00
Bartosz Taudul
d9988c8a06 Histogram time labels prototype. 2018-02-20 16:01:33 +01:00
Bartosz Taudul
118d4b497f Time Stamp Counter to time conversion function. 2018-02-20 12:40:12 +01:00
Bartosz Taudul
6a65ceb71a Display maximum number of counts in bins. 2018-02-16 16:19:31 +01:00
Bartosz Taudul
4611bc355f Optional log time scale in histogram. 2018-02-16 15:34:22 +01:00
Bartosz Taudul
6e8bb9e490 Display bin times. 2018-02-16 14:42:16 +01:00
Bartosz Taudul
f6cc360c69 Basic histogram introspection. 2018-02-16 14:31:57 +01:00
Bartosz Taudul
fbe1af80b5 Cosmetics. 2018-02-16 14:31:53 +01:00
Bartosz Taudul
9678cc8afc Support logarithmic scaling of values on search histogram. 2018-02-16 13:28:40 +01:00
Bartosz Taudul
508b699252 Fix crash. 2018-02-16 13:09:24 +01:00
Bartosz Taudul
5bc145f719 Search results histogram. 2018-02-15 17:25:16 +01:00
Bartosz Taudul
ea4863d4bd Fix help strings. 2018-02-15 16:32:36 +01:00
Bartosz Taudul
e20bb2fe66 Add separators to zone count. 2018-02-15 16:31:47 +01:00
Bartosz Taudul
cc38988045 Cleanup. 2018-02-15 16:24:01 +01:00
Bartosz Taudul
d1d54db7b6 Display number of found zones. 2018-02-15 16:17:16 +01:00
Bartosz Szreder
d5fe006e2d Add missing include charutil::hash() 2018-02-12 19:07:55 +01:00
Kamil Klimek
cb08990eff "Find Zone" feature
- Simple text search with some limiting options
 - Grouping by threads
 - Easy access to "Zone Info" from search results
2018-01-18 12:35:30 +01:00
Bartosz Taudul
961a907e09 Remove obsolete window flag. 2018-01-13 13:56:02 +01:00
Bartosz Taudul
5915683587 Shared lockable tooltips. 2017-12-17 19:40:45 +01:00
Bartosz Taudul
d0d3bb1141 Store shared lock bits only for shared locks. 2017-12-17 18:44:31 +01:00
Bartosz Taudul
b3b8088881 Separate processing of Lockable and SharedLockable. 2017-12-17 18:00:15 +01:00
Bartosz Taudul
6f1a99e270 Combine wait lists. 2017-12-10 23:33:39 +01:00
Bartosz Taudul
340506406e Shared lock state machine. 2017-12-10 23:30:13 +01:00
Bartosz Taudul
b07718ab9e Track list of shared locks. 2017-12-10 22:42:39 +01:00
Bartosz Taudul
4d9ae83abd Fix assert. 2017-12-10 22:42:25 +01:00
Bartosz Taudul
398eecbb94 Store LockEvent type as an enum class. 2017-12-10 22:37:56 +01:00
Bartosz Taudul
bcf2bf1c5c Shared lock events (still using old functionality). 2017-12-10 22:04:49 +01:00
Bartosz Taudul
782231b048 Shared lockable skeleton. 2017-12-10 21:49:45 +01:00
Bartosz Taudul
bc27bbde37 Display mutex type. 2017-12-10 21:49:23 +01:00
Bartosz Taudul
3567d7edd8 Reintroduce lock announce events. 2017-12-10 21:40:48 +01:00
Bartosz Taudul
ea604d484d Don't show mutex as blocked, if there are no locks held. 2017-12-10 21:40:48 +01:00
Bartosz Taudul
0f2d41413f Include plots, msgs, gpu zones, locks in last time calculation. 2017-12-09 20:10:32 +01:00
Bartosz Taudul
6942f84a99 Last time is now cached, not calculated. 2017-12-09 20:05:34 +01:00
Bartosz Taudul
86006e8416 Simplify GetNextLockEvent(). 2017-12-09 19:28:12 +01:00
Bartosz Taudul
b67989ab54 No need for nextState variable. 2017-12-09 19:24:35 +01:00
Bartosz Taudul
981bbfe42d Reorder LockEvent fields. 2017-12-09 19:13:59 +01:00
Bartosz Taudul
cf5ee65604 Vectorize loop. 2017-12-09 00:15:10 +01:00
Bartosz Taudul
d0dfa62f43 Force inline internal pdqsort functions. 2017-12-08 23:25:48 +01:00
Bartosz Taudul
86c5dcced9 __cplusplus check won't work on MSVC. 2017-12-08 23:14:55 +01:00
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