diff --git a/CHANGELOG.md b/CHANGELOG.md index d7033c70..b72adba6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # Level zero loader changelog - +## v1.23.1 +* Fix Sysman only DDI Init for zesDriver compatability ## v1.23.0 * fix build for certification checker * Fix missing code gen and add check in sysman device get for context diff --git a/CMakeLists.txt b/CMakeLists.txt index eeed9cd7..d1c14283 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,7 +13,7 @@ if(MSVC AND (MSVC_VERSION LESS 1900)) endif() # This project follows semantic versioning (https://semver.org/) -project(level-zero VERSION 1.23.0) +project(level-zero VERSION 1.23.1) include(GNUInstallDirs) diff --git a/PRODUCT_GUID.txt b/PRODUCT_GUID.txt index 82243d87..3e2a2635 100644 --- a/PRODUCT_GUID.txt +++ b/PRODUCT_GUID.txt @@ -1,2 +1,2 @@ -1.23.0 -146652e2-0b5a-4461-b176-800135676a46 +1.23.1 +fd1c864d-4ba3-4321-bdfc-66f50cf6b6bf \ No newline at end of file diff --git a/scripts/templates/ldrddi.cpp.mako b/scripts/templates/ldrddi.cpp.mako index 12141e6f..b1a9c542 100644 --- a/scripts/templates/ldrddi.cpp.mako +++ b/scripts/templates/ldrddi.cpp.mako @@ -166,6 +166,7 @@ namespace loader { for( uint32_t i = 0; i < library_driver_handle_count; ++i ) { uint32_t driver_index = total_driver_handle_count + i; + %if namespace != "zes": if (drv.driverDDIHandleSupportQueried == false) { drv.properties = {}; drv.properties.stype = ZE_STRUCTURE_TYPE_DRIVER_DDI_HANDLES_EXT_PROPERTIES; @@ -185,9 +186,22 @@ namespace loader drv.driverDDIHandleSupportQueried = true; } if (!(drv.properties.flags & ZE_DRIVER_DDI_HANDLE_EXT_FLAG_DDI_HANDLE_EXT_SUPPORTED) || !loader::context->driverDDIPathDefault) { + if (loader::context->debugTraceEnabled) { + std::string message = "Driver DDI Handles Not Supported for " + drv.name; + loader::context->debug_trace_message(message, ""); + } ${obj['params'][1]['name']}[ driver_index ] = reinterpret_cast<${n}_driver_handle_t>( context->${n}_driver_factory.getInstance( ${obj['params'][1]['name']}[ driver_index ], &drv.dditable ) ); + } else if (drv.properties.flags & ZE_DRIVER_DDI_HANDLE_EXT_FLAG_DDI_HANDLE_EXT_SUPPORTED) { + if (loader::context->debugTraceEnabled) { + std::string message = "Driver DDI Handles Supported for " + drv.name; + loader::context->debug_trace_message(message, ""); + } } + %else: + ${obj['params'][1]['name']}[ driver_index ] = reinterpret_cast<${n}_driver_handle_t>( + context->${n}_driver_factory.getInstance( ${obj['params'][1]['name']}[ driver_index ], &drv.dditable ) ); + %endif } } catch( std::bad_alloc& ) diff --git a/source/loader/ze_ldrddi.cpp b/source/loader/ze_ldrddi.cpp index 882628fe..b4afb3d7 100644 --- a/source/loader/ze_ldrddi.cpp +++ b/source/loader/ze_ldrddi.cpp @@ -120,8 +120,17 @@ namespace loader drv.driverDDIHandleSupportQueried = true; } if (!(drv.properties.flags & ZE_DRIVER_DDI_HANDLE_EXT_FLAG_DDI_HANDLE_EXT_SUPPORTED) || !loader::context->driverDDIPathDefault) { + if (loader::context->debugTraceEnabled) { + std::string message = "Driver DDI Handles Not Supported for " + drv.name; + loader::context->debug_trace_message(message, ""); + } phDrivers[ driver_index ] = reinterpret_cast( context->ze_driver_factory.getInstance( phDrivers[ driver_index ], &drv.dditable ) ); + } else if (drv.properties.flags & ZE_DRIVER_DDI_HANDLE_EXT_FLAG_DDI_HANDLE_EXT_SUPPORTED) { + if (loader::context->debugTraceEnabled) { + std::string message = "Driver DDI Handles Supported for " + drv.name; + loader::context->debug_trace_message(message, ""); + } } } } @@ -228,8 +237,17 @@ namespace loader drv.driverDDIHandleSupportQueried = true; } if (!(drv.properties.flags & ZE_DRIVER_DDI_HANDLE_EXT_FLAG_DDI_HANDLE_EXT_SUPPORTED) || !loader::context->driverDDIPathDefault) { + if (loader::context->debugTraceEnabled) { + std::string message = "Driver DDI Handles Not Supported for " + drv.name; + loader::context->debug_trace_message(message, ""); + } phDrivers[ driver_index ] = reinterpret_cast( context->ze_driver_factory.getInstance( phDrivers[ driver_index ], &drv.dditable ) ); + } else if (drv.properties.flags & ZE_DRIVER_DDI_HANDLE_EXT_FLAG_DDI_HANDLE_EXT_SUPPORTED) { + if (loader::context->debugTraceEnabled) { + std::string message = "Driver DDI Handles Supported for " + drv.name; + loader::context->debug_trace_message(message, ""); + } } } } diff --git a/source/loader/ze_loader.cpp b/source/loader/ze_loader.cpp index d89b5b29..42cbce7a 100644 --- a/source/loader/ze_loader.cpp +++ b/source/loader/ze_loader.cpp @@ -77,29 +77,10 @@ namespace loader permissiveDesc.stype = ZE_STRUCTURE_TYPE_INIT_DRIVER_TYPE_DESC; permissiveDesc.pNext = nullptr; permissiveDesc.flags = UINT32_MAX; + if (sysmanOnly) { + return true; // Sorting not fully supported by the spec due to missing zesDriverGetProperties for sysman drivers. + } for (auto &driver : *drivers) { - if (sysmanOnly) { - for (auto &coreDriver : this->zeDrivers) { - if (coreDriver.name == driver.name) { - if (!driver.dditable.ze.Global.pfnInitDrivers) { - driver.dditable.ze.Global.pfnInitDrivers = coreDriver.dditable.ze.Global.pfnInitDrivers; - } - if (!driver.dditable.ze.Driver.pfnGet) { - driver.dditable.ze.Driver.pfnGet = coreDriver.dditable.ze.Driver.pfnGet; - } - if (!driver.dditable.ze.Driver.pfnGetProperties) { - driver.dditable.ze.Driver.pfnGetProperties = coreDriver.dditable.ze.Driver.pfnGetProperties; - } - if (!driver.dditable.ze.Device.pfnGet) { - driver.dditable.ze.Device.pfnGet = coreDriver.dditable.ze.Device.pfnGet; - } - if (!driver.dditable.ze.Device.pfnGetProperties) { - driver.dditable.ze.Device.pfnGetProperties = coreDriver.dditable.ze.Device.pfnGetProperties; - } - break; - } - } - } uint32_t pCount = 0; std::vector driverHandles; ze_result_t res = ZE_RESULT_SUCCESS; diff --git a/source/loader/zes_ldrddi.cpp b/source/loader/zes_ldrddi.cpp index 179e72f8..2219b03b 100644 --- a/source/loader/zes_ldrddi.cpp +++ b/source/loader/zes_ldrddi.cpp @@ -105,28 +105,8 @@ namespace loader { for( uint32_t i = 0; i < library_driver_handle_count; ++i ) { uint32_t driver_index = total_driver_handle_count + i; - if (drv.driverDDIHandleSupportQueried == false) { - drv.properties = {}; - drv.properties.stype = ZE_STRUCTURE_TYPE_DRIVER_DDI_HANDLES_EXT_PROPERTIES; - drv.properties.pNext = nullptr; - ze_driver_properties_t driverProperties = {}; - driverProperties.stype = ZE_STRUCTURE_TYPE_DRIVER_PROPERTIES; - driverProperties.pNext = nullptr; - driverProperties.pNext = &drv.properties; - ze_result_t res = drv.dditable.ze.Driver.pfnGetProperties(phDrivers[ driver_index ], &driverProperties); - if (res != ZE_RESULT_SUCCESS) { - if (loader::context->debugTraceEnabled) { - std::string message = drv.name + " failed zeDriverGetProperties query, returned "; - loader::context->debug_trace_message(message, loader::to_string(res)); - } - return res; - } - drv.driverDDIHandleSupportQueried = true; - } - if (!(drv.properties.flags & ZE_DRIVER_DDI_HANDLE_EXT_FLAG_DDI_HANDLE_EXT_SUPPORTED) || !loader::context->driverDDIPathDefault) { - phDrivers[ driver_index ] = reinterpret_cast( - context->zes_driver_factory.getInstance( phDrivers[ driver_index ], &drv.dditable ) ); - } + phDrivers[ driver_index ] = reinterpret_cast( + context->zes_driver_factory.getInstance( phDrivers[ driver_index ], &drv.dditable ) ); } } catch( std::bad_alloc& )