Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3b816de3 authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

Add more tests exercising IPreparedModel::executeFenced API am: 2d74d7df

Change-Id: I764e3642bdbf1d6c242a02a2f31cb995f1a15ce9
parents 5e85c3a1 2d74d7df
Loading
Loading
Loading
Loading
+17 −10
Original line number Diff line number Diff line
@@ -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](
            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: {