Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions scripts/templates/ze_loader_internal.h.mako
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,10 @@ namespace loader
ze_result_t zetddiInitResult = ZE_RESULT_ERROR_UNINITIALIZED;
ze_result_t zesddiInitResult = ZE_RESULT_ERROR_UNINITIALIZED;
ze_result_t zerddiInitResult = ZE_RESULT_ERROR_UNINITIALIZED;

// Resolved gate hook; null = driver doesn't support extension tracing.
zel_pfnDriverEnableTracing_t pfnDriverEnableTracing = nullptr;
bool driverEnableTracingResolved = false;
};

using driver_vector_t = std::vector< driver_t >;
Expand Down Expand Up @@ -132,6 +136,7 @@ namespace loader
bool debugTraceAdvanced = false; // true when ZE_ENABLE_LOADER_DEBUG_TRACE=2 or ZEL_ENABLE_LOADER_LOGGING=2
bool driverDDIPathDefault = false;
bool tracingLayerEnabled = false;
std::atomic<bool> anyExtensionCallbackRegistered{false};
std::once_flag coreDriverSortOnce;
std::once_flag sysmanDriverSortOnce;
std::atomic<bool> sortingInProgress = {false};
Expand All @@ -146,4 +151,7 @@ namespace loader
extern ze_handle_t* loaderDispatch;
extern zer_dditable_t* defaultZerDdiTable;
extern context_t *context;

// Toggles one driver's "zelDriverEnableTracing" gate; UNSUPPORTED if absent.
ze_result_t enableDriverExtensionTracing(driver_t &driver, ze_bool_t enable);
}
15 changes: 3 additions & 12 deletions source/loader/ze_loader_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,14 +67,8 @@ namespace loader
ze_result_t zetddiInitResult = ZE_RESULT_ERROR_UNINITIALIZED;
ze_result_t zesddiInitResult = ZE_RESULT_ERROR_UNINITIALIZED;
ze_result_t zerddiInitResult = ZE_RESULT_ERROR_UNINITIALIZED;
// This driver's "zelDriverEnableTracing" gate hook, resolved once at
// driver-init time. A null pointer means the driver does not support
// extension-function tracing, so every runtime enable/disable toggle
// (which a perf tool like VTune calls frequently) is a simple null check
// plus a call - no by-name GetExtensionFunctionAddress lookup on the hot
// path. driverEnableTracingResolved guards the one-time capability probe:
// init_driver can run more than once per driver, and the probe call
// mutates the gate, so it must fire exactly once (before any real enable).

// Resolved gate hook; null = driver doesn't support extension tracing.
zel_pfnDriverEnableTracing_t pfnDriverEnableTracing = nullptr;
bool driverEnableTracingResolved = false;
};
Expand Down Expand Up @@ -200,9 +194,6 @@ namespace loader
extern zer_dditable_t* defaultZerDdiTable;
extern context_t *context;

// Enable/disable extension-function tracing on a single driver by resolving
// its "zelDriverEnableTracing" hook by name. No-op (returns UNSUPPORTED) for
// drivers that don't implement it. Used to propagate the tracing-layer
// enable/disable state (env + dynamic) down to each driver.
// Toggles one driver's "zelDriverEnableTracing" gate; UNSUPPORTED if absent.
ze_result_t enableDriverExtensionTracing(driver_t &driver, ze_bool_t enable);
}
Loading