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
Bartosz Taudul
784c4da53a
Include frame offset in frame image message.
2019-06-07 20:09:29 +02:00
Rokas Kupstys
9bd1037347
Clean up imported functions in multi-dll projects.
2019-06-07 19:50:08 +03:00
Bartosz Taudul
e5bb6011c5
Frame image transfer prototype.
2019-06-06 21:39:54 +02:00
Bartosz Taudul
efc54babe3
Transfer of colored messages.
2019-05-10 20:17:44 +02:00
Bartosz Taudul
98eaacec90
Update LZ4 to 1.9.1.
2019-05-01 16:53:48 +02:00
Bartosz Taudul
82dad3fb97
Use proper type.
2019-04-01 20:43:42 +02:00
Bartosz Taudul
d0d5184c04
Set options for proper socket.
2019-04-01 20:14:00 +02:00
Bartosz Taudul
687915299a
Don't try to set socket options on invalid socket.
2019-04-01 20:08:27 +02:00
Bartosz Taudul
c07c6d11b7
Define server query packet.
2019-04-01 19:21:53 +02:00
Bartosz Taudul
57cd6d3ed5
Allow retrieval of socket send buffer size.
2019-04-01 18:50:37 +02:00
Bartosz Taudul
d229c1bc1b
Send native callstack along with allocated callstack.
2019-03-05 02:42:50 +01:00
Bartosz Taudul
bef31ba073
Separate message for zone begin with alloc src loc and callstack.
2019-03-03 18:05:03 +01:00
Bartosz Taudul
e3c31e4a4e
Send callstack alloc payload.
2019-03-03 18:05:03 +01:00
Bartosz Taudul
b8501956f9
Lua callstack sending.
2019-03-03 18:04:02 +01:00
Bartosz Taudul
2c16bdd538
Don't go out of tracy namespace.
2019-03-03 01:59:24 +01:00
Bartosz Taudul
81c2515199
Bump protocol version.
2019-02-21 23:25:43 +01:00
Bartosz Taudul
9f4f5bcb63
CPU usage retrieval.
2019-02-21 22:45:53 +01:00
Bartosz Taudul
ef5e30056e
Implement delayed initialization of the profiler.
...
Enabled on osx, ios.
2019-02-19 20:43:30 +01:00
Bartosz Taudul
d560f7a203
Cosmetics.
2019-02-19 19:36:30 +01:00
Bartosz Taudul
3f914834b7
Hide rest of statics.
2019-02-19 19:33:37 +01:00
Bartosz Taudul
7f11260bf0
Handle dropped connection during handshake.
2019-02-12 01:41:09 +01:00
Bartosz Taudul
c7e64bb8a8
Replace select() with poll().
2019-02-10 15:45:23 +01:00
Bartosz Taudul
1585be7ff3
Rearrange Socket to reduce struct size.
2019-01-29 21:56:10 +01:00
Bartosz Taudul
ddad475c19
Make it possible to store multiple frames at single frame address.
2019-01-20 19:11:48 +01:00
Rokas Kupstys
36c76456f7
Fix mistakes from MingW support commit.
2019-01-19 15:03:43 +02:00
Rokas Kupstys
8157e3a0b3
Fix builds with MingW.
2019-01-19 13:53:10 +02:00
Bartosz Taudul
a2fd09d938
Add zone validation queue item.
2019-01-14 22:36:54 +01:00
Bartosz Taudul
0b816ce0b7
Add lock termination event.
2018-12-16 20:46:33 +01:00
Bartosz Taudul
61ac0b8afc
Send lock creation time.
2018-12-16 20:33:18 +01:00
Bartosz Taudul
42360f50b0
Update lz4 to 1.8.3.
2018-09-13 01:52:16 +02:00
Bartosz Taudul
9211ce42da
Non-on-demand client is only able to handle one connection.
2018-09-09 19:42:06 +02:00
Bartosz Taudul
984a711666
Send protocol version to verify handshake.
2018-09-09 19:28:53 +02:00
Bartosz Taudul
270072b09e
Require shibboleth match at start of connection.
2018-09-09 18:26:53 +02:00
Bartosz Taudul
f55f2858c4
Raw socket read function.
2018-09-09 18:24:58 +02:00
Bartosz Taudul
560fc34ae6
No pthread_setcancelstate on Android.
2018-09-07 17:21:44 +02:00
Bartosz Taudul
0f0528ca3d
Add LZ4HC.
2018-08-26 16:23:34 +02:00
Bartosz Taudul
8b3895473d
Gag inconsequential MSVC warnings in TracySocket.
...
Fix your API!
2018-08-22 16:29:15 +02:00
Bartosz Taudul
afee61a2cf
Use standard naming for try_lock() in NonRecursiveBenaphore.
2018-08-20 21:37:55 +02:00
Bartosz Taudul
3b526b074e
Send crash report.
2018-08-20 02:23:55 +02:00
Bartosz Taudul
366ea35593
Allow crash event reporting.
...
When crash happens there's no longer anything to profile -- don't wait
for unfinished zones to finish before sending client terminate
confirmation.
2018-08-20 01:03:16 +02:00
Bartosz Taudul
bd76f4cd10
Send host info in welcome message.
2018-08-19 18:19:12 +02:00
Bartosz Taudul
716166bc3a
Expose InitWinSock().
2018-08-19 18:15:46 +02:00
Bartosz Taudul
9d051cf5ee
Add support for discontinuous frames.
2018-08-05 02:15:54 +02:00
Bartosz Taudul
9b4348b497
Handle frame name queries.
2018-08-04 21:10:45 +02:00
Bartosz Taudul
23dfc2e3fc
Multiple frame sets support.
2018-08-04 21:10:45 +02:00
Bartosz Taudul
922882d3b0
Add name field to frame mark message.
2018-08-04 15:03:47 +02:00
Till Rathmann
4968717313
Fixed compiler warning about unused variable in release builds.
2018-08-02 11:45:15 +02:00
Till Rathmann
3b302315f9
Fixed __ANDROID_API__ < 21 build and FD_SET usage.
2018-08-01 19:18:40 +02:00
Till Rathmann
37d5736bf5
Fixed compiler warnings.
2018-08-01 14:07:30 +02:00
Till Rathmann
dd042619e9
Support for multi-DLL projects.
2018-07-31 12:06:04 +02:00
Arvid Gerstmann
dfe3285252
Merged in Leandros99/tracy/pr-1 (pull request #11 )
...
Implement pthread_getname_np alternative if it's not available
2018-07-24 11:57:21 +00:00
Arvid Gerstmann
69dac3f611
Fix accessing the thread id on Android
2018-07-24 13:43:25 +02:00
Rokas Kupstys
01df5aa840
Fix targetting lower windows versions when using W10 SDK that is older than redstone2.
2018-07-19 11:08:41 +03:00
Rokas Kupstys
d290e04d45
Fix build when targeting earlier windows versions by defining _WIN32_WINNT.
2018-07-17 20:15:27 +03:00
Bartosz Taudul
3799e0da43
Infer socket readiness from select() return value.
2018-07-16 01:50:21 +02:00
Bartosz Taudul
efdb3791e9
Take recv buffer into account in HasData().
2018-07-15 19:52:22 +02:00
Bartosz Taudul
ea4470b26e
Buffer data from recv() calls.
...
This reduces cost of socket reads measured in a test run from 47ms to
8.7ms.
2018-07-15 19:34:47 +02:00
Arvid Gerstmann
f04e67779c
Fix some minor code style issues
2018-07-14 13:46:25 +02:00
Arvid Gerstmann
6fb73a3d97
Implement getname alternative if it's not available
2018-07-14 13:26:55 +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
Arvid Gerstmann
ebd1d00178
Correctly forward declare Win32 functions
...
_WINDOWS_ is the macro defined by the windows.h header guard,
checking it whether the symbols have already been included before
forward declaring our own.
2018-07-13 23:39:58 +02:00
Arvid Gerstmann
6fee78dfee
Do not include the semaphore headers inside namespace tracy
2018-07-13 19:51:24 +02:00
Bartosz Taudul
ef73979fb9
MemRead() uses const pointer.
2018-07-11 01:33:27 +02:00
Bartosz Taudul
6a9caabc63
Send on-demand initial payload message.
2018-07-10 22:37:39 +02:00
Bartosz Taudul
32ca54a523
Pack WelcomeMessage.
2018-07-10 22:29:31 +02:00
Bartosz Taudul
010b19946f
Send on-demand status in welcome message.
2018-07-10 21:44:23 +02:00
Bartosz Taudul
a0188122a0
Add keep alive message.
2018-07-10 21:23:19 +02:00
Tobias Widlund
b6cce4ddb6
Improve fixes for warnings as per request
2018-06-30 15:36:06 +02:00
Tobias Widlund
1c467a5847
Fix warning re shadowing, implicit conversion and added include <cstdio>
2018-06-30 11:47:27 +02:00
Bartosz Taudul
b29d60056a
Custom per-zone name transfer.
2018-06-29 16:01:31 +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
62267399bc
Send query ids of GPU times.
2018-06-22 16:19:53 +02:00
Bartosz Taudul
51c5f47ae2
Transfer query ids of GPU events.
2018-06-22 15:57:54 +02:00
Bartosz Taudul
55ddb64352
GPU context counter is now 8 bit.
2018-06-22 15:10:23 +02:00
Bartosz Taudul
b213e5f415
Vulkan zone callstack collection.
2018-06-22 01:47:08 +02:00
Bartosz Taudul
b6088b908f
Callstack capture for ZoneBegin.
2018-06-22 00:56:30 +02:00
Bartosz Taudul
94c9c89ad0
Enable thread name collection on old windows SDKs.
2018-06-22 00:23:50 +02:00
Bartosz Taudul
5177a7b960
Callstack frame transfer.
2018-06-20 01:06:31 +02:00
Bartosz Taudul
203744cdd9
Callstack frame queries.
2018-06-20 00:25:26 +02:00
Bartosz Taudul
0a8cd73db7
Issue predictive callback payload transfer.
2018-06-19 19:31:16 +02:00
Bartosz Taudul
51043ebc47
Callstack payload transfer.
2018-06-19 19:31:16 +02:00
Bartosz Taudul
8943e4681e
Memory event callstack transfer.
2018-06-19 18:50:29 +02:00
Bartosz Taudul
5368f386ce
Make sure uintptr_t is really size of pointer.
2018-06-19 17:51:55 +02:00
Bartosz Taudul
684ba455a2
Send GPU zone thread handle.
2018-06-17 18:55:38 +02:00
Bartosz Taudul
8495e5b094
Send timestamp period in GPU context announcement.
2018-06-17 18:21:15 +02:00
Bartosz Taudul
e74108f175
Bump lz4 to 1.8.2.
2018-05-08 01:52:40 +02:00
Bartosz Taudul
eeeff40a70
Prevent TIME-WAIT connections from blocking listen address.
...
Of course Windows has to be retarded in its own special way and implement
SO_REUSEADDR with a completely different meaning.
http://www.andy-pearce.com/blog/posts/2013/Feb/so_reuseaddr-on-windows/
2018-04-27 19:18:09 +02:00
Bartosz Taudul
d201be25ed
Fix force_inline on gcc/clang.
2018-04-21 19:22:27 +02:00
Bartosz Taudul
c9d1f59c92
No need to pack WelcomeMessage struct.
2018-04-04 19:43:21 +02:00
Bartosz Taudul
3ea5600900
Fix UB, lose type safety.
2018-04-03 17:51:53 +02:00
Bartosz Taudul
66ad415ce5
Remove windows.h dependency from tracy_sema.h.
2018-04-01 19:15:46 +02:00
Bartosz Taudul
16a98c8c17
Move benaphore to common directory.
2018-04-01 18:59:55 +02:00
Bartosz Taudul
991fc6bd95
Memory allocations tracker.
2018-03-31 21:56:05 +02:00
Bartosz Taudul
3b03e849f0
Harden client code against unaligned memory access.
...
There shouldn't be any changes in generated code on modern
architectures, as the memcpy will be reduced to a store/load operation
identical to the one generated with plain struct member access.
GetTime( cpu ) needs special handling, as the MSVC intrinsic for rdtscp
can't store cpu identifier in a register. Using intermediate variable
would cause store to stack, read from stack, store to the destination
address. Since rdtscp is only available on x86, which handles unaligned
stores without any problems, we can have one place with direct struct
member access.
2018-03-31 14:15:04 +02:00
Bartosz Taudul
685432a85f
Add unaligned read/write helpers.
2018-03-31 14:15:04 +02:00