mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-25 13:33:02 +08:00
Add function to adjust timestamps on Windows
Resolves: NEO-5435 Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
344c207e4d
commit
4417537eb5
@@ -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 ×tampData) = 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 ×tampData) override;
|
||||
|
||||
protected:
|
||||
HwInfoConfigHw() = default;
|
||||
|
||||
@@ -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 ×tampData){};
|
||||
|
||||
template <PRODUCT_FAMILY gfxProduct>
|
||||
void HwInfoConfigHw<gfxProduct>::adjustPlatformForProductFamily(HardwareInfo *hwInfo) {}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user