@@ -14,9 +14,19 @@ namespace NEO {
1414static std::atomic<int > PerfTicks{0 };
1515constexpr uint64_t convertToNs = 100 ;
1616class MockDeviceTime : public DeviceTime {
17+ public:
18+ ~MockDeviceTime () override = default ;
1719 bool getGpuCpuTimeImpl (TimeStampData *pGpuCpuTime, OSTime *osTime) override {
18- pGpuCpuTime->gpuTimeStamp = ++PerfTicks;
19- pGpuCpuTime->cpuTimeinNS = PerfTicks * convertToNs;
20+ if (gpuTimeStampResult) {
21+ pGpuCpuTime->gpuTimeStamp = *gpuTimeStampResult;
22+ } else {
23+ pGpuCpuTime->gpuTimeStamp = ++PerfTicks;
24+ }
25+ if (cpuTimeResult) {
26+ pGpuCpuTime->cpuTimeinNS = *cpuTimeResult;
27+ } else {
28+ pGpuCpuTime->cpuTimeinNS = PerfTicks * convertToNs;
29+ }
2030 return true ;
2131 }
2232
@@ -27,16 +37,24 @@ class MockDeviceTime : public DeviceTime {
2737 uint64_t getDynamicDeviceTimerClock (HardwareInfo const &hwInfo) const override {
2838 return static_cast <uint64_t >(1000000000.0 / OSTime::getDeviceTimerResolution (hwInfo));
2939 }
40+ std::optional<uint64_t > gpuTimeStampResult{};
41+ std::optional<uint64_t > cpuTimeResult{};
3042};
3143
3244class MockOSTime : public OSTime {
3345 public:
46+ using OSTime::deviceTime;
3447 MockOSTime () {
3548 this ->deviceTime = std::make_unique<MockDeviceTime>();
3649 }
50+ ~MockOSTime () override = default ;
3751
3852 bool getCpuTime (uint64_t *timeStamp) override {
39- *timeStamp = ++PerfTicks * convertToNs;
53+ if (cpuTimeResult) {
54+ *timeStamp = *cpuTimeResult;
55+ } else {
56+ *timeStamp = ++PerfTicks * convertToNs;
57+ }
4058 return true ;
4159 };
4260 double getHostTimerResolution () const override {
@@ -49,6 +67,7 @@ class MockOSTime : public OSTime {
4967 static std::unique_ptr<OSTime> create () {
5068 return std::unique_ptr<OSTime>(new MockOSTime ());
5169 }
70+ std::optional<uint64_t > cpuTimeResult{};
5271};
5372
5473class MockDeviceTimeWithConstTimestamp : public DeviceTime {
0 commit comments