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

Commit f8bdc8ce authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 4376088 from 072811f5 to oc-mr1-release

Change-Id: I61e48e8ece2ed1c880c8bfd9423627f53651d8ea
parents dcacc04f 072811f5
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ cc_test {
        "android.hardware.camera.common@1.0-helper",
        "android.hardware.camera.device@1.0",
        "android.hardware.camera.device@3.2",
        "android.hardware.camera.device@3.3",
        "android.hardware.camera.provider@2.4",
        "android.hardware.graphics.common@1.0",
        "android.hardware.graphics.mapper@2.0",
+1402 −973

File changed.

Preview size limit exceeded, changes collapsed.

+14 −7
Original line number Diff line number Diff line
@@ -5,8 +5,9 @@ filegroup {
    srcs: [
        "types.hal",
        "IDevice.hal",
        "IEvent.hal",
        "IExecutionCallback.hal",
        "IPreparedModel.hal",
        "IPreparedModelCallback.hal",
    ],
}

@@ -20,8 +21,9 @@ genrule {
    out: [
        "android/hardware/neuralnetworks/1.0/types.cpp",
        "android/hardware/neuralnetworks/1.0/DeviceAll.cpp",
        "android/hardware/neuralnetworks/1.0/EventAll.cpp",
        "android/hardware/neuralnetworks/1.0/ExecutionCallbackAll.cpp",
        "android/hardware/neuralnetworks/1.0/PreparedModelAll.cpp",
        "android/hardware/neuralnetworks/1.0/PreparedModelCallbackAll.cpp",
    ],
}

@@ -40,16 +42,21 @@ genrule {
        "android/hardware/neuralnetworks/1.0/BnHwDevice.h",
        "android/hardware/neuralnetworks/1.0/BpHwDevice.h",
        "android/hardware/neuralnetworks/1.0/BsDevice.h",
        "android/hardware/neuralnetworks/1.0/IEvent.h",
        "android/hardware/neuralnetworks/1.0/IHwEvent.h",
        "android/hardware/neuralnetworks/1.0/BnHwEvent.h",
        "android/hardware/neuralnetworks/1.0/BpHwEvent.h",
        "android/hardware/neuralnetworks/1.0/BsEvent.h",
        "android/hardware/neuralnetworks/1.0/IExecutionCallback.h",
        "android/hardware/neuralnetworks/1.0/IHwExecutionCallback.h",
        "android/hardware/neuralnetworks/1.0/BnHwExecutionCallback.h",
        "android/hardware/neuralnetworks/1.0/BpHwExecutionCallback.h",
        "android/hardware/neuralnetworks/1.0/BsExecutionCallback.h",
        "android/hardware/neuralnetworks/1.0/IPreparedModel.h",
        "android/hardware/neuralnetworks/1.0/IHwPreparedModel.h",
        "android/hardware/neuralnetworks/1.0/BnHwPreparedModel.h",
        "android/hardware/neuralnetworks/1.0/BpHwPreparedModel.h",
        "android/hardware/neuralnetworks/1.0/BsPreparedModel.h",
        "android/hardware/neuralnetworks/1.0/IPreparedModelCallback.h",
        "android/hardware/neuralnetworks/1.0/IHwPreparedModelCallback.h",
        "android/hardware/neuralnetworks/1.0/BnHwPreparedModelCallback.h",
        "android/hardware/neuralnetworks/1.0/BpHwPreparedModelCallback.h",
        "android/hardware/neuralnetworks/1.0/BsPreparedModelCallback.h",
    ],
}

+47 −18
Original line number Diff line number Diff line
@@ -16,8 +16,7 @@

package android.hardware.neuralnetworks@1.0;

import IEvent;
import IPreparedModel;
import IPreparedModelCallback;

