blob: 574e90d8cd33626d7dea6165f7797cb2c28366e8 [file] [log] [blame]
// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SRC_GRAPHICS_LIB_COMPUTE_SPINEL_PLATFORMS_VK_TRACE_H_
#define SRC_GRAPHICS_LIB_COMPUTE_SPINEL_PLATFORMS_VK_TRACE_H_
//
// PLATFORM?
//
#ifdef __Fuchsia__
#include <lib/trace/event.h>
#endif
#ifdef SPN_VK_ENABLE_DEBUG_UTILS
#include "common/vk/debug_utils.h"
#endif
//
// Invoked tracing functions pass the name of the calling function and the line
// number of the invocation.
//
// clang-format off
#if !defined(SPN_VK_DISABLE_TRACE) && (defined(SPN_VK_ENABLE_DEBUG_UTILS) || (defined(__Fuchsia__) && !defined(NTRACE)))
#define SPN_VK_TRACE_DEFINE(func_, ...) func_##_trace(__VA_ARGS__, char const * trace_name_, uint32_t trace_line_)
#define SPN_VK_TRACE_INVOKE(func_, ...) func_##_trace(__VA_ARGS__, __func__, __LINE__)
#else
#define SPN_VK_TRACE_DEFINE(func_, ...) func_(__VA_ARGS__)
#endif
// clang-format on
//
// HOST
//
#if !defined(SPN_VK_DISABLE_TRACE) && (defined(__Fuchsia__) && !defined(NTRACE))
#define SPN_VK_TRACE_CATEGORY "gfx"
#define SPN_VK_TRACE_HOST_DURATION_BEGIN() \
TRACE_DURATION_BEGIN(SPN_VK_TRACE_CATEGORY, /**/ \
trace_name_, \
"line", \
TA_UINT32(trace_line_))
#define SPN_VK_TRACE_HOST_DURATION_END() \
TRACE_DURATION_END(SPN_VK_TRACE_CATEGORY, /**/ \
trace_name_)
#define SPN_VK_TRACE_HOST_DURATION_BEGIN_REGION(region_name_) \
TRACE_DURATION_BEGIN(SPN_VK_TRACE_CATEGORY, /**/ \
trace_name_, \
"line", \
TA_UINT32(trace_line_), \
"region", \
TA_STRING(region_name_))
#define SPN_VK_TRACE_HOST_DURATION_END_REGION() \
TRACE_DURATION_END(SPN_VK_TRACE_CATEGORY, /**/ \
trace_name_)
#else
#define SPN_VK_TRACE_HOST_DURATION_BEGIN()
#define SPN_VK_TRACE_HOST_DURATION_END()
#define SPN_VK_TRACE_HOST_DURATION_BEGIN_REGION(region_name_)
#define SPN_VK_TRACE_HOST_DURATION_END_REGION()
#endif
//
// DEVICE
//
#if !defined(SPN_VK_DISABLE_TRACE) && defined(SPN_VK_ENABLE_DEBUG_UTILS)
#define SPN_VK_TRACE_DEVICE_BEGIN_COMMAND_BUFFER(cb_) \
if (pfn_vkCmdBeginDebugUtilsLabelEXT != NULL) \
{ \
VkDebugUtilsLabelEXT const label = { \
.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, \
.pNext = NULL, \
.pLabelName = trace_name_, \
.color = { 0.0f, 0.0f, 0.0f, 0.0f }, \
}; \
\
pfn_vkCmdBeginDebugUtilsLabelEXT(cb_, &label); \
}
#define SPN_VK_TRACE_DEVICE_END_COMMAND_BUFFER(cb_) \
if (pfn_vkCmdEndDebugUtilsLabelEXT != NULL) \
{ \
pfn_vkCmdEndDebugUtilsLabelEXT(cb_); \
}
#else
#define SPN_VK_TRACE_DEVICE_BEGIN_COMMAND_BUFFER(cb_)
#define SPN_VK_TRACE_DEVICE_END_COMMAND_BUFFER(cb_)
#endif
//
//
//
#endif // SRC_GRAPHICS_LIB_COMPUTE_SPINEL_PLATFORMS_VK_TRACE_H_