Snap for 6001391 from ef31c8d69b74eabf1945eee48875bf9dec14e543 to qt-aml-resolv-release

Change-Id: I6e381f6eb61a5b21689001c6b72d4009970a626c
diff --git a/jni/benchmark_jni.cpp b/jni/benchmark_jni.cpp
index 8da014c..37183c2 100644
--- a/jni/benchmark_jni.cpp
+++ b/jni/benchmark_jni.cpp
@@ -16,6 +16,8 @@
 
 #include "run_tflite.h"
 
+#include "tensorflow/lite/nnapi/nnapi_implementation.h"
+
 #include <jni.h>
 #include <string>
 #include <iomanip>
@@ -375,3 +377,13 @@
     model->dumpAllLayers(dumpPathStr, data.data());
     env->ReleaseStringUTFChars(dumpPath, dumpPathStr);
 }
+
+extern "C"
+JNIEXPORT jboolean
+JNICALL
+Java_com_android_nn_benchmark_core_NNTestBase_hasAccelerator() {
+  uint32_t device_count = 0;
+  NnApiImplementation()->ANeuralNetworks_getDeviceCount(&device_count);
+  // We only consider a real device, not 'nnapi-reference'.
+  return device_count > 1;
+}
diff --git a/src/com/android/nn/benchmark/core/NNTestBase.java b/src/com/android/nn/benchmark/core/NNTestBase.java
index 63f7bc8..579b4a2 100644
--- a/src/com/android/nn/benchmark/core/NNTestBase.java
+++ b/src/com/android/nn/benchmark/core/NNTestBase.java
@@ -40,6 +40,10 @@
         System.loadLibrary("nnbenchmark_jni");
     }
 
+    // Does the device has any NNAPI accelerator?
+    // We only consider a real device, not 'nnapi-reference'.
+    public static native boolean hasAccelerator();
+
     private synchronized native long initModel(
             String modelFileName,
             boolean useNNApi,