summaryrefslogtreecommitdiffstats
path: root/tests/RenderScriptTests
diff options
context:
space:
mode:
authorJason Sams <rjsams@android.com>2011-10-18 17:31:02 -0700
committerJason Sams <rjsams@android.com>2011-10-18 17:31:02 -0700
commit02bd36369b104a628355703c1001cfef8a1ab214 (patch)
tree2f26895b7da934c11f28a83bc75f1d635d503d29 /tests/RenderScriptTests
parentbe3ffd56bfafeee1a16970d02fd702ea19809a1e (diff)
downloadframeworks_base-02bd36369b104a628355703c1001cfef8a1ab214.zip
frameworks_base-02bd36369b104a628355703c1001cfef8a1ab214.tar.gz
frameworks_base-02bd36369b104a628355703c1001cfef8a1ab214.tar.bz2
Add mandelbrot to compute perf
Change-Id: I8217134a703fcd72f6c9a3bdd4e2a6b389ea0fd3
Diffstat (limited to 'tests/RenderScriptTests')
-rw-r--r--tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/ComputePerf.java5
-rw-r--r--tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/Mandelbrot.java45
-rw-r--r--tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/mandelbrot.rs42
3 files changed, 92 insertions, 0 deletions
diff --git a/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/ComputePerf.java b/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/ComputePerf.java
index d0e089b..f7abe8b 100644
--- a/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/ComputePerf.java
+++ b/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/ComputePerf.java
@@ -27,6 +27,7 @@ import android.widget.ImageView;
public class ComputePerf extends Activity {
private LaunchTest mLT;
+ private Mandelbrot mMandel;
private RenderScript mRS;
@Override
@@ -38,6 +39,10 @@ public class ComputePerf extends Activity {
mLT = new LaunchTest(mRS, getResources());
mLT.run();
mLT.run();
+
+ mMandel = new Mandelbrot(mRS, getResources());
+ mMandel.run();
+
}
}
diff --git a/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/Mandelbrot.java b/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/Mandelbrot.java
new file mode 100644
index 0000000..ea1cd62
--- /dev/null
+++ b/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/Mandelbrot.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.rs.computeperf;
+
+import android.content.res.Resources;
+import android.renderscript.*;
+
+public class Mandelbrot implements Runnable {
+ private RenderScript mRS;
+ private Allocation mAllocationXY;
+ private ScriptC_mandelbrot mScript;
+
+ Mandelbrot(RenderScript rs, Resources res) {
+ mRS = rs;
+ mScript = new ScriptC_mandelbrot(mRS, res, R.raw.mandelbrot);
+
+ Type.Builder tb = new Type.Builder(rs, Element.U8_4(rs));
+ tb.setX(mScript.get_gDimX());
+ tb.setY(mScript.get_gDimY());
+ mAllocationXY = Allocation.createTyped(rs, tb.create());
+ }
+
+ public void run() {
+ long t = java.lang.System.currentTimeMillis();
+ mScript.forEach_root(mAllocationXY);
+ mRS.finish();
+ t = java.lang.System.currentTimeMillis() - t;
+ android.util.Log.v("ComputePerf", "mandelbrot ms " + t);
+ }
+
+}
diff --git a/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/mandelbrot.rs b/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/mandelbrot.rs
new file mode 100644
index 0000000..a7987b3
--- /dev/null
+++ b/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/mandelbrot.rs
@@ -0,0 +1,42 @@
+// Copyright (C) 2011 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#pragma version(1)
+#pragma rs java_package_name(com.example.android.rs.computeperf)
+
+const int gMaxIteration = 500;
+const int gDimX = 1024;
+const int gDimY = 1024;
+
+void root(uchar4 *v_out, uint32_t x, uint32_t y) {
+ float2 p;
+ p.x = -2.5f + ((float)x / gDimX) * 3.5f;
+ p.y = -1.f + ((float)y / gDimY) * 2.f;
+
+ float2 t = 0;
+ int iteration = 0;
+ while((t.x*t.x + t.y*t.y < 4.f) && (iteration < gMaxIteration)) {
+ float2 t2 = t * t;
+ float xtemp = t2.x - t2.y + p.x;
+ t.y = 2 * t.x * t.y + p.y;
+ t.x = xtemp;
+ iteration++;
+ }
+
+ if(iteration >= gMaxIteration) {
+ *v_out = 0;
+ } else {
+ *v_out = (uchar4){iteration & 0xff, (iteration >> 6) & 0xff, 0x8f, 0xff};
+ }
+}