mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 11:36:00 +00:00
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
This commit is contained in:
@@ -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: {
|
||||
|
||||
Reference in New Issue
Block a user