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 65 66 67 68
|
/*
* 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;
certificationChecker::ZERcertificationChecker *zerChecker =
new certificationChecker::ZERcertificationChecker;
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;
certification_checker.zerValidation = zerChecker;
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;
delete certification_checker.zerValidation;
}
}
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
|