1 /*
2  * Copyright (C) 2020-2021 Intel Corporation
3  *
4  * SPDX-License-Identifier: MIT
5  *
6  */
7 
8 #include "level_zero/experimental/source/tracing/tracing_imp.h"
9 
10 ZE_APIEXPORT ze_result_t ZE_APICALL
zeModuleCreate_Tracing(ze_context_handle_t hContext,ze_device_handle_t hDevice,const ze_module_desc_t * desc,ze_module_handle_t * phModule,ze_module_build_log_handle_t * phBuildLog)11 zeModuleCreate_Tracing(ze_context_handle_t hContext,
12                        ze_device_handle_t hDevice,
13                        const ze_module_desc_t *desc,
14                        ze_module_handle_t *phModule,
15                        ze_module_build_log_handle_t *phBuildLog) {
16 
17     ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Module.pfnCreate,
18                                hContext,
19                                hDevice,
20                                desc,
21                                phModule,
22                                phBuildLog);
23 
24     ze_module_create_params_t tracerParams;
25     tracerParams.phContext = &hContext;
26     tracerParams.phDevice = &hDevice;
27     tracerParams.pdesc = &desc;
28     tracerParams.pphModule = &phModule;
29     tracerParams.pphBuildLog = &phBuildLog;
30 
31     L0::APITracerCallbackDataImp<ze_pfnModuleCreateCb_t> apiCallbackData;
32 
33     ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnModuleCreateCb_t, Module, pfnCreateCb);
34 
35     return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Module.pfnCreate,
36                                    &tracerParams,
37                                    apiCallbackData.apiOrdinal,
38                                    apiCallbackData.prologCallbacks,
39                                    apiCallbackData.epilogCallbacks,
40                                    *tracerParams.phContext,
41                                    *tracerParams.phDevice,
42                                    *tracerParams.pdesc,
43                                    *tracerParams.pphModule,
44                                    *tracerParams.pphBuildLog);
45 }
46 
47 ZE_APIEXPORT ze_result_t ZE_APICALL
zeModuleDestroy_Tracing(ze_module_handle_t hModule)48 zeModuleDestroy_Tracing(ze_module_handle_t hModule) {
49 
50     ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Module.pfnDestroy,
51                                hModule);
52 
53     ze_module_destroy_params_t tracerParams;
54     tracerParams.phModule = &hModule;
55 
56     L0::APITracerCallbackDataImp<ze_pfnModuleDestroyCb_t> apiCallbackData;
57 
58     ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnModuleDestroyCb_t, Module, pfnDestroyCb);
59 
60     return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Module.pfnDestroy,
61                                    &tracerParams,
62                                    apiCallbackData.apiOrdinal,
63                                    apiCallbackData.prologCallbacks,
64                                    apiCallbackData.epilogCallbacks,
65                                    *tracerParams.phModule);
66 }
67 
68 ZE_APIEXPORT ze_result_t ZE_APICALL
zeModuleBuildLogDestroy_Tracing(ze_module_build_log_handle_t hModuleBuildLog)69 zeModuleBuildLogDestroy_Tracing(ze_module_build_log_handle_t hModuleBuildLog) {
70 
71     ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.ModuleBuildLog.pfnDestroy,
72                                hModuleBuildLog);
73 
74     ze_module_build_log_destroy_params_t tracerParams;
75     tracerParams.phModuleBuildLog = &hModuleBuildLog;
76 
77     L0::APITracerCallbackDataImp<ze_pfnModuleBuildLogDestroyCb_t> apiCallbackData;
78 
79     ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnModuleBuildLogDestroyCb_t, ModuleBuildLog, pfnDestroyCb);
80 
81     return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.ModuleBuildLog.pfnDestroy,
82                                    &tracerParams,
83                                    apiCallbackData.apiOrdinal,
84                                    apiCallbackData.prologCallbacks,
85                                    apiCallbackData.epilogCallbacks,
86                                    *tracerParams.phModuleBuildLog);
87 }
88 
89 ZE_APIEXPORT ze_result_t ZE_APICALL
zeModuleBuildLogGetString_Tracing(ze_module_build_log_handle_t hModuleBuildLog,size_t * pSize,char * pBuildLog)90 zeModuleBuildLogGetString_Tracing(ze_module_build_log_handle_t hModuleBuildLog,
91                                   size_t *pSize,
92                                   char *pBuildLog) {
93 
94     ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.ModuleBuildLog.pfnGetString,
95                                hModuleBuildLog,
96                                pSize,
97                                pBuildLog);
98 
99     ze_module_build_log_get_string_params_t tracerParams;
100     tracerParams.phModuleBuildLog = &hModuleBuildLog;
101     tracerParams.ppSize = &pSize;
102     tracerParams.ppBuildLog = &pBuildLog;
103 
104     L0::APITracerCallbackDataImp<ze_pfnModuleBuildLogGetStringCb_t> apiCallbackData;
105 
106     ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnModuleBuildLogGetStringCb_t, ModuleBuildLog, pfnGetStringCb);
107 
108     return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.ModuleBuildLog.pfnGetString,
109                                    &tracerParams,
110                                    apiCallbackData.apiOrdinal,
111                                    apiCallbackData.prologCallbacks,
112                                    apiCallbackData.epilogCallbacks,
113                                    *tracerParams.phModuleBuildLog,
114                                    *tracerParams.ppSize,
115                                    *tracerParams.ppBuildLog);
116 }
117 
118 ZE_APIEXPORT ze_result_t ZE_APICALL
zeModuleGetNativeBinary_Tracing(ze_module_handle_t hModule,size_t * pSize,uint8_t * pModuleNativeBinary)119 zeModuleGetNativeBinary_Tracing(ze_module_handle_t hModule,
120                                 size_t *pSize,
121                                 uint8_t *pModuleNativeBinary) {
122 
123     ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Module.pfnGetNativeBinary,
124                                hModule,
125                                pSize,
126                                pModuleNativeBinary);
127 
128     ze_module_get_native_binary_params_t tracerParams;
129     tracerParams.phModule = &hModule;
130     tracerParams.ppSize = &pSize;
131     tracerParams.ppModuleNativeBinary = &pModuleNativeBinary;
132 
133     L0::APITracerCallbackDataImp<ze_pfnModuleGetNativeBinaryCb_t> apiCallbackData;
134 
135     ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnModuleGetNativeBinaryCb_t, Module, pfnGetNativeBinaryCb);
136 
137     return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Module.pfnGetNativeBinary,
138                                    &tracerParams,
139                                    apiCallbackData.apiOrdinal,
140                                    apiCallbackData.prologCallbacks,
141                                    apiCallbackData.epilogCallbacks,
142                                    *tracerParams.phModule,
143                                    *tracerParams.ppSize,
144                                    *tracerParams.ppModuleNativeBinary);
145 }
146 
147 ZE_APIEXPORT ze_result_t ZE_APICALL
zeModuleGetGlobalPointer_Tracing(ze_module_handle_t hModule,const char * pGlobalName,size_t * pSize,void ** pptr)148 zeModuleGetGlobalPointer_Tracing(ze_module_handle_t hModule,
149                                  const char *pGlobalName,
150                                  size_t *pSize,
151                                  void **pptr) {
152 
153     ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Module.pfnGetGlobalPointer,
154                                hModule,
155                                pGlobalName,
156                                pSize,
157                                pptr);
158 
159     ze_module_get_global_pointer_params_t tracerParams;
160     tracerParams.phModule = &hModule;
161     tracerParams.ppGlobalName = &pGlobalName;
162     tracerParams.ppSize = &pSize;
163     tracerParams.ppptr = &pptr;
164 
165     L0::APITracerCallbackDataImp<ze_pfnModuleGetGlobalPointerCb_t> apiCallbackData;
166 
167     ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnModuleGetGlobalPointerCb_t, Module, pfnGetGlobalPointerCb);
168 
169     return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Module.pfnGetGlobalPointer,
170                                    &tracerParams,
171                                    apiCallbackData.apiOrdinal,
172                                    apiCallbackData.prologCallbacks,
173                                    apiCallbackData.epilogCallbacks,
174                                    *tracerParams.phModule,
175                                    *tracerParams.ppGlobalName,
176                                    *tracerParams.ppSize,
177                                    *tracerParams.ppptr);
178 }
179 
180 ZE_APIEXPORT ze_result_t ZE_APICALL
zeModuleDynamicLink_Tracing(uint32_t numModules,ze_module_handle_t * phModules,ze_module_build_log_handle_t * phLinkLog)181 zeModuleDynamicLink_Tracing(uint32_t numModules,
182                             ze_module_handle_t *phModules,
183                             ze_module_build_log_handle_t *phLinkLog) {
184 
185     ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Module.pfnDynamicLink,
186                                numModules,
187                                phModules,
188                                phLinkLog);
189 
190     ze_module_dynamic_link_params_t tracerParams;
191     tracerParams.pnumModules = &numModules;
192     tracerParams.pphModules = &phModules;
193     tracerParams.pphLinkLog = &phLinkLog;
194 
195     L0::APITracerCallbackDataImp<ze_pfnModuleDynamicLinkCb_t> apiCallbackData;
196 
197     ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnModuleDynamicLinkCb_t, Module, pfnDynamicLinkCb);
198 
199     return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Module.pfnDynamicLink,
200                                    &tracerParams,
201                                    apiCallbackData.apiOrdinal,
202                                    apiCallbackData.prologCallbacks,
203                                    apiCallbackData.epilogCallbacks,
204                                    *tracerParams.pnumModules,
205                                    *tracerParams.pphModules,
206                                    *tracerParams.pphLinkLog);
207 }
208 
209 ZE_APIEXPORT ze_result_t ZE_APICALL
zeModuleGetProperties_Tracing(ze_module_handle_t hModule,ze_module_properties_t * pModuleProperties)210 zeModuleGetProperties_Tracing(ze_module_handle_t hModule,
211                               ze_module_properties_t *pModuleProperties) {
212 
213     ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Module.pfnGetProperties,
214                                hModule,
215                                pModuleProperties);
216 
217     ze_module_get_properties_params_t tracerParams;
218     tracerParams.phModule = &hModule;
219     tracerParams.ppModuleProperties = &pModuleProperties;
220 
221     L0::APITracerCallbackDataImp<ze_pfnModuleGetPropertiesCb_t> apiCallbackData;
222 
223     ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnModuleGetPropertiesCb_t, Module, pfnGetPropertiesCb);
224 
225     return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Module.pfnGetProperties,
226                                    &tracerParams,
227                                    apiCallbackData.apiOrdinal,
228                                    apiCallbackData.prologCallbacks,
229                                    apiCallbackData.epilogCallbacks,
230                                    *tracerParams.phModule,
231                                    *tracerParams.ppModuleProperties);
232 }
233 
234 ZE_APIEXPORT ze_result_t ZE_APICALL
zeKernelCreate_Tracing(ze_module_handle_t hModule,const ze_kernel_desc_t * desc,ze_kernel_handle_t * phKernel)235 zeKernelCreate_Tracing(ze_module_handle_t hModule,
236                        const ze_kernel_desc_t *desc,
237                        ze_kernel_handle_t *phKernel) {
238 
239     ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Kernel.pfnCreate,
240                                hModule,
241                                desc,
242                                phKernel);
243 
244     ze_kernel_create_params_t tracerParams;
245     tracerParams.phModule = &hModule;
246     tracerParams.pdesc = &desc;
247     tracerParams.pphKernel = &phKernel;
248 
249     L0::APITracerCallbackDataImp<ze_pfnKernelCreateCb_t> apiCallbackData;
250 
251     ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnKernelCreateCb_t, Kernel, pfnCreateCb);
252 
253     return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Kernel.pfnCreate,
254                                    &tracerParams,
255                                    apiCallbackData.apiOrdinal,
256                                    apiCallbackData.prologCallbacks,
257                                    apiCallbackData.epilogCallbacks,
258                                    *tracerParams.phModule,
259                                    *tracerParams.pdesc,
260                                    *tracerParams.pphKernel);
261 }
262 
263 ZE_APIEXPORT ze_result_t ZE_APICALL
zeKernelDestroy_Tracing(ze_kernel_handle_t hKernel)264 zeKernelDestroy_Tracing(ze_kernel_handle_t hKernel) {
265 
266     ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Kernel.pfnDestroy,
267                                hKernel);
268 
269     ze_kernel_destroy_params_t tracerParams;
270     tracerParams.phKernel = &hKernel;
271 
272     L0::APITracerCallbackDataImp<ze_pfnKernelDestroyCb_t> apiCallbackData;
273 
274     ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnKernelDestroyCb_t, Kernel, pfnDestroyCb);
275 
276     return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Kernel.pfnDestroy,
277                                    &tracerParams,
278                                    apiCallbackData.apiOrdinal,
279                                    apiCallbackData.prologCallbacks,
280                                    apiCallbackData.epilogCallbacks,
281                                    *tracerParams.phKernel);
282 }
283 
284 ZE_APIEXPORT ze_result_t ZE_APICALL
zeModuleGetFunctionPointer_Tracing(ze_module_handle_t hModule,const char * pKernelName,void ** pfnFunction)285 zeModuleGetFunctionPointer_Tracing(ze_module_handle_t hModule,
286                                    const char *pKernelName,
287                                    void **pfnFunction) {
288 
289     ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Module.pfnGetFunctionPointer,
290                                hModule,
291                                pKernelName,
292                                pfnFunction);
293 
294     ze_module_get_function_pointer_params_t tracerParams;
295     tracerParams.phModule = &hModule;
296     tracerParams.ppFunctionName = &pKernelName;
297     tracerParams.ppfnFunction = &pfnFunction;
298 
299     L0::APITracerCallbackDataImp<ze_pfnModuleGetFunctionPointerCb_t> apiCallbackData;
300 
301     ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnModuleGetFunctionPointerCb_t, Module, pfnGetFunctionPointerCb);
302 
303     return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Module.pfnGetFunctionPointer,
304                                    &tracerParams,
305                                    apiCallbackData.apiOrdinal,
306                                    apiCallbackData.prologCallbacks,
307                                    apiCallbackData.epilogCallbacks,
308                                    *tracerParams.phModule,
309                                    *tracerParams.ppFunctionName,
310                                    *tracerParams.ppfnFunction);
311 }
312 
313 ZE_APIEXPORT ze_result_t ZE_APICALL
zeKernelSetGroupSize_Tracing(ze_kernel_handle_t hKernel,uint32_t groupSizeX,uint32_t groupSizeY,uint32_t groupSizeZ)314 zeKernelSetGroupSize_Tracing(ze_kernel_handle_t hKernel,
315                              uint32_t groupSizeX,
316                              uint32_t groupSizeY,
317                              uint32_t groupSizeZ) {
318 
319     ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Kernel.pfnSetGroupSize,
320                                hKernel,
321                                groupSizeX,
322                                groupSizeY,
323                                groupSizeZ);
324 
325     ze_kernel_set_group_size_params_t tracerParams;
326     tracerParams.phKernel = &hKernel;
327     tracerParams.pgroupSizeX = &groupSizeX;
328     tracerParams.pgroupSizeY = &groupSizeY;
329     tracerParams.pgroupSizeZ = &groupSizeZ;
330 
331     L0::APITracerCallbackDataImp<ze_pfnKernelSetGroupSizeCb_t> apiCallbackData;
332 
333     ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnKernelSetGroupSizeCb_t, Kernel, pfnSetGroupSizeCb);
334 
335     return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Kernel.pfnSetGroupSize,
336                                    &tracerParams,
337                                    apiCallbackData.apiOrdinal,
338                                    apiCallbackData.prologCallbacks,
339                                    apiCallbackData.epilogCallbacks,
340                                    *tracerParams.phKernel,
341                                    *tracerParams.pgroupSizeX,
342                                    *tracerParams.pgroupSizeY,
343                                    *tracerParams.pgroupSizeZ);
344 }
345 
346 ZE_APIEXPORT ze_result_t ZE_APICALL
zeKernelSuggestGroupSize_Tracing(ze_kernel_handle_t hKernel,uint32_t globalSizeX,uint32_t globalSizeY,uint32_t globalSizeZ,uint32_t * groupSizeX,uint32_t * groupSizeY,uint32_t * groupSizeZ)347 zeKernelSuggestGroupSize_Tracing(ze_kernel_handle_t hKernel,
348                                  uint32_t globalSizeX,
349                                  uint32_t globalSizeY,
350                                  uint32_t globalSizeZ,
351                                  uint32_t *groupSizeX,
352                                  uint32_t *groupSizeY,
353                                  uint32_t *groupSizeZ) {
354 
355     ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Kernel.pfnSuggestGroupSize,
356                                hKernel,
357                                globalSizeX,
358                                globalSizeY,
359                                globalSizeZ,
360                                groupSizeX,
361                                groupSizeY,
362                                groupSizeZ);
363 
364     ze_kernel_suggest_group_size_params_t tracerParams;
365     tracerParams.phKernel = &hKernel;
366     tracerParams.pglobalSizeX = &globalSizeX;
367     tracerParams.pglobalSizeY = &globalSizeY;
368     tracerParams.pglobalSizeZ = &globalSizeZ;
369     tracerParams.pgroupSizeX = &groupSizeX;
370     tracerParams.pgroupSizeY = &groupSizeY;
371     tracerParams.pgroupSizeZ = &groupSizeZ;
372 
373     L0::APITracerCallbackDataImp<ze_pfnKernelSuggestGroupSizeCb_t> apiCallbackData;
374 
375     ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnKernelSuggestGroupSizeCb_t, Kernel, pfnSuggestGroupSizeCb);
376 
377     return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Kernel.pfnSuggestGroupSize,
378                                    &tracerParams,
379                                    apiCallbackData.apiOrdinal,
380                                    apiCallbackData.prologCallbacks,
381                                    apiCallbackData.epilogCallbacks,
382                                    *tracerParams.phKernel,
383                                    *tracerParams.pglobalSizeX,
384                                    *tracerParams.pglobalSizeY,
385                                    *tracerParams.pglobalSizeZ,
386                                    *tracerParams.pgroupSizeX,
387                                    *tracerParams.pgroupSizeY,
388                                    *tracerParams.pgroupSizeZ);
389 }
390 
391 ZE_APIEXPORT ze_result_t ZE_APICALL
zeKernelSetArgumentValue_Tracing(ze_kernel_handle_t hKernel,uint32_t argIndex,size_t argSize,const void * pArgValue)392 zeKernelSetArgumentValue_Tracing(ze_kernel_handle_t hKernel,
393                                  uint32_t argIndex,
394                                  size_t argSize,
395                                  const void *pArgValue) {
396 
397     ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Kernel.pfnSetArgumentValue,
398                                hKernel,
399                                argIndex,
400                                argSize,
401                                pArgValue);
402 
403     ze_kernel_set_argument_value_params_t tracerParams;
404     tracerParams.phKernel = &hKernel;
405     tracerParams.pargIndex = &argIndex;
406     tracerParams.pargSize = &argSize;
407     tracerParams.ppArgValue = &pArgValue;
408 
409     L0::APITracerCallbackDataImp<ze_pfnKernelSetArgumentValueCb_t> apiCallbackData;
410 
411     ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnKernelSetArgumentValueCb_t, Kernel, pfnSetArgumentValueCb);
412 
413     return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Kernel.pfnSetArgumentValue,
414                                    &tracerParams,
415                                    apiCallbackData.apiOrdinal,
416                                    apiCallbackData.prologCallbacks,
417                                    apiCallbackData.epilogCallbacks,
418                                    *tracerParams.phKernel,
419                                    *tracerParams.pargIndex,
420                                    *tracerParams.pargSize,
421                                    *tracerParams.ppArgValue);
422 }
423 
424 ZE_APIEXPORT ze_result_t ZE_APICALL
zeKernelGetProperties_Tracing(ze_kernel_handle_t hKernel,ze_kernel_properties_t * pKernelProperties)425 zeKernelGetProperties_Tracing(ze_kernel_handle_t hKernel,
426                               ze_kernel_properties_t *pKernelProperties) {
427 
428     ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Kernel.pfnGetProperties,
429                                hKernel,
430                                pKernelProperties);
431 
432     ze_kernel_get_properties_params_t tracerParams;
433     tracerParams.phKernel = &hKernel;
434     tracerParams.ppKernelProperties = &pKernelProperties;
435 
436     L0::APITracerCallbackDataImp<ze_pfnKernelGetPropertiesCb_t> apiCallbackData;
437 
438     ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnKernelGetPropertiesCb_t, Kernel, pfnGetPropertiesCb);
439 
440     return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Kernel.pfnGetProperties,
441                                    &tracerParams,
442                                    apiCallbackData.apiOrdinal,
443                                    apiCallbackData.prologCallbacks,
444                                    apiCallbackData.epilogCallbacks,
445                                    *tracerParams.phKernel,
446                                    *tracerParams.ppKernelProperties);
447 }
448 
449 ZE_APIEXPORT ze_result_t ZE_APICALL
zeCommandListAppendLaunchKernel_Tracing(ze_command_list_handle_t hCommandList,ze_kernel_handle_t hKernel,const ze_group_count_t * pLaunchFuncArgs,ze_event_handle_t hSignalEvent,uint32_t numWaitEvents,ze_event_handle_t * phWaitEvents)450 zeCommandListAppendLaunchKernel_Tracing(ze_command_list_handle_t hCommandList,
451                                         ze_kernel_handle_t hKernel,
452                                         const ze_group_count_t *pLaunchFuncArgs,
453                                         ze_event_handle_t hSignalEvent,
454                                         uint32_t numWaitEvents,
455                                         ze_event_handle_t *phWaitEvents) {
456 
457     ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnAppendLaunchKernel,
458                                hCommandList,
459                                hKernel,
460                                pLaunchFuncArgs,
461                                hSignalEvent,
462                                numWaitEvents,
463                                phWaitEvents);
464 
465     ze_command_list_append_launch_kernel_params_t tracerParams;
466     tracerParams.phCommandList = &hCommandList;
467     tracerParams.phKernel = &hKernel;
468     tracerParams.ppLaunchFuncArgs = &pLaunchFuncArgs;
469     tracerParams.phSignalEvent = &hSignalEvent;
470     tracerParams.pnumWaitEvents = &numWaitEvents;
471     tracerParams.pphWaitEvents = &phWaitEvents;
472 
473     L0::APITracerCallbackDataImp<ze_pfnCommandListAppendLaunchKernelCb_t> apiCallbackData;
474 
475     ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnCommandListAppendLaunchKernelCb_t,
476                                   CommandList,
477                                   pfnAppendLaunchKernelCb);
478 
479     return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnAppendLaunchKernel,
480                                    &tracerParams,
481                                    apiCallbackData.apiOrdinal,
482                                    apiCallbackData.prologCallbacks,
483                                    apiCallbackData.epilogCallbacks,
484                                    *tracerParams.phCommandList,
485                                    *tracerParams.phKernel,
486                                    *tracerParams.ppLaunchFuncArgs,
487                                    *tracerParams.phSignalEvent,
488                                    *tracerParams.pnumWaitEvents,
489                                    *tracerParams.pphWaitEvents);
490 }
491 
492 ZE_APIEXPORT ze_result_t ZE_APICALL
zeCommandListAppendLaunchKernelIndirect_Tracing(ze_command_list_handle_t hCommandList,ze_kernel_handle_t hKernel,const ze_group_count_t * pLaunchArgumentsBuffer,ze_event_handle_t hSignalEvent,uint32_t numWaitEvents,ze_event_handle_t * phWaitEvents)493 zeCommandListAppendLaunchKernelIndirect_Tracing(ze_command_list_handle_t hCommandList,
494                                                 ze_kernel_handle_t hKernel,
495                                                 const ze_group_count_t *pLaunchArgumentsBuffer,
496                                                 ze_event_handle_t hSignalEvent,
497                                                 uint32_t numWaitEvents,
498                                                 ze_event_handle_t *phWaitEvents) {
499 
500     ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnAppendLaunchKernelIndirect,
501                                hCommandList,
502                                hKernel,
503                                pLaunchArgumentsBuffer,
504                                hSignalEvent,
505                                numWaitEvents,
506                                phWaitEvents);
507 
508     ze_command_list_append_launch_kernel_indirect_params_t tracerParams;
509     tracerParams.phCommandList = &hCommandList;
510     tracerParams.phKernel = &hKernel;
511     tracerParams.ppLaunchArgumentsBuffer = &pLaunchArgumentsBuffer;
512     tracerParams.phSignalEvent = &hSignalEvent;
513     tracerParams.pnumWaitEvents = &numWaitEvents;
514     tracerParams.pphWaitEvents = &phWaitEvents;
515 
516     L0::APITracerCallbackDataImp<ze_pfnCommandListAppendLaunchKernelIndirectCb_t> apiCallbackData;
517 
518     ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnCommandListAppendLaunchKernelIndirectCb_t,
519                                   CommandList,
520                                   pfnAppendLaunchKernelIndirectCb);
521 
522     return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnAppendLaunchKernelIndirect,
523                                    &tracerParams,
524                                    apiCallbackData.apiOrdinal,
525                                    apiCallbackData.prologCallbacks,
526                                    apiCallbackData.epilogCallbacks,
527                                    *tracerParams.phCommandList,
528                                    *tracerParams.phKernel,
529                                    *tracerParams.ppLaunchArgumentsBuffer,
530                                    *tracerParams.phSignalEvent,
531                                    *tracerParams.pnumWaitEvents,
532                                    *tracerParams.pphWaitEvents);
533 }
534 
535 ZE_APIEXPORT ze_result_t ZE_APICALL
zeCommandListAppendLaunchMultipleKernelsIndirect_Tracing(ze_command_list_handle_t hCommandList,uint32_t numKernels,ze_kernel_handle_t * phKernels,const uint32_t * pCountBuffer,const ze_group_count_t * pLaunchArgumentsBuffer,ze_event_handle_t hSignalEvent,uint32_t numWaitEvents,ze_event_handle_t * phWaitEvents)536 zeCommandListAppendLaunchMultipleKernelsIndirect_Tracing(ze_command_list_handle_t hCommandList,
537                                                          uint32_t numKernels,
538                                                          ze_kernel_handle_t *phKernels,
539                                                          const uint32_t *pCountBuffer,
540                                                          const ze_group_count_t *pLaunchArgumentsBuffer,
541                                                          ze_event_handle_t hSignalEvent,
542                                                          uint32_t numWaitEvents,
543                                                          ze_event_handle_t *phWaitEvents) {
544 
545     ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnAppendLaunchMultipleKernelsIndirect,
546                                hCommandList,
547                                numKernels,
548                                phKernels,
549                                pCountBuffer,
550                                pLaunchArgumentsBuffer,
551                                hSignalEvent,
552                                numWaitEvents,
553                                phWaitEvents);
554 
555     ze_command_list_append_launch_multiple_kernels_indirect_params_t tracerParams;
556     tracerParams.phCommandList = &hCommandList;
557     tracerParams.pnumKernels = &numKernels;
558     tracerParams.pphKernels = &phKernels;
559     tracerParams.ppCountBuffer = &pCountBuffer;
560     tracerParams.ppLaunchArgumentsBuffer = &pLaunchArgumentsBuffer;
561     tracerParams.phSignalEvent = &hSignalEvent;
562     tracerParams.pnumWaitEvents = &numWaitEvents;
563     tracerParams.pphWaitEvents = &phWaitEvents;
564 
565     L0::APITracerCallbackDataImp<ze_pfnCommandListAppendLaunchMultipleKernelsIndirectCb_t> apiCallbackData;
566 
567     ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnCommandListAppendLaunchMultipleKernelsIndirectCb_t,
568                                   CommandList,
569                                   pfnAppendLaunchMultipleKernelsIndirectCb);
570 
571     return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnAppendLaunchMultipleKernelsIndirect,
572                                    &tracerParams,
573                                    apiCallbackData.apiOrdinal,
574                                    apiCallbackData.prologCallbacks,
575                                    apiCallbackData.epilogCallbacks,
576                                    *tracerParams.phCommandList,
577                                    *tracerParams.pnumKernels,
578                                    *tracerParams.pphKernels,
579                                    *tracerParams.ppCountBuffer,
580                                    *tracerParams.ppLaunchArgumentsBuffer,
581                                    *tracerParams.phSignalEvent,
582                                    *tracerParams.pnumWaitEvents,
583                                    *tracerParams.pphWaitEvents);
584 }
585 
586 ZE_APIEXPORT ze_result_t ZE_APICALL
zeCommandListAppendLaunchCooperativeKernel_Tracing(ze_command_list_handle_t hCommandList,ze_kernel_handle_t hKernel,const ze_group_count_t * pLaunchFuncArgs,ze_event_handle_t hSignalEvent,uint32_t numWaitEvents,ze_event_handle_t * phWaitEvents)587 zeCommandListAppendLaunchCooperativeKernel_Tracing(ze_command_list_handle_t hCommandList,
588                                                    ze_kernel_handle_t hKernel,
589                                                    const ze_group_count_t *pLaunchFuncArgs,
590                                                    ze_event_handle_t hSignalEvent,
591                                                    uint32_t numWaitEvents,
592                                                    ze_event_handle_t *phWaitEvents) {
593 
594     ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnAppendLaunchCooperativeKernel,
595                                hCommandList,
596                                hKernel,
597                                pLaunchFuncArgs,
598                                hSignalEvent,
599                                numWaitEvents,
600                                phWaitEvents);
601 
602     ze_command_list_append_launch_cooperative_kernel_params_t tracerParams;
603     tracerParams.phCommandList = &hCommandList;
604     tracerParams.phKernel = &hKernel;
605     tracerParams.ppLaunchFuncArgs = &pLaunchFuncArgs;
606     tracerParams.phSignalEvent = &hSignalEvent;
607     tracerParams.pnumWaitEvents = &numWaitEvents;
608     tracerParams.pphWaitEvents = &phWaitEvents;
609 
610     L0::APITracerCallbackDataImp<ze_pfnCommandListAppendLaunchCooperativeKernelCb_t> apiCallbackData;
611 
612     ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnCommandListAppendLaunchCooperativeKernelCb_t,
613                                   CommandList, pfnAppendLaunchCooperativeKernelCb);
614 
615     return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnAppendLaunchCooperativeKernel,
616                                    &tracerParams,
617                                    apiCallbackData.apiOrdinal,
618                                    apiCallbackData.prologCallbacks,
619                                    apiCallbackData.epilogCallbacks,
620                                    *tracerParams.phCommandList,
621                                    *tracerParams.phKernel,
622                                    *tracerParams.ppLaunchFuncArgs,
623                                    *tracerParams.phSignalEvent,
624                                    *tracerParams.pnumWaitEvents,
625                                    *tracerParams.pphWaitEvents);
626 }
627 
628 ZE_APIEXPORT ze_result_t ZE_APICALL
zeModuleGetKernelNames_Tracing(ze_module_handle_t hModule,uint32_t * pCount,const char ** pNames)629 zeModuleGetKernelNames_Tracing(ze_module_handle_t hModule,
630                                uint32_t *pCount,
631                                const char **pNames) {
632 
633     ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Module.pfnGetKernelNames,
634                                hModule,
635                                pCount,
636                                pNames);
637 
638     ze_module_get_kernel_names_params_t tracerParams;
639     tracerParams.phModule = &hModule;
640     tracerParams.ppCount = &pCount;
641     tracerParams.ppNames = &pNames;
642 
643     L0::APITracerCallbackDataImp<ze_pfnModuleGetKernelNamesCb_t> apiCallbackData;
644 
645     ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnModuleGetKernelNamesCb_t, Module, pfnGetKernelNamesCb);
646 
647     return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Module.pfnGetKernelNames,
648                                    &tracerParams,
649                                    apiCallbackData.apiOrdinal,
650                                    apiCallbackData.prologCallbacks,
651                                    apiCallbackData.epilogCallbacks,
652                                    *tracerParams.phModule,
653                                    *tracerParams.ppCount,
654                                    *tracerParams.ppNames);
655 }
656 
657 ZE_APIEXPORT ze_result_t ZE_APICALL
zeKernelSuggestMaxCooperativeGroupCount_Tracing(ze_kernel_handle_t hKernel,uint32_t * totalGroupCount)658 zeKernelSuggestMaxCooperativeGroupCount_Tracing(ze_kernel_handle_t hKernel,
659                                                 uint32_t *totalGroupCount) {
660 
661     ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Kernel.pfnSuggestMaxCooperativeGroupCount,
662                                hKernel,
663                                totalGroupCount);
664 
665     ze_kernel_suggest_max_cooperative_group_count_params_t tracerParams;
666     tracerParams.phKernel = &hKernel;
667     tracerParams.ptotalGroupCount = &totalGroupCount;
668 
669     L0::APITracerCallbackDataImp<ze_pfnKernelSuggestMaxCooperativeGroupCountCb_t> apiCallbackData;
670 
671     ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnKernelSuggestMaxCooperativeGroupCountCb_t,
672                                   Kernel, pfnSuggestMaxCooperativeGroupCountCb);
673 
674     return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Kernel.pfnSuggestMaxCooperativeGroupCount,
675                                    &tracerParams,
676                                    apiCallbackData.apiOrdinal,
677                                    apiCallbackData.prologCallbacks,
678                                    apiCallbackData.epilogCallbacks,
679                                    *tracerParams.phKernel,
680                                    *tracerParams.ptotalGroupCount);
681 }
682 
683 ZE_APIEXPORT ze_result_t ZE_APICALL
zeKernelGetIndirectAccess_Tracing(ze_kernel_handle_t hKernel,ze_kernel_indirect_access_flags_t * pFlags)684 zeKernelGetIndirectAccess_Tracing(ze_kernel_handle_t hKernel,
685                                   ze_kernel_indirect_access_flags_t *pFlags) {
686 
687     ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Kernel.pfnGetIndirectAccess,
688                                hKernel,
689                                pFlags);
690 
691     ze_kernel_get_indirect_access_params_t tracerParams;
692     tracerParams.phKernel = &hKernel;
693     tracerParams.ppFlags = &pFlags;
694 
695     L0::APITracerCallbackDataImp<ze_pfnKernelGetIndirectAccessCb_t> apiCallbackData;
696 
697     ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnKernelGetIndirectAccessCb_t,
698                                   Kernel, pfnGetIndirectAccessCb);
699 
700     return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Kernel.pfnGetIndirectAccess,
701                                    &tracerParams,
702                                    apiCallbackData.apiOrdinal,
703                                    apiCallbackData.prologCallbacks,
704                                    apiCallbackData.epilogCallbacks,
705                                    *tracerParams.phKernel,
706                                    *tracerParams.ppFlags);
707 }
708 
709 ZE_APIEXPORT ze_result_t ZE_APICALL
zeKernelGetName_Tracing(ze_kernel_handle_t hKernel,size_t * pSize,char * pName)710 zeKernelGetName_Tracing(ze_kernel_handle_t hKernel,
711                         size_t *pSize,
712                         char *pName) {
713 
714     ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Kernel.pfnGetName,
715                                hKernel,
716                                pSize,
717                                pName);
718 
719     ze_kernel_get_name_params_t tracerParams;
720     tracerParams.phKernel = &hKernel;
721     tracerParams.ppSize = &pSize;
722     tracerParams.ppName = &pName;
723 
724     L0::APITracerCallbackDataImp<ze_pfnKernelGetNameCb_t> apiCallbackData;
725 
726     ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnKernelGetNameCb_t,
727                                   Kernel, pfnGetNameCb);
728 
729     return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Kernel.pfnGetName,
730                                    &tracerParams,
731                                    apiCallbackData.apiOrdinal,
732                                    apiCallbackData.prologCallbacks,
733                                    apiCallbackData.epilogCallbacks,
734                                    *tracerParams.phKernel,
735                                    *tracerParams.ppSize,
736                                    *tracerParams.ppName);
737 }
738 
739 ZE_APIEXPORT ze_result_t ZE_APICALL
zeKernelGetSourceAttributes_Tracing(ze_kernel_handle_t hKernel,uint32_t * pSize,char ** pString)740 zeKernelGetSourceAttributes_Tracing(ze_kernel_handle_t hKernel,
741                                     uint32_t *pSize,
742                                     char **pString) {
743 
744     ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Kernel.pfnGetSourceAttributes,
745                                hKernel,
746                                pSize,
747                                pString);
748 
749     ze_kernel_get_source_attributes_params_t tracerParams;
750     tracerParams.phKernel = &hKernel;
751     tracerParams.ppSize = &pSize;
752     tracerParams.ppString = &pString;
753 
754     L0::APITracerCallbackDataImp<ze_pfnKernelGetSourceAttributesCb_t> apiCallbackData;
755 
756     ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnKernelGetSourceAttributesCb_t,
757                                   Kernel, pfnGetSourceAttributesCb);
758 
759     return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Kernel.pfnGetSourceAttributes,
760                                    &tracerParams,
761                                    apiCallbackData.apiOrdinal,
762                                    apiCallbackData.prologCallbacks,
763                                    apiCallbackData.epilogCallbacks,
764                                    *tracerParams.phKernel,
765                                    *tracerParams.ppSize,
766                                    *tracerParams.ppString);
767 }
768 
769 ZE_APIEXPORT ze_result_t ZE_APICALL
zeKernelSetIndirectAccess_Tracing(ze_kernel_handle_t hKernel,ze_kernel_indirect_access_flags_t flags)770 zeKernelSetIndirectAccess_Tracing(ze_kernel_handle_t hKernel,
771                                   ze_kernel_indirect_access_flags_t flags) {
772 
773     ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Kernel.pfnSetIndirectAccess,
774                                hKernel,
775                                flags);
776 
777     ze_kernel_set_indirect_access_params_t tracerParams;
778     tracerParams.phKernel = &hKernel;
779     tracerParams.pflags = &flags;
780 
781     L0::APITracerCallbackDataImp<ze_pfnKernelSetIndirectAccessCb_t> apiCallbackData;
782 
783     ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnKernelSetIndirectAccessCb_t,
784                                   Kernel, pfnSetIndirectAccessCb);
785 
786     return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Kernel.pfnSetIndirectAccess,
787                                    &tracerParams,
788                                    apiCallbackData.apiOrdinal,
789                                    apiCallbackData.prologCallbacks,
790                                    apiCallbackData.epilogCallbacks,
791                                    *tracerParams.phKernel,
792                                    *tracerParams.pflags);
793 }
794