Add versioned interface for 1.2 HAL changes.
Add versioned interface for IPreparedModel. Support 1.2 callbacks.
Implement 1.2 HAL interface in sample driver.
Bug: 73506513
Test: NeuralNetworksTest_static
Test: VtsHalNeuralnetworksV1_xTargetTest with 1.2 sample driver
Change-Id: I1bc7aed424ebf3fd9635b1e411ee41a853d5bc9b
Merged-In: I1bc7aed424ebf3fd9635b1e411ee41a853d5bc9b
(cherry picked from commit cce4cb4dfae7a48c3f9f53e5eff6a3e246ed54c5)
diff --git a/runtime/ExecutionBuilder.cpp b/runtime/ExecutionBuilder.cpp
index bf758ad..f6226d5 100644
--- a/runtime/ExecutionBuilder.cpp
+++ b/runtime/ExecutionBuilder.cpp
@@ -455,12 +455,15 @@
}
}
-StepExecutor::StepExecutor(const ExecutionBuilder* executionBuilder,
- const ModelBuilder* model,
- VersionedIDevice* driver, sp<IPreparedModel> preparedModel) :
- mExecutionBuilder(executionBuilder), mModel(model),
- mDriver(driver), mPreparedModel(preparedModel),
- mInputs(model->inputCount()), mOutputs(model->outputCount()) {}
+StepExecutor::StepExecutor(const ExecutionBuilder* executionBuilder, const ModelBuilder* model,
+ VersionedIDevice* driver,
+ std::shared_ptr<VersionedIPreparedModel> preparedModel)
+ : mExecutionBuilder(executionBuilder),
+ mModel(model),
+ mDriver(driver),
+ mPreparedModel(preparedModel),
+ mInputs(model->inputCount()),
+ mOutputs(model->outputCount()) {}
void StepExecutor::mapInputsAndOutputsTrivially() {
mInputs = mExecutionBuilder->mInputs;
@@ -570,7 +573,9 @@
// TODO: change to asynchronous later
preparedModelCallback->wait();
ErrorStatus prepareReturnStatus = preparedModelCallback->getStatus();
- mPreparedModel = preparedModelCallback->getPreparedModel();
+ if (auto preparedModel = preparedModelCallback->getPreparedModel()) {
+ mPreparedModel = std::make_shared<VersionedIPreparedModel>(preparedModel);
+ }
if (prepareReturnStatus != ErrorStatus::NONE) {
return convertErrorStatusToResultCode(prepareReturnStatus);
}
@@ -693,7 +698,7 @@
NNTRACE_RT(NNTRACE_PHASE_EXECUTION, "computeOnCpu");
CpuExecutor executor;
int err = executor.run(model, request, modelPoolInfos, requestPoolInfos);
- executionCallback->notify(convertResultCodeToErrorStatus(err));
+ executionCallback->notify_1_2(convertResultCodeToErrorStatus(err));
}
int StepExecutor::startComputeOnCpu(sp<ExecutionCallback>* synchronizationCallback) {