Commit Graph

4162 Commits

Author SHA1 Message Date
Bartosz Taudul
def30228c9
Draw plots using preprocessed draw lists. 2023-04-24 23:28:29 +02:00
Bartosz Taudul
96800a2753
Do not merge small groups of plot points (up to three). 2023-04-24 23:28:29 +02:00
Bartosz Taudul
616992a6d5
Do not include DPI scaling when grouping plot points. 2023-04-24 23:28:29 +02:00
Bartosz Taudul
102bb9f8a8
Include before-start plot item, so that the plot doesn't begin abruptly. 2023-04-24 23:28:28 +02:00
Bartosz Taudul
8eb2cc83b3
Push plot draw list to DrawPlot(). 2023-04-24 23:28:28 +02:00
Bartosz Taudul
8f5022c3c8
Calculate draw lists for plots. 2023-04-24 23:28:28 +02:00
Bartosz Taudul
0217c06377
Cosmetics. 2023-04-24 23:28:28 +02:00
Bartosz Taudul
ac29cffd3a
Fix assert condition. 2023-04-20 21:41:15 +02:00
Bartosz Taudul
7797557e8c
Don't pass memname parameter to functions handling allocation changes. 2023-04-16 18:12:14 +02:00
Bartosz Taudul
38b7aab4ef
Remove unused parameters from various payload handling functions. 2023-04-16 18:08:48 +02:00
Bartosz Taudul
3b00e55235
Rename IsThreadStringRetrieved -> IsFailureThreadStringRetrieved.
IsThreadStringRetrieved() interface suggested that it can be used for
checking any thread state, as it had an uint64_t id parameter.

The implementation ignored this parameter and checked the status of
failure thread only. This was never an issue because the code using
this function was only checking for the failure thread state.

Fixed by renaming the function to explicitly state what it does and
removing the thread id parameter.
2023-04-16 17:49:21 +02:00
Bartosz Taudul
b64bab197a
No need for GetZoneName() with GpuEvent + srcloc parameters. 2023-04-16 17:46:15 +02:00
Bartosz Taudul
08e6248299
CalcZoneTimeDataImpl() doesn't need zone parameter. 2023-04-16 17:40:16 +02:00
Bartosz Taudul
8d565e46d6
HandleTimelineMouse() doesn't need pxns parameter. 2023-04-16 17:36:04 +02:00
Bartosz Taudul
dec4713854
ListMemData() doesn't use id parameter. 2023-04-16 17:30:53 +02:00
Bartosz Taudul
adb2f9a664
GetFrameTreeItemNoGroup() doesn't need worker paramater. 2023-04-16 17:23:19 +02:00
Bartosz Taudul
31b3fcd1fe
View::InitTextEditor() doesn't need font parameter. 2023-04-16 17:21:03 +02:00
Bartosz Taudul
1c13c1ee8f
ThreadCompress::Load() doesn't need fileVer. 2023-04-16 17:17:07 +02:00
Bartosz Taudul
f60e51c91b
Fix std::move() usage. 2023-04-16 16:47:47 +02:00
Bartosz Taudul
a0221c8660
Pass function objects through const references. 2023-04-16 16:44:18 +02:00
Bartosz Taudul
5aaa4fcaf7
Use draw list data to draw locks. 2023-04-15 22:56:44 +02:00
Bartosz Taudul
788d9b77fc
Use proper start time to determine if break combining locks.
Without this correction the code would combine all lock regions according
to the minimum visibility range rules, and assign the combined area the
highest lock state within all items. This could produce quote long combined
lock regions, where apparently lock contention happened.

Combined lock regions should instead be split to show exactly where the
lock contention is present. Combining is still performed here, but only
within the minimum visibility range.

