/* * Copyright (C) 2020-2024 Intel Corporation * * SPDX-License-Identifier: MIT * */ #include "level_zero/api/driver_experimental/tracing/zet_tracing.h" #include "level_zero/api/extensions/public/ze_exp_ext.h" #include #include #include #include #include #include #include "ze_ddi_tables.h" #include "zet_tools_all_api_entrypoints.h" extern ze_gpu_driver_dditable_t driverDdiTable; ZE_DLLEXPORT ze_result_t ZE_APICALL zetGetContextProcAddrTable( ze_api_version_t version, zet_context_dditable_t *pDdiTable) { ze_result_t result = ZE_RESULT_SUCCESS; if (nullptr == pDdiTable) return ZE_RESULT_ERROR_INVALID_ARGUMENT; if (ZE_MAJOR_VERSION(driverDdiTable.version) != ZE_MAJOR_VERSION(version) || ZE_MINOR_VERSION(driverDdiTable.version) > ZE_MINOR_VERSION(version)) return ZE_RESULT_ERROR_UNSUPPORTED_VERSION; pDdiTable->pfnActivateMetricGroups = L0::zetContextActivateMetricGroups; return result; } ZE_DLLEXPORT ze_result_t ZE_APICALL zetGetMetricStreamerProcAddrTable( ze_api_version_t version, zet_metric_streamer_dditable_t *pDdiTable) { if (nullptr == pDdiTable) return ZE_RESULT_ERROR_INVALID_ARGUMENT; if (ZE_MAJOR_VERSION(driverDdiTable.version) != ZE_MAJOR_VERSION(version) || ZE_MINOR_VERSION(driverDdiTable.version) > ZE_MINOR_VERSION(version)) return ZE_RESULT_ERROR_UNSUPPORTED_VERSION; ze_result_t result = ZE_RESULT_SUCCESS; pDdiTable->pfnOpen = L0::zetMetricStreamerOpen; pDdiTable->pfnClose = L0::zetMetricStreamerClose; pDdiTable->pfnReadData = L0::zetMetricStreamerReadData; return result; } ZE_DLLEXPORT ze_result_t ZE_APICALL zetGetTracerExpProcAddrTable( ze_api_version_t version, zet_tracer_exp_dditable_t *pDdiTable) { if (nullptr == pDdiTable) return ZE_RESULT_ERROR_INVALID_ARGUMENT; if (ZE_MAJOR_VERSION(driverDdiTable.version) != ZE_MAJOR_VERSION(version) || ZE_MINOR_VERSION(driverDdiTable.version) > ZE_MINOR_VERSION(version)) return ZE_RESULT_ERROR_UNSUPPORTED_VERSION; ze_result_t result = ZE_RESULT_SUCCESS; pDdiTable->pfnCreate = L0::zetTracerExpCreate; pDdiTable->pfnDestroy = L0::zetTracerExpDestroy; pDdiTable->pfnSetPrologues = L0::zetTracerExpSetPrologues; pDdiTable->pfnSetEpilogues = L0::zetTracerExpSetEpilogues; pDdiTable->pfnSetEnabled = L0::zetTracerExpSetEnabled; return result; } ZE_DLLEXPORT ze_result_t ZE_APICALL zetGetCommandListProcAddrTable( ze_api_version_t version, zet_command_list_dditable_t *pDdiTable) { if (nullptr == pDdiTable) return ZE_RESULT_ERROR_INVALID_ARGUMENT; if (ZE_MAJOR_VERSION(driverDdiTable.version) != ZE_MAJOR_VERSION(version) || ZE_MINOR_VERSION(driverDdiTable.version) > ZE_MINOR_VERSION(version)) return ZE_RESULT_ERROR_UNSUPPORTED_VERSION; ze_result_t result = ZE_RESULT_SUCCESS; pDdiTable->pfnAppendMetricStreamerMarker = L0::zetCommandListAppendMetricStreamerMarker; pDdiTable->pfnAppendMetricQueryBegin = L0::zetCommandListAppendMetricQueryBegin; pDdiTable->pfnAppendMetricQueryEnd = L0::zetCommandListAppendMetricQueryEnd; pDdiTable->pfnAppendMetricMemoryBarrier = L0::zetCommandListAppendMetricMemoryBarrier; return result; } ZE_DLLEXPORT ze_result_t ZE_APICALL zetGetModuleProcAddrTable( ze_api_version_t version, zet_module_dditable_t *pDdiTable) { if (nullptr == pDdiTable) return ZE_RESULT_ERROR_INVALID_ARGUMENT; if (ZE_MAJOR_VERSION(driverDdiTable.version) != ZE_MAJOR_VERSION(version) || ZE_MINOR_VERSION(driverDdiTable.version) > ZE_MINOR_VERSION(version)) return ZE_RESULT_ERROR_UNSUPPORTED_VERSION; ze_result_t result = ZE_RESULT_SUCCESS; pDdiTable->pfnGetDebugInfo = L0::zetModuleGetDebugInfo; return result; } ZE_DLLEXPORT ze_result_t ZE_APICALL zetGetKernelProcAddrTable( ze_api_version_t version, zet_kernel_dditable_t *pDdiTable) { if (nullptr == pDdiTable) return ZE_RESULT_ERROR_INVALID_ARGUMENT; if (ZE_MAJOR_VERSION(driverDdiTable.version) != ZE_MAJOR_VERSION(version) || ZE_MINOR_VERSION(driverDdiTable.version) > ZE_MINOR_VERSION(version)) return ZE_RESULT_ERROR_UNSUPPORTED_VERSION; ze_result_t result = ZE_RESULT_SUCCESS; pDdiTable->pfnGetProfileInfo = L0::zetKernelGetProfileInfo; return result; } ZE_DLLEXPORT ze_result_t ZE_APICALL zetGetMetricGroupProcAddrTable( ze_api_version_t version, zet_metric_group_dditable_t *pDdiTable) { if (nullptr == pDdiTable) return ZE_RESULT_ERROR_INVALID_ARGUMENT; if (ZE_MAJOR_VERSION(driverDdiTable.version) != ZE_MAJOR_VERSION(version) || ZE_MINOR_VERSION(driverDdiTable.version) > ZE_MINOR_VERSION(version)) return ZE_RESULT_ERROR_UNSUPPORTED_VERSION; ze_result_t result = ZE_RESULT_SUCCESS; pDdiTable->pfnGet = L0::zetMetricGroupGet; pDdiTable->pfnGetProperties = L0::zetMetricGroupGetProperties; pDdiTable->pfnCalculateMetricValues = L0::zetMetricGroupCalculateMetricValues; return result; } ZE_DLLEXPORT ze_result_t ZE_APICALL zetGetMetricProcAddrTable( ze_api_version_t version, zet_metric_dditable_t *pDdiTable) { if (nullptr == pDdiTable) return ZE_RESULT_ERROR_INVALID_ARGUMENT; if (ZE_MAJOR_VERSION(driverDdiTable.version) != ZE_MAJOR_VERSION(version) || ZE_MINOR_VERSION(driverDdiTable.version) > ZE_MINOR_VERSION(version)) return ZE_RESULT_ERROR_UNSUPPORTED_VERSION; ze_result_t result = ZE_RESULT_SUCCESS; pDdiTable->pfnGet = L0::zetMetricGet; pDdiTable->pfnGetProperties = L0::zetMetricGetProperties; return result; } ZE_DLLEXPORT ze_result_t ZE_APICALL zetGetMetricQueryPoolProcAddrTable( ze_api_version_t version, zet_metric_query_pool_dditable_t *pDdiTable) { if (nullptr == pDdiTable) return ZE_RESULT_ERROR_INVALID_ARGUMENT; if (ZE_MAJOR_VERSION(driverDdiTable.version) != ZE_MAJOR_VERSION(version) || ZE_MINOR_VERSION(driverDdiTable.version) > ZE_MINOR_VERSION(version)) return ZE_RESULT_ERROR_UNSUPPORTED_VERSION; ze_result_t result = ZE_RESULT_SUCCESS; pDdiTable->pfnCreate = L0::zetMetricQueryPoolCreate; pDdiTable->pfnDestroy = L0::zetMetricQueryPoolDestroy; return result; } ZE_DLLEXPORT ze_result_t ZE_APICALL zetGetMetricQueryProcAddrTable( ze_api_version_t version, zet_metric_query_dditable_t *pDdiTable) { if (nullptr == pDdiTable) return ZE_RESULT_ERROR_INVALID_ARGUMENT; if (ZE_MAJOR_VERSION(driverDdiTable.version) != ZE_MAJOR_VERSION(version) || ZE_MINOR_VERSION(driverDdiTable.version) > ZE_MINOR_VERSION(version)) return ZE_RESULT_ERROR_UNSUPPORTED_VERSION; ze_result_t result = ZE_RESULT_SUCCESS; pDdiTable->pfnCreate = L0::zetMetricQueryCreate; pDdiTable->pfnDestroy = L0::zetMetricQueryDestroy; pDdiTable->pfnReset = L0::zetMetricQueryReset; pDdiTable->pfnGetData = L0::zetMetricQueryGetData; return result; } ZE_DLLEXPORT ze_result_t ZE_APICALL zetGetDeviceProcAddrTable( ze_api_version_t version, zet_device_dditable_t *pDdiTable) { if (nullptr == pDdiTable) return ZE_RESULT_ERROR_INVALID_ARGUMENT; if (ZE_MAJOR_VERSION(driverDdiTable.version) != ZE_MAJOR_VERSION(version) || ZE_MINOR_VERSION(driverDdiTable.version) > ZE_MINOR_VERSION(version)) return ZE_RESULT_ERROR_UNSUPPORTED_VERSION; ze_result_t result = ZE_RESULT_SUCCESS; pDdiTable->pfnGetDebugProperties = L0::zetDeviceGetDebugProperties; return result; } ZE_DLLEXPORT ze_result_t ZE_APICALL zetGetDebugProcAddrTable( ze_api_version_t version, zet_debug_dditable_t *pDdiTable) { if (nullptr == pDdiTable) return ZE_RESULT_ERROR_INVALID_ARGUMENT; if (ZE_MAJOR_VERSION(driverDdiTable.version) != ZE_MAJOR_VERSION(version) || ZE_MINOR_VERSION(driverDdiTable.version) > ZE_MINOR_VERSION(version)) return ZE_RESULT_ERROR_UNSUPPORTED_VERSION; ze_result_t result = ZE_RESULT_SUCCESS; pDdiTable->pfnAttach = L0::zetDebugAttach; pDdiTable->pfnDetach = L0::zetDebugDetach; pDdiTable->pfnReadEvent = L0::zetDebugReadEvent; pDdiTable->pfnAcknowledgeEvent = L0::zetDebugAcknowledgeEvent; pDdiTable->pfnInterrupt = L0::zetDebugInterrupt; pDdiTable->pfnResume = L0::zetDebugResume; pDdiTable->pfnReadMemory = L0::zetDebugReadMemory; pDdiTable->pfnWriteMemory = L0::zetDebugWriteMemory; pDdiTable->pfnGetRegisterSetProperties = L0::zetDebugGetRegisterSetProperties; pDdiTable->pfnReadRegisters = L0::zetDebugReadRegisters; pDdiTable->pfnWriteRegisters = L0::zetDebugWriteRegisters; pDdiTable->pfnGetThreadRegisterSetProperties = L0::zetDebugGetThreadRegisterSetProperties; return result; } ZE_DLLEXPORT ze_result_t ZE_APICALL zetGetMetricGroupExpProcAddrTable( ze_api_version_t version, zet_metric_group_exp_dditable_t *pDdiTable) { if (nullptr == pDdiTable) return ZE_RESULT_ERROR_INVALID_ARGUMENT; if (ZE_MAJOR_VERSION(driverDdiTable.version) != ZE_MAJOR_VERSION(version) || ZE_MINOR_VERSION(driverDdiTable.version) > ZE_MINOR_VERSION(version)) return ZE_RESULT_ERROR_UNSUPPORTED_VERSION; ze_result_t result = ZE_RESULT_SUCCESS; pDdiTable->pfnCalculateMultipleMetricValuesExp = L0::zetMetricGroupCalculateMultipleMetricValuesExp; pDdiTable->pfnGetGlobalTimestampsExp = L0::zetMetricGroupGetGlobalTimestampsExp; pDdiTable->pfnGetExportDataExp = L0::zetMetricGroupGetExportDataExp; pDdiTable->pfnCalculateMetricExportDataExp = L0::zetDriverCalculateMetricExportDataExp; if (version >= ZE_API_VERSION_1_9) { pDdiTable->pfnCreateExp = L0::zetMetricGroupCreateExp; pDdiTable->pfnAddMetricExp = L0::zetMetricGroupAddMetricExp; pDdiTable->pfnRemoveMetricExp = L0::zetMetricGroupRemoveMetricExp; pDdiTable->pfnCloseExp = L0::zetMetricGroupCloseExp; pDdiTable->pfnDestroyExp = L0::zetMetricGroupDestroyExp; } return result; } ZE_DLLEXPORT ze_result_t ZE_APICALL zetGetMetricProgrammableExpProcAddrTable( ze_api_version_t version, zet_metric_programmable_exp_dditable_t *pDdiTable) { if (nullptr == pDdiTable) return ZE_RESULT_ERROR_INVALID_ARGUMENT; if (version < ZE_API_VERSION_1_9) { return ZE_RESULT_ERROR_UNSUPPORTED_VERSION; } ze_result_t result = ZE_RESULT_SUCCESS; pDdiTable->pfnGetExp = L0::zetMetricProgrammableGetExp; pDdiTable->pfnGetPropertiesExp = L0::zetMetricProgrammableGetPropertiesExp; pDdiTable->pfnGetParamInfoExp = L0::zetMetricProgrammableGetParamInfoExp; pDdiTable->pfnGetParamValueInfoExp = L0::zetMetricProgrammableGetParamValueInfoExp; return result; } ZE_DLLEXPORT ze_result_t ZE_APICALL zetGetMetricExpProcAddrTable( ze_api_version_t version, zet_metric_exp_dditable_t *pDdiTable) { if (nullptr == pDdiTable) return ZE_RESULT_ERROR_INVALID_ARGUMENT; if (version < ZE_API_VERSION_1_9) { return ZE_RESULT_ERROR_UNSUPPORTED_VERSION; } ze_result_t result = ZE_RESULT_SUCCESS; pDdiTable->pfnCreateFromProgrammableExp = L0::zetMetricCreateFromProgrammableExp; pDdiTable->pfnDestroyExp = L0::zetMetricDestroyExp; return result; }