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-17 12:19:27 +00:00
committed by Compute-Runtime-Automation
parent 66f14a8dd4
commit dce4ca8ce7
13 changed files with 1141 additions and 510 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