This new behavior was also present previously, but was mistakenly omitted
during code refactor.
2023-04-15 22:56:44 +02:00
Bartosz Taudul
e68214a88a
Change LockState to bitmask. 2023-04-15 22:56:44 +02:00
Bartosz Taudul
f7a8998663
Push locks draw lists to DrawThread(). 2023-04-15 22:56:44 +02:00
Bartosz Taudul
7f301dfec0
Precalculate draw lists for locks. 2023-04-15 22:56:44 +02:00
Bartosz Taudul
9b270c8e11
Another fix for determining if there's CPU usage data to draw. 2023-04-15 22:56:44 +02:00
Bartosz Taudul
f0acb73d09
Add accessor for active lock info window lock id. 2023-04-15 22:56:43 +02:00
Bartosz Taudul
d737b911e9
Make View::Vis() public. 2023-04-15 22:56:43 +02:00
Bartosz Taudul
6e815d13a0
Move common lock helper functions to a separate header. 2023-04-15 22:56:43 +02:00
Bartosz Taudul
4c0e6fe3ca
Merge pull request #544 from simplyWiri/timeline-scrolling-tweak
Clamp scrolling to the difference between the deepest zone near the m…
2023-04-13 11:35:08 +02:00
Bartosz Taudul
f17b44c212
Take DPI scaling into account when drawing thread migration lines. 2023-04-07 22:37:23 +02:00
Bartosz Taudul
492e6611b9
No need to perform domain conversion.
Pixel values will be needed anyways later on. It doesn't make sense to
perform comparison in time domain here.
2023-04-07 22:37:23 +02:00
Bartosz Taudul
d0ffca56bf
Fix logic determining if there's CPU core usage data to draw. 2023-04-07 22:37:22 +02:00
Bartosz Taudul
1b824797a9
Do not project running regions end time to last time.
Just display known running regions, keeping the unended ones infinitely
collapsed. This makes the CPU core usage graph possibly display wrong
data at the end of capture. Note that this behavior was also present in
previous releases.
2023-04-07 22:37:22 +02:00
Bartosz Taudul
1ff9e0012b
Add a note why context switches only have coarse visibility check. 2023-04-05 19:39:39 +02:00
Bartosz Taudul
51f832c031
Don't recalculate sty. 2023-04-05 19:24:58 +02:00
Bartosz Taudul
f48415315a
Build samples draw list only if visible. 2023-04-05 19:03:40 +02:00
Bartosz Taudul
a9ee4c499e
Build messages draw list only if visible. 2023-04-05 18:55:23 +02:00
Bartosz Taudul
4b8ac41345
Calculate CPU data draw lists only if visible. 2023-04-05 18:45:00 +02:00
Bartosz Taudul
bb9219384f
Do not recalculate sty. 2023-04-05 18:44:36 +02:00
Bartosz Taudul
f2a2669ca8
Decouple CPU graph availability from having the draw data. 2023-04-05 18:21:12 +02:00
Bartosz Taudul
9500add83b
Push yPos to TimelineItem::Preprocess(). 2023-04-05 18:07:09 +02:00
Bartosz Taudul
2b7b79352b
Parallelize calculation of per-CPU context switches. 2023-04-02 22:10:22 +02:00
simplyWiri
a8b42488ad Clamp scrolling to the difference between the deepest zone near the mouse, and the height of the window.
This prevents from unncessary scrolling when the trace does not exceed the size of the screen
2023-04-02 19:01:58 +10:00
Bartosz Taudul
33a640f848
Name worker threads. 2023-03-25 22:14:34 +01:00
Bartosz Taudul
5eebc5d7cf
Preprocess CPU usage.
Things of note: Worker::GetCpuUsage() functionality was moved to
TimelineItemCpuData::PreprocessCpuUsage().
2023-03-25 17:55:15 +01:00
Bartosz Taudul
dcf27f4989
Provide small font height in TimelineContext. 2023-03-25 17:25:10 +01:00
Bartosz Taudul
c0136dbdcc
Don't do unnecessary work if items are not visible. 2023-03-25 16:54:38 +01:00
Bartosz Taudul
13b31db561
Cosmetics. 2023-03-25 16:54:38 +01:00
Bartosz Taudul
e3ec455aba
Decouple check for existence from building draw lists.
We need to know if samples, context switches and messages are present to be
able to correctly calculate thread height. However, if the thread is not
visible, it is not necessary to provide a list of items to draw.
2023-03-25 16:52:27 +01:00
Bartosz Taudul
96d60ce626
Change GetNextFrameHeight() to GetHeight().
The GetNextFrameHeight() name correctness was very situational. It was
often used in the meaning of "get current frame height".
2023-03-25 15:12:33 +01:00
Bartosz Taudul
7ec68f8b52
Push item visibility to Preprocess(). 2023-03-25 15:10:58 +01:00
Bartosz Taudul
8908b68557
Fix lockup in context switch processing. 2023-03-25 00:45:13 +01:00
Bartosz Taudul
1e63406ac7
Replace previous iterator manipulation with a boolean. 2023-03-25 00:30:44 +01:00
Bartosz Taudul
efa095e25f
Simplify context switch precalculation. 2023-03-25 00:30:44 +01:00
Bartosz Taudul
734753a941
Fix MinVisNs type in messages preprocessing. 2023-03-24 23:15:11 +01:00
Bartosz Taudul
b3e9ede557
Move context switch minpx calculation to rendering code. 2023-03-24 23:10:58 +01:00
Bartosz Taudul
f2700b2786
Remove rather useless check.
The prev == it condition could only fire on the first run of the loop,
and on all subsequent runs prev (=next-1) will never be "it" anymore.

Lack of this condition changes nothing, as the following lines checking
for time distance between next and prev satisfy the same exit condition
(i.e. next-1 will be "it" only if lower_bound does not find anything,
hence next is farther away than MinVisNs).
2023-03-23 22:17:36 +01:00
Bartosz Taudul
e0cc6edbfb
Zone end times must be consistent. 2023-03-23 22:17:33 +01:00
Bartosz Taudul
40e08e9594
Draw messages using precalculated list. 2023-03-23 22:16:47 +01:00
Bartosz Taudul
6c21edd509
Drawing is not finished until function return. 2023-03-23 22:09:19 +01:00
Bartosz Taudul
e321e91c7d
TimelineItemThread can now determine visibility internally. 2023-03-23 21:56:04 +01:00
Bartosz Taudul
a141aafaab
Preprocess thread messages. 2023-03-23 21:47:40 +01:00
Bartosz Taudul
fbc87275e7
Add highlighted message accessor to View. 2023-03-23 21:47:22 +01:00
Bartosz Taudul
f55d0d0f55
Fix distance calculation in folding.
The folding process starts at the "next" item. The nextTime variable
represents a time point before which everything should be folded, because
all items in that range are smaller than MinVis range.

