@@ -324,16 +324,18 @@ namespace loader
324324 continue ;
325325 }
326326 } else {
327+ res = ZE_RESULT_ERROR_UNINITIALIZED;
327328 if (debugTraceEnabled) {
328- std::string message = " driverSorting " + driver.name + " zeDriverGet and zeInitDrivers not supported, skipping driver" ;
329+ std::string message = " driverSorting " + driver.name + " zeDriverGet and zeInitDrivers not supported, skipping driver with error " ;
329330 debug_trace_message (message, loader::to_string (res));
330331 }
331332 continue ;
332333 }
333334
334335 for (auto handle : driverHandles) {
335336 uint32_t extensionCount = 0 ;
336- driver.zerDriverHandle = handle;
337+ if (driver.zerddiInitResult == ZE_RESULT_SUCCESS)
338+ driver.zerDriverHandle = handle;
337339 ze_result_t res = driver.dditable .ze .Driver .pfnGetExtensionProperties (handle, &extensionCount, nullptr );
338340 if (res != ZE_RESULT_SUCCESS) {
339341 if (loader::context->debugTraceEnabled ) {
@@ -544,31 +546,40 @@ namespace loader
544546 std::string message = " init driver " + driver.name + " failed, zeloaderInitDriverDDITables returned " ;
545547 debug_trace_message (message, loader::to_string (res));
546548 }
547- return res;
549+ driver.zeddiInitResult = res;
550+ } else {
551+ driver.zeddiInitResult = ZE_RESULT_SUCCESS;
548552 }
549553 res = loader::zesloaderInitDriverDDITables (&driver);
550554 if (res != ZE_RESULT_SUCCESS) {
551555 if (debugTraceEnabled) {
552556 std::string message = " init driver " + driver.name + " failed, zesloaderInitDriverDDITables returned " ;
553557 debug_trace_message (message, loader::to_string (res));
554558 }
555- return res;
559+ driver.zesddiInitResult = res;
560+ } else {
561+ driver.zesddiInitResult = ZE_RESULT_SUCCESS;
556562 }
557563 res = loader::zetloaderInitDriverDDITables (&driver);
558564 if (res != ZE_RESULT_SUCCESS) {
559565 if (debugTraceEnabled) {
560566 std::string message = " init driver " + driver.name + " failed, zetloaderInitDriverDDITables returned " ;
561567 debug_trace_message (message, loader::to_string (res));
562568 }
563- return res;
569+ driver.zetddiInitResult = res;
570+ } else {
571+ driver.zetddiInitResult = ZE_RESULT_SUCCESS;
564572 }
565573 res = loader::zerloaderInitDriverDDITables (&driver);
566574 if (res != ZE_RESULT_SUCCESS) {
567575 if (debugTraceEnabled) {
568576 std::string message = " init driver " + driver.name + " failed, zerloaderInitDriverDDITables returned " ;
569577 debug_trace_message (message, loader::to_string (res));
570578 }
571- return res;
579+ driver.zerddiInitResult = res;
580+ driver.zerDriverHandle = nullptr ;
581+ } else {
582+ driver.zerddiInitResult = ZE_RESULT_SUCCESS;
572583 }
573584 driver.ddiInitialized = true ;
574585 }
@@ -676,29 +687,6 @@ namespace loader
676687 allDrivers.emplace_back ();
677688 allDrivers.rbegin ()->handle = nullptr ;
678689 allDrivers.rbegin ()->name = name;
679- // auto handle = LOAD_DRIVER_LIBRARY( name.c_str() );
680- // if( NULL != handle )
681- // {
682- // if (debugTraceEnabled) {
683- // std::string message = "Loading Driver " + name + " succeeded";
684- // #if !defined(_WIN32) && !defined(ANDROID)
685- // // TODO: implement same message for windows, move dlinfo to ze_util.h as a macro
686- // struct link_map *dlinfo_map;
687- // if (dlinfo(handle, RTLD_DI_LINKMAP, &dlinfo_map) == 0) {
688- // message += " from: " + std::string(dlinfo_map->l_name);
689- // }
690- // #endif
691- // debug_trace_message(message, "");
692- // }
693- // allDrivers.emplace_back();
694- // allDrivers.rbegin()->handle = handle;
695- // allDrivers.rbegin()->name = name;
696- // } else if (debugTraceEnabled) {
697- // GET_LIBRARY_ERROR(loadLibraryErrorValue);
698- // std::string errorMessage = "Load Library of " + name + " failed with ";
699- // debug_trace_message(errorMessage, loadLibraryErrorValue);
700- // loadLibraryErrorValue.clear();
701- // }
702690 }
703691 if (allDrivers.size ()==0 ){
704692 if (debugTraceEnabled) {
@@ -777,7 +765,7 @@ namespace loader
777765 driverEnvironmentQueried = true ;
778766
779767 // Set default driver handle and DDI table to the first driver in the list before sorting.
780- loader::context->defaultZerDriverHandle = & loader::context->zeDrivers .front ().zerDriverHandle ;
768+ loader::context->defaultZerDriverHandle = loader::context->zeDrivers .front ().zerDriverHandle ;
781769 loader::defaultZerDdiTable = &loader::context->zeDrivers .front ().dditable .zer ;
782770
783771 zel_logger->log_info (" zeInit succeeded" );
0 commit comments