aboutsummaryrefslogtreecommitdiff
path: root/NvBlast/sdk/profiler/NvBlastProfilerInternal.h
diff options
context:
space:
mode:
Diffstat (limited to 'NvBlast/sdk/profiler/NvBlastProfilerInternal.h')
-rw-r--r--NvBlast/sdk/profiler/NvBlastProfilerInternal.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/NvBlast/sdk/profiler/NvBlastProfilerInternal.h b/NvBlast/sdk/profiler/NvBlastProfilerInternal.h
new file mode 100644
index 0000000..9be3c87
--- /dev/null
+++ b/NvBlast/sdk/profiler/NvBlastProfilerInternal.h
@@ -0,0 +1,58 @@
+/*
+* Copyright (c) 2016-2017, NVIDIA CORPORATION. All rights reserved.
+*
+* NVIDIA CORPORATION and its licensors retain all intellectual property
+* and proprietary rights in and to this software, related documentation
+* and any modifications thereto. Any use, reproduction, disclosure or
+* distribution of this software and related documentation without an express
+* license agreement from NVIDIA CORPORATION is strictly prohibited.
+*/
+
+#ifndef NVBLASTPROFILERINTERNAL_H
+#define NVBLASTPROFILERINTERNAL_H
+
+#include "NvBlastPreprocessor.h"
+#include "NvBlastProfiler.h"
+
+#if NV_PROFILE || NV_CHECKED || NV_DEBUG
+
+void NvBlastProfilerBegin(const char* name, NvBlastProfilerDetail::Level);
+void NvBlastProfilerEnd(const char* name, NvBlastProfilerDetail::Level);
+
+class ProfileScope
+{
+public:
+ ProfileScope(const char* name, NvBlastProfilerDetail::Level level) :m_name(name), m_level(level)
+ {
+ NvBlastProfilerBegin(m_name, m_level);
+ }
+
+ ~ProfileScope()
+ {
+ NvBlastProfilerEnd(m_name, m_level);
+ }
+
+private:
+ const char* m_name;
+ NvBlastProfilerDetail::Level m_level;
+};
+
+#define PERF_BLAST_PREFIX "Blast: "
+#define PERF_ZONE_BEGIN(name) NvBlastProfilerBegin(PERF_BLAST_PREFIX name, NvBlastProfilerDetail::HIGH)
+#define PERF_ZONE_END(name) NvBlastProfilerEnd(PERF_BLAST_PREFIX name, NvBlastProfilerDetail::HIGH)
+#define PERF_SCOPE(name, detail) ProfileScope PX_CONCAT(_scope,__LINE__) (PERF_BLAST_PREFIX name, detail)
+#define PERF_SCOPE_L(name) PERF_SCOPE(name, NvBlastProfilerDetail::LOW)
+#define PERF_SCOPE_M(name) PERF_SCOPE(name, NvBlastProfilerDetail::MEDIUM)
+#define PERF_SCOPE_H(name) PERF_SCOPE(name, NvBlastProfilerDetail::HIGH)
+
+#else
+
+#define PERF_ZONE_BEGIN(name)
+#define PERF_ZONE_END(name)
+#define PERF_SCOPE_L(name)
+#define PERF_SCOPE_M(name)
+#define PERF_SCOPE_H(name)
+
+#endif
+
+#endif