forked from oneapi-src/level-zero
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathzel_certification_checker.cpp
More file actions
64 lines (59 loc) · 2.46 KB
/
Copy pathzel_certification_checker.cpp
File metadata and controls
64 lines (59 loc) · 2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*
* Copyright (C) 2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
* @file zel_certification_checker.cpp
*
*/
#include "zel_certification_checker.h"
#include "ze_api.h"
namespace validation_layer {
class certificationChecker certification_checker;
using ze_checker = certificationChecker::ZEcertificationChecker;
certificationChecker::certificationChecker() {
enablecertification = getenv_tobool("ZEL_ENABLE_CERTIFICATION_CHECKER");
if (enablecertification) {
certificationChecker::ZEcertificationChecker *zeChecker =
new certificationChecker::ZEcertificationChecker;
certificationChecker::ZEScertificationChecker *zesChecker =
new certificationChecker::ZEScertificationChecker;
certificationChecker::ZETcertificationChecker *zetChecker =
new certificationChecker::ZETcertificationChecker;
ze_api_version_t certification_version = ZE_API_VERSION_CURRENT;
const auto certification_version_string =
getenv_string("ZEL_CERTIFICATION_CHECKER_VERSION");
if (!certification_version_string.empty()) {
const auto major = certification_version_string.substr(
0, certification_version_string.find('.'));
const auto minor = certification_version_string.substr(
certification_version_string.find('.') + 1);
certification_version = static_cast<ze_api_version_t>(
ZE_MAKE_VERSION(std::stoi(major), std::stoi(minor)));
globalCertificationState.default_mode = false;
}
globalCertificationState.certification_version = certification_version;
certification_checker.zeValidation = zeChecker;
certification_checker.zetValidation = zetChecker;
certification_checker.zesValidation = zesChecker;
validation_layer::context.getInstance().validationHandlers.push_back(
&certification_checker);
}
}
certificationChecker::~certificationChecker() {
if (enablecertification) {
delete certification_checker.zeValidation;
delete certification_checker.zetValidation;
delete certification_checker.zesValidation;
}
}
ze_result_t ze_checker::zeDriverGetApiVersionEpilogue(
ze_driver_handle_t hDriver, ze_api_version_t *version, ze_result_t result) {
auto &globalCertificationState = GlobalCertificationState::getInstance();
if (result == ZE_RESULT_SUCCESS && version != nullptr &&
globalCertificationState.default_mode) {
globalCertificationState.certification_version = *version;
}
return ZE_RESULT_SUCCESS;
}
} // namespace validation_layer