1 /* 2 * Copyright (c) 2021 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef GRAPHIC_RS_TRACE_H 17 #define GRAPHIC_RS_TRACE_H 18 19 #if !defined(ROSEN_TRACE_DISABLE) || defined(CROSS_PLATFORM) 20 #include "hitrace_meter.h" 21 // deprecated:USE RS_TRACE_BEGIN_XXX instead 22 #define ROSEN_TRACE_BEGIN(tag, name) StartTrace(tag, name) 23 #define RS_TRACE_BEGIN(name) ROSEN_TRACE_BEGIN(HITRACE_TAG_GRAPHIC_AGP | HITRACE_TAG_COMMERCIAL, name) 24 // deprecated:USE RS_TRACE_END_XXX instead 25 #define ROSEN_TRACE_END(tag) FinishTrace(tag) 26 #define RS_TRACE_END() ROSEN_TRACE_END(HITRACE_TAG_GRAPHIC_AGP | HITRACE_TAG_COMMERCIAL) 27 #define RS_TRACE_NAME(name) HITRACE_METER_NAME(HITRACE_TAG_GRAPHIC_AGP | HITRACE_TAG_COMMERCIAL, name) 28 #define RS_TRACE_NAME_FMT(fmt, ...) \ 29 HITRACE_METER_FMT(HITRACE_TAG_GRAPHIC_AGP | HITRACE_TAG_COMMERCIAL, fmt, ##__VA_ARGS__) 30 #define RS_ASYNC_TRACE_BEGIN(name, value) StartAsyncTrace(HITRACE_TAG_GRAPHIC_AGP | HITRACE_TAG_COMMERCIAL, name, value) 31 #define RS_ASYNC_TRACE_END(name, value) FinishAsyncTrace(HITRACE_TAG_GRAPHIC_AGP | HITRACE_TAG_COMMERCIAL, name, value) 32 #define RS_TRACE_INT(name, value) CountTrace(HITRACE_TAG_GRAPHIC_AGP | HITRACE_TAG_COMMERCIAL, name, value) 33 #define RS_TRACE_FUNC() RS_TRACE_NAME(__func__) 34 35 // DEBUG level 36 #define RS_TRACE_BEGIN_DEBUG(name, customArgs) \ 37 StartTraceEx(HiTraceOutputLevel::HITRACE_LEVEL_DEBUG, HITRACE_TAG_GRAPHIC_AGP, name, customArgs) 38 #define RS_TRACE_END_DEBUG(name) \ 39 FinishTraceEx(HiTraceOutputLevel::HITRACE_LEVEL_DEBUG, HITRACE_TAG_GRAPHIC_AGP) 40 #define RS_TRACE_NAME_DEBUG(name, customArgs) \ 41 HITRACE_METER_NAME_EX(HiTraceOutputLevel::HITRACE_LEVEL_DEBUG, HITRACE_TAG_GRAPHIC_AGP, name, customArgs) 42 #define RS_TRACE_NAME_FMT_DEBUG(customArgs, fmt, ...) \ 43 HITRACE_METER_FMT_EX(HiTraceOutputLevel::HITRACE_LEVEL_DEBUG, HITRACE_TAG_GRAPHIC_AGP, \ 44 customArgs, fmt, ##__VA_ARGS__) 45 #define RS_ASYNC_TRACE_BEGIN_DEBUG(name, value, customCategory, customArgs) \ 46 StartAsyncTraceEx(HiTraceOutputLevel::HITRACE_LEVEL_DEBUG, HITRACE_TAG_GRAPHIC_AGP, name, value, \ 47 customCategory, customArgs) 48 #define RS_ASYNC_TRACE_END_DEBUG(name, value) \ 49 FinishAsyncTraceEx(HiTraceOutputLevel::HITRACE_LEVEL_DEBUG, HITRACE_TAG_GRAPHIC_AGP, name, value) 50 #define RS_TRACE_INT_DEBUG(name, value) \ 51 CountTraceEx(HiTraceOutputLevel::HITRACE_LEVEL_DEBUG, HITRACE_TAG_GRAPHIC_AGP, name, value) 52 #define RS_TRACE_FUNC_DEBUG() RS_TRACE_NAME_DEBUG(__func__, "") 53 54 // INFO level 55 #define RS_TRACE_BEGIN_INFO(name, customArgs) \ 56 StartTraceEx(HiTraceOutputLevel::HITRACE_LEVEL_INFO, HITRACE_TAG_GRAPHIC_AGP, name, customArgs) 57 #define RS_TRACE_END_INFO(name) \ 58 FinishTraceEx(HiTraceOutputLevel::HITRACE_LEVEL_INFO, HITRACE_TAG_GRAPHIC_AGP) 59 #define RS_TRACE_NAME_INFO(name, customArgs) \ 60 HITRACE_METER_NAME_EX(HiTraceOutputLevel::HITRACE_LEVEL_INFO, HITRACE_TAG_GRAPHIC_AGP, name, customArgs) 61 #define RS_TRACE_NAME_FMT_INFO(customArgs, fmt, ...) \ 62 HITRACE_METER_FMT_EX(HiTraceOutputLevel::HITRACE_LEVEL_INFO, HITRACE_TAG_GRAPHIC_AGP, \ 63 customArgs, fmt, ##__VA_ARGS__) 64 #define RS_ASYNC_TRACE_BEGIN_INFO(name, value, customCategory, customArgs) \ 65 StartAsyncTraceEx(HiTraceOutputLevel::HITRACE_LEVEL_INFO, HITRACE_TAG_GRAPHIC_AGP, name, value, \ 66 customCategory, customArgs) 67 #define RS_ASYNC_TRACE_END_INFO(name, value) \ 68 FinishAsyncTraceEx(HiTraceOutputLevel::HITRACE_LEVEL_INFO, HITRACE_TAG_GRAPHIC_AGP, name, value) 69 #define RS_TRACE_INT_INFO(name, value) \ 70 CountTraceEx(HiTraceOutputLevel::HITRACE_LEVEL_INFO, HITRACE_TAG_GRAPHIC_AGP, name, value) 71 #define RS_TRACE_FUNC_INFO() RS_TRACE_NAME_INFO(__func__, "") 72 73 // CRITICAL level 74 #define RS_TRACE_BEGIN_CRITICAL(name, customArgs) \ 75 StartTraceEx(HiTraceOutputLevel::HITRACE_LEVEL_CRITICAL, HITRACE_TAG_GRAPHIC_AGP, name, customArgs) 76 #define RS_TRACE_END_CRITICAL(name) \ 77 FinishTraceEx(HiTraceOutputLevel::HITRACE_LEVEL_CRITICAL, HITRACE_TAG_GRAPHIC_AGP) 78 #define RS_TRACE_NAME_CRITICAL(name, customArgs) \ 79 HITRACE_METER_NAME_EX(HiTraceOutputLevel::HITRACE_LEVEL_CRITICAL, HITRACE_TAG_GRAPHIC_AGP, name, customArgs) 80 #define RS_TRACE_NAME_FMT_CRITICAL(customArgs, fmt, ...) \ 81 HITRACE_METER_FMT_EX(HiTraceOutputLevel::HITRACE_LEVEL_CRITICAL, HITRACE_TAG_GRAPHIC_AGP, \ 82 customArgs, fmt, ##__VA_ARGS__) 83 #define RS_ASYNC_TRACE_BEGIN_CRITICAL(name, value, customCategory, customArgs) \ 84 StartAsyncTraceEx(HiTraceOutputLevel::HITRACE_LEVEL_CRITICAL, HITRACE_TAG_GRAPHIC_AGP, name, value, \ 85 customCategory, customArgs) 86 #define RS_ASYNC_TRACE_END_CRITICAL(name, value) \ 87 FinishAsyncTraceEx(HiTraceOutputLevel::HITRACE_LEVEL_CRITICAL, HITRACE_TAG_GRAPHIC_AGP, name, value) 88 #define RS_TRACE_INT_CRITICAL(name, value) \ 89 CountTraceEx(HiTraceOutputLevel::HITRACE_LEVEL_CRITICAL, HITRACE_TAG_GRAPHIC_AGP, name, value) 90 #define RS_TRACE_FUNC_CRITICAL() RS_TRACE_NAME_CRITICAL(__func__, "") 91 92 // COMMERCIAL level 93 #define RS_TRACE_BEGIN_COMMERCIAL(name, customArgs) \ 94 StartTraceEx(HiTraceOutputLevel::HITRACE_LEVEL_COMMERCIAL, HITRACE_TAG_GRAPHIC_AGP, name, customArgs) 95 #define RS_TRACE_END_COMMERCIAL(name) \ 96 FinishTraceEx(HiTraceOutputLevel::HITRACE_LEVEL_COMMERCIAL, HITRACE_TAG_GRAPHIC_AGP) 97 #define RS_TRACE_NAME_COMMERCIAL(name, customArgs) \ 98 HITRACE_METER_NAME_EX(HiTraceOutputLevel::HITRACE_LEVEL_COMMERCIAL, HITRACE_TAG_GRAPHIC_AGP, name, customArgs) 99 #define RS_TRACE_NAME_FMT_COMMERCIAL(customArgs, fmt, ...) \ 100 HITRACE_METER_FMT_EX(HiTraceOutputLevel::HITRACE_LEVEL_COMMERCIAL, HITRACE_TAG_GRAPHIC_AGP, \ 101 customArgs, fmt, ##__VA_ARGS__) 102 #define RS_ASYNC_TRACE_BEGIN_COMMERCIAL(name, value, customCategory, customArgs) \ 103 StartAsyncTraceEx(HiTraceOutputLevel::HITRACE_LEVEL_COMMERCIAL, HITRACE_TAG_GRAPHIC_AGP, name, value, \ 104 customCategory, customArgs) 105 #define RS_ASYNC_TRACE_END_COMMERCIAL(name, value) \ 106 FinishAsyncTraceEx(HiTraceOutputLevel::HITRACE_LEVEL_COMMERCIAL, HITRACE_TAG_GRAPHIC_AGP, name, value) 107 #define RS_TRACE_INT_COMMERCIAL(name, value) \ 108 CountTraceEx(HiTraceOutputLevel::HITRACE_LEVEL_COMMERCIAL, HITRACE_TAG_GRAPHIC_AGP, name, value) 109 #define RS_TRACE_FUNC_COMMERCIAL() RS_TRACE_NAME_COMMERCIAL(__func__, "") 110 111 #elif defined(ROSEN_ANDROID) && !defined(RUNTIME_MODE_RELEASE) 112 #include "rs_trace_crossplatform.h" 113 #else 114 115 #define ROSEN_TRACE_BEGIN(tag, name) 116 #define RS_TRACE_BEGIN(name) 117 #define ROSEN_TRACE_END(tag) 118 #define RS_TRACE_END() 119 #define RS_TRACE_NAME_FMT(fmt, ...) 120 #define RS_ASYNC_TRACE_BEGIN(name, value) 121 #define RS_ASYNC_TRACE_END(name, value) 122 #define RS_TRACE_INT(name, value) 123 #define RS_TRACE_NAME(name) 124 #define RS_TRACE_FUNC() 125 126 // DEBUG level 127 #define RS_TRACE_BEGIN_DEBUG(name, customArgs) 128 #define RS_TRACE_END_DEBUG(name) 129 #define RS_TRACE_NAME_DEBUG(name, customArgs) 130 #define RS_TRACE_NAME_FMT_DEBUG(customArgs, fmt, ...) 131 #define RS_ASYNC_TRACE_BEGIN_DEBUG(name, value, customCategory, customArgs) 132 #define RS_ASYNC_TRACE_END_DEBUG(name, value) 133 #define RS_TRACE_INT_DEBUG(name, value) 134 #define RS_TRACE_FUNC_DEBUG() 135 136 // INFO level 137 #define RS_TRACE_BEGIN_INFO(name, customArgs) 138 #define RS_TRACE_END_INFO(name) 139 #define RS_TRACE_NAME_INFO(name, customArgs) 140 #define RS_TRACE_NAME_FMT_INFO(customArgs, fmt, ...) 141 #define RS_ASYNC_TRACE_BEGIN_INFO(name, value, customCategory, customArgs) 142 #define RS_ASYNC_TRACE_END_INFO(name, value) 143 #define RS_TRACE_INT_INFO(name, value) 144 #define RS_TRACE_FUNC_INFO() 145 146 // CRITICAL level 147 #define RS_TRACE_BEGIN_CRITICAL(name, customArgs) 148 #define RS_TRACE_END_CRITICAL(name) 149 #define RS_TRACE_NAME_CRITICAL(name, customArgs) 150 #define RS_TRACE_NAME_FMT_CRITICAL(customArgs, fmt, ...) 151 #define RS_ASYNC_TRACE_BEGIN_CRITICAL(name, value, customCategory, customArgs) 152 #define RS_ASYNC_TRACE_END_CRITICAL(name, value) 153 #define RS_TRACE_INT_CRITICAL(name, value) 154 #define RS_TRACE_FUNC_CRITICAL() 155 156 // COMMERCIAL level 157 #define RS_TRACE_BEGIN_COMMERCIAL(name, customArgs) 158 #define RS_TRACE_END_COMMERCIAL(name) 159 #define RS_TRACE_NAME_COMMERCIAL(name, customArgs) 160 #define RS_TRACE_NAME_FMT_COMMERCIAL(customArgs, fmt, ...) 161 #define RS_ASYNC_TRACE_BEGIN_COMMERCIAL(name, value, customCategory, customArgs) 162 #define RS_ASYNC_TRACE_END_COMMERCIAL(name, value) 163 #define RS_TRACE_INT_COMMERCIAL(name, value) 164 #define RS_TRACE_FUNC_COMMERCIAL() 165 #endif //ROSEN_TRACE_DISABLE 166 167 #endif // GRAPHIC_RS_TRACE_H 168