fix: correct filling ddi table entries 1/n

fill entry only when proper version is requested

Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2024-04-09 13:47:31 +00:00
committed by Compute-Runtime-Automation
parent b69d98652e
commit 898cff1512
3 changed files with 122 additions and 123 deletions

View File

@@ -206,7 +206,7 @@ if(BUILD_WITH_L0)
endif() endif()
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/core/source/cmdlist/cmdlist_extended${BRANCH_DIR_SUFFIX}) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/core/source/cmdlist/cmdlist_extended${BRANCH_DIR_SUFFIX})
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/core/source/cmdqueue/cmdqueue_extended${BRANCH_DIR_SUFFIX}) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/core/source/cmdqueue/cmdqueue_extended${BRANCH_DIR_SUFFIX})
include_directories(ddi${BRANCH_DIR_SUFFIX}) include_directories(ddi)
# Create our shared library/DLL # Create our shared library/DLL
configure_file(ze_intel_gpu_version.h.in ${NEO_BUILD_DIR}/ze_intel_gpu_version.h) configure_file(ze_intel_gpu_version.h.in ${NEO_BUILD_DIR}/ze_intel_gpu_version.h)

View File

@@ -44,25 +44,24 @@ zeGetDriverProcAddrTable(
ze_driver_dditable_t *pDdiTable) { ze_driver_dditable_t *pDdiTable) {
if (nullptr == pDdiTable) if (nullptr == pDdiTable)
return ZE_RESULT_ERROR_INVALID_ARGUMENT; return ZE_RESULT_ERROR_INVALID_ARGUMENT;
if (ZE_MAJOR_VERSION(driverDdiTable.version) != ZE_MAJOR_VERSION(version) || 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; return ZE_RESULT_ERROR_UNSUPPORTED_VERSION;
driverDdiTable.enableTracing = getEnvToBool("ZET_ENABLE_API_TRACING_EXP"); driverDdiTable.enableTracing = getEnvToBool("ZET_ENABLE_API_TRACING_EXP");
ze_result_t result = ZE_RESULT_SUCCESS; ze_result_t result = ZE_RESULT_SUCCESS;
pDdiTable->pfnGet = L0::zeDriverGet; fillDdiEntry(pDdiTable->pfnGet, L0::zeDriverGet, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetApiVersion = L0::zeDriverGetApiVersion; fillDdiEntry(pDdiTable->pfnGetApiVersion, L0::zeDriverGetApiVersion, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetProperties = L0::zeDriverGetProperties; fillDdiEntry(pDdiTable->pfnGetProperties, L0::zeDriverGetProperties, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetIpcProperties = L0::zeDriverGetIpcProperties; fillDdiEntry(pDdiTable->pfnGetIpcProperties, L0::zeDriverGetIpcProperties, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetLastErrorDescription = L0::zeDriverGetLastErrorDescription; fillDdiEntry(pDdiTable->pfnGetExtensionProperties, L0::zeDriverGetExtensionProperties, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetExtensionProperties = L0::zeDriverGetExtensionProperties; fillDdiEntry(pDdiTable->pfnGetExtensionFunctionAddress, L0::zeDriverGetExtensionFunctionAddress, version, ZE_API_VERSION_1_1);
pDdiTable->pfnGetExtensionFunctionAddress = L0::zeDriverGetExtensionFunctionAddress; fillDdiEntry(pDdiTable->pfnGetLastErrorDescription, L0::zeDriverGetLastErrorDescription, version, ZE_API_VERSION_1_6);
driverDdiTable.coreDdiTable.Driver = *pDdiTable; driverDdiTable.coreDdiTable.Driver = *pDdiTable;
if (driverDdiTable.enableTracing) { if (driverDdiTable.enableTracing) {
pDdiTable->pfnGet = zeDriverGetTracing; fillDdiEntry(pDdiTable->pfnGet, zeDriverGetTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetApiVersion = zeDriverGetApiVersionTracing; fillDdiEntry(pDdiTable->pfnGetApiVersion, zeDriverGetApiVersionTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetProperties = zeDriverGetPropertiesTracing; fillDdiEntry(pDdiTable->pfnGetProperties, zeDriverGetPropertiesTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetIpcProperties = zeDriverGetIpcPropertiesTracing; fillDdiEntry(pDdiTable->pfnGetIpcProperties, zeDriverGetIpcPropertiesTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetExtensionProperties = zeDriverGetExtensionPropertiesTracing; fillDdiEntry(pDdiTable->pfnGetExtensionProperties, zeDriverGetExtensionPropertiesTracing, version, ZE_API_VERSION_1_0);
} }
return result; return result;
} }
@@ -73,34 +72,33 @@ zeGetMemProcAddrTable(
ze_mem_dditable_t *pDdiTable) { ze_mem_dditable_t *pDdiTable) {
if (nullptr == pDdiTable) if (nullptr == pDdiTable)
return ZE_RESULT_ERROR_INVALID_ARGUMENT; return ZE_RESULT_ERROR_INVALID_ARGUMENT;
if (ZE_MAJOR_VERSION(driverDdiTable.version) != ZE_MAJOR_VERSION(version) || 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; return ZE_RESULT_ERROR_UNSUPPORTED_VERSION;
driverDdiTable.enableTracing = getEnvToBool("ZET_ENABLE_API_TRACING_EXP"); driverDdiTable.enableTracing = getEnvToBool("ZET_ENABLE_API_TRACING_EXP");
ze_result_t result = ZE_RESULT_SUCCESS; ze_result_t result = ZE_RESULT_SUCCESS;
pDdiTable->pfnAllocShared = L0::zeMemAllocShared; fillDdiEntry(pDdiTable->pfnAllocShared, L0::zeMemAllocShared, version, ZE_API_VERSION_1_0);
pDdiTable->pfnAllocDevice = L0::zeMemAllocDevice; fillDdiEntry(pDdiTable->pfnAllocDevice, L0::zeMemAllocDevice, version, ZE_API_VERSION_1_0);
pDdiTable->pfnAllocHost = L0::zeMemAllocHost; fillDdiEntry(pDdiTable->pfnAllocHost, L0::zeMemAllocHost, version, ZE_API_VERSION_1_0);
pDdiTable->pfnFree = L0::zeMemFree; fillDdiEntry(pDdiTable->pfnFree, L0::zeMemFree, version, ZE_API_VERSION_1_0);
pDdiTable->pfnFreeExt = L0::zeMemFreeExt; fillDdiEntry(pDdiTable->pfnGetAllocProperties, L0::zeMemGetAllocProperties, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetAllocProperties = L0::zeMemGetAllocProperties; fillDdiEntry(pDdiTable->pfnGetAddressRange, L0::zeMemGetAddressRange, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetAddressRange = L0::zeMemGetAddressRange; fillDdiEntry(pDdiTable->pfnGetIpcHandle, L0::zeMemGetIpcHandle, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetIpcHandle = L0::zeMemGetIpcHandle; fillDdiEntry(pDdiTable->pfnOpenIpcHandle, L0::zeMemOpenIpcHandle, version, ZE_API_VERSION_1_0);
pDdiTable->pfnOpenIpcHandle = L0::zeMemOpenIpcHandle; fillDdiEntry(pDdiTable->pfnCloseIpcHandle, L0::zeMemCloseIpcHandle, version, ZE_API_VERSION_1_0);
pDdiTable->pfnCloseIpcHandle = L0::zeMemCloseIpcHandle; fillDdiEntry(pDdiTable->pfnFreeExt, L0::zeMemFreeExt, version, ZE_API_VERSION_1_3);
pDdiTable->pfnPutIpcHandle = L0::zeMemPutIpcHandle; fillDdiEntry(pDdiTable->pfnPutIpcHandle, L0::zeMemPutIpcHandle, version, ZE_API_VERSION_1_6);
driverDdiTable.coreDdiTable.Mem = *pDdiTable; driverDdiTable.coreDdiTable.Mem = *pDdiTable;
if (driverDdiTable.enableTracing) { if (driverDdiTable.enableTracing) {
pDdiTable->pfnAllocShared = zeMemAllocSharedTracing; fillDdiEntry(pDdiTable->pfnAllocShared, zeMemAllocSharedTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnAllocDevice = zeMemAllocDeviceTracing; fillDdiEntry(pDdiTable->pfnAllocDevice, zeMemAllocDeviceTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnAllocHost = zeMemAllocHostTracing; fillDdiEntry(pDdiTable->pfnAllocHost, zeMemAllocHostTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnFree = zeMemFreeTracing; fillDdiEntry(pDdiTable->pfnFree, zeMemFreeTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetAllocProperties = zeMemGetAllocPropertiesTracing; fillDdiEntry(pDdiTable->pfnGetAllocProperties, zeMemGetAllocPropertiesTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetAddressRange = zeMemGetAddressRangeTracing; fillDdiEntry(pDdiTable->pfnGetAddressRange, zeMemGetAddressRangeTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetIpcHandle = zeMemGetIpcHandleTracing; fillDdiEntry(pDdiTable->pfnGetIpcHandle, zeMemGetIpcHandleTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnOpenIpcHandle = zeMemOpenIpcHandleTracing; fillDdiEntry(pDdiTable->pfnOpenIpcHandle, zeMemOpenIpcHandleTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnCloseIpcHandle = zeMemCloseIpcHandleTracing; fillDdiEntry(pDdiTable->pfnCloseIpcHandle, zeMemCloseIpcHandleTracing, version, ZE_API_VERSION_1_0);
} }
return result; return result;
} }
@@ -111,33 +109,32 @@ zeGetContextProcAddrTable(
ze_context_dditable_t *pDdiTable) { ze_context_dditable_t *pDdiTable) {
if (nullptr == pDdiTable) if (nullptr == pDdiTable)
return ZE_RESULT_ERROR_INVALID_ARGUMENT; return ZE_RESULT_ERROR_INVALID_ARGUMENT;
if (ZE_MAJOR_VERSION(driverDdiTable.version) != ZE_MAJOR_VERSION(version) || 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; return ZE_RESULT_ERROR_UNSUPPORTED_VERSION;
driverDdiTable.enableTracing = getEnvToBool("ZET_ENABLE_API_TRACING_EXP"); driverDdiTable.enableTracing = getEnvToBool("ZET_ENABLE_API_TRACING_EXP");
ze_result_t result = ZE_RESULT_SUCCESS; ze_result_t result = ZE_RESULT_SUCCESS;
pDdiTable->pfnCreate = L0::zeContextCreate; fillDdiEntry(pDdiTable->pfnCreate, L0::zeContextCreate, version, ZE_API_VERSION_1_0);
pDdiTable->pfnCreateEx = L0::zeContextCreateEx; fillDdiEntry(pDdiTable->pfnDestroy, L0::zeContextDestroy, version, ZE_API_VERSION_1_0);
pDdiTable->pfnDestroy = L0::zeContextDestroy; fillDdiEntry(pDdiTable->pfnGetStatus, L0::zeContextGetStatus, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetStatus = L0::zeContextGetStatus; fillDdiEntry(pDdiTable->pfnSystemBarrier, L0::zeContextSystemBarrier, version, ZE_API_VERSION_1_0);
pDdiTable->pfnSystemBarrier = L0::zeContextSystemBarrier; fillDdiEntry(pDdiTable->pfnMakeMemoryResident, L0::zeContextMakeMemoryResident, version, ZE_API_VERSION_1_0);
pDdiTable->pfnMakeMemoryResident = L0::zeContextMakeMemoryResident; fillDdiEntry(pDdiTable->pfnEvictMemory, L0::zeContextEvictMemory, version, ZE_API_VERSION_1_0);
pDdiTable->pfnEvictMemory = L0::zeContextEvictMemory; fillDdiEntry(pDdiTable->pfnMakeImageResident, L0::zeContextMakeImageResident, version, ZE_API_VERSION_1_0);
pDdiTable->pfnMakeImageResident = L0::zeContextMakeImageResident; fillDdiEntry(pDdiTable->pfnEvictImage, L0::zeContextEvictImage, version, ZE_API_VERSION_1_0);
pDdiTable->pfnEvictImage = L0::zeContextEvictImage; fillDdiEntry(pDdiTable->pfnCreateEx, L0::zeContextCreateEx, version, ZE_API_VERSION_1_1);
driverDdiTable.coreDdiTable.Context = *pDdiTable; driverDdiTable.coreDdiTable.Context = *pDdiTable;
if (driverDdiTable.enableTracing) { if (driverDdiTable.enableTracing) {
pDdiTable->pfnCreate = zeContextCreateTracing; fillDdiEntry(pDdiTable->pfnCreate, zeContextCreateTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnDestroy = zeContextDestroyTracing; fillDdiEntry(pDdiTable->pfnDestroy, zeContextDestroyTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetStatus = zeContextGetStatusTracing; fillDdiEntry(pDdiTable->pfnGetStatus, zeContextGetStatusTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnSystemBarrier = zeContextSystemBarrierTracing; fillDdiEntry(pDdiTable->pfnSystemBarrier, zeContextSystemBarrierTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnMakeMemoryResident = zeContextMakeMemoryResidentTracing; fillDdiEntry(pDdiTable->pfnMakeMemoryResident, zeContextMakeMemoryResidentTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnEvictMemory = zeContextEvictMemoryTracing; fillDdiEntry(pDdiTable->pfnEvictMemory, zeContextEvictMemoryTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnMakeImageResident = zeContextMakeImageResidentTracing; fillDdiEntry(pDdiTable->pfnMakeImageResident, zeContextMakeImageResidentTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnEvictImage = zeContextEvictImageTracing; fillDdiEntry(pDdiTable->pfnEvictImage, zeContextEvictImageTracing, version, ZE_API_VERSION_1_0);
} }
return result; return result;
} }
@@ -148,20 +145,19 @@ zeGetPhysicalMemProcAddrTable(
ze_physical_mem_dditable_t *pDdiTable) { ze_physical_mem_dditable_t *pDdiTable) {
if (nullptr == pDdiTable) if (nullptr == pDdiTable)
return ZE_RESULT_ERROR_INVALID_ARGUMENT; return ZE_RESULT_ERROR_INVALID_ARGUMENT;
if (ZE_MAJOR_VERSION(driverDdiTable.version) != ZE_MAJOR_VERSION(version) || 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; return ZE_RESULT_ERROR_UNSUPPORTED_VERSION;
driverDdiTable.enableTracing = getEnvToBool("ZET_ENABLE_API_TRACING_EXP"); driverDdiTable.enableTracing = getEnvToBool("ZET_ENABLE_API_TRACING_EXP");
ze_result_t result = ZE_RESULT_SUCCESS; ze_result_t result = ZE_RESULT_SUCCESS;
pDdiTable->pfnCreate = L0::zePhysicalMemCreate; fillDdiEntry(pDdiTable->pfnCreate, L0::zePhysicalMemCreate, version, ZE_API_VERSION_1_0);
pDdiTable->pfnDestroy = L0::zePhysicalMemDestroy; fillDdiEntry(pDdiTable->pfnDestroy, L0::zePhysicalMemDestroy, version, ZE_API_VERSION_1_0);
driverDdiTable.coreDdiTable.PhysicalMem = *pDdiTable; driverDdiTable.coreDdiTable.PhysicalMem = *pDdiTable;
if (driverDdiTable.enableTracing) { if (driverDdiTable.enableTracing) {
pDdiTable->pfnCreate = zePhysicalMemCreateTracing; fillDdiEntry(pDdiTable->pfnCreate, zePhysicalMemCreateTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnDestroy = zePhysicalMemDestroyTracing; fillDdiEntry(pDdiTable->pfnDestroy, zePhysicalMemDestroyTracing, version, ZE_API_VERSION_1_0);
} }
return result; return result;
} }
@@ -172,29 +168,28 @@ zeGetVirtualMemProcAddrTable(
ze_virtual_mem_dditable_t *pDdiTable) { ze_virtual_mem_dditable_t *pDdiTable) {
if (nullptr == pDdiTable) if (nullptr == pDdiTable)
return ZE_RESULT_ERROR_INVALID_ARGUMENT; return ZE_RESULT_ERROR_INVALID_ARGUMENT;
if (ZE_MAJOR_VERSION(driverDdiTable.version) != ZE_MAJOR_VERSION(version) || 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; return ZE_RESULT_ERROR_UNSUPPORTED_VERSION;
driverDdiTable.enableTracing = getEnvToBool("ZET_ENABLE_API_TRACING_EXP"); driverDdiTable.enableTracing = getEnvToBool("ZET_ENABLE_API_TRACING_EXP");
ze_result_t result = ZE_RESULT_SUCCESS; ze_result_t result = ZE_RESULT_SUCCESS;
pDdiTable->pfnReserve = L0::zeVirtualMemReserve; fillDdiEntry(pDdiTable->pfnReserve, L0::zeVirtualMemReserve, version, ZE_API_VERSION_1_0);
pDdiTable->pfnFree = L0::zeVirtualMemFree; fillDdiEntry(pDdiTable->pfnFree, L0::zeVirtualMemFree, version, ZE_API_VERSION_1_0);
pDdiTable->pfnQueryPageSize = L0::zeVirtualMemQueryPageSize; fillDdiEntry(pDdiTable->pfnQueryPageSize, L0::zeVirtualMemQueryPageSize, version, ZE_API_VERSION_1_0);
pDdiTable->pfnMap = L0::zeVirtualMemMap; fillDdiEntry(pDdiTable->pfnMap, L0::zeVirtualMemMap, version, ZE_API_VERSION_1_0);
pDdiTable->pfnUnmap = L0::zeVirtualMemUnmap; fillDdiEntry(pDdiTable->pfnUnmap, L0::zeVirtualMemUnmap, version, ZE_API_VERSION_1_0);
pDdiTable->pfnSetAccessAttribute = L0::zeVirtualMemSetAccessAttribute; fillDdiEntry(pDdiTable->pfnSetAccessAttribute, L0::zeVirtualMemSetAccessAttribute, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetAccessAttribute = L0::zeVirtualMemGetAccessAttribute; fillDdiEntry(pDdiTable->pfnGetAccessAttribute, L0::zeVirtualMemGetAccessAttribute, version, ZE_API_VERSION_1_0);
driverDdiTable.coreDdiTable.VirtualMem = *pDdiTable; driverDdiTable.coreDdiTable.VirtualMem = *pDdiTable;
if (driverDdiTable.enableTracing) { if (driverDdiTable.enableTracing) {
pDdiTable->pfnReserve = zeVirtualMemReserveTracing; fillDdiEntry(pDdiTable->pfnReserve, zeVirtualMemReserveTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnFree = zeVirtualMemFreeTracing; fillDdiEntry(pDdiTable->pfnFree, zeVirtualMemFreeTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnQueryPageSize = zeVirtualMemQueryPageSizeTracing; fillDdiEntry(pDdiTable->pfnQueryPageSize, zeVirtualMemQueryPageSizeTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnMap = zeVirtualMemMapTracing; fillDdiEntry(pDdiTable->pfnMap, zeVirtualMemMapTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnUnmap = zeVirtualMemUnmapTracing; fillDdiEntry(pDdiTable->pfnUnmap, zeVirtualMemUnmapTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnSetAccessAttribute = zeVirtualMemSetAccessAttributeTracing; fillDdiEntry(pDdiTable->pfnSetAccessAttribute, zeVirtualMemSetAccessAttributeTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetAccessAttribute = zeVirtualMemGetAccessAttributeTracing; fillDdiEntry(pDdiTable->pfnGetAccessAttribute, zeVirtualMemGetAccessAttributeTracing, version, ZE_API_VERSION_1_0);
} }
return result; return result;
} }
@@ -211,10 +206,10 @@ zeGetGlobalProcAddrTable(
driverDdiTable.enableTracing = getEnvToBool("ZET_ENABLE_API_TRACING_EXP"); driverDdiTable.enableTracing = getEnvToBool("ZET_ENABLE_API_TRACING_EXP");
ze_result_t result = ZE_RESULT_SUCCESS; ze_result_t result = ZE_RESULT_SUCCESS;
pDdiTable->pfnInit = L0::zeInit; fillDdiEntry(pDdiTable->pfnInit, L0::zeInit, version, ZE_API_VERSION_1_0);
driverDdiTable.coreDdiTable.Global = *pDdiTable; driverDdiTable.coreDdiTable.Global = *pDdiTable;
if (driverDdiTable.enableTracing) { if (driverDdiTable.enableTracing) {
pDdiTable->pfnInit = zeInitTracing; fillDdiEntry(pDdiTable->pfnInit, zeInitTracing, version, ZE_API_VERSION_1_0);
} }
return result; return result;
} }
@@ -225,47 +220,46 @@ zeGetDeviceProcAddrTable(
ze_device_dditable_t *pDdiTable) { ze_device_dditable_t *pDdiTable) {
if (nullptr == pDdiTable) if (nullptr == pDdiTable)
return ZE_RESULT_ERROR_INVALID_ARGUMENT; return ZE_RESULT_ERROR_INVALID_ARGUMENT;
if (ZE_MAJOR_VERSION(driverDdiTable.version) != ZE_MAJOR_VERSION(version) || 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; return ZE_RESULT_ERROR_UNSUPPORTED_VERSION;
driverDdiTable.enableTracing = getEnvToBool("ZET_ENABLE_API_TRACING_EXP"); driverDdiTable.enableTracing = getEnvToBool("ZET_ENABLE_API_TRACING_EXP");
ze_result_t result = ZE_RESULT_SUCCESS; ze_result_t result = ZE_RESULT_SUCCESS;
pDdiTable->pfnGet = L0::zeDeviceGet; fillDdiEntry(pDdiTable->pfnGet, L0::zeDeviceGet, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetCommandQueueGroupProperties = L0::zeDeviceGetCommandQueueGroupProperties; fillDdiEntry(pDdiTable->pfnGetCommandQueueGroupProperties, L0::zeDeviceGetCommandQueueGroupProperties, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetSubDevices = L0::zeDeviceGetSubDevices; fillDdiEntry(pDdiTable->pfnGetSubDevices, L0::zeDeviceGetSubDevices, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetProperties = L0::zeDeviceGetProperties; fillDdiEntry(pDdiTable->pfnGetProperties, L0::zeDeviceGetProperties, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetComputeProperties = L0::zeDeviceGetComputeProperties; fillDdiEntry(pDdiTable->pfnGetComputeProperties, L0::zeDeviceGetComputeProperties, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetModuleProperties = L0::zeDeviceGetModuleProperties; fillDdiEntry(pDdiTable->pfnGetModuleProperties, L0::zeDeviceGetModuleProperties, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetMemoryProperties = L0::zeDeviceGetMemoryProperties; fillDdiEntry(pDdiTable->pfnGetMemoryProperties, L0::zeDeviceGetMemoryProperties, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetMemoryAccessProperties = L0::zeDeviceGetMemoryAccessProperties; fillDdiEntry(pDdiTable->pfnGetMemoryAccessProperties, L0::zeDeviceGetMemoryAccessProperties, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetCacheProperties = L0::zeDeviceGetCacheProperties; fillDdiEntry(pDdiTable->pfnGetCacheProperties, L0::zeDeviceGetCacheProperties, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetImageProperties = L0::zeDeviceGetImageProperties; fillDdiEntry(pDdiTable->pfnGetImageProperties, L0::zeDeviceGetImageProperties, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetP2PProperties = L0::zeDeviceGetP2PProperties; fillDdiEntry(pDdiTable->pfnGetP2PProperties, L0::zeDeviceGetP2PProperties, version, ZE_API_VERSION_1_0);
pDdiTable->pfnCanAccessPeer = L0::zeDeviceCanAccessPeer; fillDdiEntry(pDdiTable->pfnCanAccessPeer, L0::zeDeviceCanAccessPeer, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetStatus = L0::zeDeviceGetStatus; fillDdiEntry(pDdiTable->pfnGetStatus, L0::zeDeviceGetStatus, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetExternalMemoryProperties = L0::zeDeviceGetExternalMemoryProperties; fillDdiEntry(pDdiTable->pfnGetExternalMemoryProperties, L0::zeDeviceGetExternalMemoryProperties, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetGlobalTimestamps = L0::zeDeviceGetGlobalTimestamps; fillDdiEntry(pDdiTable->pfnGetGlobalTimestamps, L0::zeDeviceGetGlobalTimestamps, version, ZE_API_VERSION_1_1);
pDdiTable->pfnReserveCacheExt = L0::zeDeviceReserveCacheExt; fillDdiEntry(pDdiTable->pfnReserveCacheExt, L0::zeDeviceReserveCacheExt, version, ZE_API_VERSION_1_2);
pDdiTable->pfnSetCacheAdviceExt = L0::zeDeviceSetCacheAdviceExt; fillDdiEntry(pDdiTable->pfnSetCacheAdviceExt, L0::zeDeviceSetCacheAdviceExt, version, ZE_API_VERSION_1_2);
pDdiTable->pfnPciGetPropertiesExt = L0::zeDevicePciGetPropertiesExt; fillDdiEntry(pDdiTable->pfnPciGetPropertiesExt, L0::zeDevicePciGetPropertiesExt, version, ZE_API_VERSION_1_3);
pDdiTable->pfnGetRootDevice = L0::zeDeviceGetRootDevice; fillDdiEntry(pDdiTable->pfnGetRootDevice, L0::zeDeviceGetRootDevice, version, ZE_API_VERSION_1_7);
driverDdiTable.coreDdiTable.Device = *pDdiTable; driverDdiTable.coreDdiTable.Device = *pDdiTable;
if (driverDdiTable.enableTracing) { if (driverDdiTable.enableTracing) {
pDdiTable->pfnGet = zeDeviceGetTracing; fillDdiEntry(pDdiTable->pfnGet, zeDeviceGetTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetCommandQueueGroupProperties = zeDeviceGetCommandQueueGroupPropertiesTracing; fillDdiEntry(pDdiTable->pfnGetCommandQueueGroupProperties, zeDeviceGetCommandQueueGroupPropertiesTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetSubDevices = zeDeviceGetSubDevicesTracing; fillDdiEntry(pDdiTable->pfnGetSubDevices, zeDeviceGetSubDevicesTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetProperties = zeDeviceGetPropertiesTracing; fillDdiEntry(pDdiTable->pfnGetProperties, zeDeviceGetPropertiesTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetComputeProperties = zeDeviceGetComputePropertiesTracing; fillDdiEntry(pDdiTable->pfnGetComputeProperties, zeDeviceGetComputePropertiesTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetModuleProperties = zeDeviceGetModulePropertiesTracing; fillDdiEntry(pDdiTable->pfnGetModuleProperties, zeDeviceGetModulePropertiesTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetMemoryProperties = zeDeviceGetMemoryPropertiesTracing; fillDdiEntry(pDdiTable->pfnGetMemoryProperties, zeDeviceGetMemoryPropertiesTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetMemoryAccessProperties = zeDeviceGetMemoryAccessPropertiesTracing; fillDdiEntry(pDdiTable->pfnGetMemoryAccessProperties, zeDeviceGetMemoryAccessPropertiesTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetCacheProperties = zeDeviceGetCachePropertiesTracing; fillDdiEntry(pDdiTable->pfnGetCacheProperties, zeDeviceGetCachePropertiesTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetImageProperties = zeDeviceGetImagePropertiesTracing; fillDdiEntry(pDdiTable->pfnGetImageProperties, zeDeviceGetImagePropertiesTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetP2PProperties = zeDeviceGetP2PPropertiesTracing; fillDdiEntry(pDdiTable->pfnGetP2PProperties, zeDeviceGetP2PPropertiesTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnCanAccessPeer = zeDeviceCanAccessPeerTracing; fillDdiEntry(pDdiTable->pfnCanAccessPeer, zeDeviceCanAccessPeerTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetStatus = zeDeviceGetStatusTracing; fillDdiEntry(pDdiTable->pfnGetStatus, zeDeviceGetStatusTracing, version, ZE_API_VERSION_1_0);
pDdiTable->pfnGetExternalMemoryProperties = zeDeviceGetExternalMemoryPropertiesTracing; fillDdiEntry(pDdiTable->pfnGetExternalMemoryProperties, zeDeviceGetExternalMemoryPropertiesTracing, version, ZE_API_VERSION_1_0);
} }
return result; return result;
} }
@@ -276,12 +270,11 @@ zeGetDeviceExpProcAddrTable(
ze_device_exp_dditable_t *pDdiTable) { ze_device_exp_dditable_t *pDdiTable) {
if (nullptr == pDdiTable) if (nullptr == pDdiTable)
return ZE_RESULT_ERROR_INVALID_ARGUMENT; return ZE_RESULT_ERROR_INVALID_ARGUMENT;
if (ZE_MAJOR_VERSION(driverDdiTable.version) != ZE_MAJOR_VERSION(version) || 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; return ZE_RESULT_ERROR_UNSUPPORTED_VERSION;
ze_result_t result = ZE_RESULT_SUCCESS; ze_result_t result = ZE_RESULT_SUCCESS;
pDdiTable->pfnGetFabricVertexExp = L0::zeDeviceGetFabricVertexExp; fillDdiEntry(pDdiTable->pfnGetFabricVertexExp, L0::zeDeviceGetFabricVertexExp, version, ZE_API_VERSION_1_4);
driverDdiTable.coreDdiTable.DeviceExp = *pDdiTable; driverDdiTable.coreDdiTable.DeviceExp = *pDdiTable;
return result; return result;
} }
@@ -302,10 +295,9 @@ zeGetCommandQueueProcAddrTable(
pDdiTable->pfnDestroy = L0::zeCommandQueueDestroy; pDdiTable->pfnDestroy = L0::zeCommandQueueDestroy;
pDdiTable->pfnExecuteCommandLists = L0::zeCommandQueueExecuteCommandLists; pDdiTable->pfnExecuteCommandLists = L0::zeCommandQueueExecuteCommandLists;
pDdiTable->pfnSynchronize = L0::zeCommandQueueSynchronize; pDdiTable->pfnSynchronize = L0::zeCommandQueueSynchronize;
if (version >= ZE_API_VERSION_1_9) { fillDdiEntry(pDdiTable->pfnGetOrdinal, L0::zeCommandQueueGetOrdinal, version, ZE_API_VERSION_1_9);
pDdiTable->pfnGetOrdinal = L0::zeCommandQueueGetOrdinal; fillDdiEntry(pDdiTable->pfnGetIndex, L0::zeCommandQueueGetIndex, version, ZE_API_VERSION_1_9);
pDdiTable->pfnGetIndex = L0::zeCommandQueueGetIndex;
}
driverDdiTable.coreDdiTable.CommandQueue = *pDdiTable; driverDdiTable.coreDdiTable.CommandQueue = *pDdiTable;
if (driverDdiTable.enableTracing) { if (driverDdiTable.enableTracing) {
pDdiTable->pfnCreate = zeCommandQueueCreateTracing; pDdiTable->pfnCreate = zeCommandQueueCreateTracing;

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2020-2023 Intel Corporation * Copyright (C) 2020-2024 Intel Corporation
* *
* SPDX-License-Identifier: MIT * SPDX-License-Identifier: MIT
* *
@@ -31,3 +31,10 @@ typedef struct _ze_gpu_driver_dditable_t {
extern ze_gpu_driver_dditable_t driverDdiTable; extern ze_gpu_driver_dditable_t driverDdiTable;
} // extern "C" } // extern "C"
template <typename FuncType>
inline void fillDdiEntry(FuncType &entry, FuncType function, ze_api_version_t loaderVersion, ze_api_version_t requiredVersion) {
if (loaderVersion >= requiredVersion) {
entry = function;
}
}