The lower_bound search finds a new "next" item, which will be beyond the
nextTime range. But nextTime has origin in the previous "next" item, which
may be not the last item in the folding range. If the distance between the
new "next" and the item before is smaller than MinVis, then the new "next"
item is also folded and the folding loop must continue to run.
2023-03-23 00:40:09 +01:00
Bartosz Taudul
aa8175ed47
Include DPI scaling in folding calculations. 2023-03-23 00:39:45 +01:00
Bartosz Taudul
fb032b4f9b
Rewrite CPU zones folding. 2023-03-23 00:17:55 +01:00
Bartosz Taudul
527b5f3311
Rewrite ghost zone folding. 2023-03-23 00:04:12 +01:00
Bartosz Taudul
c75b62e3d6
Rewrite samples folding. 2023-03-22 23:44:23 +01:00
Bartosz Taudul
83ae9868e2
Fix pixel and nanosecond domain mixing. 2023-03-22 22:41:19 +01:00
Bartosz Taudul
80c15c0f9b
Draw samples using precalculated data. 2023-03-22 22:26:20 +01:00
Bartosz Taudul
8bbd50361a
Remove unused variables. 2023-03-22 22:26:19 +01:00
Bartosz Taudul
da6ea47541
Preprocess samples. 2023-03-22 22:26:19 +01:00
Bartosz Taudul
2456ae36bf
Store wait stack in 4 bytes. 2023-03-22 21:55:02 +01:00
Bartosz Taudul
d085f2541a
Fix drawing folded ghost zones. 2023-03-22 20:52:44 +01:00
Bartosz Taudul
a3947fbc57
Use vStart retrieved from ctx. 2023-03-22 20:52:31 +01:00
Bartosz Taudul
1e67c8bce2
Move const out of the loop. 2023-03-22 20:38:43 +01:00
Bartosz Taudul
50ccdc1ef4
Draw thread context switches using precalculated data. 2023-03-22 19:38:58 +01:00
Bartosz Taudul
88f0b9c754
Preprocess thread context switch data. 2023-03-22 19:38:36 +01:00
Bartosz Taudul
060bab357d
Add DrawFinished() to early exit paths. 2023-03-21 02:11:50 +01:00
Bartosz Taudul
1e1833edc2
Parallelize timeline item preprocessing. 2023-03-19 18:54:32 +01:00
Bartosz Taudul
66d3c2a472
Draw CPU zones using a precalculated list. 2023-03-19 18:37:27 +01:00
Bartosz Taudul
85d541124e
Inline frames limit was raised to 64 in 7552341ff. 2023-03-19 18:23:04 +01:00
Bartosz Taudul
1d7afbd07e
Calculate which CPU zones to draw beforehand. 2023-03-19 18:23:04 +01:00
Bartosz Taudul
b4893fafb7
Notify TimelineItem when drawing has finished. 2023-03-19 16:07:47 +01:00
Bartosz Taudul
3a2cc0bed0
Allow setting short_ptr pointer. 2023-03-19 15:21:52 +01:00
Bartosz Taudul
6ab4180b5b
Use TimelineContext to draw CPU zones. 2023-03-19 01:14:36 +01:00
Bartosz Taudul
ee5d6f1adb
Use TimelineContext for drawing GPU zones. 2023-03-19 00:28:14 +01:00
Bartosz Taudul
5743bff0af
Use TimelineContext when drawing CPU data. 2023-03-19 00:23:33 +01:00
Bartosz Taudul
26791f55d1
Use TimelineContext data for drawing plots. 2023-03-18 17:11:24 +01:00
Bartosz Taudul
0ecdcbc13c
Move TimelineContext struct definition to a separate header. 2023-03-18 17:03:23 +01:00
Bartosz Taudul
5b3427395e
Add view start and end to TimelineContext. 2023-03-18 17:02:23 +01:00
Bartosz Taudul
0a32929b0b
Move hover flag to TimelineContext. 2023-03-18 16:07:56 +01:00
Bartosz Taudul
c75bec9122
Cosmetics. 2023-03-18 15:59:52 +01:00
Bartosz Taudul
9538fa99ca
Pass yMin, yMax through TimelineContext. 2023-03-15 23:56:57 +01:00
Bartosz Taudul
c81ef177ab
Push timline context to Draw and DrawContents functions. 2023-03-14 02:25:15 +01:00
Bartosz Taudul
b6b6e1edcf
Store common constants in context variable. 2023-03-14 02:25:14 +01:00
Bartosz Taudul
66d8dab925
Preprocess timeline items in controller. 2023-03-14 02:02:50 +01:00
Bartosz Taudul
7dd31ab609
Timeline items may have preprocessing. 2023-03-14 02:02:21 +01:00
Bartosz Taudul
988de5b594
Fix typo. 2023-03-14 01:54:21 +01:00