12 #ifdef XPTI_ENABLE_INSTRUMENTATION
13 #include "xpti/xpti_trace_framework.hpp"
17 inline namespace _V1 {
19 #ifdef XPTI_ENABLE_INSTRUMENTATION
20 xpti::trace_event_data_t *XPTIRegistry::createTraceEvent(
21 const void *Obj,
const void *FuncPtr, uint64_t &IId,
22 const detail::code_location &CodeLoc, uint16_t TraceEventType) {
23 xpti::utils::StringHelper NG;
24 auto Name = NG.nameWithAddress<
void *>(CodeLoc.functionName(),
25 const_cast<void *
>(FuncPtr));
26 xpti::payload_t Payload(Name.c_str(),
27 (CodeLoc.fileName() ? CodeLoc.fileName() :
""),
28 CodeLoc.lineNumber(), CodeLoc.columnNumber(), Obj);
33 return xptiMakeEvent(Name.c_str(), &Payload, TraceEventType, xpti_at::active,
36 #endif // XPTI_ENABLE_INSTRUMENTATION
40 const void *HostObj,
const void *Type, uint32_t Dim, uint32_t ElemSize,
49 #ifdef XPTI_ENABLE_INSTRUMENTATION
51 constexpr uint16_t NotificationTraceType =
52 xpti::trace_offload_alloc_memory_object_construct;
53 if (!xptiCheckTraceEnabled(GBufferStreamID, NotificationTraceType))
57 xpti::offload_buffer_data_t BufConstr{(uintptr_t)UserObj,
62 {Range[0], Range[1], Range[2]}};
64 xpti::trace_event_data_t *TraceEvent = createTraceEvent(
65 UserObj,
"buffer", IId, CodeLoc, xpti::trace_offload_memory_object_event);
66 xptiNotifySubscribers(GBufferStreamID, NotificationTraceType,
nullptr,
67 TraceEvent, IId, &BufConstr);
75 #ifdef XPTI_ENABLE_INSTRUMENTATION
76 constexpr uint16_t NotificationTraceType =
77 xpti::trace_offload_alloc_memory_object_associate;
78 if (!xptiCheckTraceEnabled(GBufferStreamID, NotificationTraceType))
80 uint64_t IId = xptiGetUniqueId();
81 xpti::offload_association_data_t BufAssoc{(uintptr_t)UserObj,
85 xptiNotifySubscribers(GBufferStreamID, NotificationTraceType,
nullptr,
86 nullptr, IId, &BufAssoc);
94 #ifdef XPTI_ENABLE_INSTRUMENTATION
95 constexpr uint16_t NotificationTraceType =
96 xpti::trace_offload_alloc_memory_object_release;
97 if (!xptiCheckTraceEnabled(GBufferStreamID, NotificationTraceType))
99 uint64_t IId = xptiGetUniqueId();
100 xpti::offload_association_data_t BufRelease{(uintptr_t)UserObj,
104 xptiNotifySubscribers(GBufferStreamID, NotificationTraceType,
nullptr,
105 nullptr, IId, &BufRelease);
111 #ifdef XPTI_ENABLE_INSTRUMENTATION
112 constexpr uint16_t NotificationTraceType =
113 xpti::trace_offload_alloc_memory_object_destruct;
114 if (!xptiCheckTraceEnabled(GBufferStreamID, NotificationTraceType))
116 uint64_t IId = xptiGetUniqueId();
117 xpti::offload_buffer_data_t BufDestr{(uintptr_t)UserObj};
119 xptiNotifySubscribers(GBufferStreamID, NotificationTraceType,
nullptr,
120 nullptr, IId, &BufDestr);
125 const void *UserObj,
const void *AccessorObj, uint32_t Target,
132 #ifdef XPTI_ENABLE_INSTRUMENTATION
133 constexpr uint16_t NotificationTraceType = xpti::trace_offload_alloc_accessor;
134 if (!xptiCheckTraceEnabled(GBufferStreamID, NotificationTraceType))
138 xpti::offload_accessor_data_t AccessorConstr{
139 (uintptr_t)UserObj, (uintptr_t)AccessorObj, Target, Mode};
141 xpti::trace_event_data_t *TraceEvent = createTraceEvent(
142 UserObj,
"accessor", IId, CodeLoc, xpti::trace_offload_accessor_event);
143 xptiNotifySubscribers(GBufferStreamID, NotificationTraceType,
nullptr,
144 TraceEvent, IId, &AccessorConstr);
150 const void *HostObj, uint32_t Dim,
size_t Range[3], uint32_t ImageFormat,
151 uint32_t SamplerAddressingMode, uint32_t SamplerCoordinateNormalizationMode,
152 uint32_t SamplerFilteringMode) {
159 (void)SamplerAddressingMode;
160 (void)SamplerCoordinateNormalizationMode;
161 (void)SamplerFilteringMode;
162 #ifdef XPTI_ENABLE_INSTRUMENTATION
164 constexpr uint16_t NotificationTraceType =
165 xpti::trace_offload_alloc_memory_object_construct;
166 if (!xptiCheckTraceEnabled(GImageStreamID, NotificationTraceType))
170 xpti::offload_image_data_t ImgConstr{(uintptr_t)UserObj,
173 {Range[0], Range[1], Range[2]},
175 SamplerAddressingMode,
176 SamplerCoordinateNormalizationMode,
177 SamplerFilteringMode};
179 xpti::trace_event_data_t *TraceEvent =
180 createTraceEvent(UserObj,
"sampled_image", IId, CodeLoc,
181 xpti::trace_offload_memory_object_event);
182 xptiNotifySubscribers(GImageStreamID, NotificationTraceType,
nullptr,
183 TraceEvent, IId, &ImgConstr);
189 #ifdef XPTI_ENABLE_INSTRUMENTATION
190 constexpr uint16_t NotificationTraceType =
191 xpti::trace_offload_alloc_memory_object_destruct;
192 if (!xptiCheckTraceEnabled(GImageStreamID, NotificationTraceType))
194 uint64_t IId = xptiGetUniqueId();
195 xpti::offload_image_data_t ImgDestr{(uintptr_t)UserObj};
197 xptiNotifySubscribers(GImageStreamID, NotificationTraceType,
nullptr,
nullptr,
204 const void *HostObj, uint32_t Dim,
size_t Range[3], uint32_t ImageFormat) {
211 #ifdef XPTI_ENABLE_INSTRUMENTATION
213 constexpr uint16_t NotificationTraceType =
214 xpti::trace_offload_alloc_memory_object_construct;
215 if (!xptiCheckTraceEnabled(GImageStreamID, NotificationTraceType))
219 xpti::offload_image_data_t ImgConstr{(uintptr_t)UserObj,
222 {Range[0], Range[1], Range[2]},
229 xpti::trace_event_data_t *TraceEvent =
230 createTraceEvent(UserObj,
"unsampled_image", IId, CodeLoc,
231 xpti::trace_offload_memory_object_event);
232 xptiNotifySubscribers(GImageStreamID, NotificationTraceType,
nullptr,
233 TraceEvent, IId, &ImgConstr);
239 #ifdef XPTI_ENABLE_INSTRUMENTATION
240 constexpr uint16_t NotificationTraceType =
241 xpti::trace_offload_alloc_memory_object_destruct;
242 if (!xptiCheckTraceEnabled(GImageStreamID, NotificationTraceType))
244 uint64_t IId = xptiGetUniqueId();
245 xpti::offload_image_data_t ImgDestr{(uintptr_t)UserObj};
247 xptiNotifySubscribers(GImageStreamID, NotificationTraceType,
nullptr,
nullptr,
253 const void *UserObj,
const void *AccessorObj, uint32_t Target,
254 uint32_t Mode,
const void *Type, uint32_t ElemSize,
263 #ifdef XPTI_ENABLE_INSTRUMENTATION
264 constexpr uint16_t NotificationTraceType = xpti::trace_offload_alloc_accessor;
265 if (!xptiCheckTraceEnabled(GImageStreamID, NotificationTraceType))
269 xpti::offload_image_accessor_data_t AccessorConstr{(uintptr_t)UserObj,
270 (uintptr_t)AccessorObj,
276 xpti::trace_event_data_t *TraceEvent =
277 createTraceEvent(UserObj,
"unsampled_image_accessor", IId, CodeLoc,
278 xpti::trace_offload_accessor_event);
279 xptiNotifySubscribers(GImageStreamID, NotificationTraceType,
nullptr,
280 TraceEvent, IId, &AccessorConstr);
285 const void *UserObj,
const void *AccessorObj, uint32_t Mode,
293 #ifdef XPTI_ENABLE_INSTRUMENTATION
294 constexpr uint16_t NotificationTraceType = xpti::trace_offload_alloc_accessor;
295 if (!xptiCheckTraceEnabled(GImageStreamID, NotificationTraceType))
299 xpti::offload_image_accessor_data_t AccessorConstr{
300 (uintptr_t)UserObj, (uintptr_t)AccessorObj,
302 (
const char *)Type, ElemSize};
304 xpti::trace_event_data_t *TraceEvent =
305 createTraceEvent(UserObj,
"host_unsampled_image_accessor", IId, CodeLoc,
306 xpti::trace_offload_accessor_event);
307 xptiNotifySubscribers(GImageStreamID, NotificationTraceType,
nullptr,
308 TraceEvent, IId, &AccessorConstr);
313 const void *UserObj,
const void *AccessorObj, uint32_t Target,
321 #ifdef XPTI_ENABLE_INSTRUMENTATION
322 constexpr uint16_t NotificationTraceType = xpti::trace_offload_alloc_accessor;
323 if (!xptiCheckTraceEnabled(GImageStreamID, NotificationTraceType))
327 xpti::offload_image_accessor_data_t AccessorConstr{
328 (uintptr_t)UserObj, (uintptr_t)AccessorObj, Target,
329 std::nullopt, (
const char *)Type, ElemSize};
331 xpti::trace_event_data_t *TraceEvent =
332 createTraceEvent(UserObj,
"sampled_image_accessor", IId, CodeLoc,
333 xpti::trace_offload_accessor_event);
334 xptiNotifySubscribers(GImageStreamID, NotificationTraceType,
nullptr,
335 TraceEvent, IId, &AccessorConstr);
340 const void *UserObj,
const void *AccessorObj,
const void *Type,
347 #ifdef XPTI_ENABLE_INSTRUMENTATION
348 constexpr uint16_t NotificationTraceType = xpti::trace_offload_alloc_accessor;
349 if (!xptiCheckTraceEnabled(GImageStreamID, NotificationTraceType))
353 xpti::offload_image_accessor_data_t AccessorConstr{
354 (uintptr_t)UserObj, (uintptr_t)AccessorObj, std::nullopt,
355 std::nullopt, (
const char *)Type, ElemSize};
357 xpti::trace_event_data_t *TraceEvent =
358 createTraceEvent(UserObj,
"host_sampled_image_accessor", IId, CodeLoc,
359 xpti::trace_offload_accessor_event);
360 xptiNotifySubscribers(GImageStreamID, NotificationTraceType,
nullptr,
361 TraceEvent, IId, &AccessorConstr);