Vulkan Schnee 0.0.1
High-performance rendering engine
Loading...
Searching...
No Matches
TracyMacros.hpp
Go to the documentation of this file.
1#pragma once
2
3// Force TRACY_ENABLE if ENABLE_TRACY is defined by CMake
4#ifdef ENABLE_TRACY
5 #ifndef TRACY_ENABLE
6 #define TRACY_ENABLE
7 #endif
8#endif
9
10#ifdef TRACY_ENABLE
11 #include "tracy/Tracy.hpp"
12 #include <sstream>
13
14 #ifdef USE_VULKAN
15 #include <vulkan/vulkan.h>
16 #include "tracy/TracyVulkan.hpp"
17 #endif
18
19 #define TRACY_ZONE_SCOPED ZoneScoped
20 #define TRACY_ZONE_SCOPED_NAMED(name) ZoneScopedN(name)
21 #define TRACY_ZONE_SCOPED_NAMED_D(stream_expr) \
22 ZoneScoped; \
23 do { \
24 std::stringstream __tracy_name_stream; \
25 __tracy_name_stream << stream_expr; \
26 ZoneName(__tracy_name_stream.str().c_str(), __tracy_name_stream.str().size()); \
27 } while(0)
28
29 #define TRACY_LOCKABLE(type, varname, desc) TracyLockableN(type, varname, desc)
30 #define TRACY_SHARED_LOCKABLE(type, varname, desc) TracySharedLockableN(type, varname, desc)
31 #define TRACY_LOCK_GUARD(type, varname, var) std::lock_guard<tracy::Lockable<type>> varname(var);
32 #define TRACY_SHARED_LOCK(type, varname, var) std::shared_lock<tracy::SharedLockable<type>> varname(var);
33 #define TRACY_UNIQUE_LOCK(type, varname, var) std::unique_lock<tracy::SharedLockable<type>> varname(var);
34
35 #define TRACY_ZONE_SCOPED_FUNCTION ZoneScopedN(__FUNCTION__)
36 #define TRACY_ZONE_SCOPED_NAMED_ASSET(name) ZoneScopedNC(name, 0xFF6B6B)
37 #define TRACY_ZONE_SCOPED_NAMED_D_ASSET(stream_expr) \
38 ZoneScopedC(0xFF6B6B); \
39 do { \
40 std::stringstream __tracy_name_stream; \
41 __tracy_name_stream << stream_expr; \
42 ZoneName(__tracy_name_stream.str().c_str(), __tracy_name_stream.str().size()); \
43 } while(0)
44
45 #define TRACY_FRAME_MARK FrameMark
46
47 #define TRACY_MESSAGE_C(stream_expr, color) \
48 do { \
49 std::stringstream __tracy_message_stream; \
50 __tracy_message_stream << stream_expr; \
51 const std::string __tracy_message = __tracy_message_stream.str(); \
52 TracyMessageC(__tracy_message.c_str(), __tracy_message.size(), color); \
53 } while(0)
54
55 // Named memory pool tracking (for VRAM resources)
56 #define TRACY_ALLOC_N(ptr, size, name) TracyAllocN(ptr, size, name)
57 #define TRACY_FREE_N(ptr, name) TracyFreeN(ptr, name)
58
59 #ifdef USE_VULKAN
60 #define TRACY_VK_CONTEXT(phys_device, device, queue, cmd_buffer) tracy::CreateVkContext(phys_device, device, queue, cmd_buffer)
61 #define TRACY_VK_DESTROY_CONTEXT(vk_context) tracy::DestroyVulkan(vk_context)
62 #define TRACY_VK_ZONE(vk_context, cmd_buffer, name) TracyVkZone(vk_context, cmd_buffer, name)
63 #define TRACY_VK_ZONE_NAMED(vk_context, cmd_buffer, name, active) TracyVkNamedZone(vk_context, cmd_buffer, name, active)
64 #define TRACY_VK_COLLECT(vk_context, cmd_buffer) TracyVkCollect(vk_context, cmd_buffer)
65 #define TRACY_VK_CONTEXT_CALIBRATED(phys_device, device, queue, cmd_buffer, getTimeDomains, getCalibratedTimestamps) \
66 TracyVkContextCalibrated(phys_device, device, queue, cmd_buffer, getTimeDomains, getCalibratedTimestamps)
67 #define TRACY_VK_CONTEXT_HOST_CALIBRATED(phys_device, device, queue, getTimeDomains, getCalibratedTimestamps) \
68 TracyVkContextHostCalibrated(phys_device, device, queue, getTimeDomains, getCalibratedTimestamps)
69 #define TRACY_VK_ZONE_C(vk_context, cmd_buffer, name, color) TracyVkZoneC(vk_context, cmd_buffer, name, color)
70 #define TRACY_VK_ZONE_NAMED_C(vk_context, cmd_buffer, name, color, active) TracyVkNamedZoneC(vk_context, cmd_buffer, name, color, active)
71 #define TRACY_VK_ZONE_TRANSIENT(vk_context, cmd_buffer, name, active) TracyVkZoneTransient(vk_context, ___tracy_gpu_zone_pipeline, cmd_buffer, name, active)
72 #define TRACY_VK_CONTEXT_NAME(vk_context, name, size) TracyVkContextName(vk_context, name, size)
73 #define TRACY_VK_MULTIVIEW(vk_context, count) (vk_context)->SetMultiviewCount(count)
74 #endif
75
76#else
77 #define TRACY_ZONE_SCOPED
78 #define TRACY_ZONE_SCOPED_NAMED(name)
79 #define TRACY_ZONE_SCOPED_NAMED_D(stream_expr)
80 #define TRACY_ZONE_SCOPED_FUNCTION
81 #define TRACY_FRAME_MARK
82 #define TRACY_MESSAGE_C(stream_expr, color)
83 #define TRACY_LOCKABLE(type, varname, desc) std::mutex varname
84 #define TRACY_LOCK_GUARD(type, varname, var) std::lock_guard<type> varname(var);
85 #define TRACY_VK_CONTEXT(phys_device, device, queue, cmd_buffer)
86 #define TRACY_VK_DESTROY_CONTEXT(vk_context)
87 #define TRACY_VK_ZONE(vk_context, cmd_buffer, name)
88 #define TRACY_VK_ZONE_NAMED(vk_context, cmd_buffer, name, active)
89 #define TRACY_VK_COLLECT(vk_context, cmd_buffer)
90 #define TRACY_VK_CONTEXT_CALIBRATED(phys_device, device, queue, cmd_buffer, getTimeDomains, getCalibratedTimestamps)
91 #define TRACY_VK_CONTEXT_HOST_CALIBRATED(phys_device, device, queue, cmd_buffer, getTimeDomains, getCalibratedTimestamps)
92 #define TRACY_VK_ZONE_C(vk_context, cmd_buffer, name, color)
93 #define TRACY_VK_ZONE_NAMED_C(vk_context, cmd_buffer, name, color, active)
94 #define TRACY_VK_ZONE_TRANSIENT(vk_context, cmd_buffer, name, active)
95 #define TRACY_VK_CONTEXT_NAME(vk_context, name, size)
96 #define TRACY_VK_MULTIVIEW(vk_context, count)
97 #define TRACY_ZONE_SCOPED_NAMED_ASSET(name)
98 #define TRACY_ZONE_SCOPED_NAMED_D_ASSET(stream_expr)
99 #define TRACY_ALLOC_N(ptr, size, name)
100 #define TRACY_FREE_N(ptr, name)
101#endif