diff options
author | Jason Sams <rjsams@android.com> | 2011-10-18 17:31:02 -0700 |
---|---|---|
committer | Jason Sams <rjsams@android.com> | 2011-10-18 17:31:02 -0700 |
commit | 02bd36369b104a628355703c1001cfef8a1ab214 (patch) | |
tree | 2f26895b7da934c11f28a83bc75f1d635d503d29 /tests/RenderScriptTests | |
parent | be3ffd56bfafeee1a16970d02fd702ea19809a1e (diff) | |
download | frameworks_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')
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}; + } +} |