feature: add global driver dispatch as prework for DDI handles extension support

As per DDI handles extension, global ddi table pointers will be included
in every L0 handle.

This change is focused on initialization of the global objects and reuse
of them within zeGet...ProcAddrTable functions to avoid duplication
of per component ddi table definitions

Related-To: NEO-13121, NEO-13917
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2025-02-20 17:44:38 +00:00
committed by Compute-Runtime-Automation
parent 6dd948a4b3
commit b10c6b4703
13 changed files with 1137 additions and 505 deletions

View File

@@ -11,6 +11,7 @@
#include "level_zero/core/source/driver/driver.h"
#include "level_zero/core/source/driver/driver_handle_imp.h"
#include "level_zero/ddi/ze_ddi_tables.h"
#include "level_zero/sysman/source/driver/sysman_driver_handle_imp.h"
namespace L0 {
@@ -19,6 +20,9 @@ decltype(&zelLoaderTranslateHandle) loaderTranslateHandleFunc = nullptr;
decltype(&zelSetDriverTeardown) setDriverTeardownFunc = nullptr;
void globalDriverSetup() {
globalDriverDispatch.core.isValidFlag = true;
globalDriverDispatch.tools.isValidFlag = true;
globalDriverDispatch.sysman.isValidFlag = true;
if (!globalDriverHandles) {
globalDriverHandles = new std::vector<_ze_driver_handle_t *>;
}
@@ -64,5 +68,8 @@ void globalDriverTeardown() {
delete Sysman::globalSysmanDriver;
Sysman::globalSysmanDriver = nullptr;
}
globalDriverDispatch.core.isValidFlag = false;
globalDriverDispatch.tools.isValidFlag = false;
globalDriverDispatch.sysman.isValidFlag = false;
}
} // namespace L0