IVGCVSW-4677 Refactor Timepoint duplication

Signed-off-by: Kevin May <kevin.may@arm.com>
Change-Id: I6d37e7b8022ada1d875be01014babc5d31d07290
diff --git a/ArmnnPreparedModel_1_3.cpp b/ArmnnPreparedModel_1_3.cpp
index 6c4aec9..1fb03f4 100644
--- a/ArmnnPreparedModel_1_3.cpp
+++ b/ArmnnPreparedModel_1_3.cpp
@@ -390,15 +390,9 @@
     Timing fenceTiming = g_NoTiming;
     if (measureTiming == MeasureTiming::YES)
     {
-        TimePoint driverEnd = Now();
-        timing.timeOnDevice = MicrosecondsDuration(ctx.deviceEnd, ctx.deviceStart);
-        timing.timeInDriver = MicrosecondsDuration(driverEnd, ctx.driverStart);
-        ALOGV("ArmnnPreparedModel_1_2::fenceExecutionTiming - Device = %lu Driver = %lu",
-              timing.timeOnDevice, timing.timeInDriver);
-
         fenceTiming.timeOnDevice = MicrosecondsDuration(ctx.deviceEnd, ctx.deviceStart);
-        fenceTiming.timeInDriver = MicrosecondsDuration(driverEnd, fenceExecutionStart);
-        ALOGV("ArmnnPreparedModel_1_2::fenceFinishExecutionTiming - Device = %lu Driver = %lu",
+        fenceTiming.timeInDriver = MicrosecondsDuration(ctx.driverEnd, fenceExecutionStart);
+        ALOGV("ArmnnPreparedModel_1_3::fenceFinishExecutionTiming - Device = %lu Driver = %lu",
               fenceTiming.timeOnDevice, fenceTiming.timeInDriver);
     }
 
@@ -671,8 +665,6 @@
 {
     ALOGV("ArmnnPreparedModel_1_3::ExecuteGraph(...)");
 
-    TimePoint driverEnd, deviceStart, deviceEnd;
-
     DumpTensorsIfRequired("Input", inputTensors);
 
     std::vector<OutputShape> outputShapes(outputTensors.size());
@@ -725,11 +717,11 @@
 
     if (cb.ctx.measureTimings == MeasureTiming::YES)
     {
-        driverEnd = Now();
+        cb.ctx.driverEnd = Now();
         Timing timing;
         timing.timeOnDevice = MicrosecondsDuration(cb.ctx.deviceEnd, cb.ctx.deviceStart);
-        timing.timeInDriver = MicrosecondsDuration(driverEnd, cb.ctx.driverStart);
-        ALOGV("ArmnnPreparedModel_1_2::execute timing - Device = %lu Driver = %lu", timing.timeOnDevice,
+        timing.timeInDriver = MicrosecondsDuration(cb.ctx.driverEnd, cb.ctx.driverStart);
+        ALOGV("ArmnnPreparedModel_1_3::execute timing - Device = %lu Driver = %lu", timing.timeOnDevice,
               timing.timeInDriver);
         cb.callback(V1_3::ErrorStatus::NONE, outputShapes, timing, "ArmnnPreparedModel_1_3::ExecuteGraph");
     } else
diff --git a/ArmnnPreparedModel_1_3.hpp b/ArmnnPreparedModel_1_3.hpp
index fa67405..4dd15c1 100644
--- a/ArmnnPreparedModel_1_3.hpp
+++ b/ArmnnPreparedModel_1_3.hpp
@@ -29,6 +29,7 @@
     ::android::hardware::neuralnetworks::V1_2::MeasureTiming    measureTimings =
         ::android::hardware::neuralnetworks::V1_2::MeasureTiming::NO;
     TimePoint driverStart;
+    TimePoint driverEnd;
     TimePoint deviceStart;
     TimePoint deviceEnd;
 };