Add function to adjust timestamps on Windows

Resolves: NEO-5435
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2021-01-26 14:31:39 +00:00
committed by Compute-Runtime-Automation
parent 344c207e4d
commit 4417537eb5
9 changed files with 36 additions and 9 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2017-2020 Intel Corporation
* Copyright (C) 2017-2021 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -34,6 +34,7 @@ class HwInfoConfig {
virtual uint64_t getCrossDeviceSharedMemCapabilities() = 0;
virtual uint64_t getSharedSystemMemCapabilities() = 0;
virtual bool isEvenContextCountRequired() = 0;
virtual void convertTimestampsFromOaToCsDomain(uint64_t &timestampData) = 0;
uint32_t threadsPerEu;
};
@@ -52,6 +53,7 @@ class HwInfoConfigHw : public HwInfoConfig {
uint64_t getCrossDeviceSharedMemCapabilities() override;
uint64_t getSharedSystemMemCapabilities() override;
bool isEvenContextCountRequired() override;
void convertTimestampsFromOaToCsDomain(uint64_t &timestampData) override;
protected:
HwInfoConfigHw() = default;

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2018-2020 Intel Corporation
* Copyright (C) 2018-2021 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -29,6 +29,9 @@ bool HwInfoConfigHw<gfxProduct>::isEvenContextCountRequired() {
return false;
}
template <PRODUCT_FAMILY gfxProduct>
void HwInfoConfigHw<gfxProduct>::convertTimestampsFromOaToCsDomain(uint64_t &timestampData){};
template <PRODUCT_FAMILY gfxProduct>
void HwInfoConfigHw<gfxProduct>::adjustPlatformForProductFamily(HardwareInfo *hwInfo) {}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2017-2020 Intel Corporation
* Copyright (C) 2017-2021 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -7,6 +7,8 @@
#include "shared/source/os_interface/windows/os_time_win.h"
#include "shared/source/execution_environment/root_device_environment.h"
#include "shared/source/os_interface/hw_info_config.h"
#include "shared/source/os_interface/windows/os_interface.h"
#include "shared/source/os_interface/windows/wddm/wddm.h"
@@ -54,6 +56,9 @@ bool OSTimeWin::getCpuGpuTime(TimeStampData *pGpuCpuTime) {
TimeStampDataHeader escapeInfo = {0};
if (runEscape(wddm, escapeInfo)) {
auto productFamily = wddm->getRootDeviceEnvironment().getHardwareInfo()->platform.eProductFamily;
auto *hwInfoConfig = HwInfoConfig::get(productFamily);
hwInfoConfig->convertTimestampsFromOaToCsDomain(escapeInfo.m_Data.m_Out.gpuPerfTicks);
double cpuNanoseconds = escapeInfo.m_Data.m_Out.cpuPerfTicks *
(1000000000.0 / escapeInfo.m_Data.m_Out.cpuPerfFreq);

View File

@@ -159,6 +159,8 @@ class Wddm {
return residencyLogger.get();
}
const RootDeviceEnvironment &getRootDeviceEnvironment() const { return rootDeviceEnvironment; }
protected:
std::unique_ptr<HwDeviceId> hwDeviceId;
D3DKMT_HANDLE device = 0;