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
|
/*
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "shared/source/os_interface/linux/drm_neo.h"
#include "shared/source/os_interface/linux/os_interface.h"
#include "level_zero/core/source/device/device.h"
#include "level_zero/tools/source/metrics/metric_query_imp.h"
using namespace MetricsLibraryApi;
namespace L0 {
const char *MetricsLibrary::getFilename() { return "libigdml.so"; }
bool MetricsLibrary::getContextData(Device &device, ContextCreateData_1_0 &contextData) {
auto osInterface = device.getOsInterface().get();
auto drm = osInterface->getDrm();
auto drmFileDescriptor = drm->getFileDescriptor();
auto &osData = contextData.ClientData->Linux;
osData.Adapter->Type = LinuxAdapterType::DrmFileDescriptor;
osData.Adapter->DrmFileDescriptor = drmFileDescriptor;
return drmFileDescriptor != -1;
}
bool MetricsLibrary::activateConfiguration(const ConfigurationHandle_1_0 configurationHandle) {
ConfigurationActivateData_1_0 activateData = {};
activateData.Type = GpuConfigurationActivationType::Tbs;
const bool validMetricsLibrary = isInitialized();
const bool validConfiguration = configurationHandle.IsValid();
const bool result =
validMetricsLibrary && validConfiguration &&
(api.ConfigurationActivate(configurationHandle, &activateData) == StatusCode::Success);
DEBUG_BREAK_IF(!result);
return result;
}
bool MetricsLibrary::deactivateConfiguration(const ConfigurationHandle_1_0 configurationHandle) {
const bool validMetricsLibrary = isInitialized();
const bool validConfiguration = configurationHandle.IsValid();
const bool result = validMetricsLibrary && validConfiguration &&
(api.ConfigurationDeactivate(configurationHandle) == StatusCode::Success);
DEBUG_BREAK_IF(!result);
return result;
}
void MetricsLibrary::cacheConfiguration(zet_metric_group_handle_t metricGroup, ConfigurationHandle_1_0 configurationHandle) {
// Linux does not support configuration cache.
// Any previous configuration should be deleted.
deleteAllConfigurations();
// Cache only a single configuration.
configurations[metricGroup] = configurationHandle;
}
} // namespace L0
|