compute-runtime/level_zero/experimental/source/tracing/tracing_event_imp.cpp

385 lines
17 KiB
C++

/*
* Copyright (C) 2020-2021 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "level_zero/experimental/source/tracing/tracing_imp.h"
ZE_APIEXPORT ze_result_t ZE_APICALL
zeEventPoolCreate_Tracing(ze_context_handle_t hContext,
const ze_event_pool_desc_t *desc,
uint32_t numDevices,
ze_device_handle_t *phDevices,
ze_event_pool_handle_t *phEventPool) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.EventPool.pfnCreate,
hContext,
desc,
numDevices,
phDevices,
phEventPool);
ze_event_pool_create_params_t tracerParams;
tracerParams.phContext = &hContext;
tracerParams.pdesc = &desc;
tracerParams.pnumDevices = &numDevices;
tracerParams.pphDevices = &phDevices;
tracerParams.pphEventPool = &phEventPool;
L0::APITracerCallbackDataImp<ze_pfnEventPoolCreateCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnEventPoolCreateCb_t, EventPool, pfnCreateCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.EventPool.pfnCreate,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phContext,
*tracerParams.pdesc,
*tracerParams.pnumDevices,
*tracerParams.pphDevices,
*tracerParams.pphEventPool);
}
ZE_APIEXPORT ze_result_t ZE_APICALL
zeEventPoolDestroy_Tracing(ze_event_pool_handle_t hEventPool) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.EventPool.pfnDestroy,
hEventPool);
ze_event_pool_destroy_params_t tracerParams;
tracerParams.phEventPool = &hEventPool;
L0::APITracerCallbackDataImp<ze_pfnEventPoolDestroyCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnEventPoolDestroyCb_t, EventPool, pfnDestroyCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.EventPool.pfnDestroy,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phEventPool);
}
ZE_APIEXPORT ze_result_t ZE_APICALL
zeEventCreate_Tracing(ze_event_pool_handle_t hEventPool,
const ze_event_desc_t *desc,
ze_event_handle_t *phEvent) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Event.pfnCreate,
hEventPool,
desc,
phEvent);
ze_event_create_params_t tracerParams;
tracerParams.phEventPool = &hEventPool;
tracerParams.pdesc = &desc;
tracerParams.pphEvent = &phEvent;
L0::APITracerCallbackDataImp<ze_pfnEventCreateCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnEventCreateCb_t, Event, pfnCreateCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Event.pfnCreate,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phEventPool,
*tracerParams.pdesc,
*tracerParams.pphEvent);
}
ZE_APIEXPORT ze_result_t ZE_APICALL
zeEventDestroy_Tracing(ze_event_handle_t hEvent) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Event.pfnDestroy,
hEvent);
ze_event_destroy_params_t tracerParams;
tracerParams.phEvent = &hEvent;
L0::APITracerCallbackDataImp<ze_pfnEventDestroyCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnEventDestroyCb_t, Event, pfnDestroyCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Event.pfnDestroy,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phEvent);
}
ZE_APIEXPORT ze_result_t ZE_APICALL
zeEventPoolGetIpcHandle_Tracing(ze_event_pool_handle_t hEventPool,
ze_ipc_event_pool_handle_t *phIpc) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.EventPool.pfnGetIpcHandle,
hEventPool,
phIpc);
ze_event_pool_get_ipc_handle_params_t tracerParams;
tracerParams.phEventPool = &hEventPool;
tracerParams.pphIpc = &phIpc;
L0::APITracerCallbackDataImp<ze_pfnEventPoolGetIpcHandleCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnEventPoolGetIpcHandleCb_t, EventPool, pfnGetIpcHandleCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.EventPool.pfnGetIpcHandle,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phEventPool,
*tracerParams.pphIpc);
}
ZE_APIEXPORT ze_result_t ZE_APICALL
zeEventPoolOpenIpcHandle_Tracing(ze_context_handle_t hContext,
ze_ipc_event_pool_handle_t hIpc,
ze_event_pool_handle_t *phEventPool) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.EventPool.pfnOpenIpcHandle,
hContext,
hIpc,
phEventPool);
ze_event_pool_open_ipc_handle_params_t tracerParams;
tracerParams.phContext = &hContext;
tracerParams.phIpc = &hIpc;
tracerParams.pphEventPool = &phEventPool;
L0::APITracerCallbackDataImp<ze_pfnEventPoolOpenIpcHandleCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnEventPoolOpenIpcHandleCb_t, EventPool, pfnOpenIpcHandleCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.EventPool.pfnOpenIpcHandle,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phContext,
*tracerParams.phIpc,
*tracerParams.pphEventPool);
}
ZE_APIEXPORT ze_result_t ZE_APICALL
zeEventPoolCloseIpcHandle_Tracing(ze_event_pool_handle_t hEventPool) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.EventPool.pfnCloseIpcHandle,
hEventPool);
ze_event_pool_close_ipc_handle_params_t tracerParams;
tracerParams.phEventPool = &hEventPool;
L0::APITracerCallbackDataImp<ze_pfnEventPoolCloseIpcHandleCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnEventPoolCloseIpcHandleCb_t, EventPool, pfnCloseIpcHandleCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.EventPool.pfnCloseIpcHandle,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phEventPool);
}
ZE_APIEXPORT ze_result_t ZE_APICALL
zeCommandListAppendSignalEvent_Tracing(ze_command_list_handle_t hCommandList,
ze_event_handle_t hEvent) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnAppendSignalEvent,
hCommandList,
hEvent);
ze_command_list_append_signal_event_params_t tracerParams;
tracerParams.phCommandList = &hCommandList;
tracerParams.phEvent = &hEvent;
L0::APITracerCallbackDataImp<ze_pfnCommandListAppendSignalEventCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnCommandListAppendSignalEventCb_t, CommandList, pfnAppendSignalEventCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnAppendSignalEvent,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phCommandList,
*tracerParams.phEvent);
}
ZE_APIEXPORT ze_result_t ZE_APICALL
zeCommandListAppendWaitOnEvents_Tracing(ze_command_list_handle_t hCommandList,
uint32_t numEvents,
ze_event_handle_t *phEvents) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnAppendWaitOnEvents,
hCommandList,
numEvents,
phEvents);
ze_command_list_append_wait_on_events_params_t tracerParams;
tracerParams.phCommandList = &hCommandList;
tracerParams.pnumEvents = &numEvents;
tracerParams.pphEvents = &phEvents;
L0::APITracerCallbackDataImp<ze_pfnCommandListAppendWaitOnEventsCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnCommandListAppendWaitOnEventsCb_t, CommandList, pfnAppendWaitOnEventsCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnAppendWaitOnEvents,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phCommandList,
*tracerParams.pnumEvents,
*tracerParams.pphEvents);
}
ZE_APIEXPORT ze_result_t ZE_APICALL
zeEventHostSignal_Tracing(ze_event_handle_t hEvent) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Event.pfnHostSignal,
hEvent);
ze_event_host_signal_params_t tracerParams;
tracerParams.phEvent = &hEvent;
L0::APITracerCallbackDataImp<ze_pfnEventHostSignalCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnEventHostSignalCb_t, Event, pfnHostSignalCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Event.pfnHostSignal,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phEvent);
}
ZE_APIEXPORT ze_result_t ZE_APICALL
zeEventHostSynchronize_Tracing(ze_event_handle_t hEvent,
uint64_t timeout) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Event.pfnHostSynchronize,
hEvent,
timeout);
ze_event_host_synchronize_params_t tracerParams;
tracerParams.phEvent = &hEvent;
tracerParams.ptimeout = &timeout;
L0::APITracerCallbackDataImp<ze_pfnEventHostSynchronizeCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnEventHostSynchronizeCb_t, Event, pfnHostSynchronizeCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Event.pfnHostSynchronize,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phEvent,
*tracerParams.ptimeout);
}
ZE_APIEXPORT ze_result_t ZE_APICALL
zeEventQueryStatus_Tracing(ze_event_handle_t hEvent) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Event.pfnQueryStatus,
hEvent);
ze_event_query_status_params_t tracerParams;
tracerParams.phEvent = &hEvent;
L0::APITracerCallbackDataImp<ze_pfnEventQueryStatusCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnEventQueryStatusCb_t, Event, pfnQueryStatusCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Event.pfnQueryStatus,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phEvent);
}
ZE_APIEXPORT ze_result_t ZE_APICALL
zeEventHostReset_Tracing(ze_event_handle_t hEvent) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Event.pfnHostReset,
hEvent);
ze_event_host_reset_params_t tracerParams;
tracerParams.phEvent = &hEvent;
L0::APITracerCallbackDataImp<ze_pfnEventHostResetCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnEventHostResetCb_t, Event, pfnHostResetCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Event.pfnHostReset,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phEvent);
}
ZE_APIEXPORT ze_result_t ZE_APICALL
zeCommandListAppendEventReset_Tracing(ze_command_list_handle_t hCommandList,
ze_event_handle_t hEvent) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnAppendEventReset,
hCommandList,
hEvent);
ze_command_list_append_event_reset_params_t tracerParams;
tracerParams.phCommandList = &hCommandList;
tracerParams.phEvent = &hEvent;
L0::APITracerCallbackDataImp<ze_pfnCommandListAppendEventResetCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnCommandListAppendEventResetCb_t,
CommandList, pfnAppendEventResetCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnAppendEventReset,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phCommandList,
*tracerParams.phEvent);
}
ZE_APIEXPORT ze_result_t ZE_APICALL
zeEventQueryKernelTimestamp_Tracing(ze_event_handle_t hEvent,
ze_kernel_timestamp_result_t *dstptr) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Event.pfnQueryKernelTimestamp,
hEvent,
dstptr);
ze_event_query_kernel_timestamp_params_t tracerParams;
tracerParams.phEvent = &hEvent;
tracerParams.pdstptr = &dstptr;
L0::APITracerCallbackDataImp<ze_pfnEventQueryKernelTimestampCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnEventQueryKernelTimestampCb_t, Event, pfnQueryKernelTimestampCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Event.pfnQueryKernelTimestamp,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phEvent,
*tracerParams.pdstptr);
}