diff options
author | Miao Wang <miaowang@google.com> | 2020-02-25 15:54:08 -0800 |
---|---|---|
committer | Slava Shklyaev <slavash@google.com> | 2020-03-16 11:01:08 +0000 |
commit | 2d74d7dfae62a02dccd4ed313f2348a505f7afaf (patch) | |
tree | a716ea073eb2a42f85cbdccc31c58ba2c18ba7dd | |
parent | 218ea408e3d0f3b3060e41c416c3eabce4ec07be (diff) |
Add more tests exercising IPreparedModel::executeFenced API
- executeFenced with device memory
- executeFenced with depending sync fences
Bug: 148979873
Test: mm
Test: VtsHalNeuralnetworksV1_3TargetTest
Change-Id: I772c5c85f75cee56e2af06470c2de5b810f8078d
Merged-In: I772c5c85f75cee56e2af06470c2de5b810f8078d
(cherry picked from commit 34dfa2f74cf79ce66afd08b681bb2bb3a136c5d9)
-rw-r--r-- | neuralnetworks/1.3/vts/functional/GeneratedTestHarness.cpp | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/neuralnetworks/1.3/vts/functional/GeneratedTestHarness.cpp b/neuralnetworks/1.3/vts/functional/GeneratedTestHarness.cpp index 8c9393b030..3e2be8a346 100644 --- a/neuralnetworks/1.3/vts/functional/GeneratedTestHarness.cpp +++ b/neuralnetworks/1.3/vts/functional/GeneratedTestHarness.cpp @@ -626,21 +626,28 @@ void EvaluatePreparedModel(const sp<IDevice>& device, const sp<IPreparedModel>& ErrorStatus result; hidl_handle syncFenceHandle; sp<IFencedExecutionCallback> fencedCallback; - Return<void> ret = preparedModel->executeFenced( - request, {}, testConfig.measureTiming, {}, loopTimeoutDuration, {}, - [&result, &syncFenceHandle, &fencedCallback]( - ErrorStatus error, const hidl_handle& handle, - const sp<IFencedExecutionCallback>& callback) { - result = error; - syncFenceHandle = handle; - fencedCallback = callback; - }); + auto callbackFunc = [&result, &syncFenceHandle, &fencedCallback]( + ErrorStatus error, const hidl_handle& handle, + const sp<IFencedExecutionCallback>& callback) { + result = error; + syncFenceHandle = handle; + fencedCallback = callback; + }; + Return<void> ret = + preparedModel->executeFenced(request, {}, testConfig.measureTiming, {}, + loopTimeoutDuration, {}, callbackFunc); ASSERT_TRUE(ret.isOk()); if (result != ErrorStatus::NONE) { ASSERT_EQ(syncFenceHandle.getNativeHandle(), nullptr); ASSERT_EQ(fencedCallback, nullptr); executionStatus = ErrorStatus::GENERAL_FAILURE; } else if (syncFenceHandle.getNativeHandle()) { + // If a sync fence is returned, try start another run waiting for the sync fence. + ret = preparedModel->executeFenced(request, {syncFenceHandle}, + testConfig.measureTiming, {}, + loopTimeoutDuration, {}, callbackFunc); + ASSERT_TRUE(ret.isOk()); + ASSERT_EQ(result, ErrorStatus::NONE); waitForSyncFence(syncFenceHandle.getNativeHandle()->data[0]); } if (result == ErrorStatus::NONE) { @@ -744,7 +751,7 @@ void EvaluatePreparedModel(const sp<IDevice>& device, const sp<IPreparedModel>& case TestKind::MEMORY_DOMAIN: { outputTypesList = {OutputType::FULLY_SPECIFIED}; measureTimingList = {MeasureTiming::NO}; - executorList = {Executor::ASYNC, Executor::SYNC}; + executorList = {Executor::ASYNC, Executor::SYNC, Executor::FENCED}; memoryType = MemoryType::DEVICE; } break; case TestKind::FENCED_COMPUTE: { |