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 #ifdef USE_VULKAN
48 #define TRACY_VK_CONTEXT(phys_device, device, queue, cmd_buffer) tracy::CreateVkContext(phys_device, device, queue, cmd_buffer)
49 #define TRACY_VK_DESTROY_CONTEXT(vk_context) tracy::DestroyVulkan(vk_context)
50 #define TRACY_VK_ZONE(vk_context, cmd_buffer, name) TracyVkZone(vk_context, cmd_buffer, name)
51 #define TRACY_VK_ZONE_NAMED(vk_context, cmd_buffer, name, active) TracyVkNamedZone(vk_context, cmd_buffer, name, active)
52 #define TRACY_VK_COLLECT(vk_context, cmd_buffer) TracyVkCollect(vk_context, cmd_buffer)
53 #define TRACY_VK_CONTEXT_CALIBRATED(phys_device, device, queue, getTimeDomains, getCalibratedTimestamps) \
54 TracyVkContextCalibrated(phys_device, device, queue, getTimeDomains, getCalibratedTimestamps)
55 #define TRACY_VK_CONTEXT_HOST_CALIBRATED(phys_device, device, queue, getTimeDomains, getCalibratedTimestamps) \
56 TracyVkContextHostCalibrated(phys_device, device, queue, getTimeDomains, getCalibratedTimestamps)
57 #define TRACY_VK_ZONE_C(vk_context, cmd_buffer, name, color) TracyVkZoneC(vk_context, cmd_buffer, name, color)
58 #define TRACY_VK_ZONE_NAMED_C(vk_context, cmd_buffer, name, color, active) TracyVkNamedZoneC(vk_context, cmd_buffer, name, color, active)
59 #define TRACY_VK_ZONE_TRANSIENT(vk_context, cmd_buffer, name, active) TracyVkZoneTransient(vk_context, ___tracy_gpu_zone_pipeline, cmd_buffer, name, active)
60 #define TRACY_VK_CONTEXT_NAME(vk_context, name, size) TracyVkContextName(vk_context, name, size)
61 #endif
62
63#else
64 #define TRACY_ZONE_SCOPED
65 #define TRACY_ZONE_SCOPED_NAMED(name)
66 #define TRACY_ZONE_SCOPED_NAMED_D(stream_expr)
67 #define TRACY_ZONE_SCOPED_FUNCTION
68 #define TRACY_FRAME_MARK
69 #define TRACY_LOCKABLE(type, varname, desc) std::mutex varname
70 #define TRACY_LOCK_GUARD(type, varname, var) std::lock_guard<type> varname(var);
71 #define TRACY_VK_CONTEXT(phys_device, device, queue, cmd_buffer)
72 #define TRACY_VK_DESTROY_CONTEXT(vk_context)
73 #define TRACY_VK_ZONE(vk_context, cmd_buffer, name)
74 #define TRACY_VK_ZONE_NAMED(vk_context, cmd_buffer, name, active)
75 #define TRACY_VK_COLLECT(vk_context, cmd_buffer)
76 #define TRACY_VK_CONTEXT_CALIBRATED(phys_device, device, queue, getTimeDomains, getCalibratedTimestamps)
77 #define TRACY_VK_CONTEXT_HOST_CALIBRATED(phys_device, device, queue, getTimeDomains, getCalibratedTimestamps)
78 #define TRACY_VK_ZONE_C(vk_context, cmd_buffer, name, color)
79 #define TRACY_VK_ZONE_NAMED_C(vk_context, cmd_buffer, name, color, active)
80 #define TRACY_VK_ZONE_TRANSIENT(vk_context, cmd_buffer, name, active)
81 #define TRACY_VK_CONTEXT_NAME(vk_context, name, size)
82 #define TRACY_ZONE_SCOPED_NAMED_ASSET(name)
83 #define TRACY_ZONE_SCOPED_NAMED_D_ASSET(stream_expr)
84#endif