15ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni/*
25ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni * Copyright (C) 2012 The Android Open Source Project
35ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni *
45ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni * Licensed under the Apache License, Version 2.0 (the "License");
55ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni * you may not use this file except in compliance with the License.
65ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni * You may obtain a copy of the License at
75ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni *
85ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni *      http://www.apache.org/licenses/LICENSE-2.0
95ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni *
105ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni * Unless required by applicable law or agreed to in writing, software
115ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni * distributed under the License is distributed on an "AS IS" BASIS,
125ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni * See the License for the specific language governing permissions and
145ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni * limitations under the License.
155ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni */
165ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni
175ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Nipackage com.android.rs.sgtest;
185ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni
195ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Niimport android.app.Activity;
205ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Niimport android.content.Context;
215ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Niimport android.os.Bundle;
225ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Niimport android.graphics.Bitmap;
235ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Niimport android.renderscript.ScriptC;
245ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Niimport android.renderscript.RenderScript;
255ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Niimport android.renderscript.Type;
265ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Niimport android.renderscript.Allocation;
275ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Niimport android.renderscript.Element;
285ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Niimport android.renderscript.Script;
295ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Niimport android.view.SurfaceView;
305ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Niimport android.view.SurfaceHolder;
315ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Niimport android.widget.ImageView;
325ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Niimport android.widget.SeekBar;
335ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Niimport android.widget.TextView;
345ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Niimport android.view.View;
355ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Niimport android.util.Log;
365ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Niimport java.lang.Math;
375ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Niimport android.widget.Spinner;
385ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni
395ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Nipublic class TestBase  {
405ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    protected final String TAG = "Img";
415ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni
425ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    protected RenderScript mRS;
435ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    protected Allocation mInPixelsAllocation;
445ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni  // protected Allocation mInPixelsAllocation2;
455ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    protected Allocation mOutPixelsAllocation;
465ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    protected ScriptGroupTestActivity act;
475ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni
485ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    private class MessageProcessor extends RenderScript.RSMessageHandler {
495ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni        ScriptGroupTestActivity mAct;
505ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni
515ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni        MessageProcessor(ScriptGroupTestActivity act) {
525ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni            mAct = act;
535ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni        }
545ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni
555ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni        public void run() {
565ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni            mAct.updateDisplay();
575ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni        }
585ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    }
595ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni
605ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    public boolean onSpinnerSetup(Spinner s) {
615ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni        s.setVisibility(View.INVISIBLE);
625ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni        return false;
635ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    }
645ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni
655ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    public final void createBaseTest(ScriptGroupTestActivity ipact) {
665ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni        act = ipact;
675ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni        mRS = ipact.mRS;
685ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni        mRS.setMessageHandler(new MessageProcessor(act));
695ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni
705ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni        mInPixelsAllocation = ipact.mInPixelsAllocation;
715ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni        // mInPixelsAllocation2 = ipact.mInPixelsAllocation2;
725ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni        mOutPixelsAllocation = ipact.mOutPixelsAllocation;
735ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni
745ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni        createTest(act.getResources());
755ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    }
765ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni
775ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    // Must override
785ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    public void createTest(android.content.res.Resources res) {
795ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    }
805ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni
815ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    // Must override
825ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    public void runTest() {
835ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    }
845ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni
855ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    final public void runTestSendMessage() {
865ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni        runTest();
875ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni        mRS.sendMessage(0, null);
885ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    }
895ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni
905ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    public void finish() {
915ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni        mRS.finish();
925ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    }
935ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni
945ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    public void destroy() {
955ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni        mRS.setMessageHandler(null);
965ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    }
975ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni
985ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    public void updateBitmap(Bitmap b) {
995ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni        mOutPixelsAllocation.copyTo(b);
1005ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    }
1015ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni
1025ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    // Override to configure specific benchmark config.
1035ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    public void setupBenchmark() {
1045ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    }
1055ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni
1065ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    // Override to reset after benchmark.
1075ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    public void exitBenchmark() {
1085ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni    }
1095ab5155f7e0e0904f8c11cd0dbdbf7832e3ac948Yang Ni}
110