diff --git a/scripts/templates/ldrddi.cpp.mako b/scripts/templates/ldrddi.cpp.mako index 72e5c2ed..975ea7c7 100644 --- a/scripts/templates/ldrddi.cpp.mako +++ b/scripts/templates/ldrddi.cpp.mako @@ -410,9 +410,10 @@ ${tbl['export']['name']}( %endif %if tbl['experimental'] is False: #//Experimental Tables may not be implemented in driver auto getTableResult = getTable( version, &drv.dditable.${n}.${tbl['name']}); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; %if namespace != "zes": %if tbl['name'] == "Global": diff --git a/scripts/templates/ze_loader_internal.h.mako b/scripts/templates/ze_loader_internal.h.mako index 9937b814..d249eb80 100644 --- a/scripts/templates/ze_loader_internal.h.mako +++ b/scripts/templates/ze_loader_internal.h.mako @@ -93,6 +93,7 @@ namespace loader std::unordered_map image_handle_map; std::unordered_map sampler_handle_map; ze_api_version_t version = ZE_API_VERSION_CURRENT; + ze_api_version_t configured_version = ZE_API_VERSION_CURRENT; driver_vector_t allDrivers; driver_vector_t zeDrivers; diff --git a/source/loader/ze_ldrddi.cpp b/source/loader/ze_ldrddi.cpp index ad443e83..f424c7c4 100644 --- a/source/loader/ze_ldrddi.cpp +++ b/source/loader/ze_ldrddi.cpp @@ -6909,9 +6909,10 @@ zeGetGlobalProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.ze.Global); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; if (drv.dditable.ze.Global.pfnInitDrivers) { loader::context->initDriversSupport = true; @@ -7009,9 +7010,10 @@ zeGetRTASBuilderProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.ze.RTASBuilder); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -7209,9 +7211,10 @@ zeGetRTASParallelOperationProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.ze.RTASParallelOperation); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -7406,9 +7409,10 @@ zeGetDriverProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.ze.Driver); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -7606,9 +7610,10 @@ zeGetDeviceProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.ze.Device); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -7848,9 +7853,10 @@ zeGetContextProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.ze.Context); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -7966,9 +7972,10 @@ zeGetCommandQueueProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.ze.CommandQueue); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -8075,9 +8082,10 @@ zeGetCommandListProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.ze.CommandList); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -8380,9 +8388,10 @@ zeGetEventProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.ze.Event); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -8589,9 +8598,10 @@ zeGetEventPoolProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.ze.EventPool); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -8704,9 +8714,10 @@ zeGetFenceProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.ze.Fence); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -8810,9 +8821,10 @@ zeGetImageProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.ze.Image); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -9007,9 +9019,10 @@ zeGetKernelProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.ze.Kernel); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -9225,9 +9238,10 @@ zeGetMemProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.ze.Mem); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -9446,9 +9460,10 @@ zeGetModuleProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.ze.Module); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -9564,9 +9579,10 @@ zeGetModuleBuildLogProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.ze.ModuleBuildLog); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -9661,9 +9677,10 @@ zeGetPhysicalMemProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.ze.PhysicalMem); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -9758,9 +9775,10 @@ zeGetSamplerProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.ze.Sampler); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -9855,9 +9873,10 @@ zeGetVirtualMemProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.ze.VirtualMem); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } diff --git a/source/loader/ze_loader.cpp b/source/loader/ze_loader.cpp index 1cad8aba..fb05f7e6 100644 --- a/source/loader/ze_loader.cpp +++ b/source/loader/ze_loader.cpp @@ -372,7 +372,7 @@ namespace loader } zes_global_dditable_t global; - auto getTableResult = getTable(ZE_API_VERSION_CURRENT, &global); + auto getTableResult = getTable(this->configured_version, &global); if(getTableResult != ZE_RESULT_SUCCESS) { if (debugTraceEnabled) { std::string errorMessage = "init driver " + driver.name + " failed, zesGetGlobalProcAddrTable() failed with "; diff --git a/source/loader/ze_loader_internal.h b/source/loader/ze_loader_internal.h index e391523b..d3e42238 100644 --- a/source/loader/ze_loader_internal.h +++ b/source/loader/ze_loader_internal.h @@ -129,6 +129,7 @@ namespace loader std::unordered_map image_handle_map; std::unordered_map sampler_handle_map; ze_api_version_t version = ZE_API_VERSION_CURRENT; + ze_api_version_t configured_version = ZE_API_VERSION_CURRENT; driver_vector_t allDrivers; driver_vector_t zeDrivers; diff --git a/source/loader/zes_ldrddi.cpp b/source/loader/zes_ldrddi.cpp index de3a665a..db5649ed 100644 --- a/source/loader/zes_ldrddi.cpp +++ b/source/loader/zes_ldrddi.cpp @@ -4623,9 +4623,10 @@ zesGetGlobalProcAddrTable( continue; } auto getTableResult = getTable( version, &drv.dditable.zes.Global); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -4701,9 +4702,10 @@ zesGetDeviceProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zes.Device); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -4962,9 +4964,10 @@ zesGetDriverProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zes.Driver); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -5121,9 +5124,10 @@ zesGetDiagnosticsProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zes.Diagnostics); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -5205,9 +5209,10 @@ zesGetEngineProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zes.Engine); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -5289,9 +5294,10 @@ zesGetFabricPortProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zes.FabricPort); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -5388,9 +5394,10 @@ zesGetFanProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zes.Fan); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -5481,9 +5488,10 @@ zesGetFirmwareProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zes.Firmware); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -5640,9 +5648,10 @@ zesGetFrequencyProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zes.Frequency); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -5766,9 +5775,10 @@ zesGetLedProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zes.Led); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -5853,9 +5863,10 @@ zesGetMemoryProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zes.Memory); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -5941,9 +5952,10 @@ zesGetOverclockProcAddrTable( continue; } auto getTableResult = getTable( version, &drv.dditable.zes.Overclock); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -6043,9 +6055,10 @@ zesGetPerformanceFactorProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zes.PerformanceFactor); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -6127,9 +6140,10 @@ zesGetPowerProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zes.Power); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -6226,9 +6240,10 @@ zesGetPsuProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zes.Psu); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -6307,9 +6322,10 @@ zesGetRasProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zes.Ras); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -6466,9 +6482,10 @@ zesGetSchedulerProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zes.Scheduler); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -6565,9 +6582,10 @@ zesGetStandbyProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zes.Standby); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -6649,9 +6667,10 @@ zesGetTemperatureProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zes.Temperature); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } diff --git a/source/loader/zet_ldrddi.cpp b/source/loader/zet_ldrddi.cpp index f0f99072..3077950e 100644 --- a/source/loader/zet_ldrddi.cpp +++ b/source/loader/zet_ldrddi.cpp @@ -2652,9 +2652,10 @@ zetGetDeviceProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zet.Device); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -2808,9 +2809,10 @@ zetGetContextProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zet.Context); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -2886,9 +2888,10 @@ zetGetCommandListProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zet.CommandList); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -3042,9 +3045,10 @@ zetGetKernelProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zet.Kernel); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -3120,9 +3124,10 @@ zetGetModuleProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zet.Module); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -3198,9 +3203,10 @@ zetGetDebugProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zet.Debug); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -3309,9 +3315,10 @@ zetGetMetricProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zet.Metric); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -3465,9 +3472,10 @@ zetGetMetricGroupProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zet.MetricGroup); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -3642,9 +3650,10 @@ zetGetMetricQueryProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zet.MetricQuery); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -3729,9 +3738,10 @@ zetGetMetricQueryPoolProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zet.MetricQueryPool); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -3810,9 +3820,10 @@ zetGetMetricStreamerProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zet.MetricStreamer); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; } @@ -3894,9 +3905,10 @@ zetGetTracerExpProcAddrTable( if(!getTable) continue; auto getTableResult = getTable( version, &drv.dditable.zet.TracerExp); - if(getTableResult == ZE_RESULT_SUCCESS) + if(getTableResult == ZE_RESULT_SUCCESS) { atLeastOneDriverValid = true; - else + loader::context->configured_version = version; + } else drv.initStatus = getTableResult; }