ImageProcessingActivityJB.java revision 572a5031a5d8602db0bec0b253428a034bd4dd59
1572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams/* 2572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * Copyright (C) 2012 The Android Open Source Project 3572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * 4572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * you may not use this file except in compliance with the License. 6572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * You may obtain a copy of the License at 7572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * 8572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 9572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * 10572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * Unless required by applicable law or agreed to in writing, software 11572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * See the License for the specific language governing permissions and 14572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * limitations under the License. 15572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams */ 16572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 17572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samspackage com.android.rs.imagejb; 18572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 19572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.app.Activity; 20572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.os.Bundle; 21572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.os.Handler; 22572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.os.Message; 23572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.graphics.BitmapFactory; 24572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.graphics.Bitmap; 25572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.graphics.Canvas; 26572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.view.SurfaceView; 27572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.widget.AdapterView; 28572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.widget.ArrayAdapter; 29572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.widget.ImageView; 30572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.widget.SeekBar; 31572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.widget.Spinner; 32572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.widget.TextView; 33572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.view.View; 34572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.util.Log; 35572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.renderscript.ScriptC; 36572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.renderscript.RenderScript; 37572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.renderscript.Type; 38572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.renderscript.Allocation; 39572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.renderscript.Element; 40572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.renderscript.Script; 41572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 42572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.os.Environment; 43572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport java.io.BufferedWriter; 44572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport java.io.File; 45572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport java.io.FileWriter; 46572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport java.io.IOException; 47572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 48572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samspublic class ImageProcessingActivityJB extends Activity 49572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams implements SeekBar.OnSeekBarChangeListener { 50572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private final String TAG = "Img"; 51572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public final String RESULT_FILE = "image_processing_result.csv"; 52572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 53572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams RenderScript mRS; 54572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Allocation mInPixelsAllocation; 55572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Allocation mInPixelsAllocation2; 56572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Allocation mOutPixelsAllocation; 57572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 58572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams /** 59572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * Define enum type for test names 60572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams */ 61572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public enum TestName { 62572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // totally there are 38 test cases 63572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams LEVELS_VEC3_RELAXED ("Levels Vec3 Relaxed"), 64572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams LEVELS_VEC4_RELAXED ("Levels Vec4 Relaxed"), 65572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams LEVELS_VEC3_FULL ("Levels Vec3 Full"), 66572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams LEVELS_VEC4_FULL ("Levels Vec4 Full"), 67572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams BLUR_RADIUS_25 ("Blur radius 25"), 68572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams INTRINSIC_BLUE_RADIUS_25 ("Intrinsic Blur radius 25"), 69572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams GREYSCALE ("Greyscale"), 70572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams GRAIN ("Grain"), 71572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams FISHEYE_FULL ("Fisheye Full"), 72572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams FISHEYE_RELAXED ("Fisheye Relaxed"), 73572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams FISHEYE_APPROXIMATE_FULL ("Fisheye Approximate Full"), 74572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams FISHEYE_APPROXIMATE_RELAXED ("Fisheye Approximate Relaxed"), 75572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams VIGNETTE_FULL ("Vignette Full"), 76572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams VIGNETTE_RELAXED ("Vignette Relaxed"), 77572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams VIGNETTE_APPROXIMATE_FULL ("Vignette Approximate Full"), 78572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams VIGNETTE_APPROXIMATE_RELAXED ("Vignette Approximate Relaxed"), 79572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams GROUP_TEST_EMULATED ("Group Test (emulated)"), 80572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams GROUP_TEST_NATIVE ("Group Test (native)"), 81572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams CONVOLVE_3X3 ("Convolve 3x3"), 82572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams INTRINSICS_CONVOLVE_3X3 ("Intrinsics Convolve 3x3"), 83572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams COLOR_MATRIX ("ColorMatrix"), 84572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams INTRINSICS_COLOR_MATRIX ("Intrinsics ColorMatrix"), 85572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams INTRINSICS_COLOR_MATRIX_GREY ("Intrinsics ColorMatrix Grey"), 86572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams COPY ("Copy"), 87572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams CROSS_PROCESS_USING_LUT ("CrossProcess (using LUT)"), 88572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams CONVOLVE_5X5 ("Convolve 5x5"), 89572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams INTRINSICS_CONVOLVE_5X5 ("Intrinsics Convolve 5x5"), 90572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams MANDELBROT ("Mandelbrot"), 91572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams INTRINSICS_BLEND ("Intrinsics Blend"), 92572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams VIBRANCE ("Vibrance"), 93572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams BW_FILTER ("BW Filter"), 94572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams SHADOWS ("Shadows"), 95572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams CONTRAST ("Contrast"), 96572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams EXPOSURE ("Exposure"), 97572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams WHITE_BALANCE ("White Balance"); 98572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 99572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 100572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private final String name; 101572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 102572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private TestName(String s) { 103572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams name = s; 104572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 105572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 106572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // return quoted string as displayed test name 107572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public String toString() { 108572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return name; 109572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 110572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 111572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 112572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Bitmap mBitmapIn; 113572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Bitmap mBitmapIn2; 114572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Bitmap mBitmapOut; 115572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 116572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private Spinner mSpinner; 117572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private SeekBar mBar1; 118572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private SeekBar mBar2; 119572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private SeekBar mBar3; 120572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private SeekBar mBar4; 121572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private SeekBar mBar5; 122572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private TextView mText1; 123572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private TextView mText2; 124572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private TextView mText3; 125572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private TextView mText4; 126572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private TextView mText5; 127572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 128572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private float mSaturation = 1.0f; 129572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 130572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private TextView mBenchmarkResult; 131572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private Spinner mTestSpinner; 132572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 133572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private SurfaceView mSurfaceView; 134572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private ImageView mDisplayView; 135572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 136572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private boolean mDoingBenchmark; 137572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 138572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private TestBase mTest; 139572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private int mRunCount; 140572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 141572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public void updateDisplay() { 142572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mHandler.sendMessage(Message.obtain()); 143572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 144572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 145572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private Handler mHandler = new Handler() { 146572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // Allow the filter to complete without blocking the UI 147572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // thread. When the message arrives that the op is complete 148572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // we will either mark completion or start a new filter if 149572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // more work is ready. Either way, display the result. 150572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams @Override 151572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public void handleMessage(Message msg) { 152572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.updateBitmap(mBitmapOut); 153572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mDisplayView.invalidate(); 154572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 155572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams boolean doTest = false; 156572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams synchronized(this) { 157572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams if (mRunCount > 0) { 158572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mRunCount--; 159572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams if (mRunCount > 0) { 160572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams doTest = true; 161572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 162572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 163572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 164572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams if (doTest) { 165572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.runTestSendMessage(); 166572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 167572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 168572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 169572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams }; 170572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 171572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 172572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams if (fromUser) { 173572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 174572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams if (seekBar == mBar1) { 175572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.onBar1Changed(progress); 176572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } else if (seekBar == mBar2) { 177572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.onBar2Changed(progress); 178572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } else if (seekBar == mBar3) { 179572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.onBar3Changed(progress); 180572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } else if (seekBar == mBar4) { 181572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.onBar4Changed(progress); 182572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } else if (seekBar == mBar5) { 183572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.onBar5Changed(progress); 184572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 185572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 186572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams boolean doTest = false; 187572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams synchronized(this) { 188572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams if (mRunCount == 0) { 189572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams doTest = true; 190572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mRunCount = 1; 191572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } else { 192572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mRunCount = 2; 193572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 194572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 195572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams if (doTest) { 196572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.runTestSendMessage(); 197572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 198572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 199572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 200572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 201572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public void onStartTrackingTouch(SeekBar seekBar) { 202572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 203572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 204572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public void onStopTrackingTouch(SeekBar seekBar) { 205572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 206572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 207572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams void setupBars() { 208572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mSpinner.setVisibility(View.VISIBLE); 209572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.onSpinner1Setup(mSpinner); 210572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 211572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar1.setVisibility(View.VISIBLE); 212572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mText1.setVisibility(View.VISIBLE); 213572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.onBar1Setup(mBar1, mText1); 214572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 215572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar2.setVisibility(View.VISIBLE); 216572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mText2.setVisibility(View.VISIBLE); 217572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.onBar2Setup(mBar2, mText2); 218572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 219572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar3.setVisibility(View.VISIBLE); 220572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mText3.setVisibility(View.VISIBLE); 221572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.onBar3Setup(mBar3, mText3); 222572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 223572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar4.setVisibility(View.VISIBLE); 224572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mText4.setVisibility(View.VISIBLE); 225572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.onBar4Setup(mBar4, mText4); 226572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 227572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar5.setVisibility(View.VISIBLE); 228572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mText5.setVisibility(View.VISIBLE); 229572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.onBar5Setup(mBar5, mText5); 230572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 231572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 232572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 233572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams void changeTest(TestName testName) { 234572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams if (mTest != null) { 235572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.destroy(); 236572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 237572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams switch(testName) { 238572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case LEVELS_VEC3_RELAXED: 239572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new LevelsV4(false, false); 240572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 241572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case LEVELS_VEC4_RELAXED: 242572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new LevelsV4(false, true); 243572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 244572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case LEVELS_VEC3_FULL: 245572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new LevelsV4(true, false); 246572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 247572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case LEVELS_VEC4_FULL: 248572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new LevelsV4(true, true); 249572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 250572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case BLUR_RADIUS_25: 251572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Blur25(false); 252572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 253572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case INTRINSIC_BLUE_RADIUS_25: 254572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Blur25(true); 255572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 256572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case GREYSCALE: 257572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Greyscale(); 258572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 259572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case GRAIN: 260572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Grain(); 261572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 262572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case FISHEYE_FULL: 263572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Fisheye(false, false); 264572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 265572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case FISHEYE_RELAXED: 266572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Fisheye(false, true); 267572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 268572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case FISHEYE_APPROXIMATE_FULL: 269572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Fisheye(true, false); 270572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 271572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case FISHEYE_APPROXIMATE_RELAXED: 272572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Fisheye(true, true); 273572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 274572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case VIGNETTE_FULL: 275572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Vignette(false, false); 276572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 277572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case VIGNETTE_RELAXED: 278572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Vignette(false, true); 279572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 280572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case VIGNETTE_APPROXIMATE_FULL: 281572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Vignette(true, false); 282572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 283572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case VIGNETTE_APPROXIMATE_RELAXED: 284572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Vignette(true, true); 285572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 286572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case GROUP_TEST_EMULATED: 287572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new GroupTest(false); 288572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 289572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case GROUP_TEST_NATIVE: 290572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new GroupTest(true); 291572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 292572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case CONVOLVE_3X3: 293572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Convolve3x3(false); 294572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 295572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case INTRINSICS_CONVOLVE_3X3: 296572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Convolve3x3(true); 297572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 298572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case COLOR_MATRIX: 299572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new ColorMatrix(false, false); 300572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 301572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case INTRINSICS_COLOR_MATRIX: 302572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new ColorMatrix(true, false); 303572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 304572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case INTRINSICS_COLOR_MATRIX_GREY: 305572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new ColorMatrix(true, true); 306572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 307572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case COPY: 308572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Copy(); 309572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 310572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case CROSS_PROCESS_USING_LUT: 311572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new CrossProcess(); 312572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 313572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case CONVOLVE_5X5: 314572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Convolve5x5(false); 315572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 316572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case INTRINSICS_CONVOLVE_5X5: 317572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Convolve5x5(true); 318572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 319572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case MANDELBROT: 320572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Mandelbrot(); 321572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 322572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case INTRINSICS_BLEND: 323572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Blend(); 324572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 325572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case VIBRANCE: 326572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Vibrance(); 327572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 328572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case BW_FILTER: 329572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new BWFilter(); 330572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 331572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case SHADOWS: 332572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Shadows(); 333572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 334572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case CONTRAST: 335572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Contrast(); 336572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 337572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case EXPOSURE: 338572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Exposure(); 339572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 340572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case WHITE_BALANCE: 341572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new WhiteBalance(); 342572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 343572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 344572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 345572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.createBaseTest(this, mBitmapIn, mBitmapIn2, mBitmapOut); 346572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams setupBars(); 347572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 348572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.runTest(); 349572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams updateDisplay(); 350572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBenchmarkResult.setText("Result: not run"); 351572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 352572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 353572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams void setupTests() { 354572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTestSpinner.setAdapter(new ArrayAdapter<TestName>( 355572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams this, R.layout.spinner_layout, TestName.values())); 356572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 357572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 358572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private AdapterView.OnItemSelectedListener mTestSpinnerListener = 359572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams new AdapterView.OnItemSelectedListener() { 360572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 361572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams changeTest(TestName.values()[pos]); 362572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 363572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 364572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public void onNothingSelected(AdapterView parent) { 365572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 366572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 367572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams }; 368572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 369572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams @Override 370572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams protected void onCreate(Bundle savedInstanceState) { 371572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams super.onCreate(savedInstanceState); 372572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams setContentView(R.layout.main); 373572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 374572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBitmapIn = loadBitmap(R.drawable.img1600x1067); 375572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBitmapIn2 = loadBitmap(R.drawable.img1600x1067b); 376572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBitmapOut = Bitmap.createBitmap(mBitmapIn.getWidth(), mBitmapIn.getHeight(), 377572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBitmapIn.getConfig()); 378572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 379572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mSurfaceView = (SurfaceView) findViewById(R.id.surface); 380572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 381572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mDisplayView = (ImageView) findViewById(R.id.display); 382572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mDisplayView.setImageBitmap(mBitmapOut); 383572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 384572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mSpinner = (Spinner) findViewById(R.id.spinner1); 385572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 386572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar1 = (SeekBar) findViewById(R.id.slider1); 387572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar2 = (SeekBar) findViewById(R.id.slider2); 388572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar3 = (SeekBar) findViewById(R.id.slider3); 389572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar4 = (SeekBar) findViewById(R.id.slider4); 390572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar5 = (SeekBar) findViewById(R.id.slider5); 391572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 392572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar1.setOnSeekBarChangeListener(this); 393572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar2.setOnSeekBarChangeListener(this); 394572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar3.setOnSeekBarChangeListener(this); 395572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar4.setOnSeekBarChangeListener(this); 396572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar5.setOnSeekBarChangeListener(this); 397572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 398572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mText1 = (TextView) findViewById(R.id.slider1Text); 399572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mText2 = (TextView) findViewById(R.id.slider2Text); 400572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mText3 = (TextView) findViewById(R.id.slider3Text); 401572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mText4 = (TextView) findViewById(R.id.slider4Text); 402572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mText5 = (TextView) findViewById(R.id.slider5Text); 403572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 404572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTestSpinner = (Spinner) findViewById(R.id.filterselection); 405572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTestSpinner.setOnItemSelectedListener(mTestSpinnerListener); 406572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 407572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBenchmarkResult = (TextView) findViewById(R.id.benchmarkText); 408572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBenchmarkResult.setText("Result: not run"); 409572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 410572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 411572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mRS = RenderScript.create(this); 412572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mInPixelsAllocation = Allocation.createFromBitmap(mRS, mBitmapIn); 413572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mInPixelsAllocation2 = Allocation.createFromBitmap(mRS, mBitmapIn2); 414572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mOutPixelsAllocation = Allocation.createFromBitmap(mRS, mBitmapOut); 415572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 416572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 417572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams setupTests(); 418572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams changeTest(TestName.LEVELS_VEC3_RELAXED); 419572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 420572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 421572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 422572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private Bitmap loadBitmap(int resource) { 423572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams final BitmapFactory.Options options = new BitmapFactory.Options(); 424572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams options.inPreferredConfig = Bitmap.Config.ARGB_8888; 425572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return BitmapFactory.decodeResource(getResources(), resource, options); 426572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 427572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 428572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // button hook 429572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public void benchmark(View v) { 430572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams float t = getBenchmark(); 431572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams //long javaTime = javaFilter(); 432572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams //mBenchmarkResult.setText("RS: " + t + " ms Java: " + javaTime + " ms"); 433572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBenchmarkResult.setText("Result: " + t + " ms"); 434572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Log.v(TAG, "getBenchmark: Renderscript frame time core ms " + t); 435572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 436572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 437572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public void benchmark_all(View v) { 438572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // write result into a file 439572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams File externalStorage = Environment.getExternalStorageDirectory(); 440572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams if (!externalStorage.canWrite()) { 441572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Log.v(TAG, "sdcard is not writable"); 442572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return; 443572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 444572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams File resultFile = new File(externalStorage, RESULT_FILE); 445572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams resultFile.setWritable(true, false); 446572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams try { 447572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams BufferedWriter rsWriter = new BufferedWriter(new FileWriter(resultFile)); 448572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Log.v(TAG, "Saved results in: " + resultFile.getAbsolutePath()); 449572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams for (TestName tn: TestName.values()) { 450572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams changeTest(tn); 451572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams float t = getBenchmark(); 452572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams String s = new String("" + tn.toString() + ", " + t); 453572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams rsWriter.write(s + "\n"); 454572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Log.v(TAG, "Test " + s + "ms\n"); 455572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 456572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams rsWriter.close(); 457572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } catch (IOException e) { 458572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Log.v(TAG, "Unable to write result file " + e.getMessage()); 459572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 460572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams changeTest(TestName.LEVELS_VEC3_RELAXED); 461572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 462572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 463572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // For benchmark test 464572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public float getBenchmark() { 465572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mDoingBenchmark = true; 466572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 467572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.setupBenchmark(); 468572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams long result = 0; 469572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 470572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams //Log.v(TAG, "Warming"); 471572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams long t = java.lang.System.currentTimeMillis() + 250; 472572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams do { 473572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.runTest(); 474572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.finish(); 475572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } while (t > java.lang.System.currentTimeMillis()); 476572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 477572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams //Log.v(TAG, "Benchmarking"); 478572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams int ct = 0; 479572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams t = java.lang.System.currentTimeMillis(); 480572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams do { 481572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.runTest(); 482572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.finish(); 483572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams ct++; 484572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } while ((t+1000) > java.lang.System.currentTimeMillis()); 485572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams t = java.lang.System.currentTimeMillis() - t; 486572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams float ft = (float)t; 487572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams ft /= ct; 488572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 489572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.exitBenchmark(); 490572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mDoingBenchmark = false; 491572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 492572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return ft; 493572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 494572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams} 495