/**
 * This interface represents a device driver.
@@ -37,10 +36,9 @@ interface IDevice {
    /**
     * Gets the supported operations in a model.
     *
     * getSupportedSubgraph provides a more nuanced indication on whether a
     * model is able to be compiled by the driver. Having the entire model
     * allows for additional information such as tensor shapes to inputs or
     * tensor strides, information which is not known in "initialize".
     * getSupportedSubgraph indicates which operations of a model are fully
     * supported by the vendor driver. If an operation may not be supported for
     * any reason, getSupportedOperations must return false for that operation.
     *
     * @param model A model whose operations--and their corresponding
     *              operands--are to be verified by the driver.
@@ -48,7 +46,7 @@ interface IDevice {
     *                - NONE if successful
     *                - DEVICE_UNAVAILABLE if driver is offline or busy
     *                - GENERAL_FAILURE if there is an unspecified error
     *                - INVALID_ARGUMENT when provided model is invalid
     *                - INVALID_ARGUMENT if provided model is invalid
     * @return supportedOperations A list of supported operations, where true
     *                             indicates the operation is supported and
     *                             false indicates the operation is not
@@ -60,29 +58,60 @@ interface IDevice {
                generates (ErrorStatus status, vec<bool> supportedOperations);

    /**
     * Prepares a model for execution.
     * Creates a prepared model for execution.
     *
     * prepareModel is used to make any necessary transformations or alternative
     * representations to a model for execution, possible including
     * representations to a model for execution, possiblly including
     * transformations on the constant data, optimization on the model's graph,
     * or compilation into the device's native binary format.
     * or compilation into the device's native binary format. The model itself
     * is not changed.
     *
     * The model is prepared asynchronously with respect to the caller. The
     * prepareModel function must verify the inputs to the prepareModel function
     * are correct. If there is an error, prepareModel must immediately invoke
     * the callback with the appropriate ErrorStatus value and nullptr for the
     * IPreparedModel, then return with the same ErrorStatus. If the inputs to
     * the prepareModel function are valid and there is no error, prepareModel
     * must launch an asynchronous task to prepare the model in the background,
     * and immediately return from prepareModel with ErrorStatus::NONE. If the
     * asynchronous task fails to launch, prepareModel must immediately invoke
     * the callback with ErrorStatus::GENERAL_FAILURE and nullptr for the
     * IPreparedModel, then return with ErrorStatus::GENERAL_FAILURE.
     *
     * When the asynchronous task has finished preparing the model, it must
     * immediately invoke the callback function provided as an input to
     * prepareModel. If the model was prepared successfully, the callback object
     * must be invoked with an error status of ErrorStatus::NONE and the
     * produced IPreparedModel object. If an error occurred preparing the model,
     * the callback object must be invoked with the appropriate ErrorStatus
     * value and nullptr for the IPreparedModel.
     *
     * The only information that may be unknown to the model at this stage is
     * the shape of the tensors, which may only be known at execution time.
     * the shape of the tensors, which may only be known at execution time. As
     * such, some driver services may return partially prepared models, where
     * the prepared model can only be finished when it is paired with a set of
     * inputs to the model. Note that the same prepared model object can be
     * used with different shapes of inputs on different (possibly concurrent)
     * executions.
     *
     * Multiple threads can call prepareModel on the same model concurrently.
     *
     * @param model The model to be prepared for execution.
     * @param event A synchronization callback that must be signaled once the
     *              execution has finished.
     * @return status Error status of the call, must be:
     * @param callback A callback object used to return the error status of
     *                 preparing the model for execution and the prepared model
     *                 if successful, nullptr otherwise. The callback object's
     *                 notify function must be called exactly once, even if the
     *                 model could not be prepared.
     * @return status Error status of launching a task which prepares the model
     *                in the background; must be:
     *                - NONE if preparation task is successfully launched
     *                - DEVICE_UNAVAILABLE if driver is offline or busy
     *                - GENERAL_FAILURE if there is an unspecified error
     *                - INVALID_ARGUMENT when one of the input arguments is
     *                - INVALID_ARGUMENT if one of the input arguments is
     *                  invalid
     * @return preparedModel A handle to the resultant prepared model.
     */
    prepareModel(Model model, IEvent event)
      generates (ErrorStatus status, IPreparedModel preparedModel);
    prepareModel(Model model, IPreparedModelCallback callback)
      generates (ErrorStatus status);

    /**
     * Returns the current status of a driver.
+44 −0
Original line number Diff line number Diff line
@@ -17,29 +17,28 @@
package android.hardware.neuralnetworks@1.0;

/**
 * The IEvent interface is a callback object passed by the
 * Neuralnetworks runtime to the vendor service. It is used as a
 * synchronization primitive between one or more runtime threads and a
 * single asynchronous vendor thread.  An event object is passed as an
 * argument to a HIDL call that is expected to take a non-trivial
 * amount of time. When the asynchronous execution thread has
 * completed its computation, it must call "notify" on the event to
 * indicate to the Neuralnetworks runtime whether the computation was
 * successful or not, and that the corresponding output is ready to be
 * consumed if the execution was successful.
 * IExecutionCallback must be used to return the error status result from an
 * execution asynchronously launched from IPreparedModel::execute.
 */
interface IEvent {
interface IExecutionCallback {

    /**
     * IEvent::notify is called by the server thread (i.e., the thread doing
     * the work) to mark the event as completed so that any threads requiring
     * the corresponding output can continue executing.
     * notify must be invoked immediately after the asynchronous task has
     * finished performing the execution. notify must be provided with the
     * ErrorStatus resulting from the execution. If the asynchronous task
     * is not launched, notify must be invoked with the appropriate error.
     *
     * @param status Error status returned from the asynchronous task, must be:
     *               - NONE if asynchronous task was successful
     * @return param Error status returned from launching the asynchronous task
     *               (if the launch fails) or from the asynchronous task itself
     *               (if the launch succeeds). Must be:
     *               - NONE if the asynchronous execution was successful
     *               - DEVICE_UNAVAILABLE if driver is offline or busy
     *               - GENERAL_FAILURE if the asynchronous task resulted in an
     *                 unspecified error
     *               - OUTPUT_INSUFFICIENT_SIZE if provided output buffer is
     *                 not large enough to store the resultant values
     *               - INVALID_ARGUMENT if one of the input arguments to
     *                 prepareModel is invalid
     */
    oneway notify(ErrorStatus status);
};
Loading