Add support for user-defined cache path.
Change-Id: I57d47a05465e6175543ad8202a21a8befac78de5
diff --git a/tests/tests/rscpp/librscpptest/rs_jni.cpp b/tests/tests/rscpp/librscpptest/rs_jni.cpp
index 16c4176..92ebd56 100644
--- a/tests/tests/rscpp/librscpptest/rs_jni.cpp
+++ b/tests/tests/rscpp/librscpptest/rs_jni.cpp
@@ -30,30 +30,35 @@
using namespace android::RSC;
extern "C" JNIEXPORT jboolean JNICALL Java_android_cts_rscpp_RSInitTest_initTest(JNIEnv * env,
- jclass obj)
+ jclass obj,
+ jstring pathObj)
{
+ const char * path = env->GetStringUTFChars(pathObj, NULL);
bool r = true;
for (int i = 0; i < 1000; i++) {
sp<RS> rs = new RS();
- r &= rs->init();
+ r &= rs->init(path);
LOGE("Native iteration %i, returned %i", i, (int)r);
}
+ env->ReleaseStringUTFChars(pathObj, path);
return r;
}
extern "C" JNIEXPORT jboolean JNICALL Java_android_cts_rscpp_RSBlurTest_blurTest(JNIEnv * env,
jclass obj,
+ jstring pathObj,
jint X,
jint Y,
jbyteArray inputByteArray,
jbyteArray outputByteArray,
jboolean singleChannel)
{
+ const char * path = env->GetStringUTFChars(pathObj, NULL);
jbyte * input = (jbyte *) env->GetPrimitiveArrayCritical(inputByteArray, 0);
jbyte * output = (jbyte *) env->GetPrimitiveArrayCritical(outputByteArray, 0);
sp<RS> rs = new RS();
- rs->init();
+ rs->init(path);
sp<const Element> e;
if (singleChannel) {
@@ -75,24 +80,26 @@
env->ReleasePrimitiveArrayCritical(inputByteArray, input, 0);
env->ReleasePrimitiveArrayCritical(outputByteArray, output, 0);
+ env->ReleaseStringUTFChars(pathObj, path);
return (rs->getError() == RS_SUCCESS);
}
extern "C" JNIEXPORT jboolean JNICALL
-Java_android_cts_rscpp_RSConvolveTest_convolveTest(JNIEnv * env, jclass obj, jint X,
- jint Y, jbyteArray inputByteArray,
+Java_android_cts_rscpp_RSConvolveTest_convolveTest(JNIEnv * env, jclass obj, jstring pathObj,
+ jint X, jint Y, jbyteArray inputByteArray,
jbyteArray outputByteArray,
jfloatArray coeffArray,
jboolean is3x3)
{
+ const char * path = env->GetStringUTFChars(pathObj, NULL);
jfloat * coeffs = env->GetFloatArrayElements(coeffArray, NULL);
jbyte * input = (jbyte *) env->GetPrimitiveArrayCritical(inputByteArray, 0);
jbyte * output = (jbyte *) env->GetPrimitiveArrayCritical(outputByteArray, 0);
sp<RS> rs = new RS();
- rs->init();
+ rs->init(path);
sp<const Element> e = Element::A_8(rs);
@@ -119,22 +126,25 @@
env->ReleasePrimitiveArrayCritical(inputByteArray, input, 0);
env->ReleasePrimitiveArrayCritical(outputByteArray, output, 0);
env->ReleaseFloatArrayElements(coeffArray, coeffs, JNI_ABORT);
+ env->ReleaseStringUTFChars(pathObj, path);
return (rs->getError() == RS_SUCCESS);
}
extern "C" JNIEXPORT jboolean JNICALL Java_android_cts_rscpp_RSLUTTest_lutTest(JNIEnv * env,
jclass obj,
+ jstring pathObj,
jint X,
jint Y,
jbyteArray inputByteArray,
jbyteArray outputByteArray)
{
+ const char * path = env->GetStringUTFChars(pathObj, NULL);
jbyte * input = (jbyte *) env->GetPrimitiveArrayCritical(inputByteArray, 0);
jbyte * output = (jbyte *) env->GetPrimitiveArrayCritical(outputByteArray, 0);
sp<RS> rs = new RS();
- rs->init();
+ rs->init(path);
sp<const Element> e = Element::RGBA_8888(rs);
@@ -156,12 +166,14 @@
env->ReleasePrimitiveArrayCritical(inputByteArray, input, 0);
env->ReleasePrimitiveArrayCritical(outputByteArray, output, 0);
+ env->ReleaseStringUTFChars(pathObj, path);
return (rs->getError() == RS_SUCCESS);
}
extern "C" JNIEXPORT jboolean JNICALL Java_android_cts_rscpp_RS3DLUTTest_lutTest(JNIEnv * env,
jclass obj,
+ jstring pathObj,
jint X,
jint Y,
jint lutSize,
@@ -169,12 +181,13 @@
jbyteArray inputByteArray2,
jbyteArray outputByteArray)
{
+ const char * path = env->GetStringUTFChars(pathObj, NULL);
jbyte * input = (jbyte *) env->GetPrimitiveArrayCritical(inputByteArray, 0);
jbyte * input2 = (jbyte *) env->GetPrimitiveArrayCritical(inputByteArray2, 0);
jbyte * output = (jbyte *) env->GetPrimitiveArrayCritical(outputByteArray, 0);
sp<RS> rs = new RS();
- rs->init();
+ rs->init(path);
sp<const Element> e = Element::RGBA_8888(rs);
@@ -200,23 +213,25 @@
env->ReleasePrimitiveArrayCritical(inputByteArray, input, 0);
env->ReleasePrimitiveArrayCritical(inputByteArray2, input2, 0);
env->ReleasePrimitiveArrayCritical(outputByteArray, output, 0);
+ env->ReleaseStringUTFChars(pathObj, path);
return (rs->getError() == RS_SUCCESS);
}
extern "C" JNIEXPORT jboolean JNICALL
-Java_android_cts_rscpp_RSColorMatrixTest_colorMatrixTest(JNIEnv * env, jclass obj, jint X,
- jint Y, jbyteArray inputByteArray,
+Java_android_cts_rscpp_RSColorMatrixTest_colorMatrixTest(JNIEnv * env, jclass obj, jstring pathObj,
+ jint X, jint Y, jbyteArray inputByteArray,
jbyteArray outputByteArray,
jfloatArray coeffArray,
jint optionFlag)
{
+ const char * path = env->GetStringUTFChars(pathObj, NULL);
jfloat * coeffs = env->GetFloatArrayElements(coeffArray, NULL);
jbyte * input = (jbyte *) env->GetPrimitiveArrayCritical(inputByteArray, 0);
jbyte * output = (jbyte *) env->GetPrimitiveArrayCritical(outputByteArray, 0);
sp<RS> rs = new RS();
- rs->init();
+ rs->init(path);
sp<const Element> e = Element::RGBA_8888(rs);
@@ -248,21 +263,23 @@
env->ReleasePrimitiveArrayCritical(inputByteArray, input, 0);
env->ReleasePrimitiveArrayCritical(outputByteArray, output, 0);
env->ReleaseFloatArrayElements(coeffArray, coeffs, JNI_ABORT);
+ env->ReleaseStringUTFChars(pathObj, path);
return (rs->getError() == RS_SUCCESS);
}
extern "C" JNIEXPORT jboolean JNICALL
-Java_android_cts_rscpp_RSBlendTest_blendTest(JNIEnv * env, jclass obj, jint X,
- jint Y, jbyteArray inputByteArray,
+Java_android_cts_rscpp_RSBlendTest_blendTest(JNIEnv * env, jclass obj, jstring pathObj,
+ jint X, jint Y, jbyteArray inputByteArray,
jbyteArray outputByteArray,
jint optionFlag)
{
+ const char * path = env->GetStringUTFChars(pathObj, NULL);
jbyte * input = (jbyte *) env->GetPrimitiveArrayCritical(inputByteArray, 0);
jbyte * output = (jbyte *) env->GetPrimitiveArrayCritical(outputByteArray, 0);
sp<RS> rs = new RS();
- rs->init();
+ rs->init(path);
sp<const Element> e = Element::RGBA_8888(rs);
@@ -327,6 +344,7 @@
env->ReleasePrimitiveArrayCritical(inputByteArray, input, 0);
env->ReleasePrimitiveArrayCritical(outputByteArray, output, 0);
+ env->ReleaseStringUTFChars(pathObj, path);
return (rs->getError() == RS_SUCCESS);
}
diff --git a/tests/tests/rscpp/librscpptest/rs_jni_allocation.cpp b/tests/tests/rscpp/librscpptest/rs_jni_allocation.cpp
index 6a429ec..4157026 100644
--- a/tests/tests/rscpp/librscpptest/rs_jni_allocation.cpp
+++ b/tests/tests/rscpp/librscpptest/rs_jni_allocation.cpp
@@ -54,10 +54,13 @@
}
extern "C" JNIEXPORT jboolean JNICALL Java_android_cts_rscpp_RSAllocationTest_typedTest(JNIEnv * env,
- jclass obj)
+ jclass obj,
+ jstring pathObj)
{
+ const char * path = env->GetStringUTFChars(pathObj, NULL);
sp<RS> mRS = new RS();
- mRS->init();
+ mRS->init(path);
+ env->ReleaseStringUTFChars(pathObj, path);
createTypedHelper(mRS, Element::A_8(mRS));
createTypedHelper(mRS, Element::RGBA_4444(mRS));
@@ -116,7 +119,6 @@
createTypedHelper(mRS, Element::ALLOCATION(mRS));
mRS->finish();
-
return true;
}
@@ -310,11 +312,13 @@
static int elemsToTest = 20;
extern "C" JNIEXPORT jboolean JNICALL Java_android_cts_rscpp_RSAllocationTest_test1DCopy(JNIEnv * env,
- jclass obj)
+ jclass obj,
+ jstring pathObj)
{
+ const char * path = env->GetStringUTFChars(pathObj, NULL);
sp<RS> mRS = new RS();
- mRS->init();
-
+ mRS->init(path);
+ env->ReleaseStringUTFChars(pathObj, path);
bool passed = true;
for (int s = 8; s <= elemsToTest; s += 2) {
@@ -346,15 +350,17 @@
}
}
}
-
return passed;
}
extern "C" JNIEXPORT jboolean JNICALL Java_android_cts_rscpp_RSAllocationTest_testSetElementAt(JNIEnv * env,
- jclass obj)
+ jclass obj,
+ jstring pathObj)
{
+ const char * path = env->GetStringUTFChars(pathObj, NULL);
sp<RS> mRS = new RS();
- mRS->init();
+ mRS->init(path);
+ env->ReleaseStringUTFChars(pathObj, path);
bool passed = true;
diff --git a/tests/tests/rscpp/src/android/cts/rscpp/RS3DLUTTest.java b/tests/tests/rscpp/src/android/cts/rscpp/RS3DLUTTest.java
index 197a4cd..7a85f57 100644
--- a/tests/tests/rscpp/src/android/cts/rscpp/RS3DLUTTest.java
+++ b/tests/tests/rscpp/src/android/cts/rscpp/RS3DLUTTest.java
@@ -35,7 +35,7 @@
private final int lutSize = 64;
- native boolean lutTest(int X, int Y, int lutSize, byte[] input, byte[] input2, byte[] output);
+ native boolean lutTest(String path, int X, int Y, int lutSize, byte[] input, byte[] input2, byte[] output);
public void testRSLUT() {
int[] baseAlloc = new int[X * Y * 4];
RSUtils.genRandom(0x419144, 255, 1, -128, baseAlloc);
@@ -71,7 +71,7 @@
lut.forEach(rsInput, rsOutput);
byte[] nativeByteAlloc = new byte[X * Y * 4];
- lutTest(X, Y, lutSize, byteAlloc, byteColorCube, nativeByteAlloc);
+ lutTest(this.getContext().getCacheDir().toString(), X, Y, lutSize, byteAlloc, byteColorCube, nativeByteAlloc);
rsOutput.copyTo(byteAlloc);
for (int i = 0; i < X * Y * 4; i++) {
diff --git a/tests/tests/rscpp/src/android/cts/rscpp/RSAllocationTest.java b/tests/tests/rscpp/src/android/cts/rscpp/RSAllocationTest.java
index 0e06a99..86662bf 100644
--- a/tests/tests/rscpp/src/android/cts/rscpp/RSAllocationTest.java
+++ b/tests/tests/rscpp/src/android/cts/rscpp/RSAllocationTest.java
@@ -29,19 +29,19 @@
System.loadLibrary("rscpptest_jni");
}
- native boolean typedTest();
+ native boolean typedTest(String path);
public void testRSAllocationTypes() {
- assertTrue(typedTest());
+ assertTrue(typedTest(this.getContext().getCacheDir().toString()));
}
- native boolean test1DCopy();
+ native boolean test1DCopy(String path);
public void testRSAllocationCopy() {
- assertTrue(test1DCopy());
+ assertTrue(test1DCopy(this.getContext().getCacheDir().toString()));
}
- native boolean testSetElementAt();
+ native boolean testSetElementAt(String path);
public void testRSAllocationSetElementAt() {
- assertTrue(testSetElementAt());
+ assertTrue(testSetElementAt(this.getContext().getCacheDir().toString()));
}
diff --git a/tests/tests/rscpp/src/android/cts/rscpp/RSBlendTest.java b/tests/tests/rscpp/src/android/cts/rscpp/RSBlendTest.java
index b378807..0830f78 100644
--- a/tests/tests/rscpp/src/android/cts/rscpp/RSBlendTest.java
+++ b/tests/tests/rscpp/src/android/cts/rscpp/RSBlendTest.java
@@ -33,7 +33,7 @@
private static final int X = 256;
private static final int Y = 256;
- native boolean blendTest(int X, int Y, byte[] input, byte[] output, int optionFlag);
+ native boolean blendTest(String path, int X, int Y, byte[] input, byte[] output, int optionFlag);
public void testRSBlend() {
for (int iter = 0; iter < 15; iter++) {
int[] baseAlloc = new int[X * Y * 4];
@@ -111,7 +111,7 @@
break;
}
- blendTest(X, Y, byteAlloc, byteAlloc2, iter);
+ blendTest(this.getContext().getCacheDir().toString(), X, Y, byteAlloc, byteAlloc2, iter);
rsOutput.copyTo(byteAlloc);
for (int i = 0; i < X * Y * 4; i++) {
assertTrue(byteAlloc[i] == byteAlloc2[i]);
diff --git a/tests/tests/rscpp/src/android/cts/rscpp/RSBlurTest.java b/tests/tests/rscpp/src/android/cts/rscpp/RSBlurTest.java
index 4d4530c..e546516 100644
--- a/tests/tests/rscpp/src/android/cts/rscpp/RSBlurTest.java
+++ b/tests/tests/rscpp/src/android/cts/rscpp/RSBlurTest.java
@@ -33,7 +33,7 @@
private final int X = 1024;
private final int Y = 1024;
- native boolean blurTest(int X, int Y, byte[] input, byte[] output, boolean singleChannel);
+ native boolean blurTest(String path, int X, int Y, byte[] input, byte[] output, boolean singleChannel);
public void testRSBlurOneChannel() {
int[] baseAlloc = new int[X * Y];
RSUtils.genRandom(0x1DEFF, 255, 1, -128, baseAlloc);
@@ -55,7 +55,7 @@
blur.forEach(rsOutput);
byte[] nativeByteAlloc = new byte[X * Y];
- blurTest(X, Y, byteAlloc, nativeByteAlloc, true);
+ blurTest(this.getContext().getCacheDir().toString(), X, Y, byteAlloc, nativeByteAlloc, true);
rsOutput.copyTo(byteAlloc);
for (int i = 0; i < X * Y; i++) {
@@ -86,7 +86,7 @@
blur.forEach(rsOutput);
byte[] nativeByteAlloc = new byte[X * Y * 4];
- blurTest(X, Y, byteAlloc, nativeByteAlloc, false);
+ blurTest(this.getContext().getCacheDir().toString(), X, Y, byteAlloc, nativeByteAlloc, false);
rsOutput.copyTo(byteAlloc);
for (int i = 0; i < X * Y * 4; i++) {
diff --git a/tests/tests/rscpp/src/android/cts/rscpp/RSColorMatrixTest.java b/tests/tests/rscpp/src/android/cts/rscpp/RSColorMatrixTest.java
index e4c0085..d634c1f 100644
--- a/tests/tests/rscpp/src/android/cts/rscpp/RSColorMatrixTest.java
+++ b/tests/tests/rscpp/src/android/cts/rscpp/RSColorMatrixTest.java
@@ -33,7 +33,7 @@
private final int X = 1024;
private final int Y = 1024;
- native boolean colorMatrixTest(int X, int Y, byte[] input, byte[] output, float[] coeffs, int optionFlag);
+ native boolean colorMatrixTest(String path, int X, int Y, byte[] input, byte[] output, float[] coeffs, int optionFlag);
public void testRSColorMatrix0() {
int[] baseAlloc = new int[X * Y * 4];
RSUtils.genRandom(0x251107, 255, 1, -128, baseAlloc);
@@ -67,7 +67,7 @@
cm.forEach(rsInput, rsOutput);
byte[] nativeByteAlloc = new byte[X * Y * 4];
- colorMatrixTest(X, Y, byteAlloc, nativeByteAlloc, coeffs, 0);
+ colorMatrixTest(this.getContext().getCacheDir().toString(), X, Y, byteAlloc, nativeByteAlloc, coeffs, 0);
rsOutput.copyTo(byteAlloc);
for (int i = 0; i < X * Y * 4; i++) {
@@ -99,7 +99,7 @@
cm.forEach(rsInput, rsOutput);
byte[] nativeByteAlloc = new byte[X * Y * 4];
- colorMatrixTest(X, Y, byteAlloc, nativeByteAlloc, coeffs, 1);
+ colorMatrixTest(this.getContext().getCacheDir().toString(), X, Y, byteAlloc, nativeByteAlloc, coeffs, 1);
rsOutput.copyTo(byteAlloc);
for (int i = 0; i < X * Y * 4; i++) {
@@ -135,7 +135,7 @@
cm.forEach(rsInput, rsOutput);
byte[] nativeByteAlloc = new byte[X * Y * 4];
- colorMatrixTest(X, Y, byteAlloc, nativeByteAlloc, coeffs, 2);
+ colorMatrixTest(this.getContext().getCacheDir().toString(), X, Y, byteAlloc, nativeByteAlloc, coeffs, 2);
rsOutput.copyTo(byteAlloc);
for (int i = 0; i < X * Y * 4; i++) {
@@ -167,7 +167,7 @@
cm.forEach(rsInput, rsOutput);
byte[] nativeByteAlloc = new byte[X * Y * 4];
- colorMatrixTest(X, Y, byteAlloc, nativeByteAlloc, coeffs, 3);
+ colorMatrixTest(this.getContext().getCacheDir().toString(), X, Y, byteAlloc, nativeByteAlloc, coeffs, 3);
rsOutput.copyTo(byteAlloc);
for (int i = 0; i < X * Y * 4; i++) {
@@ -199,7 +199,7 @@
cm.forEach(rsInput, rsOutput);
byte[] nativeByteAlloc = new byte[X * Y * 4];
- colorMatrixTest(X, Y, byteAlloc, nativeByteAlloc, coeffs, 4);
+ colorMatrixTest(this.getContext().getCacheDir().toString(), X, Y, byteAlloc, nativeByteAlloc, coeffs, 4);
rsOutput.copyTo(byteAlloc);
for (int i = 0; i < X * Y * 4; i++) {
diff --git a/tests/tests/rscpp/src/android/cts/rscpp/RSConvolveTest.java b/tests/tests/rscpp/src/android/cts/rscpp/RSConvolveTest.java
index d669d3b..ded67cc 100644
--- a/tests/tests/rscpp/src/android/cts/rscpp/RSConvolveTest.java
+++ b/tests/tests/rscpp/src/android/cts/rscpp/RSConvolveTest.java
@@ -33,7 +33,7 @@
private final int X = 1024;
private final int Y = 1024;
- native boolean convolveTest(int X, int Y, byte[] input, byte[] output, float[] coeffs, boolean is3x3);
+ native boolean convolveTest(String path, int X, int Y, byte[] input, byte[] output, float[] coeffs, boolean is3x3);
public void testConvolve3x3() {
int[] baseAlloc = new int[X * Y];
float[] coeffs = new float[9];
@@ -66,7 +66,7 @@
convolve.forEach(rsOutput);
byte[] nativeByteAlloc = new byte[X * Y];
- convolveTest(X, Y, byteAlloc, nativeByteAlloc, coeffs, true);
+ convolveTest(this.getContext().getCacheDir().toString(), X, Y, byteAlloc, nativeByteAlloc, coeffs, true);
rsOutput.copyTo(byteAlloc);
for (int i = 0; i < X * Y; i++) {
@@ -124,7 +124,7 @@
convolve.forEach(rsOutput);
byte[] nativeByteAlloc = new byte[X * Y];
- convolveTest(X, Y, byteAlloc, nativeByteAlloc, coeffs, false);
+ convolveTest(this.getContext().getCacheDir().toString(), X, Y, byteAlloc, nativeByteAlloc, coeffs, false);
rsOutput.copyTo(byteAlloc);
for (int i = 0; i < X * Y; i++) {
diff --git a/tests/tests/rscpp/src/android/cts/rscpp/RSInitTest.java b/tests/tests/rscpp/src/android/cts/rscpp/RSInitTest.java
index 22804d3..7fd5ffa 100644
--- a/tests/tests/rscpp/src/android/cts/rscpp/RSInitTest.java
+++ b/tests/tests/rscpp/src/android/cts/rscpp/RSInitTest.java
@@ -29,13 +29,13 @@
System.loadLibrary("rscpptest_jni");
}
- native boolean initTest();
+ native boolean initTest(String path);
public void testRSInit() {
for (int i = 0; i < 1000; i++) {
RenderScript mRS = RenderScript.create(getContext());
mRS.destroy();
Log.d("rscpptest", "Java iteration " + i);
}
- assertTrue(initTest());
+ assertTrue(initTest(this.getContext().getCacheDir().toString()));
}
}
\ No newline at end of file
diff --git a/tests/tests/rscpp/src/android/cts/rscpp/RSLUTTest.java b/tests/tests/rscpp/src/android/cts/rscpp/RSLUTTest.java
index 7890d57..2579666 100644
--- a/tests/tests/rscpp/src/android/cts/rscpp/RSLUTTest.java
+++ b/tests/tests/rscpp/src/android/cts/rscpp/RSLUTTest.java
@@ -33,7 +33,7 @@
private final int X = 1024;
private final int Y = 1024;
- native boolean lutTest(int X, int Y, byte[] input, byte[] output);
+ native boolean lutTest(String path, int X, int Y, byte[] input, byte[] output);
public void testRSLUT() {
int[] baseAlloc = new int[X * Y * 4];
RSUtils.genRandom(0x72727272, 255, 1, -128, baseAlloc);
@@ -59,7 +59,7 @@
lut.forEach(rsInput, rsOutput);
byte[] nativeByteAlloc = new byte[X * Y * 4];
- lutTest(X, Y, byteAlloc, nativeByteAlloc);
+ lutTest(this.getContext().getCacheDir().toString().toString(), X, Y, byteAlloc, nativeByteAlloc);
rsOutput.copyTo(byteAlloc);
for (int i = 0; i < X * Y * 4; i++) {