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