diff options
Diffstat (limited to 'tests/RenderScriptTests/ImageProcessing')
49 files changed, 0 insertions, 3592 deletions
diff --git a/tests/RenderScriptTests/ImageProcessing/Android.mk b/tests/RenderScriptTests/ImageProcessing/Android.mk deleted file mode 100644 index d7486e8..0000000 --- a/tests/RenderScriptTests/ImageProcessing/Android.mk +++ /dev/null @@ -1,30 +0,0 @@ -# -# Copyright (C) 2009 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. -# - -LOCAL_PATH := $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_MODULE_TAGS := tests - -LOCAL_JAVA_LIBRARIES := android.test.runner - -LOCAL_SRC_FILES := $(call all-java-files-under, src) \ - $(call all-renderscript-files-under, src) -#LOCAL_STATIC_JAVA_LIBRARIES := android.renderscript - -LOCAL_PACKAGE_NAME := ImageProcessing - -include $(BUILD_PACKAGE) diff --git a/tests/RenderScriptTests/ImageProcessing/AndroidManifest.xml b/tests/RenderScriptTests/ImageProcessing/AndroidManifest.xml deleted file mode 100644 index d51fa39..0000000 --- a/tests/RenderScriptTests/ImageProcessing/AndroidManifest.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> - -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.android.rs.image"> - <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> - <uses-sdk android:minSdkVersion="17" /> - <application android:label="Image Processing" - android:hardwareAccelerated="true"> - <uses-library android:name="android.test.runner" /> - <activity android:name="ImageProcessingActivity"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - </application> - - <instrumentation android:name=".ImageProcessingTestRunner" - android:targetPackage="com.android.rs.image" - android:label="Test runner for Image Processing Benchmark Test" - /> -</manifest> diff --git a/tests/RenderScriptTests/ImageProcessing/res/drawable-nodpi/img1600x1067.jpg b/tests/RenderScriptTests/ImageProcessing/res/drawable-nodpi/img1600x1067.jpg Binary files differdeleted file mode 100644 index 05d3ee2..0000000 --- a/tests/RenderScriptTests/ImageProcessing/res/drawable-nodpi/img1600x1067.jpg +++ /dev/null diff --git a/tests/RenderScriptTests/ImageProcessing/res/drawable-nodpi/img1600x1067b.jpg b/tests/RenderScriptTests/ImageProcessing/res/drawable-nodpi/img1600x1067b.jpg Binary files differdeleted file mode 100644 index aed0781..0000000 --- a/tests/RenderScriptTests/ImageProcessing/res/drawable-nodpi/img1600x1067b.jpg +++ /dev/null diff --git a/tests/RenderScriptTests/ImageProcessing/res/layout/main.xml b/tests/RenderScriptTests/ImageProcessing/res/layout/main.xml deleted file mode 100644 index f0a2b92..0000000 --- a/tests/RenderScriptTests/ImageProcessing/res/layout/main.xml +++ /dev/null @@ -1,139 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2009 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. ---> - -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - android:id="@+id/toplevel"> - <SurfaceView - android:id="@+id/surface" - android:layout_width="1dip" - android:layout_height="1dip" /> - <ScrollView - android:layout_width="fill_parent" - android:layout_height="fill_parent"> - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:layout_width="fill_parent" - android:layout_height="fill_parent"> - <ImageView - android:id="@+id/display" - android:layout_width="wrap_content" - android:layout_height="wrap_content" /> - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="horizontal" - android:layout_width="fill_parent" - android:layout_height="wrap_content"> - <Button - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/benchmark" - android:onClick="benchmark"/> - <TextView - android:id="@+id/benchmarkText" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:textSize="8pt" - android:text="@string/saturation"/> - </LinearLayout> - <Spinner - android:id="@+id/filterselection" - android:layout_width="fill_parent" - android:layout_height="wrap_content"/> - <Spinner - android:id="@+id/spinner1" - android:layout_width="fill_parent" - android:layout_height="wrap_content"/> - <TextView - android:id="@+id/slider1Text" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:textSize="8pt" - android:layout_marginLeft="10sp" - android:layout_marginTop="15sp" - android:text="@string/saturation"/> - <SeekBar - android:id="@+id/slider1" - android:layout_marginLeft="10sp" - android:layout_marginRight="10sp" - android:layout_width="match_parent" - android:layout_height="wrap_content"/> - <TextView - android:id="@+id/slider2Text" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:textSize="8pt" - android:layout_marginLeft="10sp" - android:layout_marginTop="15sp" - android:text="@string/gamma"/> - <SeekBar - android:id="@+id/slider2" - android:layout_marginLeft="10sp" - android:layout_marginRight="10sp" - android:layout_width="match_parent" - android:layout_height="wrap_content"/> - <TextView - android:id="@+id/slider3Text" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginLeft="10sp" - android:layout_marginTop="15sp" - android:textSize="8pt" - android:text="@string/out_white"/> - <SeekBar - android:id="@+id/slider3" - android:layout_marginLeft="10sp" - android:layout_marginRight="10sp" - android:layout_width="match_parent" - android:layout_height="wrap_content"/> - <TextView - android:id="@+id/slider4Text" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:textSize="8pt" - android:layout_marginLeft="10sp" - android:layout_marginTop="15sp" - android:text="@string/in_white"/> - <SeekBar - android:id="@+id/slider4" - android:layout_marginLeft="10sp" - android:layout_marginRight="10sp" - android:layout_width="match_parent" - android:layout_height="wrap_content"/> - <TextView - android:id="@+id/slider5Text" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:textSize="8pt" - android:layout_marginLeft="10sp" - android:layout_marginTop="15sp" - android:text="@string/in_white"/> - <SeekBar - android:id="@+id/slider5" - android:layout_marginLeft="10sp" - android:layout_marginRight="10sp" - android:layout_width="match_parent" - android:layout_height="wrap_content"/> - <Button - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/benchmark_all" - android:onClick="benchmark_all"/> - </LinearLayout> - </ScrollView> -</LinearLayout> - diff --git a/tests/RenderScriptTests/ImageProcessing/res/layout/spinner_layout.xml b/tests/RenderScriptTests/ImageProcessing/res/layout/spinner_layout.xml deleted file mode 100644 index 8196bbf..0000000 --- a/tests/RenderScriptTests/ImageProcessing/res/layout/spinner_layout.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> - -<!-- Copyright (C) 2012 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. ---> - -<TextView xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - android:padding="10dp" - android:textSize="16sp" -/> diff --git a/tests/RenderScriptTests/ImageProcessing/res/values/strings.xml b/tests/RenderScriptTests/ImageProcessing/res/values/strings.xml deleted file mode 100644 index a7dd165..0000000 --- a/tests/RenderScriptTests/ImageProcessing/res/values/strings.xml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -* Copyright (C) 2008 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. -*/ ---> - -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <!-- General --> - <skip /> - <!--slider label --> - <string name="blur_description">Blur Radius</string> - <string name="in_white">In White</string> - <string name="out_white">Out White</string> - <string name="in_black">In Black</string> - <string name="out_black">Out Black</string> - <string name="gamma">Gamma</string> - <string name="saturation">Saturation</string> - <string name="benchmark">Benchmark</string> - <string name="benchmark_all">Benchmark All</string> - -</resources> diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Blend.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Blend.java deleted file mode 100644 index 2303fc3..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Blend.java +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image; - -import java.lang.Math; -import java.lang.Short; - -import android.renderscript.Allocation; -import android.renderscript.Element; -import android.renderscript.Matrix4f; -import android.renderscript.RenderScript; -import android.renderscript.Script; -import android.renderscript.ScriptC; -import android.renderscript.ScriptGroup; -import android.renderscript.ScriptIntrinsicBlend; -import android.renderscript.Type; -import android.util.Log; -import android.widget.SeekBar; -import android.widget.TextView; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.view.View; -import android.widget.Spinner; - -public class Blend extends TestBase { - private ScriptIntrinsicBlend mBlend; - private ScriptC_blend mBlendHelper; - private short image1Alpha = 128; - private short image2Alpha = 128; - - String mIntrinsicNames[]; - - private Allocation image1; - private Allocation image2; - private int currentIntrinsic = 0; - - private AdapterView.OnItemSelectedListener mIntrinsicSpinnerListener = - new AdapterView.OnItemSelectedListener() { - public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { - currentIntrinsic = pos; - if (mRS != null) { - runTest(); - act.updateDisplay(); - } - } - - public void onNothingSelected(AdapterView parent) { - - } - }; - - public void createTest(android.content.res.Resources res) { - mBlend = ScriptIntrinsicBlend.create(mRS, Element.U8_4(mRS)); - mBlendHelper = new ScriptC_blend(mRS); - mBlendHelper.set_alpha((short)128); - - image1 = Allocation.createTyped(mRS, mInPixelsAllocation.getType()); - image2 = Allocation.createTyped(mRS, mInPixelsAllocation2.getType()); - - mIntrinsicNames = new String[14]; - mIntrinsicNames[0] = "Source"; - mIntrinsicNames[1] = "Destination"; - mIntrinsicNames[2] = "Source Over"; - mIntrinsicNames[3] = "Destination Over"; - mIntrinsicNames[4] = "Source In"; - mIntrinsicNames[5] = "Destination In"; - mIntrinsicNames[6] = "Source Out"; - mIntrinsicNames[7] = "Destination Out"; - mIntrinsicNames[8] = "Source Atop"; - mIntrinsicNames[9] = "Destination Atop"; - mIntrinsicNames[10] = "XOR"; - mIntrinsicNames[11] = "Add"; - mIntrinsicNames[12] = "Subtract"; - mIntrinsicNames[13] = "Multiply"; - } - - public boolean onSpinner1Setup(Spinner s) { - s.setAdapter(new ArrayAdapter<String>( - act, R.layout.spinner_layout, mIntrinsicNames)); - s.setOnItemSelectedListener(mIntrinsicSpinnerListener); - return true; - } - - public boolean onBar1Setup(SeekBar b, TextView t) { - t.setText("Image 1 Alpha"); - b.setMax(255); - b.setProgress(image1Alpha); - return true; - } - - public void onBar1Changed(int progress) { - image1Alpha = (short)progress; - } - - public boolean onBar2Setup(SeekBar b, TextView t) { - t.setText("Image 2 Alpha"); - b.setMax(255); - b.setProgress(image2Alpha); - return true; - } - - public void onBar2Changed(int progress) { - image2Alpha = (short)progress; - } - - public void runTest() { - image1.copy2DRangeFrom(0, 0, mInPixelsAllocation.getType().getX(), mInPixelsAllocation.getType().getY(), mInPixelsAllocation, 0, 0); - image2.copy2DRangeFrom(0, 0, mInPixelsAllocation2.getType().getX(), mInPixelsAllocation2.getType().getY(), mInPixelsAllocation2, 0, 0); - - mBlendHelper.set_alpha(image1Alpha); - mBlendHelper.forEach_setImageAlpha(image1); - - mBlendHelper.set_alpha(image2Alpha); - mBlendHelper.forEach_setImageAlpha(image2); - - switch (currentIntrinsic) { - case 0: - mBlend.forEachSrc(image1, image2); - break; - case 1: - mBlend.forEachDst(image1, image2); - break; - case 2: - mBlend.forEachSrcOver(image1, image2); - break; - case 3: - mBlend.forEachDstOver(image1, image2); - break; - case 4: - mBlend.forEachSrcIn(image1, image2); - break; - case 5: - mBlend.forEachDstIn(image1, image2); - break; - case 6: - mBlend.forEachSrcOut(image1, image2); - break; - case 7: - mBlend.forEachDstOut(image1, image2); - break; - case 8: - mBlend.forEachSrcAtop(image1, image2); - break; - case 9: - mBlend.forEachDstAtop(image1, image2); - break; - case 10: - mBlend.forEachXor(image1, image2); - break; - case 11: - mBlend.forEachAdd(image1, image2); - break; - case 12: - mBlend.forEachSubtract(image1, image2); - break; - case 13: - mBlend.forEachMultiply(image1, image2); - break; - } - - mOutPixelsAllocation.copy2DRangeFrom(0, 0, image2.getType().getX(), image2.getType().getY(), image2, 0, 0); - } - -} diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Blur25.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Blur25.java deleted file mode 100644 index 0c6d41d..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Blur25.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image; - -import java.lang.Math; - -import android.renderscript.Allocation; -import android.renderscript.Element; -import android.renderscript.RenderScript; -import android.renderscript.ScriptIntrinsicBlur; -import android.renderscript.Type; -import android.util.Log; -import android.widget.SeekBar; -import android.widget.TextView; - -public class Blur25 extends TestBase { - private boolean mUseIntrinsic = false; - private ScriptIntrinsicBlur mIntrinsic; - - private int MAX_RADIUS = 25; - private ScriptC_threshold mScript; - private float mRadius = MAX_RADIUS; - private float mSaturation = 1.0f; - private Allocation mScratchPixelsAllocation1; - private Allocation mScratchPixelsAllocation2; - - - public Blur25(boolean useIntrinsic) { - mUseIntrinsic = useIntrinsic; - } - - public boolean onBar1Setup(SeekBar b, TextView t) { - t.setText("Radius"); - b.setProgress(100); - return true; - } - - - public void onBar1Changed(int progress) { - mRadius = ((float)progress) / 100.0f * MAX_RADIUS; - if (mRadius <= 0.10f) { - mRadius = 0.10f; - } - if (mUseIntrinsic) { - mIntrinsic.setRadius(mRadius); - } else { - mScript.invoke_setRadius((int)mRadius); - } - } - - - public void createTest(android.content.res.Resources res) { - int width = mInPixelsAllocation.getType().getX(); - int height = mInPixelsAllocation.getType().getY(); - - if (mUseIntrinsic) { - mIntrinsic = ScriptIntrinsicBlur.create(mRS, Element.U8_4(mRS)); - mIntrinsic.setRadius(MAX_RADIUS); - mIntrinsic.setInput(mInPixelsAllocation); - } else { - - Type.Builder tb = new Type.Builder(mRS, Element.F32_4(mRS)); - tb.setX(width); - tb.setY(height); - mScratchPixelsAllocation1 = Allocation.createTyped(mRS, tb.create()); - mScratchPixelsAllocation2 = Allocation.createTyped(mRS, tb.create()); - - mScript = new ScriptC_threshold(mRS, res, R.raw.threshold); - mScript.set_width(width); - mScript.set_height(height); - mScript.invoke_setRadius(MAX_RADIUS); - - mScript.set_InPixel(mInPixelsAllocation); - mScript.set_ScratchPixel1(mScratchPixelsAllocation1); - mScript.set_ScratchPixel2(mScratchPixelsAllocation2); - } - } - - public void runTest() { - if (mUseIntrinsic) { - mIntrinsic.forEach(mOutPixelsAllocation); - } else { - mScript.forEach_copyIn(mInPixelsAllocation, mScratchPixelsAllocation1); - mScript.forEach_horz(mScratchPixelsAllocation2); - mScript.forEach_vert(mOutPixelsAllocation); - } - } - - public void setupBenchmark() { - if (mUseIntrinsic) { - mIntrinsic.setRadius(MAX_RADIUS); - } else { - mScript.invoke_setRadius(MAX_RADIUS); - } - } - - public void exitBenchmark() { - if (mUseIntrinsic) { - mIntrinsic.setRadius(mRadius); - } else { - mScript.invoke_setRadius((int)mRadius); - } - } -} diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ColorMatrix.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ColorMatrix.java deleted file mode 100644 index 2ac40a1..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ColorMatrix.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image; - -import java.lang.Math; - -import android.renderscript.Allocation; -import android.renderscript.Element; -import android.renderscript.Matrix4f; -import android.renderscript.RenderScript; -import android.renderscript.Script; -import android.renderscript.ScriptC; -import android.renderscript.ScriptGroup; -import android.renderscript.ScriptIntrinsicColorMatrix; -import android.renderscript.Type; -import android.util.Log; - -public class ColorMatrix extends TestBase { - private ScriptC_colormatrix mScript; - private ScriptIntrinsicColorMatrix mIntrinsic; - private boolean mUseIntrinsic; - private boolean mUseGrey; - - public ColorMatrix(boolean useIntrinsic, boolean useGrey) { - mUseIntrinsic = useIntrinsic; - mUseGrey = useGrey; - } - - public void createTest(android.content.res.Resources res) { - Matrix4f m = new Matrix4f(); - m.set(1, 0, 0.2f); - m.set(1, 1, 0.9f); - m.set(1, 2, 0.2f); - - if (mUseIntrinsic) { - mIntrinsic = ScriptIntrinsicColorMatrix.create(mRS, Element.U8_4(mRS)); - if (mUseGrey) { - mIntrinsic.setGreyscale(); - } else { - mIntrinsic.setColorMatrix(m); - } - } else { - mScript = new ScriptC_colormatrix(mRS, res, R.raw.colormatrix); - mScript.invoke_setMatrix(m); - } - } - - public void runTest() { - if (mUseIntrinsic) { - mIntrinsic.forEach(mInPixelsAllocation, mOutPixelsAllocation); - } else { - mScript.forEach_root(mInPixelsAllocation, mOutPixelsAllocation); - } - } - -} diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Convolve3x3.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Convolve3x3.java deleted file mode 100644 index 18e9b43..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Convolve3x3.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image; - -import java.lang.Math; - -import android.renderscript.Allocation; -import android.renderscript.Element; -import android.renderscript.Matrix4f; -import android.renderscript.RenderScript; -import android.renderscript.Script; -import android.renderscript.ScriptC; -import android.renderscript.ScriptGroup; -import android.renderscript.ScriptIntrinsicConvolve3x3; -import android.renderscript.Type; -import android.util.Log; - -public class Convolve3x3 extends TestBase { - private ScriptC_convolve3x3 mScript; - private ScriptIntrinsicConvolve3x3 mIntrinsic; - - private int mWidth; - private int mHeight; - private boolean mUseIntrinsic; - - public Convolve3x3(boolean useIntrinsic) { - mUseIntrinsic = useIntrinsic; - } - - public void createTest(android.content.res.Resources res) { - mWidth = mInPixelsAllocation.getType().getX(); - mHeight = mInPixelsAllocation.getType().getY(); - - float f[] = new float[9]; - f[0] = 0.f; f[1] = -1.f; f[2] = 0.f; - f[3] = -1.f; f[4] = 5.f; f[5] = -1.f; - f[6] = 0.f; f[7] = -1.f; f[8] = 0.f; - - if (mUseIntrinsic) { - mIntrinsic = ScriptIntrinsicConvolve3x3.create(mRS, Element.U8_4(mRS)); - mIntrinsic.setCoefficients(f); - mIntrinsic.setInput(mInPixelsAllocation); - } else { - mScript = new ScriptC_convolve3x3(mRS, res, R.raw.convolve3x3); - mScript.set_gCoeffs(f); - mScript.set_gIn(mInPixelsAllocation); - mScript.set_gWidth(mWidth); - mScript.set_gHeight(mHeight); - } - } - - public void runTest() { - if (mUseIntrinsic) { - mIntrinsic.forEach(mOutPixelsAllocation); - } else { - mScript.forEach_root(mOutPixelsAllocation); - } - } - -} diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Convolve5x5.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Convolve5x5.java deleted file mode 100644 index 03b3bb8..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Convolve5x5.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image; - -import java.lang.Math; - -import android.renderscript.Allocation; -import android.renderscript.Element; -import android.renderscript.Matrix4f; -import android.renderscript.RenderScript; -import android.renderscript.Script; -import android.renderscript.ScriptC; -import android.renderscript.ScriptGroup; -import android.renderscript.ScriptIntrinsicConvolve5x5; -import android.renderscript.Type; -import android.util.Log; - -public class Convolve5x5 extends TestBase { - private ScriptC_convolve5x5 mScript; - private ScriptIntrinsicConvolve5x5 mIntrinsic; - - private int mWidth; - private int mHeight; - private boolean mUseIntrinsic; - - public Convolve5x5(boolean useIntrinsic) { - mUseIntrinsic = useIntrinsic; - } - - public void createTest(android.content.res.Resources res) { - mWidth = mInPixelsAllocation.getType().getX(); - mHeight = mInPixelsAllocation.getType().getY(); - - float f[] = new float[25]; - //f[0] = 0.012f; f[1] = 0.025f; f[2] = 0.031f; f[3] = 0.025f; f[4] = 0.012f; - //f[5] = 0.025f; f[6] = 0.057f; f[7] = 0.075f; f[8] = 0.057f; f[9] = 0.025f; - //f[10]= 0.031f; f[11]= 0.075f; f[12]= 0.095f; f[13]= 0.075f; f[14]= 0.031f; - //f[15]= 0.025f; f[16]= 0.057f; f[17]= 0.075f; f[18]= 0.057f; f[19]= 0.025f; - //f[20]= 0.012f; f[21]= 0.025f; f[22]= 0.031f; f[23]= 0.025f; f[24]= 0.012f; - - //f[0] = 1.f; f[1] = 2.f; f[2] = 0.f; f[3] = -2.f; f[4] = -1.f; - //f[5] = 4.f; f[6] = 8.f; f[7] = 0.f; f[8] = -8.f; f[9] = -4.f; - //f[10]= 6.f; f[11]=12.f; f[12]= 0.f; f[13]=-12.f; f[14]= -6.f; - //f[15]= 4.f; f[16]= 8.f; f[17]= 0.f; f[18]= -8.f; f[19]= -4.f; - //f[20]= 1.f; f[21]= 2.f; f[22]= 0.f; f[23]= -2.f; f[24]= -1.f; - - f[0] = -1.f; f[1] = -3.f; f[2] = -4.f; f[3] = -3.f; f[4] = -1.f; - f[5] = -3.f; f[6] = 0.f; f[7] = 6.f; f[8] = 0.f; f[9] = -3.f; - f[10]= -4.f; f[11]= 6.f; f[12]= 20.f; f[13]= 6.f; f[14]= -4.f; - f[15]= -3.f; f[16]= 0.f; f[17]= 6.f; f[18]= 0.f; f[19]= -3.f; - f[20]= -1.f; f[21]= -3.f; f[22]= -4.f; f[23]= -3.f; f[24]= -1.f; - - if (mUseIntrinsic) { - mIntrinsic = ScriptIntrinsicConvolve5x5.create(mRS, Element.U8_4(mRS)); - mIntrinsic.setCoefficients(f); - mIntrinsic.setInput(mInPixelsAllocation); - } else { - mScript = new ScriptC_convolve5x5(mRS, res, R.raw.convolve5x5); - mScript.set_gCoeffs(f); - mScript.set_gIn(mInPixelsAllocation); - mScript.set_gWidth(mWidth); - mScript.set_gHeight(mHeight); - } - } - - public void runTest() { - if (mUseIntrinsic) { - mIntrinsic.forEach(mOutPixelsAllocation); - } else { - mScript.forEach_root(mOutPixelsAllocation); - } - } - -} diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Copy.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Copy.java deleted file mode 100644 index efca0b5..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Copy.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image; - -import java.lang.Math; - -import android.renderscript.Allocation; -import android.renderscript.Element; -import android.renderscript.RenderScript; -import android.renderscript.Script; -import android.renderscript.ScriptC; -import android.renderscript.Type; -import android.util.Log; - -public class Copy extends TestBase { - private ScriptC_copy mScript; - - public void createTest(android.content.res.Resources res) { - mScript = new ScriptC_copy(mRS, res, R.raw.copy); - } - - public void runTest() { - mScript.forEach_root(mInPixelsAllocation, mOutPixelsAllocation); - } - -} diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/CrossProcess.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/CrossProcess.java deleted file mode 100644 index b9e3524..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/CrossProcess.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image; - -import java.lang.Math; - -import android.renderscript.Allocation; -import android.renderscript.Element; -import android.renderscript.RenderScript; -import android.renderscript.ScriptIntrinsicLUT; -import android.util.Log; - -public class CrossProcess extends TestBase { - private ScriptIntrinsicLUT mIntrinsic; - - public void createTest(android.content.res.Resources res) { - mIntrinsic = ScriptIntrinsicLUT.create(mRS, Element.U8_4(mRS)); - for (int ct=0; ct < 256; ct++) { - float f = ((float)ct) / 255.f; - - float r = f; - if (r < 0.5f) { - r = 4.0f * r * r * r; - } else { - r = 1.0f - r; - r = 1.0f - (4.0f * r * r * r); - } - mIntrinsic.setRed(ct, (int)(r * 255.f + 0.5f)); - - float g = f; - if (g < 0.5f) { - g = 2.0f * g * g; - } else { - g = 1.0f - g; - g = 1.0f - (2.0f * g * g); - } - mIntrinsic.setGreen(ct, (int)(g * 255.f + 0.5f)); - - float b = f * 0.5f + 0.25f; - mIntrinsic.setBlue(ct, (int)(b * 255.f + 0.5f)); - } - - } - - public void runTest() { - mIntrinsic.forEach(mInPixelsAllocation, mOutPixelsAllocation); - } - -} diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Fisheye.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Fisheye.java deleted file mode 100644 index 81868b1..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Fisheye.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image; - -import android.renderscript.Allocation; -import android.renderscript.Element; -import android.renderscript.Sampler; -import android.renderscript.Type; -import android.widget.SeekBar; -import android.widget.TextView; - -public class Fisheye extends TestBase { - private ScriptC_fisheye_full mScript_full = null; - private ScriptC_fisheye_relaxed mScript_relaxed = null; - private ScriptC_fisheye_approx_full mScript_approx_full = null; - private ScriptC_fisheye_approx_relaxed mScript_approx_relaxed = null; - private final boolean approx; - private final boolean relaxed; - private float center_x = 0.5f; - private float center_y = 0.5f; - private float scale = 0.5f; - - public Fisheye(boolean approx, boolean relaxed) { - this.approx = approx; - this.relaxed = relaxed; - } - - public boolean onBar1Setup(SeekBar b, TextView t) { - t.setText("Scale"); - b.setMax(100); - b.setProgress(25); - return true; - } - public boolean onBar2Setup(SeekBar b, TextView t) { - t.setText("Shift center X"); - b.setMax(100); - b.setProgress(50); - return true; - } - public boolean onBar3Setup(SeekBar b, TextView t) { - t.setText("Shift center Y"); - b.setMax(100); - b.setProgress(50); - return true; - } - - public void onBar1Changed(int progress) { - scale = progress / 50.0f; - do_init(); - } - public void onBar2Changed(int progress) { - center_x = progress / 100.0f; - do_init(); - } - public void onBar3Changed(int progress) { - center_y = progress / 100.0f; - do_init(); - } - - private void do_init() { - if (approx) { - if (relaxed) - mScript_approx_relaxed.invoke_init_filter( - mInPixelsAllocation.getType().getX(), - mInPixelsAllocation.getType().getY(), center_x, - center_y, scale); - else - mScript_approx_full.invoke_init_filter( - mInPixelsAllocation.getType().getX(), - mInPixelsAllocation.getType().getY(), center_x, - center_y, scale); - } else if (relaxed) - mScript_relaxed.invoke_init_filter( - mInPixelsAllocation.getType().getX(), - mInPixelsAllocation.getType().getY(), center_x, center_y, - scale); - else - mScript_full.invoke_init_filter( - mInPixelsAllocation.getType().getX(), - mInPixelsAllocation.getType().getY(), center_x, center_y, - scale); - } - - public void createTest(android.content.res.Resources res) { - if (approx) { - if (relaxed) { - mScript_approx_relaxed = new ScriptC_fisheye_approx_relaxed(mRS, - res, R.raw.fisheye_approx_relaxed); - mScript_approx_relaxed.set_in_alloc(mInPixelsAllocation); - mScript_approx_relaxed.set_sampler(Sampler.CLAMP_LINEAR(mRS)); - } else { - mScript_approx_full = new ScriptC_fisheye_approx_full(mRS, res, - R.raw.fisheye_approx_full); - mScript_approx_full.set_in_alloc(mInPixelsAllocation); - mScript_approx_full.set_sampler(Sampler.CLAMP_LINEAR(mRS)); - } - } else if (relaxed) { - mScript_relaxed = new ScriptC_fisheye_relaxed(mRS, res, - R.raw.fisheye_relaxed); - mScript_relaxed.set_in_alloc(mInPixelsAllocation); - mScript_relaxed.set_sampler(Sampler.CLAMP_LINEAR(mRS)); - } else { - mScript_full = new ScriptC_fisheye_full(mRS, res, - R.raw.fisheye_full); - mScript_full.set_in_alloc(mInPixelsAllocation); - mScript_full.set_sampler(Sampler.CLAMP_LINEAR(mRS)); - } - do_init(); - } - - public void runTest() { - if (approx) { - if (relaxed) - mScript_approx_relaxed.forEach_root(mOutPixelsAllocation); - else - mScript_approx_full.forEach_root(mOutPixelsAllocation); - } else if (relaxed) - mScript_relaxed.forEach_root(mOutPixelsAllocation); - else - mScript_full.forEach_root(mOutPixelsAllocation); - } - -} - diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Grain.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Grain.java deleted file mode 100644 index 8618cc8..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Grain.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image; - -import java.lang.Math; - -import android.renderscript.Allocation; -import android.renderscript.Element; -import android.renderscript.RenderScript; -import android.renderscript.Script; -import android.renderscript.ScriptC; -import android.renderscript.Type; -import android.util.Log; -import android.widget.SeekBar; -import android.widget.TextView; - -public class Grain extends TestBase { - private ScriptC_grain mScript; - private Allocation mNoise; - private Allocation mNoise2; - - - public boolean onBar1Setup(SeekBar b, TextView t) { - t.setText("Strength"); - b.setProgress(50); - return true; - } - - public void onBar1Changed(int progress) { - float s = progress / 100.0f; - mScript.set_gNoiseStrength(s); - } - - private int findHighBit(int v) { - int bit = 0; - while (v > 1) { - bit++; - v >>= 1; - } - return bit; - } - - - public void createTest(android.content.res.Resources res) { - int width = mInPixelsAllocation.getType().getX(); - int height = mInPixelsAllocation.getType().getY(); - - int noiseW = findHighBit(width); - int noiseH = findHighBit(height); - if (noiseW > 9) { - noiseW = 9; - } - if (noiseH > 9) { - noiseH = 9; - } - noiseW = 1 << noiseW; - noiseH = 1 << noiseH; - - Type.Builder tb = new Type.Builder(mRS, Element.U8(mRS)); - tb.setX(noiseW); - tb.setY(noiseH); - mNoise = Allocation.createTyped(mRS, tb.create()); - mNoise2 = Allocation.createTyped(mRS, tb.create()); - - mScript = new ScriptC_grain(mRS, res, R.raw.grain); - mScript.set_gWMask(noiseW - 1); - mScript.set_gHMask(noiseH - 1); - mScript.set_gNoiseStrength(0.5f); - mScript.set_gBlendSource(mNoise); - mScript.set_gNoise(mNoise2); - } - - public void runTest() { - mScript.forEach_genRand(mNoise); - mScript.forEach_blend9(mNoise2); - mScript.forEach_root(mInPixelsAllocation, mOutPixelsAllocation); - } - -} - diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Greyscale.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Greyscale.java deleted file mode 100644 index 3db210a..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Greyscale.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image; - -import java.lang.Math; - -import android.renderscript.Allocation; -import android.renderscript.Element; -import android.renderscript.RenderScript; -import android.renderscript.Script; -import android.renderscript.ScriptC; -import android.renderscript.Type; -import android.util.Log; - -public class Greyscale extends TestBase { - private ScriptC_greyscale mScript; - - public void createTest(android.content.res.Resources res) { - mScript = new ScriptC_greyscale(mRS, res, R.raw.greyscale); - } - - public void runTest() { - mScript.forEach_root(mInPixelsAllocation, mOutPixelsAllocation); - } - -} diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/GroupTest.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/GroupTest.java deleted file mode 100644 index 29c204c..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/GroupTest.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image; - -import java.lang.Math; - -import android.renderscript.Allocation; -import android.renderscript.Element; -import android.renderscript.RenderScript; -import android.renderscript.ScriptIntrinsicConvolve3x3; -import android.renderscript.ScriptIntrinsicColorMatrix; -import android.renderscript.Type; -import android.renderscript.Matrix4f; -import android.renderscript.ScriptGroup; -import android.util.Log; - -public class GroupTest extends TestBase { - private ScriptIntrinsicConvolve3x3 mConvolve; - private ScriptIntrinsicColorMatrix mMatrix; - - private Allocation mScratchPixelsAllocation1; - private ScriptGroup mGroup; - - private int mWidth; - private int mHeight; - private boolean mUseNative; - - - public GroupTest(boolean useNative) { - mUseNative = useNative; - } - - public void createTest(android.content.res.Resources res) { - mWidth = mInPixelsAllocation.getType().getX(); - mHeight = mInPixelsAllocation.getType().getY(); - - mConvolve = ScriptIntrinsicConvolve3x3.create(mRS, Element.U8_4(mRS)); - mMatrix = ScriptIntrinsicColorMatrix.create(mRS, Element.U8_4(mRS)); - - float f[] = new float[9]; - f[0] = 0.f; f[1] = -1.f; f[2] = 0.f; - f[3] = -1.f; f[4] = 5.f; f[5] = -1.f; - f[6] = 0.f; f[7] = -1.f; f[8] = 0.f; - mConvolve.setCoefficients(f); - - Matrix4f m = new Matrix4f(); - m.set(1, 0, 0.2f); - m.set(1, 1, 0.9f); - m.set(1, 2, 0.2f); - mMatrix.setColorMatrix(m); - - Type.Builder tb = new Type.Builder(mRS, Element.U8_4(mRS)); - tb.setX(mWidth); - tb.setY(mHeight); - Type connect = tb.create(); - - if (mUseNative) { - ScriptGroup.Builder b = new ScriptGroup.Builder(mRS); - b.addKernel(mConvolve.getKernelID()); - b.addKernel(mMatrix.getKernelID()); - b.addConnection(connect, mConvolve.getKernelID(), mMatrix.getKernelID()); - mGroup = b.create(); - } else { - mScratchPixelsAllocation1 = Allocation.createTyped(mRS, connect); - } - } - - public void runTest() { - mConvolve.setInput(mInPixelsAllocation); - if (mUseNative) { - mGroup.setOutput(mMatrix.getKernelID(), mOutPixelsAllocation); - mGroup.execute(); - } else { - mConvolve.forEach(mScratchPixelsAllocation1); - mMatrix.forEach(mScratchPixelsAllocation1, mOutPixelsAllocation); - } - } - -} diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java deleted file mode 100644 index ebe4d73..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java +++ /dev/null @@ -1,419 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image; - -import android.app.Activity; -import android.os.Bundle; -import android.graphics.BitmapFactory; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.view.SurfaceView; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.ImageView; -import android.widget.SeekBar; -import android.widget.Spinner; -import android.widget.TextView; -import android.view.View; -import android.util.Log; - -import android.os.Environment; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; - -public class ImageProcessingActivity extends Activity - implements SeekBar.OnSeekBarChangeListener { - private final String TAG = "Img"; - public final String RESULT_FILE = "image_processing_result.csv"; - - /** - * Define enum type for test names - */ - public enum TestName { - LEVELS_VEC3_RELAXED ("Levels Vec3 Relaxed"), - LEVELS_VEC4_RELAXED ("Levels Vec4 Relaxed"), - LEVELS_VEC3_FULL ("Levels Vec3 Full"), - LEVELS_VEC4_FULL ("Levels Vec4 Full"), - BLUR_RADIUS_25 ("Blur radius 25"), - INTRINSIC_BLUE_RADIUS_25 ("Intrinsic Blur radius 25"), - GREYSCALE ("Greyscale"), - GRAIN ("Grain"), - FISHEYE_FULL ("Fisheye Full"), - FISHEYE_RELAXED ("Fisheye Relaxed"), - FISHEYE_APPROXIMATE_FULL ("Fisheye Approximate Full"), - FISHEYE_APPROXIMATE_RELAXED ("Fisheye Approximate Relaxed"), - VIGNETTE_FULL ("Vignette Full"), - VIGNETTE_RELAXED ("Vignette Relaxed"), - VIGNETTE_APPROXIMATE_FULL ("Vignette Approximate Full"), - VIGNETTE_APPROXIMATE_RELAXED ("Vignette Approximate Relaxed"), - GROUP_TEST_EMULATED ("Group Test (emulated)"), - GROUP_TEST_NATIVE ("Group Test (native)"), - CONVOLVE_3X3 ("Convolve 3x3"), - INTRINSICS_CONVOLVE_3X3 ("Intrinsics Convolve 3x3"), - COLOR_MATRIX ("ColorMatrix"), - INTRINSICS_COLOR_MATRIX ("Intrinsics ColorMatrix"), - INTRINSICS_COLOR_MATRIX_GREY ("Intrinsics ColorMatrix Grey"), - COPY ("Copy"), - CROSS_PROCESS_USING_LUT ("CrossProcess (using LUT)"), - CONVOLVE_5X5 ("Convolve 5x5"), - INTRINSICS_CONVOLVE_5X5 ("Intrinsics Convolve 5x5"), - MANDELBROT ("Mandelbrot"), - INTRINSICS_BLEND ("Intrinsics Blend"); - - private final String name; - - private TestName(String s) { - name = s; - } - - // return quoted string as displayed test name - public String toString() { - return name; - } - } - - Bitmap mBitmapIn; - Bitmap mBitmapIn2; - Bitmap mBitmapOut; - - private Spinner mSpinner; - private SeekBar mBar1; - private SeekBar mBar2; - private SeekBar mBar3; - private SeekBar mBar4; - private SeekBar mBar5; - private TextView mText1; - private TextView mText2; - private TextView mText3; - private TextView mText4; - private TextView mText5; - - private float mSaturation = 1.0f; - - private TextView mBenchmarkResult; - private Spinner mTestSpinner; - - private SurfaceView mSurfaceView; - private ImageView mDisplayView; - - private boolean mDoingBenchmark; - - private TestBase mTest; - - public void updateDisplay() { - mTest.updateBitmap(mBitmapOut); - mDisplayView.invalidate(); - } - - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - if (fromUser) { - - if (seekBar == mBar1) { - mTest.onBar1Changed(progress); - } else if (seekBar == mBar2) { - mTest.onBar2Changed(progress); - } else if (seekBar == mBar3) { - mTest.onBar3Changed(progress); - } else if (seekBar == mBar4) { - mTest.onBar4Changed(progress); - } else if (seekBar == mBar5) { - mTest.onBar5Changed(progress); - } - - mTest.runTest(); - updateDisplay(); - } - } - - public void onStartTrackingTouch(SeekBar seekBar) { - } - - public void onStopTrackingTouch(SeekBar seekBar) { - } - - void setupBars() { - mSpinner.setVisibility(View.VISIBLE); - mTest.onSpinner1Setup(mSpinner); - - mBar1.setVisibility(View.VISIBLE); - mText1.setVisibility(View.VISIBLE); - mTest.onBar1Setup(mBar1, mText1); - - mBar2.setVisibility(View.VISIBLE); - mText2.setVisibility(View.VISIBLE); - mTest.onBar2Setup(mBar2, mText2); - - mBar3.setVisibility(View.VISIBLE); - mText3.setVisibility(View.VISIBLE); - mTest.onBar3Setup(mBar3, mText3); - - mBar4.setVisibility(View.VISIBLE); - mText4.setVisibility(View.VISIBLE); - mTest.onBar4Setup(mBar4, mText4); - - mBar5.setVisibility(View.VISIBLE); - mText5.setVisibility(View.VISIBLE); - mTest.onBar5Setup(mBar5, mText5); - } - - - void changeTest(TestName testName) { - if (mTest != null) { - mTest.destroy(); - } - switch(testName) { - case LEVELS_VEC3_RELAXED: - mTest = new LevelsV4(false, false); - break; - case LEVELS_VEC4_RELAXED: - mTest = new LevelsV4(false, true); - break; - case LEVELS_VEC3_FULL: - mTest = new LevelsV4(true, false); - break; - case LEVELS_VEC4_FULL: - mTest = new LevelsV4(true, true); - break; - case BLUR_RADIUS_25: - mTest = new Blur25(false); - break; - case INTRINSIC_BLUE_RADIUS_25: - mTest = new Blur25(true); - break; - case GREYSCALE: - mTest = new Greyscale(); - break; - case GRAIN: - mTest = new Grain(); - break; - case FISHEYE_FULL: - mTest = new Fisheye(false, false); - break; - case FISHEYE_RELAXED: - mTest = new Fisheye(false, true); - break; - case FISHEYE_APPROXIMATE_FULL: - mTest = new Fisheye(true, false); - break; - case FISHEYE_APPROXIMATE_RELAXED: - mTest = new Fisheye(true, true); - break; - case VIGNETTE_FULL: - mTest = new Vignette(false, false); - break; - case VIGNETTE_RELAXED: - mTest = new Vignette(false, true); - break; - case VIGNETTE_APPROXIMATE_FULL: - mTest = new Vignette(true, false); - break; - case VIGNETTE_APPROXIMATE_RELAXED: - mTest = new Vignette(true, true); - break; - case GROUP_TEST_EMULATED: - mTest = new GroupTest(false); - break; - case GROUP_TEST_NATIVE: - mTest = new GroupTest(true); - break; - case CONVOLVE_3X3: - mTest = new Convolve3x3(false); - break; - case INTRINSICS_CONVOLVE_3X3: - mTest = new Convolve3x3(true); - break; - case COLOR_MATRIX: - mTest = new ColorMatrix(false, false); - break; - case INTRINSICS_COLOR_MATRIX: - mTest = new ColorMatrix(true, false); - break; - case INTRINSICS_COLOR_MATRIX_GREY: - mTest = new ColorMatrix(true, true); - break; - case COPY: - mTest = new Copy(); - break; - case CROSS_PROCESS_USING_LUT: - mTest = new CrossProcess(); - break; - case CONVOLVE_5X5: - mTest = new Convolve5x5(false); - break; - case INTRINSICS_CONVOLVE_5X5: - mTest = new Convolve5x5(true); - break; - case MANDELBROT: - mTest = new Mandelbrot(); - break; - case INTRINSICS_BLEND: - mTest = new Blend(); - break; - } - - mTest.createBaseTest(this, mBitmapIn, mBitmapIn2); - setupBars(); - - mTest.runTest(); - updateDisplay(); - mBenchmarkResult.setText("Result: not run"); - } - - void setupTests() { - mTestSpinner.setAdapter(new ArrayAdapter<TestName>( - this, R.layout.spinner_layout, TestName.values())); - } - - private AdapterView.OnItemSelectedListener mTestSpinnerListener = - new AdapterView.OnItemSelectedListener() { - public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { - changeTest(TestName.values()[pos]); - } - - public void onNothingSelected(AdapterView parent) { - - } - }; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.main); - - mBitmapIn = loadBitmap(R.drawable.img1600x1067); - mBitmapIn2 = loadBitmap(R.drawable.img1600x1067b); - mBitmapOut = loadBitmap(R.drawable.img1600x1067); - - mSurfaceView = (SurfaceView) findViewById(R.id.surface); - - mDisplayView = (ImageView) findViewById(R.id.display); - mDisplayView.setImageBitmap(mBitmapOut); - - mSpinner = (Spinner) findViewById(R.id.spinner1); - - mBar1 = (SeekBar) findViewById(R.id.slider1); - mBar2 = (SeekBar) findViewById(R.id.slider2); - mBar3 = (SeekBar) findViewById(R.id.slider3); - mBar4 = (SeekBar) findViewById(R.id.slider4); - mBar5 = (SeekBar) findViewById(R.id.slider5); - - mBar1.setOnSeekBarChangeListener(this); - mBar2.setOnSeekBarChangeListener(this); - mBar3.setOnSeekBarChangeListener(this); - mBar4.setOnSeekBarChangeListener(this); - mBar5.setOnSeekBarChangeListener(this); - - mText1 = (TextView) findViewById(R.id.slider1Text); - mText2 = (TextView) findViewById(R.id.slider2Text); - mText3 = (TextView) findViewById(R.id.slider3Text); - mText4 = (TextView) findViewById(R.id.slider4Text); - mText5 = (TextView) findViewById(R.id.slider5Text); - - mTestSpinner = (Spinner) findViewById(R.id.filterselection); - mTestSpinner.setOnItemSelectedListener(mTestSpinnerListener); - - mBenchmarkResult = (TextView) findViewById(R.id.benchmarkText); - mBenchmarkResult.setText("Result: not run"); - - setupTests(); - changeTest(TestName.LEVELS_VEC3_RELAXED); - } - - - private Bitmap loadBitmap(int resource) { - final BitmapFactory.Options options = new BitmapFactory.Options(); - options.inPreferredConfig = Bitmap.Config.ARGB_8888; - return copyBitmap(BitmapFactory.decodeResource(getResources(), resource, options)); - } - - private static Bitmap copyBitmap(Bitmap source) { - Bitmap b = Bitmap.createBitmap(source.getWidth(), source.getHeight(), source.getConfig()); - Canvas c = new Canvas(b); - c.drawBitmap(source, 0, 0, null); - source.recycle(); - return b; - } - - // button hook - public void benchmark(View v) { - float t = getBenchmark(); - //long javaTime = javaFilter(); - //mBenchmarkResult.setText("RS: " + t + " ms Java: " + javaTime + " ms"); - mBenchmarkResult.setText("Result: " + t + " ms"); - Log.v(TAG, "getBenchmark: Renderscript frame time core ms " + t); - } - - public void benchmark_all(View v) { - // write result into a file - File externalStorage = Environment.getExternalStorageDirectory(); - if (!externalStorage.canWrite()) { - Log.v(TAG, "sdcard is not writable"); - return; - } - File resultFile = new File(externalStorage, RESULT_FILE); - resultFile.setWritable(true, false); - try { - BufferedWriter rsWriter = new BufferedWriter(new FileWriter(resultFile)); - Log.v(TAG, "Saved results in: " + resultFile.getAbsolutePath()); - for (TestName tn: TestName.values()) { - changeTest(tn); - float t = getBenchmark(); - String s = new String("" + tn.toString() + ", " + t); - rsWriter.write(s + "\n"); - Log.v(TAG, "Test " + s + "ms\n"); - } - rsWriter.close(); - } catch (IOException e) { - Log.v(TAG, "Unable to write result file " + e.getMessage()); - } - changeTest(TestName.LEVELS_VEC3_RELAXED); - } - - // For benchmark test - public float getBenchmark() { - mDoingBenchmark = true; - - mTest.setupBenchmark(); - long result = 0; - - //Log.v(TAG, "Warming"); - long t = java.lang.System.currentTimeMillis() + 250; - do { - mTest.runTest(); - mTest.finish(); - } while (t > java.lang.System.currentTimeMillis()); - - //Log.v(TAG, "Benchmarking"); - int ct = 0; - t = java.lang.System.currentTimeMillis(); - do { - mTest.runTest(); - mTest.finish(); - ct++; - } while ((t+1000) > java.lang.System.currentTimeMillis()); - t = java.lang.System.currentTimeMillis() - t; - float ft = (float)t; - ft /= ct; - - mTest.exitBenchmark(); - mDoingBenchmark = false; - - return ft; - } -} diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingTest.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingTest.java deleted file mode 100644 index 1b38e1f..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingTest.java +++ /dev/null @@ -1,316 +0,0 @@ -/* - * 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.android.rs.image; - -import com.android.rs.image.ImageProcessingTestRunner; - -import android.os.Bundle; -import com.android.rs.image.ImageProcessingActivity.TestName; - -import android.test.ActivityInstrumentationTestCase2; -import android.test.suitebuilder.annotation.LargeTest; -import android.util.Log; - -/** - * ImageProcessing benchmark test. - * To run the test, please use command - * - * adb shell am instrument -e iteration <n> -w com.android.rs.image/.ImageProcessingTestRunner - * - */ -public class ImageProcessingTest extends ActivityInstrumentationTestCase2<ImageProcessingActivity> { - private final String TAG = "ImageProcessingTest"; - private final String TEST_NAME = "Testname"; - private final String ITERATIONS = "Iterations"; - private final String BENCHMARK = "Benchmark"; - private static int INSTRUMENTATION_IN_PROGRESS = 2; - private int mIteration; - private ImageProcessingActivity mActivity; - - public ImageProcessingTest() { - super(ImageProcessingActivity.class); - } - - @Override - public void setUp() throws Exception { - super.setUp(); - setActivityInitialTouchMode(false); - mActivity = getActivity(); - ImageProcessingTestRunner mRunner = (ImageProcessingTestRunner) getInstrumentation(); - mIteration = mRunner.mIteration; - assertTrue("please enter a valid iteration value", mIteration > 0); - } - - @Override - public void tearDown() throws Exception { - super.tearDown(); - } - - class TestAction implements Runnable { - TestName mTestName; - float mResult; - public TestAction(TestName testName) { - mTestName = testName; - } - public void run() { - mActivity.changeTest(mTestName); - mResult = mActivity.getBenchmark(); - Log.v(TAG, "Benchmark for test \"" + mTestName.toString() + "\" is: " + mResult); - synchronized(this) { - this.notify(); - } - } - public float getBenchmark() { - return mResult; - } - } - - // Set the benchmark thread to run on ui thread - // Synchronized the thread such that the test will wait for the benchmark thread to finish - public void runOnUiThread(Runnable action) { - synchronized(action) { - mActivity.runOnUiThread(action); - try { - action.wait(); - } catch (InterruptedException e) { - Log.v(TAG, "waiting for action running on UI thread is interrupted: " + - e.toString()); - } - } - } - - public void runTest(TestAction ta, String testName) { - float sum = 0; - for (int i = 0; i < mIteration; i++) { - runOnUiThread(ta); - float bmValue = ta.getBenchmark(); - Log.v(TAG, "results for iteration " + i + " is " + bmValue); - sum += bmValue; - } - float avgResult = sum/mIteration; - - // post result to INSTRUMENTATION_STATUS - Bundle results = new Bundle(); - results.putString(TEST_NAME, testName); - results.putInt(ITERATIONS, mIteration); - results.putFloat(BENCHMARK, avgResult); - getInstrumentation().sendStatus(INSTRUMENTATION_IN_PROGRESS, results); - } - - // Test case 0: Levels Vec3 Relaxed - @LargeTest - public void testLevelsVec3Relaxed() { - TestAction ta = new TestAction(TestName.LEVELS_VEC3_RELAXED); - runTest(ta, TestName.LEVELS_VEC3_RELAXED.name()); - } - - // Test case 1: Levels Vec4 Relaxed - @LargeTest - public void testLevelsVec4Relaxed() { - TestAction ta = new TestAction(TestName.LEVELS_VEC4_RELAXED); - runTest(ta, TestName.LEVELS_VEC4_RELAXED.name()); - } - - // Test case 2: Levels Vec3 Full - @LargeTest - public void testLevelsVec3Full() { - TestAction ta = new TestAction(TestName.LEVELS_VEC3_FULL); - runTest(ta, TestName.LEVELS_VEC3_FULL.name()); - } - - // Test case 3: Levels Vec4 Full - @LargeTest - public void testLevelsVec4Full() { - TestAction ta = new TestAction(TestName.LEVELS_VEC4_FULL); - runTest(ta, TestName.LEVELS_VEC4_FULL.name()); - } - - // Test case 4: Blur Radius 25 - @LargeTest - public void testBlurRadius25() { - TestAction ta = new TestAction(TestName.BLUR_RADIUS_25); - runTest(ta, TestName.BLUR_RADIUS_25.name()); - } - - // Test case 5: Intrinsic Blur Radius 25 - @LargeTest - public void testIntrinsicBlurRadius25() { - TestAction ta = new TestAction(TestName.INTRINSIC_BLUE_RADIUS_25); - runTest(ta, TestName.INTRINSIC_BLUE_RADIUS_25.name()); - } - - // Test case 6: Greyscale - @LargeTest - public void testGreyscale() { - TestAction ta = new TestAction(TestName.GREYSCALE); - runTest(ta, TestName.GREYSCALE.name()); - } - - // Test case 7: Grain - @LargeTest - public void testGrain() { - TestAction ta = new TestAction(TestName.GRAIN); - runTest(ta, TestName.GRAIN.name()); - } - - // Test case 8: Fisheye Full - @LargeTest - public void testFisheyeFull() { - TestAction ta = new TestAction(TestName.FISHEYE_FULL); - runTest(ta, TestName.FISHEYE_FULL.name()); - } - - // Test case 9: Fisheye Relaxed - @LargeTest - public void testFishEyeRelaxed() { - TestAction ta = new TestAction(TestName.FISHEYE_RELAXED); - runTest(ta, TestName.FISHEYE_RELAXED.name()); - } - - // Test case 10: Fisheye Approximate Full - @LargeTest - public void testFisheyeApproximateFull() { - TestAction ta = new TestAction(TestName.FISHEYE_APPROXIMATE_FULL); - runTest(ta, TestName.FISHEYE_APPROXIMATE_FULL.name()); - } - - // Test case 11: Fisheye Approximate Relaxed - @LargeTest - public void testFisheyeApproximateRelaxed() { - TestAction ta = new TestAction(TestName.FISHEYE_APPROXIMATE_RELAXED); - runTest(ta, TestName.FISHEYE_APPROXIMATE_RELAXED.name()); - } - - // Test case 12: Vignette Full - @LargeTest - public void testVignetteFull() { - TestAction ta = new TestAction(TestName.VIGNETTE_FULL); - runTest(ta, TestName.VIGNETTE_FULL.name()); - } - - // Test case 13: Vignette Relaxed - @LargeTest - public void testVignetteRelaxed() { - TestAction ta = new TestAction(TestName.VIGNETTE_RELAXED); - runTest(ta, TestName.VIGNETTE_RELAXED.name()); - } - - // Test case 14: Vignette Approximate Full - @LargeTest - public void testVignetteApproximateFull() { - TestAction ta = new TestAction(TestName.VIGNETTE_APPROXIMATE_FULL); - runTest(ta, TestName.VIGNETTE_APPROXIMATE_FULL.name()); - } - - // Test case 15: Vignette Approximate Relaxed - @LargeTest - public void testVignetteApproximateRelaxed() { - TestAction ta = new TestAction(TestName.VIGNETTE_APPROXIMATE_RELAXED); - runTest(ta, TestName.VIGNETTE_APPROXIMATE_RELAXED.name()); - } - - // Test case 16: Group Test (emulated) - @LargeTest - public void testGroupTestEmulated() { - TestAction ta = new TestAction(TestName.GROUP_TEST_EMULATED); - runTest(ta, TestName.GROUP_TEST_EMULATED.name()); - } - - // Test case 17: Group Test (native) - @LargeTest - public void testGroupTestNative() { - TestAction ta = new TestAction(TestName.GROUP_TEST_NATIVE); - runTest(ta, TestName.GROUP_TEST_NATIVE.name()); - } - - // Test case 18: Convolve 3x3 - @LargeTest - public void testConvolve3x3() { - TestAction ta = new TestAction(TestName.CONVOLVE_3X3); - runTest(ta, TestName.CONVOLVE_3X3.name()); - } - - // Test case 19: Intrinsics Convolve 3x3 - @LargeTest - public void testIntrinsicsConvolve3x3() { - TestAction ta = new TestAction(TestName.INTRINSICS_CONVOLVE_3X3); - runTest(ta, TestName.INTRINSICS_CONVOLVE_3X3.name()); - } - - // Test case 20: ColorMatrix - @LargeTest - public void testColorMatrix() { - TestAction ta = new TestAction(TestName.COLOR_MATRIX); - runTest(ta, TestName.COLOR_MATRIX.name()); - } - - // Test case 21: Intrinsics ColorMatrix - @LargeTest - public void testIntrinsicsColorMatrix() { - TestAction ta = new TestAction(TestName.INTRINSICS_COLOR_MATRIX); - runTest(ta, TestName.INTRINSICS_COLOR_MATRIX.name()); - } - - // Test case 22: Intrinsics ColorMatrix Grey - @LargeTest - public void testIntrinsicsColorMatrixGrey() { - TestAction ta = new TestAction(TestName.INTRINSICS_COLOR_MATRIX_GREY); - runTest(ta, TestName.INTRINSICS_COLOR_MATRIX_GREY.name()); - } - - // Test case 23: Copy - @LargeTest - public void testCopy() { - TestAction ta = new TestAction(TestName.COPY); - runTest(ta, TestName.COPY.name()); - } - - // Test case 24: CrossProcess (using LUT) - @LargeTest - public void testCrossProcessUsingLUT() { - TestAction ta = new TestAction(TestName.CROSS_PROCESS_USING_LUT); - runTest(ta, TestName.CROSS_PROCESS_USING_LUT.name()); - } - - // Test case 25: Convolve 5x5 - @LargeTest - public void testConvolve5x5() { - TestAction ta = new TestAction(TestName.CONVOLVE_5X5); - runTest(ta, TestName.CONVOLVE_5X5.name()); - } - - // Test case 26: Intrinsics Convolve 5x5 - @LargeTest - public void testIntrinsicsConvolve5x5() { - TestAction ta = new TestAction(TestName.INTRINSICS_CONVOLVE_5X5); - runTest(ta, TestName.INTRINSICS_CONVOLVE_5X5.name()); - } - - // Test case 27: Mandelbrot - @LargeTest - public void testMandelbrot() { - TestAction ta = new TestAction(TestName.MANDELBROT); - runTest(ta, TestName.MANDELBROT.name()); - } - - // Test case 28 - @LargeTest - public void testIntrinsicsBlend() { - TestAction ta = new TestAction(TestName.INTRINSICS_BLEND); - runTest(ta, TestName.INTRINSICS_BLEND.name()); - } -} diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingTestRunner.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingTestRunner.java deleted file mode 100644 index 36fbb3e..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingTestRunner.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * 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.android.rs.image; - -import com.android.rs.image.ImageProcessingTest; -import android.os.Bundle; -import android.test.InstrumentationTestRunner; -import android.test.InstrumentationTestSuite; -import junit.framework.TestSuite; - -/** - * Run the ImageProcessing benchmark test - * adb shell am instrument -e iteration <n> -w com.android.rs.image/.ImageProcessingTestRunner - * - */ -public class ImageProcessingTestRunner extends InstrumentationTestRunner { - public int mIteration = 5; - - @Override - public TestSuite getAllTests() { - TestSuite suite = new InstrumentationTestSuite(this); - suite.addTestSuite(ImageProcessingTest.class); - return suite; - } - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - String strIteration = (String) icicle.get("iteration"); - if (strIteration != null) { - mIteration = Integer.parseInt(strIteration); - } - } -} diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/LevelsV4.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/LevelsV4.java deleted file mode 100644 index 9eb5647..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/LevelsV4.java +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image; - -import java.lang.Math; - -import android.renderscript.Allocation; -import android.renderscript.Element; -import android.renderscript.RenderScript; -import android.renderscript.Matrix3f; -import android.renderscript.Script; -import android.renderscript.ScriptC; -import android.renderscript.Type; -import android.util.Log; -import android.widget.SeekBar; -import android.widget.TextView; - - -public class LevelsV4 extends TestBase { - private ScriptC_levels_relaxed mScriptR; - private ScriptC_levels_full mScriptF; - private float mInBlack = 0.0f; - private float mOutBlack = 0.0f; - private float mInWhite = 255.0f; - private float mOutWhite = 255.0f; - private float mSaturation = 1.0f; - - Matrix3f satMatrix = new Matrix3f(); - float mInWMinInB; - float mOutWMinOutB; - float mOverInWMinInB; - - boolean mUseFull; - boolean mUseV4; - - LevelsV4(boolean useFull, boolean useV4) { - mUseFull = useFull; - mUseV4 = useV4; - } - - - private void setLevels() { - mInWMinInB = mInWhite - mInBlack; - mOutWMinOutB = mOutWhite - mOutBlack; - mOverInWMinInB = 1.f / mInWMinInB; - - mScriptR.set_inBlack(mInBlack); - mScriptR.set_outBlack(mOutBlack); - mScriptR.set_inWMinInB(mInWMinInB); - mScriptR.set_outWMinOutB(mOutWMinOutB); - mScriptR.set_overInWMinInB(mOverInWMinInB); - mScriptF.set_inBlack(mInBlack); - mScriptF.set_outBlack(mOutBlack); - mScriptF.set_inWMinInB(mInWMinInB); - mScriptF.set_outWMinOutB(mOutWMinOutB); - mScriptF.set_overInWMinInB(mOverInWMinInB); - } - - private void setSaturation() { - float rWeight = 0.299f; - float gWeight = 0.587f; - float bWeight = 0.114f; - float oneMinusS = 1.0f - mSaturation; - - satMatrix.set(0, 0, oneMinusS * rWeight + mSaturation); - satMatrix.set(0, 1, oneMinusS * rWeight); - satMatrix.set(0, 2, oneMinusS * rWeight); - satMatrix.set(1, 0, oneMinusS * gWeight); - satMatrix.set(1, 1, oneMinusS * gWeight + mSaturation); - satMatrix.set(1, 2, oneMinusS * gWeight); - satMatrix.set(2, 0, oneMinusS * bWeight); - satMatrix.set(2, 1, oneMinusS * bWeight); - satMatrix.set(2, 2, oneMinusS * bWeight + mSaturation); - mScriptR.set_colorMat(satMatrix); - mScriptF.set_colorMat(satMatrix); - } - - public boolean onBar1Setup(SeekBar b, TextView t) { - b.setProgress(50); - t.setText("Saturation"); - return true; - } - public boolean onBar2Setup(SeekBar b, TextView t) { - b.setMax(128); - b.setProgress(0); - t.setText("In Black"); - return true; - } - public boolean onBar3Setup(SeekBar b, TextView t) { - b.setMax(128); - b.setProgress(0); - t.setText("Out Black"); - return true; - } - public boolean onBar4Setup(SeekBar b, TextView t) { - b.setMax(128); - b.setProgress(128); - t.setText("Out White"); - return true; - } - public boolean onBar5Setup(SeekBar b, TextView t) { - b.setMax(128); - b.setProgress(128); - t.setText("Out White"); - return true; - } - - public void onBar1Changed(int progress) { - mSaturation = (float)progress / 50.0f; - setSaturation(); - } - public void onBar2Changed(int progress) { - mInBlack = (float)progress; - setLevels(); - } - public void onBar3Changed(int progress) { - mOutBlack = (float)progress; - setLevels(); - } - public void onBar4Changed(int progress) { - mInWhite = (float)progress + 127.0f; - setLevels(); - } - public void onBar5Changed(int progress) { - mOutWhite = (float)progress + 127.0f; - setLevels(); - } - - public void createTest(android.content.res.Resources res) { - mScriptR = new ScriptC_levels_relaxed(mRS, res, R.raw.levels_relaxed); - mScriptF = new ScriptC_levels_full(mRS, res, R.raw.levels_full); - setSaturation(); - setLevels(); - } - - public void runTest() { - if (mUseFull) { - if (mUseV4) { - mScriptF.forEach_root4(mInPixelsAllocation, mOutPixelsAllocation); - } else { - mScriptF.forEach_root(mInPixelsAllocation, mOutPixelsAllocation); - } - } else { - if (mUseV4) { - mScriptR.forEach_root4(mInPixelsAllocation, mOutPixelsAllocation); - } else { - mScriptR.forEach_root(mInPixelsAllocation, mOutPixelsAllocation); - } - } - } - -} - diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Mandelbrot.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Mandelbrot.java deleted file mode 100644 index 20036e6..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Mandelbrot.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image; - -import java.lang.Math; - -import android.renderscript.Allocation; -import android.renderscript.Element; -import android.renderscript.RenderScript; -import android.renderscript.Script; -import android.renderscript.ScriptC; -import android.renderscript.Type; -import android.util.Log; -import android.widget.SeekBar; -import android.widget.TextView; - -public class Mandelbrot extends TestBase { - private ScriptC_mandelbrot mScript; - - public boolean onBar1Setup(SeekBar b, TextView t) { - t.setText("Iterations"); - b.setProgress(0); - return true; - } - - public void onBar1Changed(int progress) { - int iters = progress * 3 + 50; - mScript.set_gMaxIteration(iters); - } - - public boolean onBar2Setup(SeekBar b, TextView t) { - t.setText("Lower Bound: X"); - b.setProgress(0); - return true; - } - - public void onBar2Changed(int progress) { - float scaleFactor = mScript.get_scaleFactor(); - // allow viewport to be moved by 2x scale factor - float lowerBoundX = -2.f + ((progress / scaleFactor) / 50.f); - mScript.set_lowerBoundX(lowerBoundX); - } - - public boolean onBar3Setup(SeekBar b, TextView t) { - t.setText("Lower Bound: Y"); - b.setProgress(0); - return true; - } - - public void onBar3Changed(int progress) { - float scaleFactor = mScript.get_scaleFactor(); - // allow viewport to be moved by 2x scale factor - float lowerBoundY = -2.f + ((progress / scaleFactor) / 50.f); - mScript.set_lowerBoundY(lowerBoundY); - } - - public boolean onBar4Setup(SeekBar b, TextView t) { - t.setText("Scale Factor"); - b.setProgress(0); - return true; - } - - public void onBar4Changed(int progress) { - float scaleFactor = 4.f - (3.96f * (progress / 100.f)); - mScript.set_scaleFactor(scaleFactor); - } - - public void createTest(android.content.res.Resources res) { - int width = mOutPixelsAllocation.getType().getX(); - int height = mOutPixelsAllocation.getType().getY(); - - mScript = new ScriptC_mandelbrot(mRS, res, R.raw.mandelbrot); - mScript.set_gDimX(width); - mScript.set_gDimY(height); - mScript.set_gMaxIteration(50); - } - - public void runTest() { - mScript.forEach_root(mOutPixelsAllocation); - mRS.finish(); - } - -} - diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/TestBase.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/TestBase.java deleted file mode 100644 index bb3f2f3..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/TestBase.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image; - -import android.app.Activity; -import android.content.Context; -import android.os.Bundle; -import android.graphics.BitmapFactory; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.renderscript.ScriptC; -import android.renderscript.RenderScript; -import android.renderscript.Type; -import android.renderscript.Allocation; -import android.renderscript.Element; -import android.renderscript.Script; -import android.view.SurfaceView; -import android.view.SurfaceHolder; -import android.widget.ImageView; -import android.widget.SeekBar; -import android.widget.TextView; -import android.view.View; -import android.util.Log; -import java.lang.Math; -import android.widget.Spinner; - -public class TestBase { - protected final String TAG = "Img"; - - protected RenderScript mRS; - protected Allocation mInPixelsAllocation; - protected Allocation mInPixelsAllocation2; - protected Allocation mOutPixelsAllocation; - - protected ImageProcessingActivity act; - - // Override to use UI elements - public void onBar1Changed(int progress) { - } - public void onBar2Changed(int progress) { - } - public void onBar3Changed(int progress) { - } - public void onBar4Changed(int progress) { - } - public void onBar5Changed(int progress) { - } - - // Override to use UI elements - // Unused bars will be hidden. - public boolean onBar1Setup(SeekBar b, TextView t) { - b.setVisibility(View.INVISIBLE); - t.setVisibility(View.INVISIBLE); - return false; - } - public boolean onBar2Setup(SeekBar b, TextView t) { - b.setVisibility(View.INVISIBLE); - t.setVisibility(View.INVISIBLE); - return false; - } - public boolean onBar3Setup(SeekBar b, TextView t) { - b.setVisibility(View.INVISIBLE); - t.setVisibility(View.INVISIBLE); - return false; - } - public boolean onBar4Setup(SeekBar b, TextView t) { - b.setVisibility(View.INVISIBLE); - t.setVisibility(View.INVISIBLE); - return false; - } - public boolean onBar5Setup(SeekBar b, TextView t) { - b.setVisibility(View.INVISIBLE); - t.setVisibility(View.INVISIBLE); - return false; - } - - public boolean onSpinner1Setup(Spinner s) { - s.setVisibility(View.INVISIBLE); - return false; - } - - public final void createBaseTest(ImageProcessingActivity ipact, Bitmap b, Bitmap b2) { - act = ipact; - mRS = RenderScript.create(act); - mInPixelsAllocation = Allocation.createFromBitmap(mRS, b, - Allocation.MipmapControl.MIPMAP_NONE, - Allocation.USAGE_SCRIPT); - mInPixelsAllocation2 = Allocation.createFromBitmap(mRS, b2, - Allocation.MipmapControl.MIPMAP_NONE, - Allocation.USAGE_SCRIPT); - mOutPixelsAllocation = Allocation.createFromBitmap(mRS, b, - Allocation.MipmapControl.MIPMAP_NONE, - Allocation.USAGE_SCRIPT); - createTest(act.getResources()); - } - - // Must override - public void createTest(android.content.res.Resources res) { - android.util.Log.e("img", "implement createTest"); - } - - // Must override - public void runTest() { - } - - public void finish() { - mRS.finish(); - } - - public void destroy() { - mRS.destroy(); - mRS = null; - } - - public void updateBitmap(Bitmap b) { - mOutPixelsAllocation.copyTo(b); - } - - // Override to configure specific benchmark config. - public void setupBenchmark() { - } - - // Override to reset after benchmark. - public void exitBenchmark() { - } -} diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Vignette.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Vignette.java deleted file mode 100644 index 18d1103..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Vignette.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image; - -import android.renderscript.Allocation; -import android.renderscript.Element; -import android.renderscript.Sampler; -import android.renderscript.Type; -import android.widget.SeekBar; -import android.widget.TextView; - -public class Vignette extends TestBase { - private ScriptC_vignette_full mScript_full = null; - private ScriptC_vignette_relaxed mScript_relaxed = null; - private ScriptC_vignette_approx_full mScript_approx_full = null; - private ScriptC_vignette_approx_relaxed mScript_approx_relaxed = null; - private final boolean approx; - private final boolean relaxed; - private float center_x = 0.5f; - private float center_y = 0.5f; - private float scale = 0.5f; - private float shade = 0.5f; - private float slope = 20.0f; - - public Vignette(boolean approx, boolean relaxed) { - this.approx = approx; - this.relaxed = relaxed; - } - - public boolean onBar1Setup(SeekBar b, TextView t) { - t.setText("Scale"); - b.setMax(100); - b.setProgress(25); - return true; - } - public boolean onBar2Setup(SeekBar b, TextView t) { - t.setText("Shade"); - b.setMax(100); - b.setProgress(50); - return true; - } - public boolean onBar3Setup(SeekBar b, TextView t) { - t.setText("Slope"); - b.setMax(100); - b.setProgress(20); - return true; - } - public boolean onBar4Setup(SeekBar b, TextView t) { - t.setText("Shift center X"); - b.setMax(100); - b.setProgress(50); - return true; - } - public boolean onBar5Setup(SeekBar b, TextView t) { - t.setText("Shift center Y"); - b.setMax(100); - b.setProgress(50); - return true; - } - - public void onBar1Changed(int progress) { - scale = progress / 50.0f; - do_init(); - } - public void onBar2Changed(int progress) { - shade = progress / 100.0f; - do_init(); - } - public void onBar3Changed(int progress) { - slope = (float)progress; - do_init(); - } - public void onBar4Changed(int progress) { - center_x = progress / 100.0f; - do_init(); - } - public void onBar5Changed(int progress) { - center_y = progress / 100.0f; - do_init(); - } - - private void do_init() { - if (approx) { - if (relaxed) - mScript_approx_relaxed.invoke_init_vignette( - mInPixelsAllocation.getType().getX(), - mInPixelsAllocation.getType().getY(), center_x, - center_y, scale, shade, slope); - else - mScript_approx_full.invoke_init_vignette( - mInPixelsAllocation.getType().getX(), - mInPixelsAllocation.getType().getY(), center_x, - center_y, scale, shade, slope); - } else if (relaxed) - mScript_relaxed.invoke_init_vignette( - mInPixelsAllocation.getType().getX(), - mInPixelsAllocation.getType().getY(), center_x, center_y, - scale, shade, slope); - else - mScript_full.invoke_init_vignette( - mInPixelsAllocation.getType().getX(), - mInPixelsAllocation.getType().getY(), center_x, center_y, - scale, shade, slope); - } - - public void createTest(android.content.res.Resources res) { - if (approx) { - if (relaxed) - mScript_approx_relaxed = new ScriptC_vignette_approx_relaxed( - mRS, res, R.raw.vignette_approx_relaxed); - else - mScript_approx_full = new ScriptC_vignette_approx_full( - mRS, res, R.raw.vignette_approx_full); - } else if (relaxed) - mScript_relaxed = new ScriptC_vignette_relaxed(mRS, res, - R.raw.vignette_relaxed); - else - mScript_full = new ScriptC_vignette_full(mRS, res, - R.raw.vignette_full); - do_init(); - } - - public void runTest() { - if (approx) { - if (relaxed) - mScript_approx_relaxed.forEach_root(mInPixelsAllocation, - mOutPixelsAllocation); - else - mScript_approx_full.forEach_root(mInPixelsAllocation, - mOutPixelsAllocation); - } else if (relaxed) - mScript_relaxed.forEach_root(mInPixelsAllocation, - mOutPixelsAllocation); - else - mScript_full.forEach_root(mInPixelsAllocation, - mOutPixelsAllocation); - } - -} - diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/blend.rs b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/blend.rs deleted file mode 100644 index 87b56f7..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/blend.rs +++ /dev/null @@ -1,24 +0,0 @@ -// 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.android.rs.image) - -uchar alpha = 0x0; - -void setImageAlpha(uchar4 *v_out, uint32_t x, uint32_t y) { - v_out->rgba = convert_uchar4((convert_uint4(v_out->rgba) * alpha) >> (uint4)8); - v_out->a = alpha; -} - diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/colormatrix.fs b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/colormatrix.fs deleted file mode 100644 index ba8711b..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/colormatrix.fs +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image) -#pragma rs_fp_relaxed - - -static rs_matrix4x4 Mat; - -void init() { - rsMatrixLoadIdentity(&Mat); -} - -void setMatrix(rs_matrix4x4 m) { - Mat = m; -} - -uchar4 __attribute__((kernel)) root(uchar4 in) { - float4 f = convert_float4(in); - f = rsMatrixMultiply(&Mat, f); - f = clamp(f, 0.f, 255.f); - return convert_uchar4(f); -} - diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/convolve3x3.fs b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/convolve3x3.fs deleted file mode 100644 index 772503f..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/convolve3x3.fs +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image) -#pragma rs_fp_relaxed - -int32_t gWidth; -int32_t gHeight; -rs_allocation gIn; - -float gCoeffs[9]; - -uchar4 __attribute__((kernel)) root(uint32_t x, uint32_t y) { - uint32_t x1 = min((int32_t)x+1, gWidth-1); - uint32_t x2 = max((int32_t)x-1, 0); - uint32_t y1 = min((int32_t)y+1, gHeight-1); - uint32_t y2 = max((int32_t)y-1, 0); - - float4 p00 = convert_float4(rsGetElementAt_uchar4(gIn, x1, y1)); - float4 p01 = convert_float4(rsGetElementAt_uchar4(gIn, x, y1)); - float4 p02 = convert_float4(rsGetElementAt_uchar4(gIn, x2, y1)); - float4 p10 = convert_float4(rsGetElementAt_uchar4(gIn, x1, y)); - float4 p11 = convert_float4(rsGetElementAt_uchar4(gIn, x, y)); - float4 p12 = convert_float4(rsGetElementAt_uchar4(gIn, x2, y)); - float4 p20 = convert_float4(rsGetElementAt_uchar4(gIn, x1, y2)); - float4 p21 = convert_float4(rsGetElementAt_uchar4(gIn, x, y2)); - float4 p22 = convert_float4(rsGetElementAt_uchar4(gIn, x2, y2)); - p00 *= gCoeffs[0]; - p01 *= gCoeffs[1]; - p02 *= gCoeffs[2]; - p10 *= gCoeffs[3]; - p11 *= gCoeffs[4]; - p12 *= gCoeffs[5]; - p20 *= gCoeffs[6]; - p21 *= gCoeffs[7]; - p22 *= gCoeffs[8]; - - p00 += p01; - p02 += p10; - p11 += p12; - p20 += p21; - - p22 += p00; - p02 += p11; - - p20 += p22; - p20 += p02; - - p20 = clamp(p20, 0.f, 255.f); - return convert_uchar4(p20); -} - - diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/convolve5x5.fs b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/convolve5x5.fs deleted file mode 100644 index a916bfb..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/convolve5x5.fs +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image) -#pragma rs_fp_relaxed - -int32_t gWidth; -int32_t gHeight; -rs_allocation gIn; - -float gCoeffs[25]; - -uchar4 __attribute__((kernel)) root(uint32_t x, uint32_t y) { - uint32_t x0 = max((int32_t)x-2, 0); - uint32_t x1 = max((int32_t)x-1, 0); - uint32_t x2 = x; - uint32_t x3 = min((int32_t)x+1, gWidth-1); - uint32_t x4 = min((int32_t)x+2, gWidth-1); - - uint32_t y0 = max((int32_t)y-2, 0); - uint32_t y1 = max((int32_t)y-1, 0); - uint32_t y2 = y; - uint32_t y3 = min((int32_t)y+1, gHeight-1); - uint32_t y4 = min((int32_t)y+2, gHeight-1); - - float4 p0 = convert_float4(rsGetElementAt_uchar4(gIn, x0, y0)) * gCoeffs[0] - + convert_float4(rsGetElementAt_uchar4(gIn, x1, y0)) * gCoeffs[1] - + convert_float4(rsGetElementAt_uchar4(gIn, x2, y0)) * gCoeffs[2] - + convert_float4(rsGetElementAt_uchar4(gIn, x3, y0)) * gCoeffs[3] - + convert_float4(rsGetElementAt_uchar4(gIn, x4, y0)) * gCoeffs[4]; - - float4 p1 = convert_float4(rsGetElementAt_uchar4(gIn, x0, y1)) * gCoeffs[5] - + convert_float4(rsGetElementAt_uchar4(gIn, x1, y1)) * gCoeffs[6] - + convert_float4(rsGetElementAt_uchar4(gIn, x2, y1)) * gCoeffs[7] - + convert_float4(rsGetElementAt_uchar4(gIn, x3, y1)) * gCoeffs[8] - + convert_float4(rsGetElementAt_uchar4(gIn, x4, y1)) * gCoeffs[9]; - - float4 p2 = convert_float4(rsGetElementAt_uchar4(gIn, x0, y2)) * gCoeffs[10] - + convert_float4(rsGetElementAt_uchar4(gIn, x1, y2)) * gCoeffs[11] - + convert_float4(rsGetElementAt_uchar4(gIn, x2, y2)) * gCoeffs[12] - + convert_float4(rsGetElementAt_uchar4(gIn, x3, y2)) * gCoeffs[13] - + convert_float4(rsGetElementAt_uchar4(gIn, x4, y2)) * gCoeffs[14]; - - float4 p3 = convert_float4(rsGetElementAt_uchar4(gIn, x0, y3)) * gCoeffs[15] - + convert_float4(rsGetElementAt_uchar4(gIn, x1, y3)) * gCoeffs[16] - + convert_float4(rsGetElementAt_uchar4(gIn, x2, y3)) * gCoeffs[17] - + convert_float4(rsGetElementAt_uchar4(gIn, x3, y3)) * gCoeffs[18] - + convert_float4(rsGetElementAt_uchar4(gIn, x4, y3)) * gCoeffs[19]; - - float4 p4 = convert_float4(rsGetElementAt_uchar4(gIn, x0, y4)) * gCoeffs[20] - + convert_float4(rsGetElementAt_uchar4(gIn, x1, y4)) * gCoeffs[21] - + convert_float4(rsGetElementAt_uchar4(gIn, x2, y4)) * gCoeffs[22] - + convert_float4(rsGetElementAt_uchar4(gIn, x3, y4)) * gCoeffs[23] - + convert_float4(rsGetElementAt_uchar4(gIn, x4, y4)) * gCoeffs[24]; - - p0 = clamp(p0 + p1 + p2 + p3 + p4, 0.f, 255.f); - return convert_uchar4(p0); -} - - diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/copy.fs b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/copy.fs deleted file mode 100644 index 5f03483..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/copy.fs +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image) - -uchar4 __attribute__((kernel)) root(uchar4 v_in) { - return v_in; -} - - diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/fisheye.rsh b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/fisheye.rsh deleted file mode 100644 index 2eacb7d..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/fisheye.rsh +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (C) 2012 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. - */ - -rs_allocation in_alloc; -rs_sampler sampler; - -static float2 center, neg_center, inv_dimensions, axis_scale; -static float alpha, radius2, factor; - -void init_filter(uint32_t dim_x, uint32_t dim_y, float center_x, float center_y, float k) { - center.x = center_x; - center.y = center_y; - neg_center = -center; - inv_dimensions.x = 1.f / (float)dim_x; - inv_dimensions.y = 1.f / (float)dim_y; - alpha = k * 2.0f + 0.75f; - - axis_scale = (float2)1.f; - if (dim_x > dim_y) - axis_scale.y = (float)dim_y / (float)dim_x; - else - axis_scale.x = (float)dim_x / (float)dim_y; - - const float bound2 = 0.25f * (axis_scale.x*axis_scale.x + axis_scale.y*axis_scale.y); - const float bound = sqrt(bound2); - const float radius = 1.15f * bound; - radius2 = radius*radius; - const float max_radian = M_PI_2 - atan(alpha / bound * sqrt(radius2 - bound2)); - factor = bound / max_radian; -} - -uchar4 __attribute__((kernel)) root(uint32_t x, uint32_t y) { - // Convert x and y to floating point coordinates with center as origin - const float2 inCoord = {(float)x, (float)y}; - const float2 coord = mad(inCoord, inv_dimensions, neg_center); - const float2 scaledCoord = axis_scale * coord; - const float dist2 = scaledCoord.x*scaledCoord.x + scaledCoord.y*scaledCoord.y; - const float inv_dist = rsqrt(dist2); - const float radian = M_PI_2 - atan((alpha * sqrt(radius2 - dist2)) * inv_dist); - const float scalar = radian * factor * inv_dist; - const float2 new_coord = mad(coord, scalar, center); - const float4 fout = rsSample(in_alloc, sampler, new_coord); - return rsPackColorTo8888(fout); -} - diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/fisheye_approx.rsh b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/fisheye_approx.rsh deleted file mode 100644 index fcf0a3d..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/fisheye_approx.rsh +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (C) 2012 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. - */ - -rs_allocation in_alloc; -rs_sampler sampler; - -static float2 center, neg_center, inv_dimensions, axis_scale; -static float alpha, radius2, factor; - -void init_filter(uint32_t dim_x, uint32_t dim_y, float center_x, float center_y, float k) { - center.x = center_x; - center.y = center_y; - neg_center = -center; - inv_dimensions.x = 1.f / (float)dim_x; - inv_dimensions.y = 1.f / (float)dim_y; - alpha = k * 2.0f + 0.75f; - - axis_scale = (float2)1.f; - if (dim_x > dim_y) - axis_scale.y = (float)dim_y / (float)dim_x; - else - axis_scale.x = (float)dim_x / (float)dim_y; - - const float bound2 = 0.25f * (axis_scale.x*axis_scale.x + axis_scale.y*axis_scale.y); - const float bound = sqrt(bound2); - const float radius = 1.15f * bound; - radius2 = radius*radius; - const float max_radian = M_PI_2 - atan(alpha / bound * sqrt(radius2 - bound2)); - factor = bound / max_radian; -} - -uchar4 __attribute__((kernel)) root(uint32_t x, uint32_t y) { - // Convert x and y to floating point coordinates with center as origin - const float2 inCoord = {(float)x, (float)y}; - const float2 coord = mad(inCoord, inv_dimensions, neg_center); - const float2 scaledCoord = axis_scale * coord; - const float dist2 = scaledCoord.x*scaledCoord.x + scaledCoord.y*scaledCoord.y; - const float inv_dist = half_rsqrt(dist2); - const float radian = M_PI_2 - atan((alpha * half_sqrt(radius2 - dist2)) * inv_dist); - const float scalar = radian * factor * inv_dist; - const float2 new_coord = mad(coord, scalar, center); - const float4 fout = rsSample(in_alloc, sampler, new_coord); - return rsPackColorTo8888(fout); -} - diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/fisheye_approx_full.rs b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/fisheye_approx_full.rs deleted file mode 100644 index 1ea37db..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/fisheye_approx_full.rs +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image) - -#include "fisheye_approx.rsh" - diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/fisheye_approx_relaxed.fs b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/fisheye_approx_relaxed.fs deleted file mode 100644 index 3e76368..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/fisheye_approx_relaxed.fs +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image) -#pragma rs_fp_relaxed - -#include "fisheye_approx.rsh" - diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/fisheye_full.rs b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/fisheye_full.rs deleted file mode 100644 index 20f27e2..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/fisheye_full.rs +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image) - -#include "fisheye.rsh" - diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/fisheye_relaxed.fs b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/fisheye_relaxed.fs deleted file mode 100644 index dc3ffcb..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/fisheye_relaxed.fs +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image) -#pragma rs_fp_relaxed - -#include "fisheye.rsh" - diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/grain.fs b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/grain.fs deleted file mode 100644 index 4ae095d..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/grain.fs +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image) -#pragma rs_fp_relaxed - -uchar __attribute__((kernel)) genRand() { - return (uchar)rsRand(0xff); -} - -/* - * Convolution matrix of distance 2 with fixed point of 'kShiftBits' bits - * shifted. Thus the sum of this matrix should be 'kShiftValue'. Entries of - * small values are not calculated to gain efficiency. - * The order ot pixels represented in this matrix is: - * 1 2 3 - * 4 0 5 - * 6 7 8 - * and the matrix should be: {230, 56, 114, 56, 114, 114, 56, 114, 56}. - * However, since most of the valus are identical, we only use the first three - * entries and the entries corresponding to the pixels is: - * 1 2 1 - * 2 0 2 - * 1 2 1 - */ - -int32_t gWMask; -int32_t gHMask; - -rs_allocation gBlendSource; -uchar __attribute__((kernel)) blend9(uint32_t x, uint32_t y) { - uint32_t x1 = (x-1) & gWMask; - uint32_t x2 = (x+1) & gWMask; - uint32_t y1 = (y-1) & gHMask; - uint32_t y2 = (y+1) & gHMask; - - uint p00 = 56 * rsGetElementAt_uchar(gBlendSource, x1, y1); - uint p01 = 114 * rsGetElementAt_uchar(gBlendSource, x, y1); - uint p02 = 56 * rsGetElementAt_uchar(gBlendSource, x2, y1); - uint p10 = 114 * rsGetElementAt_uchar(gBlendSource, x1, y); - uint p11 = 230 * rsGetElementAt_uchar(gBlendSource, x, y); - uint p12 = 114 * rsGetElementAt_uchar(gBlendSource, x2, y); - uint p20 = 56 * rsGetElementAt_uchar(gBlendSource, x1, y2); - uint p21 = 114 * rsGetElementAt_uchar(gBlendSource, x, y2); - uint p22 = 56 * rsGetElementAt_uchar(gBlendSource, x2, y2); - - p00 += p01; - p02 += p10; - p11 += p12; - p20 += p21; - - p22 += p00; - p02 += p11; - - p20 += p22; - p20 += p02; - - p20 = min(p20 >> 10, (uint)255); - return (uchar)p20; -} - -float gNoiseStrength; - -rs_allocation gNoise; -uchar4 __attribute__((kernel)) root(uchar4 in, uint32_t x, uint32_t y) { - float4 ip = convert_float4(in); - float pnoise = (float) rsGetElementAt_uchar(gNoise, x & gWMask, y & gHMask); - - float energy_level = ip.r + ip.g + ip.b; - float energy_mask = (28.f - sqrt(energy_level)) * 0.03571f; - pnoise = (pnoise - 128.f) * energy_mask; - - ip += pnoise * gNoiseStrength; - ip = clamp(ip, 0.f, 255.f); - - uchar4 p = convert_uchar4(ip); - p.a = 0xff; - return p; -} diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/greyscale.fs b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/greyscale.fs deleted file mode 100644 index 90ba058..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/greyscale.fs +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image) -#pragma rs_fp_relaxed - -const static float3 gMonoMult = {0.299f, 0.587f, 0.114f}; - -uchar4 __attribute__((kernel)) root(uchar4 v_in) { - float4 f4 = rsUnpackColor8888(v_in); - - float3 mono = dot(f4.rgb, gMonoMult); - return rsPackColorTo8888(mono); -} - - diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/levels.rsh b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/levels.rsh deleted file mode 100644 index e289906..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/levels.rsh +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2012 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. - */ - -float inBlack; -float outBlack; -float inWMinInB; -float outWMinOutB; -float overInWMinInB; -rs_matrix3x3 colorMat; - -uchar4 __attribute__((kernel)) root(uchar4 in, uint32_t x, uint32_t y) { - uchar4 out; - float3 pixel = convert_float4(in).rgb; - pixel = rsMatrixMultiply(&colorMat, pixel); - pixel = clamp(pixel, 0.f, 255.f); - pixel = (pixel - inBlack) * overInWMinInB; - pixel = pixel * outWMinOutB + outBlack; - pixel = clamp(pixel, 0.f, 255.f); - out.xyz = convert_uchar3(pixel); - out.w = 0xff; - return out; -} - -uchar4 __attribute__((kernel)) root4(uchar4 in, uint32_t x, uint32_t y) { - float4 pixel = convert_float4(in); - pixel.rgb = rsMatrixMultiply(&colorMat, pixel.rgb); - pixel = clamp(pixel, 0.f, 255.f); - pixel = (pixel - inBlack) * overInWMinInB; - pixel = pixel * outWMinOutB + outBlack; - pixel = clamp(pixel, 0.f, 255.f); - return convert_uchar4(pixel); -} - diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/levels_full.rs b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/levels_full.rs deleted file mode 100644 index da6a291..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/levels_full.rs +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image) - -#include "levels.rsh" - diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/levels_relaxed.fs b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/levels_relaxed.fs deleted file mode 100644 index b115445..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/levels_relaxed.fs +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image) -#pragma rs_fp_relaxed - -#include "levels.rsh" - diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/mandelbrot.rs b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/mandelbrot.rs deleted file mode 100644 index ac2061b..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/mandelbrot.rs +++ /dev/null @@ -1,56 +0,0 @@ -// 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.android.rs.image) - -uint32_t gMaxIteration = 500; -uint32_t gDimX = 1024; -uint32_t gDimY = 1024; - -float lowerBoundX = -2.f; -float lowerBoundY = -2.f; -float scaleFactor = 4.f; - -uchar4 __attribute__((kernel)) root(uint32_t x, uint32_t y) { - float2 p; - p.x = lowerBoundX + ((float)x / gDimX) * scaleFactor; - p.y = lowerBoundY + ((float)y / gDimY) * scaleFactor; - - float2 t = 0; - float2 t2 = t * t; - int iter = 0; - while((t2.x + t2.y < 4.f) && (iter < gMaxIteration)) { - float xtemp = t2.x - t2.y + p.x; - t.y = 2 * t.x * t.y + p.y; - t.x = xtemp; - iter++; - t2 = t * t; - } - - if(iter >= gMaxIteration) { - // write a non-transparent black pixel - return (uchar4){0, 0, 0, 0xff}; - } else { - float mi3 = gMaxIteration / 3.f; - if (iter <= (gMaxIteration / 3)) - return (uchar4){0xff * (iter / mi3), 0, 0, 0xff}; - else if (iter <= (((gMaxIteration / 3) * 2))) - return (uchar4){0xff - (0xff * ((iter - mi3) / mi3)), - (0xff * ((iter - mi3) / mi3)), 0, 0xff}; - else - return (uchar4){0, 0xff - (0xff * ((iter - (mi3 * 2)) / mi3)), - (0xff * ((iter - (mi3 * 2)) / mi3)), 0xff}; - } -} diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/threshold.fs b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/threshold.fs deleted file mode 100644 index 86e155a..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/threshold.fs +++ /dev/null @@ -1,104 +0,0 @@ -#pragma version(1) -#pragma rs java_package_name(com.android.rs.image) -#pragma rs_fp_relaxed - - -int height; -int width; -static int radius; - -rs_allocation InPixel; -rs_allocation ScratchPixel1; -rs_allocation ScratchPixel2; - -const int MAX_RADIUS = 25; - -// Store our coefficients here -static float gaussian[MAX_RADIUS * 2 + 1]; - -void setRadius(int rad) { - radius = rad; - // Compute gaussian weights for the blur - // e is the euler's number - float e = 2.718281828459045f; - float pi = 3.1415926535897932f; - // g(x) = ( 1 / sqrt( 2 * pi ) * sigma) * e ^ ( -x^2 / 2 * sigma^2 ) - // x is of the form [-radius .. 0 .. radius] - // and sigma varies with radius. - // Based on some experimental radius values and sigma's - // we approximately fit sigma = f(radius) as - // sigma = radius * 0.4 + 0.6 - // The larger the radius gets, the more our gaussian blur - // will resemble a box blur since with large sigma - // the gaussian curve begins to lose its shape - float sigma = 0.4f * (float)radius + 0.6f; - - // Now compute the coefficints - // We will store some redundant values to save some math during - // the blur calculations - // precompute some values - float coeff1 = 1.0f / (sqrt( 2.0f * pi ) * sigma); - float coeff2 = - 1.0f / (2.0f * sigma * sigma); - - float normalizeFactor = 0.0f; - float floatR = 0.0f; - for (int r = -radius; r <= radius; r ++) { - floatR = (float)r; - gaussian[r + radius] = coeff1 * pow(e, floatR * floatR * coeff2); - normalizeFactor += gaussian[r + radius]; - } - - //Now we need to normalize the weights because all our coefficients need to add up to one - normalizeFactor = 1.0f / normalizeFactor; - for (int r = -radius; r <= radius; r ++) { - floatR = (float)r; - gaussian[r + radius] *= normalizeFactor; - } -} - -float4 __attribute__((kernel)) copyIn(uchar4 in) { - return convert_float4(in); -} - -uchar4 __attribute__((kernel)) vert(uint32_t x, uint32_t y) { - float3 blurredPixel = 0; - int gi = 0; - uchar4 out; - if ((y > radius) && (y < (height - radius))) { - for (int r = -radius; r <= radius; r ++) { - float4 i = rsGetElementAt_float4(ScratchPixel2, x, y + r); - blurredPixel += i.xyz * gaussian[gi++]; - } - } else { - for (int r = -radius; r <= radius; r ++) { - int validH = rsClamp((int)y + r, (int)0, (int)(height - 1)); - float4 i = rsGetElementAt_float4(ScratchPixel2, x, validH); - blurredPixel += i.xyz * gaussian[gi++]; - } - } - - out.xyz = convert_uchar3(clamp(blurredPixel, 0.f, 255.f)); - out.w = 0xff; - return out; -} - -float4 __attribute__((kernel)) horz(uint32_t x, uint32_t y) { - float4 blurredPixel = 0; - int gi = 0; - if ((x > radius) && (x < (width - radius))) { - for (int r = -radius; r <= radius; r ++) { - float4 i = rsGetElementAt_float4(ScratchPixel1, x + r, y); - blurredPixel += i * gaussian[gi++]; - } - } else { - for (int r = -radius; r <= radius; r ++) { - // Stepping left and right away from the pixel - int validX = rsClamp((int)x + r, (int)0, (int)(width - 1)); - float4 i = rsGetElementAt_float4(ScratchPixel1, validX, y); - blurredPixel += i * gaussian[gi++]; - } - } - - return blurredPixel; -} - diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette.rsh b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette.rsh deleted file mode 100644 index 04ca1f1..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette.rsh +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (C) 2012 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. - */ - -static float2 neg_center, axis_scale, inv_dimensions; -static float sloped_neg_range, sloped_inv_max_dist, shade, opp_shade; - -void init_vignette(uint32_t dim_x, uint32_t dim_y, float center_x, float center_y, - float desired_scale, float desired_shade, float desired_slope) { - - neg_center.x = -center_x; - neg_center.y = -center_y; - inv_dimensions.x = 1.f / (float)dim_x; - inv_dimensions.y = 1.f / (float)dim_y; - - axis_scale = (float2)1.f; - if (dim_x > dim_y) - axis_scale.y = (float)dim_y / (float)dim_x; - else - axis_scale.x = (float)dim_x / (float)dim_y; - - const float max_dist = 0.5f * length(axis_scale); - sloped_inv_max_dist = desired_slope * 1.f/max_dist; - - // Range needs to be between 1.3 to 0.6. When scale is zero then range is - // 1.3 which means no vignette at all because the luminousity difference is - // less than 1/256. Expect input scale to be between 0.0 and 1.0. - const float neg_range = 0.7f*sqrt(desired_scale) - 1.3f; - sloped_neg_range = exp(neg_range * desired_slope); - - shade = desired_shade; - opp_shade = 1.f - desired_shade; -} - -uchar4 __attribute__((kernel)) root(uchar4 in, uint32_t x, uint32_t y) { - // Convert x and y to floating point coordinates with center as origin - const float4 fin = convert_float4(in); - const float2 inCoord = {(float)x, (float)y}; - const float2 coord = mad(inCoord, inv_dimensions, neg_center); - const float sloped_dist_ratio = length(axis_scale * coord) * sloped_inv_max_dist; - const float lumen = opp_shade + shade / ( 1.0f + sloped_neg_range * exp(sloped_dist_ratio) ); - float4 fout; - fout.rgb = fin.rgb * lumen; - fout.w = fin.w; - return convert_uchar4(fout); -} - diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette_approx.rsh b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette_approx.rsh deleted file mode 100644 index 05a5929..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette_approx.rsh +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (C) 2012 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. - */ - -static float2 neg_center, axis_scale, inv_dimensions; -static float sloped_neg_range, sloped_inv_max_dist, shade, opp_shade; - -void init_vignette(uint32_t dim_x, uint32_t dim_y, float center_x, float center_y, - float desired_scale, float desired_shade, float desired_slope) { - - neg_center.x = -center_x; - neg_center.y = -center_y; - inv_dimensions.x = 1.f / (float)dim_x; - inv_dimensions.y = 1.f / (float)dim_y; - - axis_scale = (float2)1.f; - if (dim_x > dim_y) - axis_scale.y = (float)dim_y / (float)dim_x; - else - axis_scale.x = (float)dim_x / (float)dim_y; - - const float max_dist = 0.5f * length(axis_scale); - sloped_inv_max_dist = desired_slope * 1.f/max_dist; - - // Range needs to be between 1.3 to 0.6. When scale is zero then range is - // 1.3 which means no vignette at all because the luminousity difference is - // less than 1/256. Expect input scale to be between 0.0 and 1.0. - const float neg_range = 0.7f*sqrt(desired_scale) - 1.3f; - sloped_neg_range = exp(neg_range * desired_slope); - - shade = desired_shade; - opp_shade = 1.f - desired_shade; -} - -uchar4 __attribute__((kernel)) root(uchar4 in, uint32_t x, uint32_t y) { - // Convert x and y to floating point coordinates with center as origin - const float4 fin = convert_float4(in); - const float2 inCoord = {(float)x, (float)y}; - const float2 coord = mad(inCoord, inv_dimensions, neg_center); - const float sloped_dist_ratio = fast_length(axis_scale * coord) * sloped_inv_max_dist; - // TODO: add half_exp once implemented - const float lumen = opp_shade + shade * half_recip(1.f + sloped_neg_range * exp(sloped_dist_ratio)); - float4 fout; - fout.rgb = fin.rgb * lumen; - fout.w = fin.w; - return convert_uchar4(fout); -} - diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette_approx_full.rs b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette_approx_full.rs deleted file mode 100644 index c83c6e1..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette_approx_full.rs +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image) - -#include "vignette_approx.rsh" - diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette_approx_relaxed.fs b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette_approx_relaxed.fs deleted file mode 100644 index 9120612..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette_approx_relaxed.fs +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image) -#pragma rs_fp_relaxed - -#include "vignette_approx.rsh" - diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette_full.rs b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette_full.rs deleted file mode 100644 index 64942d9..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette_full.rs +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image) - -#include "vignette.rsh" - diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette_relaxed.fs b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette_relaxed.fs deleted file mode 100644 index 8e47ea9..0000000 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette_relaxed.fs +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright (C) 2012 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.android.rs.image) -#pragma rs_fp_relaxed - -#include "vignette.rsh" - |
