Sysman for Windows: Fix timestamp units for power and engines.

Returning now in usecs as the documentation state it should be.
This commit is contained in:
Daniel Enriquez
2021-01-04 22:44:58 -08:00
committed by Compute-Runtime-Automation
parent 73c7ebdfb8
commit bb5d252c4d
9 changed files with 93 additions and 21 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2020 Intel Corporation
* Copyright (C) 2020-2021 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -10,7 +10,9 @@
namespace L0 {
ze_result_t WddmEngineImp::getActivity(zes_engine_stats_t *pStats) {
uint64_t value = 0;
uint64_t activeTime = 0;
uint64_t timeStamp = 0;
uint32_t timestampFrequency = 0;
KmdSysman::RequestProperty request;
KmdSysman::ResponseProperty response;
@@ -40,10 +42,27 @@ ze_result_t WddmEngineImp::getActivity(zes_engine_stats_t *pStats) {
return status;
}
memcpy_s(&value, sizeof(uint64_t), response.dataBuffer, sizeof(uint64_t));
pStats->activeTime = value;
memcpy_s(&value, sizeof(uint64_t), (response.dataBuffer + sizeof(uint64_t)), sizeof(uint64_t));
pStats->timestamp = value;
memcpy_s(&activeTime, sizeof(uint64_t), response.dataBuffer, sizeof(uint64_t));
memcpy_s(&timeStamp, sizeof(uint64_t), (response.dataBuffer + sizeof(uint64_t)), sizeof(uint64_t));
request.requestId = KmdSysman::Requests::Activity::TimestampFrequency;
status = pKmdSysManager->requestSingle(request, response);
if (status != ZE_RESULT_SUCCESS) {
return status;
}
memcpy_s(&timestampFrequency, sizeof(uint32_t), response.dataBuffer, sizeof(uint32_t));
double timeFactor = 1.0 / static_cast<double>(timestampFrequency);
double elapsedTime = static_cast<double>(activeTime) * timeFactor;
elapsedTime *= static_cast<double>(microFacor);
pStats->activeTime = static_cast<uint64_t>(elapsedTime);
elapsedTime = static_cast<double>(timeStamp) * timeFactor;
elapsedTime *= static_cast<double>(microFacor);
pStats->timestamp = static_cast<uint64_t>(elapsedTime);
return status;
}