Rokas Kupstys
6727cc2da4
Add empty TRACY_API instead of using dllexport for static builds on windows. Using dllexport is not correct, because it marks APIs in static lib for export and these APIs would get exported from a DLL that links to tracy.
...
Make API use TRACY_EXPORTS, and replace TRACYPROFILER_EXPORTS with TRACY_EXPORTS in vcxproj projects.
Swap dllimport with dllexport. Reason for this is a common idiom in CMake: target_compile_definitions(tracy PUBLIC -DTRACY_IMPORTS PRIVATE -DTRACY_EXPORTS). This idiom adds both defines in tracy target, but targets that link to tracy only get TRACY_IMPORTS. Swapped statements ensure that tracy always dllexports it's api and consuming targets always dllimport it.
2020-05-05 13:23:46 +03:00
Bartosz Taudul
1f3dc927c0
Close socket when listening fails.
2020-04-13 21:40:35 +02:00
Bartosz Taudul
5437976e65
Cosmetics.
2020-04-13 21:39:51 +02:00
Bartosz Taudul
1bbece649f
Implement socket read without exit check.
2020-04-13 14:22:58 +02:00
Bartosz Taudul
e4ec666479
Don't use std::function in sockets.
2020-04-13 14:14:36 +02:00
Leander Beernaert
ac9f12a5f6
Review fixes
...
Update bracket style.
Remove erroneous else block.
2020-04-09 12:32:35 +02:00
Leander Beernaert
010376518f
Fix incorrect handling of ipv4 case
2020-04-09 12:27:54 +02:00
Leander Beernaert
4201ebb28d
ListenSocket: Fallback to ipv4
...
If we can't create a listener socket with the ipv6 protocol, try to
create one with the ipv4 protocol instead. This fixes the ListenSocket
on machines where ipv6 is not available or has been completely disabled.
This patch also exists ListenSocket::Listen() early if we fail to create
the socket.
2020-04-09 12:23:51 +02:00
Bartosz Taudul
69c5e667ae
Dynamically load Get/SetThreadDescription.
2020-04-07 21:33:03 +02:00
Bartosz Taudul
b2a8b53efa
Query source location of each assembly instruction.
2020-04-01 21:43:03 +02:00
Bartosz Taudul
add5b29d03
Report CPU architecture in welcome message.
2020-03-25 21:28:02 +01:00
Bartosz Taudul
ce449ac0e2
Notify server that parameter was handled.
2020-03-25 20:37:26 +01:00
Bartosz Taudul
ea507289c6
Add missing query space extensions.
2020-03-25 20:33:50 +01:00
Bartosz Taudul
f114ec3f80
Add code transfer from client to server.
2020-03-25 20:04:55 +01:00
Bartosz Taudul
3e0e120222
Add extra parameter to server queries.
2020-03-25 20:04:01 +01:00
Bartosz Taudul
c999a74d34
Symbol length transfer.
2020-03-25 18:32:36 +01:00
Bartosz Taudul
59e859e59a
Remove benaphore, use std::mutex on cygwin.
2020-03-19 02:06:54 +01:00
Bartosz Taudul
127224acc6
Send listen port in broadcast message.
2020-03-08 14:37:59 +01:00
Bartosz Taudul
e7240cb77d
Custom lock name transfer.
2020-03-08 13:47:38 +01:00
Bartosz Taudul
be5793987e
Don't send symbol name.
2020-02-27 12:49:48 +01:00
Bartosz Taudul
26cee8acf0
Perform symbol information queries.
2020-02-26 22:35:15 +01:00
Bartosz Taudul
abf8c42a7c
Send module name.
2020-02-26 00:33:09 +01:00
Bartosz Taudul
c5b2d14f8c
Send sampling period in welcome message.
2020-02-25 23:12:31 +01:00
Bartosz Taudul
3402d16548
Send symbol base address.
2020-02-25 23:03:40 +01:00
Bartosz Taudul
6968a42abe
Force inline LZ4_NbCommonBytes().
2020-02-23 14:40:09 +01:00
Bartosz Taudul
13febeb902
Use dllimport/dllexport on cygwin.
2020-02-22 16:02:02 +01:00
Bartosz Taudul
9e9c7db5b1
Send sampled call stacks.
2020-02-22 13:42:09 +01:00
Bartosz Taudul
0d2e7f72a7
Move GetThreadHandleImpl() from header to source file.
...
This removes dependency on unistd.h header (required for syscall() on
linux), which includes a definition of getopt(), which may conflict with
a custom getopt implementation (for example, one that does work on
windows).
2020-02-11 14:40:49 +01:00
Bartosz Taudul
99f2734d28
Remove stack dependency.
2020-02-09 17:22:41 +01:00
Bartosz Taudul
78c2f68649
Force inline LZ4 read/write functions.
2020-02-09 17:22:41 +01:00
Bartosz Taudul
99613291fb
Restore original 16 KB LZ4 hash table size.
2020-02-08 18:12:44 +01:00
Bartosz Taudul
aa94df0845
Replace rpmalloc_thread_initialize with InitRPMallocThread().
2020-01-25 17:16:08 +01:00
Bartosz Taudul
a90004b983
Move Set/GetThreadName() to Tracy API.
2020-01-25 16:36:58 +01:00
Bartosz Taudul
6f31eb2a9d
Disable MSVC idiocy.
2020-01-20 22:49:03 +01:00
Bartosz Taudul
77a6039e54
Force inline small functions in LZ4.
2020-01-17 01:08:06 +01:00
Bartosz Taudul
cb501298b5
Make QueueDataSize constexpr.
2020-01-14 19:42:11 +01:00
Bartosz Taudul
65d146ddca
Allow checking if socket is valid.
2019-12-19 17:23:40 +01:00
Bartosz Taudul
4eaa3d90dd
Thread ids are no longer pthread_t.
2019-12-13 15:57:08 +01:00
Bartosz Taudul
d4f4b73d56
Move socket buffer size from header to source file.
2019-12-08 23:14:48 +01:00
Bartosz Taudul
712403e9fd
Transfer, display, save CPU topology data.
2019-11-29 22:41:41 +01:00
Bartosz Taudul
4551553eb4
Implement setting client parameters from server.
2019-11-25 23:59:48 +01:00
Bartosz Taudul
3e4913dc8a
Reuse socket address also on BSD.
2019-11-21 20:41:57 +01:00
Bartosz Taudul
3c4a7463b8
Retrieve proper thread ids on BSD.
2019-11-21 02:29:17 +01:00
Bartosz Taudul
3282360382
Bind on both IPv6 and IPv4 on BSD.
2019-11-21 02:03:32 +01:00
Bartosz Taudul
a9cd5b331f
BSD needs netinet/in.h for struct sockaddr_in and friends.
2019-11-21 01:28:48 +01:00
Bartosz Taudul
31e1558467
Use standard includes.
2019-11-15 20:17:55 +01:00
Bartosz Taudul
8286b0b72f
Plumbing for message call stacks.
2019-11-14 23:40:41 +01:00
Bartosz Taudul
0f6101b19a
Fix mingw/cygwin thread name setter/getter.
2019-11-07 18:58:08 +01:00
Bartosz Taudul
3abdd7cdaf
Remove LZ4 include from TracyProtocol.hpp.
2019-11-06 01:30:20 +01:00
Bartosz Taudul
6015c964a9
Enable LZ4 fast decompression loop on MSVC.
2019-11-05 22:00:13 +01:00
Bartosz Taudul
6bbf273581
Partial header inclusion cleanup.
2019-11-05 20:09:40 +01:00
Bartosz Taudul
907574e637
Allow remote plot configuration.
2019-11-05 17:45:19 +01:00
Bartosz Taudul
106411e1f6
Add missing freeaddrinfo().
2019-10-27 13:39:01 +01:00
Bartosz Taudul
0f2503d334
Send time deltas in GPU time events.
2019-10-25 19:52:01 +02:00
Bartosz Taudul
8fa5188176
Send delta times for context switches.
2019-10-25 19:13:11 +02: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
707f113bda
Add missing NOMINMAX definitions.
2019-10-10 20:29:06 +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
82cd667b30
Allow specifying network port in server.
2019-09-21 15:43:01 +02:00
Bartosz Taudul
e13cbf52fd
Allow changing tracy port in client.
2019-09-21 15:11:15 +02:00
Bartosz Taudul
fd245bb5df
Fix includes for gettid() on android.
2019-08-19 15:09:47 +02:00
Bartosz Taudul
20e8a5ecc8
Create tid to pid mapping.
2019-08-17 22:32:41 +02:00
Bartosz Taudul
678e942e9f
Transfer PID of profiled program.
2019-08-17 22:19:04 +02:00
Bartosz Taudul
414f903cc5
Collect thread wakeup data.
2019-08-17 17:05:29 +02:00
Bartosz Taudul
e975c4d7bf
Also retrieve external thread names.
2019-08-16 19:49:16 +02:00
Bartosz Taudul
fe7f56b022
Implement retrieval of external process names.
2019-08-16 19:22:23 +02:00
Bartosz Taudul
71b54dd48a
Always collect thread names.
...
This fixes an issue when a thread was destroyed before its name could be
retrieved.
2019-08-14 16:52:04 +02:00
Bartosz Taudul
92b6da7cc2
SetThreadName() only works on the current thread.
...
This breaking change is required, because kernel trace facilities use
kernel thread ids, which are inaccessible from the pthread_t level.
2019-08-14 02:22:45 +02:00
Bartosz Taudul
339b7fd2a6
Use kernel thread ids on linux.
2019-08-14 01:57:36 +02:00
Bartosz Taudul
8925d026a9
Cosmetics.
2019-08-14 01:57:36 +02:00
Bartosz Taudul
73cbf2eead
Use windows thread ids on cygwin.
2019-08-13 16:22:58 +02:00
Bartosz Taudul
90d26cb1b6
Collect and send context switch events.
2019-08-13 02:35:32 +02:00
Bartosz Taudul
8aa0be39d5
Drop support for CPU id queries.
2019-08-12 23:05:34 +02:00
Bartosz Taudul
d6f32a0839
Serialize lock processing.
...
This makes is much easier to process on the server and opens new
optimization possibilities. It also fixes theoretical problems, which
may be caused by invalid ordering of events with the same timestamp.
2019-08-12 13:51:01 +02:00
Rokas Kupstys
b391e4c21a
Fix multiple build errors when compiling with MinGW.
2019-08-04 15:49:46 +03:00
Bartosz Taudul
12969ee497
Track thread context.
...
This change exploits the fact that events are processed in batches
originating from a single thread. A single message changing thread
context is enough to handle multiple messages, as opposed to inclusion
of thread identifier in each message.
2019-08-02 20:18:08 +02:00
Bartosz Taudul
a4e7a341c0
Proper handling of disconnect request.
2019-08-01 23:14:09 +02:00
Bartosz Taudul
a6a3f45810
Fill in thread id during dequeue, not during enqueue.
2019-07-30 01:15:14 +02:00
Bartosz Taudul
dc49f2f76a
Move DXT1 index conversion to server.
2019-07-19 21:46:58 +02:00
Bartosz Taudul
60d2384a6a
Allow sending application information messages.
2019-07-12 18:34:46 +02:00
Bartosz Taudul
94b470ba66
Chomp newline from end of thread string.
2019-07-03 16:12:37 +02:00
Bartosz Taudul
bb35f9a897
Compress frame images in a separate thread.
2019-06-27 13:24:35 +02:00
Bartosz Taudul
8ce41b3543
Proper init order of thread local thread handle.
2019-06-26 19:32:52 +02:00
Bartosz Taudul
a8cb257474
Revert "Resolve client host name using DNS."
...
This reverts commit 48df667a37
.
2019-06-26 17:58:23 +02:00
Bartosz Taudul
bc7f2c49c8
GetThreadHandle() might be used by application's code.
2019-06-25 15:44:49 +02:00
Bartosz Taudul
a56c47a6a0
Store thread handle in a thread local variable.
...
This saves us a non-inlineable function call. Thread local block is
accessed anyway, since we need to get the token, so we already have the
pointer and don't need to get it a second time (which is done inside
Windows' GetCurrentThreadId()). We also don't need to store the thread
id in ScopedZone anymore, as it was a micro-optimization to save us the
second GetThreadHandle() call.
This change has a measurable effect of reducing enqueue time from ~10 to
~8 ns.
A further optimization would be to completely skip thread handle
retrieval during zone capture and do it instead on retrieval of data
from the queue. Since each thread has its own producer ("token"), the
thread handle should be accessible during the dequeue operation. This is
a much more invasive change, that would require a) modification of the
queue, b) additional processing of dequeued data to inject the thread
handle.
2019-06-24 19:19:47 +02:00
Bartosz Taudul
46b75c5a19
Only enable tracy-internal GetThreadHandle if tracy is enabled.
2019-06-24 19:18:52 +02:00
Bartosz Taudul
fadf8e3e0a
Can't read negative number of bytes.
...
This completely ignores error handling, which probably should be added.
The code behavior doesn't change, as the existing comparisons and
asserts already promoted the signed value to unsigned.
2019-06-22 14:08:48 +02:00
Bartosz Taudul
fd9fc880a6
Send current time in on-demand welcome message.
2019-06-21 19:39:41 +02:00
Bartosz Taudul
48df667a37
Resolve client host name using DNS.
...
This operation is blocking and should be made asynchronous.
2019-06-21 19:27:41 +02:00
Bartosz Taudul
5309e6d94a
Broadcast client activity time.
2019-06-18 20:46:12 +02:00
Bartosz Taudul
0e5a7263d9
Define broadcast message, add versioning.
2019-06-18 20:26:40 +02:00
Bartosz Taudul
12e44fc605
Missing include.
2019-06-17 19:51:58 +02:00
Bartosz Taudul
e0bbb41976
Add UDP listen socket and IP address wrapper.
2019-06-17 19:23:43 +02:00
Bartosz Taudul
de058d2a0d
Don't hardcode broadcast port.
2019-06-17 18:37:34 +02:00
Bartosz Taudul
40e517594b
Add UDP broadcast socket.
2019-06-17 02:24:55 +02:00
Bartosz Taudul
ab4e99229d
Indicate whether client is running on apple shitware.
2019-06-13 14:05:15 +02:00
Bartosz Taudul
37d1457b44
Frame image may need flipping.
2019-06-12 15:28:32 +02:00
Rokas K. (rku)
c4e05b6264
Merged in rokups/tracy/dllimport-cleanup (pull request #36 )
...
Clean up imported functions in multi-dll projects.
Approved-by: Till Rathmann <till.rathmann@gmx.de>
2019-06-11 15:04:34 +00:00
Bartosz Taudul
2bc7a9bd30
Close listen socket in destructor.
2019-06-09 18:14:26 +02:00