102bd36369b104a628355703c1001cfef8a1ab214Jason Sams/*
202bd36369b104a628355703c1001cfef8a1ab214Jason Sams * Copyright (C) 2011 The Android Open Source Project
302bd36369b104a628355703c1001cfef8a1ab214Jason Sams *
402bd36369b104a628355703c1001cfef8a1ab214Jason Sams * Licensed under the Apache License, Version 2.0 (the "License");
502bd36369b104a628355703c1001cfef8a1ab214Jason Sams * you may not use this file except in compliance with the License.
602bd36369b104a628355703c1001cfef8a1ab214Jason Sams * You may obtain a copy of the License at
702bd36369b104a628355703c1001cfef8a1ab214Jason Sams *
802bd36369b104a628355703c1001cfef8a1ab214Jason Sams *      http://www.apache.org/licenses/LICENSE-2.0
902bd36369b104a628355703c1001cfef8a1ab214Jason Sams *
1002bd36369b104a628355703c1001cfef8a1ab214Jason Sams * Unless required by applicable law or agreed to in writing, software
1102bd36369b104a628355703c1001cfef8a1ab214Jason Sams * distributed under the License is distributed on an "AS IS" BASIS,
1202bd36369b104a628355703c1001cfef8a1ab214Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1302bd36369b104a628355703c1001cfef8a1ab214Jason Sams * See the License for the specific language governing permissions and
1402bd36369b104a628355703c1001cfef8a1ab214Jason Sams * limitations under the License.
1502bd36369b104a628355703c1001cfef8a1ab214Jason Sams */
1602bd36369b104a628355703c1001cfef8a1ab214Jason Sams
1702bd36369b104a628355703c1001cfef8a1ab214Jason Samspackage com.example.android.rs.computeperf;
1802bd36369b104a628355703c1001cfef8a1ab214Jason Sams
1902bd36369b104a628355703c1001cfef8a1ab214Jason Samsimport android.content.res.Resources;
2002bd36369b104a628355703c1001cfef8a1ab214Jason Samsimport android.renderscript.*;
2102bd36369b104a628355703c1001cfef8a1ab214Jason Sams
2202bd36369b104a628355703c1001cfef8a1ab214Jason Samspublic class Mandelbrot implements Runnable {
2302bd36369b104a628355703c1001cfef8a1ab214Jason Sams    private RenderScript mRS;
2402bd36369b104a628355703c1001cfef8a1ab214Jason Sams    private Allocation mAllocationXY;
2502bd36369b104a628355703c1001cfef8a1ab214Jason Sams    private ScriptC_mandelbrot mScript;
2602bd36369b104a628355703c1001cfef8a1ab214Jason Sams
2702bd36369b104a628355703c1001cfef8a1ab214Jason Sams    Mandelbrot(RenderScript rs, Resources res) {
2802bd36369b104a628355703c1001cfef8a1ab214Jason Sams        mRS = rs;
2902bd36369b104a628355703c1001cfef8a1ab214Jason Sams        mScript = new ScriptC_mandelbrot(mRS, res, R.raw.mandelbrot);
3002bd36369b104a628355703c1001cfef8a1ab214Jason Sams
3102bd36369b104a628355703c1001cfef8a1ab214Jason Sams        Type.Builder tb = new Type.Builder(rs, Element.U8_4(rs));
3202bd36369b104a628355703c1001cfef8a1ab214Jason Sams        tb.setX(mScript.get_gDimX());
3302bd36369b104a628355703c1001cfef8a1ab214Jason Sams        tb.setY(mScript.get_gDimY());
3402bd36369b104a628355703c1001cfef8a1ab214Jason Sams        mAllocationXY = Allocation.createTyped(rs, tb.create());
3502bd36369b104a628355703c1001cfef8a1ab214Jason Sams    }
3602bd36369b104a628355703c1001cfef8a1ab214Jason Sams
3702bd36369b104a628355703c1001cfef8a1ab214Jason Sams    public void run() {
3802bd36369b104a628355703c1001cfef8a1ab214Jason Sams        long t = java.lang.System.currentTimeMillis();
3902bd36369b104a628355703c1001cfef8a1ab214Jason Sams        mScript.forEach_root(mAllocationXY);
4002bd36369b104a628355703c1001cfef8a1ab214Jason Sams        mRS.finish();
4102bd36369b104a628355703c1001cfef8a1ab214Jason Sams        t = java.lang.System.currentTimeMillis() - t;
4202bd36369b104a628355703c1001cfef8a1ab214Jason Sams        android.util.Log.v("ComputePerf", "mandelbrot  ms " + t);
4302bd36369b104a628355703c1001cfef8a1ab214Jason Sams    }
4402bd36369b104a628355703c1001cfef8a1ab214Jason Sams
4502bd36369b104a628355703c1001cfef8a1ab214Jason Sams}
46