diff options
Diffstat (limited to 'libs')
56 files changed, 0 insertions, 5587 deletions
diff --git a/libs/rs/java/ImageProcessing/Android.mk b/libs/rs/java/ImageProcessing/Android.mk deleted file mode 100644 index 7fa30d0..0000000 --- a/libs/rs/java/ImageProcessing/Android.mk +++ /dev/null @@ -1,32 +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. -# - -ifneq ($(TARGET_SIMULATOR),true) - -LOCAL_PATH := $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_MODULE_TAGS := optional - -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) - -endif diff --git a/libs/rs/java/ImageProcessing/AndroidManifest.xml b/libs/rs/java/ImageProcessing/AndroidManifest.xml deleted file mode 100644 index 69a33bc..0000000 --- a/libs/rs/java/ImageProcessing/AndroidManifest.xml +++ /dev/null @@ -1,16 +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="11" /> - <application android:label="Image Processing"> - <activity android:name="ImageProcessingActivity"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - </application> -</manifest> diff --git a/libs/rs/java/ImageProcessing/res/drawable-hdpi/data.jpg b/libs/rs/java/ImageProcessing/res/drawable-hdpi/data.jpg Binary files differdeleted file mode 100644 index 81a87b1..0000000 --- a/libs/rs/java/ImageProcessing/res/drawable-hdpi/data.jpg +++ /dev/null diff --git a/libs/rs/java/ImageProcessing/res/drawable/data.jpg b/libs/rs/java/ImageProcessing/res/drawable/data.jpg Binary files differdeleted file mode 100644 index 81a87b1..0000000 --- a/libs/rs/java/ImageProcessing/res/drawable/data.jpg +++ /dev/null diff --git a/libs/rs/java/ImageProcessing/res/layout/main.xml b/libs/rs/java/ImageProcessing/res/layout/main.xml deleted file mode 100644 index b271b43..0000000 --- a/libs/rs/java/ImageProcessing/res/layout/main.xml +++ /dev/null @@ -1,153 +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"> - <SurfaceView - android:id="@+id/surface" - android:layout_width="1dip" - android:layout_height="1dip" /> - <ImageView - android:id="@+id/display" - android:layout_width="320dip" - android:layout_height="266dip" /> - <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> - <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"> - <TextView - android:id="@+id/inSaturationText" - 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/inSaturation" - android:layout_marginLeft="10sp" - android:layout_marginRight="10sp" - android:layout_width="match_parent" - android:layout_height="wrap_content"/> - <TextView - android:id="@+id/inGammaText" - 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/inGamma" - android:layout_marginLeft="10sp" - android:layout_marginRight="10sp" - android:layout_width="match_parent" - android:layout_height="wrap_content"/> - <TextView - android:id="@+id/outWhiteText" - 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/outWhite" - android:layout_marginLeft="10sp" - android:layout_marginRight="10sp" - android:layout_width="match_parent" - android:layout_height="wrap_content"/> - <TextView - android:id="@+id/inWhiteText" - 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/inWhite" - android:layout_marginLeft="10sp" - android:layout_marginRight="10sp" - android:layout_width="match_parent" - android:layout_height="wrap_content"/> - <TextView - android:id="@+id/outBlackText" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:textSize="8pt" - android:layout_marginLeft="10sp" - android:layout_marginTop="15sp" - android:text="@string/out_black"/> - <SeekBar - android:id="@+id/outBlack" - android:layout_marginLeft="10sp" - android:layout_marginRight="10sp" - android:layout_width="match_parent" - android:layout_height="wrap_content"/> - <TextView - android:id="@+id/inBlackText" - 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_black"/> - <SeekBar - android:id="@+id/inBlack" - android:layout_marginLeft="10sp" - android:layout_marginRight="10sp" - android:layout_width="match_parent" - android:layout_height="wrap_content"/> - <TextView - android:id="@+id/blurText" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:textSize="8pt" - android:layout_marginLeft="10sp" - android:layout_marginTop="15sp" - android:text="@string/blur_description"/> - <SeekBar - android:id="@+id/radius" - android:layout_marginLeft="10sp" - android:layout_marginRight="10sp" - android:layout_width="match_parent" - android:layout_height="wrap_content"/> - </LinearLayout> - </ScrollView> -</LinearLayout> - diff --git a/libs/rs/java/ImageProcessing/res/values/strings.xml b/libs/rs/java/ImageProcessing/res/values/strings.xml deleted file mode 100644 index cc5cc4d..0000000 --- a/libs/rs/java/ImageProcessing/res/values/strings.xml +++ /dev/null @@ -1,33 +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> - -</resources> diff --git a/libs/rs/java/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java b/libs/rs/java/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java deleted file mode 100644 index 4f2f52ab..0000000 --- a/libs/rs/java/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java +++ /dev/null @@ -1,441 +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. - */ - -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.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 java.lang.Math; - -public class ImageProcessingActivity extends Activity - implements SurfaceHolder.Callback, - SeekBar.OnSeekBarChangeListener { - private Bitmap mBitmapIn; - private Bitmap mBitmapOut; - private Bitmap mBitmapScratch; - private ScriptC_threshold mScript; - private ScriptC_vertical_blur mScriptVBlur; - private ScriptC_horizontal_blur mScriptHBlur; - private int mRadius = 0; - private SeekBar mRadiusSeekBar; - - private float mInBlack = 0.0f; - private SeekBar mInBlackSeekBar; - private float mOutBlack = 0.0f; - private SeekBar mOutBlackSeekBar; - private float mInWhite = 255.0f; - private SeekBar mInWhiteSeekBar; - private float mOutWhite = 255.0f; - private SeekBar mOutWhiteSeekBar; - private float mGamma = 1.0f; - private SeekBar mGammaSeekBar; - - private float mSaturation = 1.0f; - private SeekBar mSaturationSeekBar; - - private TextView mBenchmarkResult; - - @SuppressWarnings({"FieldCanBeLocal"}) - private RenderScript mRS; - @SuppressWarnings({"FieldCanBeLocal"}) - private Type mPixelType; - @SuppressWarnings({"FieldCanBeLocal"}) - private Allocation mInPixelsAllocation; - @SuppressWarnings({"FieldCanBeLocal"}) - private Allocation mOutPixelsAllocation; - @SuppressWarnings({"FieldCanBeLocal"}) - private Allocation mScratchPixelsAllocation1; - private Allocation mScratchPixelsAllocation2; - - private SurfaceView mSurfaceView; - private ImageView mDisplayView; - - class FilterCallback extends RenderScript.RSMessageHandler { - private Runnable mAction = new Runnable() { - public void run() { - mDisplayView.invalidate(); - } - }; - - @Override - public void run() { - mSurfaceView.removeCallbacks(mAction); - mSurfaceView.post(mAction); - } - } - - int in[]; - int interm[]; - int out[]; - int MAX_RADIUS = 25; - // Store our coefficients here - float gaussian[]; - - private long javaFilter() { - final int width = mBitmapIn.getWidth(); - final int height = mBitmapIn.getHeight(); - final int count = width * height; - - if (in == null) { - in = new int[count]; - interm = new int[count]; - out = new int[count]; - gaussian = new float[MAX_RADIUS * 2 + 1]; - mBitmapIn.getPixels(in, 0, width, 0, 0, width, height); - } - - long t = java.lang.System.currentTimeMillis(); - - int w, h, r; - - float fRadius = (float)mRadius; - int radius = (int)mRadius; - - // 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 * fRadius + 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 / (float)(Math.sqrt( 2.0f * pi ) * sigma); - float coeff2 = - 1.0f / (2.0f * sigma * sigma); - float normalizeFactor = 0.0f; - float floatR = 0.0f; - for (r = -radius; r <= radius; r ++) { - floatR = (float)r; - gaussian[r + radius] = coeff1 * (float)Math.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 (r = -radius; r <= radius; r ++) { - floatR = (float)r; - gaussian[r + radius] *= normalizeFactor; - } - - float blurredPixelR = 0.0f; - float blurredPixelG = 0.0f; - float blurredPixelB = 0.0f; - float blurredPixelA = 0.0f; - - for (h = 0; h < height; h ++) { - for (w = 0; w < width; w ++) { - - blurredPixelR = 0.0f; - blurredPixelG = 0.0f; - blurredPixelB = 0.0f; - blurredPixelA = 0.0f; - - for (r = -radius; r <= radius; r ++) { - // Stepping left and right away from the pixel - int validW = w + r; - // Clamp to zero and width max() isn't exposed for ints yet - if (validW < 0) { - validW = 0; - } - if (validW > width - 1) { - validW = width - 1; - } - - int input = in[h*width + validW]; - - int R = ((input >> 24) & 0xff); - int G = ((input >> 16) & 0xff); - int B = ((input >> 8) & 0xff); - int A = (input & 0xff); - - float weight = gaussian[r + radius]; - - blurredPixelR += (float)(R)*weight; - blurredPixelG += (float)(G)*weight; - blurredPixelB += (float)(B)*weight; - blurredPixelA += (float)(A)*weight; - } - - int R = (int)blurredPixelR; - int G = (int)blurredPixelG; - int B = (int)blurredPixelB; - int A = (int)blurredPixelA; - - interm[h*width + w] = (R << 24) | (G << 16) | (B << 8) | (A); - } - } - - for (h = 0; h < height; h ++) { - for (w = 0; w < width; w ++) { - - blurredPixelR = 0.0f; - blurredPixelG = 0.0f; - blurredPixelB = 0.0f; - blurredPixelA = 0.0f; - for (r = -radius; r <= radius; r ++) { - int validH = h + r; - // Clamp to zero and width - if (validH < 0) { - validH = 0; - } - if (validH > height - 1) { - validH = height - 1; - } - - int input = interm[validH*width + w]; - - int R = ((input >> 24) & 0xff); - int G = ((input >> 16) & 0xff); - int B = ((input >> 8) & 0xff); - int A = (input & 0xff); - - float weight = gaussian[r + radius]; - - blurredPixelR += (float)(R)*weight; - blurredPixelG += (float)(G)*weight; - blurredPixelB += (float)(B)*weight; - blurredPixelA += (float)(A)*weight; - } - - int R = (int)blurredPixelR; - int G = (int)blurredPixelG; - int B = (int)blurredPixelB; - int A = (int)blurredPixelA; - - out[h*width + w] = (R << 24) | (G << 16) | (B << 8) | (A); - } - } - - t = java.lang.System.currentTimeMillis() - t; - android.util.Log.v("Img", "Java frame time ms " + t); - mBitmapOut.setPixels(out, 0, width, 0, 0, width, height); - return t; - } - - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - if (fromUser) { - - if (seekBar == mRadiusSeekBar) { - float fRadius = progress / 100.0f; - fRadius *= (float)(MAX_RADIUS); - mRadius = (int)fRadius; - - mScript.set_radius(mRadius); - } else if (seekBar == mInBlackSeekBar) { - mInBlack = (float)progress; - mScriptVBlur.invoke_setLevels(mInBlack, mOutBlack, mInWhite, mOutWhite); - } else if (seekBar == mOutBlackSeekBar) { - mOutBlack = (float)progress; - mScriptVBlur.invoke_setLevels(mInBlack, mOutBlack, mInWhite, mOutWhite); - } else if (seekBar == mInWhiteSeekBar) { - mInWhite = (float)progress + 127.0f; - mScriptVBlur.invoke_setLevels(mInBlack, mOutBlack, mInWhite, mOutWhite); - } else if (seekBar == mOutWhiteSeekBar) { - mOutWhite = (float)progress + 127.0f; - mScriptVBlur.invoke_setLevels(mInBlack, mOutBlack, mInWhite, mOutWhite); - } else if (seekBar == mGammaSeekBar) { - mGamma = (float)progress/100.0f; - mGamma = Math.max(mGamma, 0.1f); - mGamma = 1.0f / mGamma; - mScriptVBlur.invoke_setGamma(mGamma); - } else if (seekBar == mSaturationSeekBar) { - mSaturation = (float)progress / 50.0f; - mScriptVBlur.invoke_setSaturation(mSaturation); - } - - long t = java.lang.System.currentTimeMillis(); - if (true) { - mScript.invoke_filter(); - mOutPixelsAllocation.copyTo(mBitmapOut); - } else { - javaFilter(); - mDisplayView.invalidate(); - } - - t = java.lang.System.currentTimeMillis() - t; - android.util.Log.v("Img", "Renderscript frame time core ms " + t); - } - } - - public void onStartTrackingTouch(SeekBar seekBar) { - } - - public void onStopTrackingTouch(SeekBar seekBar) { - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.main); - - mBitmapIn = loadBitmap(R.drawable.data); - mBitmapOut = loadBitmap(R.drawable.data); - mBitmapScratch = loadBitmap(R.drawable.data); - - mSurfaceView = (SurfaceView) findViewById(R.id.surface); - mSurfaceView.getHolder().addCallback(this); - - mDisplayView = (ImageView) findViewById(R.id.display); - mDisplayView.setImageBitmap(mBitmapOut); - - mRadiusSeekBar = (SeekBar) findViewById(R.id.radius); - mRadiusSeekBar.setOnSeekBarChangeListener(this); - - mInBlackSeekBar = (SeekBar)findViewById(R.id.inBlack); - mInBlackSeekBar.setOnSeekBarChangeListener(this); - mInBlackSeekBar.setMax(128); - mInBlackSeekBar.setProgress(0); - mOutBlackSeekBar = (SeekBar)findViewById(R.id.outBlack); - mOutBlackSeekBar.setOnSeekBarChangeListener(this); - mOutBlackSeekBar.setMax(128); - mOutBlackSeekBar.setProgress(0); - - mInWhiteSeekBar = (SeekBar)findViewById(R.id.inWhite); - mInWhiteSeekBar.setOnSeekBarChangeListener(this); - mInWhiteSeekBar.setMax(128); - mInWhiteSeekBar.setProgress(128); - mOutWhiteSeekBar = (SeekBar)findViewById(R.id.outWhite); - mOutWhiteSeekBar.setOnSeekBarChangeListener(this); - mOutWhiteSeekBar.setMax(128); - mOutWhiteSeekBar.setProgress(128); - - mGammaSeekBar = (SeekBar)findViewById(R.id.inGamma); - mGammaSeekBar.setOnSeekBarChangeListener(this); - mGammaSeekBar.setMax(150); - mGammaSeekBar.setProgress(100); - - mSaturationSeekBar = (SeekBar)findViewById(R.id.inSaturation); - mSaturationSeekBar.setOnSeekBarChangeListener(this); - mSaturationSeekBar.setProgress(50); - - mBenchmarkResult = (TextView) findViewById(R.id.benchmarkText); - mBenchmarkResult.setText("Result: not run"); - } - - public void surfaceCreated(SurfaceHolder holder) { - createScript(); - mScript.invoke_filter(); - mOutPixelsAllocation.copyTo(mBitmapOut); - } - - public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { - } - - public void surfaceDestroyed(SurfaceHolder holder) { - } - - private void createScript() { - mRS = RenderScript.create(this); - mRS.setMessageHandler(new FilterCallback()); - - mInPixelsAllocation = Allocation.createFromBitmap(mRS, mBitmapIn, - Allocation.MipmapControl.MIPMAP_NONE, - Allocation.USAGE_SCRIPT); - mOutPixelsAllocation = Allocation.createFromBitmap(mRS, mBitmapOut, - Allocation.MipmapControl.MIPMAP_NONE, - Allocation.USAGE_SCRIPT); - - Type.Builder tb = new Type.Builder(mRS, Element.F32_4(mRS)); - tb.setX(mBitmapIn.getWidth()); - tb.setY(mBitmapIn.getHeight()); - mScratchPixelsAllocation1 = Allocation.createTyped(mRS, tb.create()); - mScratchPixelsAllocation2 = Allocation.createTyped(mRS, tb.create()); - - mScriptVBlur = new ScriptC_vertical_blur(mRS, getResources(), R.raw.vertical_blur); - mScriptHBlur = new ScriptC_horizontal_blur(mRS, getResources(), R.raw.horizontal_blur); - - mScript = new ScriptC_threshold(mRS, getResources(), R.raw.threshold); - mScript.set_width(mBitmapIn.getWidth()); - mScript.set_height(mBitmapIn.getHeight()); - mScript.set_radius(mRadius); - - mScriptVBlur.invoke_setLevels(mInBlack, mOutBlack, mInWhite, mOutWhite); - mScriptVBlur.invoke_setGamma(mGamma); - mScriptVBlur.invoke_setSaturation(mSaturation); - - mScript.bind_InPixel(mInPixelsAllocation); - mScript.bind_OutPixel(mOutPixelsAllocation); - mScript.bind_ScratchPixel1(mScratchPixelsAllocation1); - mScript.bind_ScratchPixel2(mScratchPixelsAllocation2); - - mScript.set_vBlurScript(mScriptVBlur); - mScript.set_hBlurScript(mScriptHBlur); - } - - 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) { - android.util.Log.v("Img", "Benchmarking"); - int oldRadius = mRadius; - mRadius = MAX_RADIUS; - mScript.set_radius(mRadius); - - long t = java.lang.System.currentTimeMillis(); - - mScript.invoke_filter(); - mOutPixelsAllocation.copyTo(mBitmapOut); - - t = java.lang.System.currentTimeMillis() - t; - android.util.Log.v("Img", "Renderscript frame time core ms " + t); - - //long javaTime = javaFilter(); - //mBenchmarkResult.setText("RS: " + t + " ms Java: " + javaTime + " ms"); - mBenchmarkResult.setText("Result: " + t + " ms"); - - mRadius = oldRadius; - mScript.set_radius(mRadius); - - mScript.invoke_filter(); - mOutPixelsAllocation.copyTo(mBitmapOut); - } -} diff --git a/libs/rs/java/ImageProcessing/src/com/android/rs/image/horizontal_blur.rs b/libs/rs/java/ImageProcessing/src/com/android/rs/image/horizontal_blur.rs deleted file mode 100644 index 652ffd7..0000000 --- a/libs/rs/java/ImageProcessing/src/com/android/rs/image/horizontal_blur.rs +++ /dev/null @@ -1,30 +0,0 @@ -#pragma version(1) - -#include "ip.rsh" - -void root(const void *v_in, void *v_out, const void *usrData, uint32_t x, uint32_t y) { - float4 *output = (float4 *)v_out; - const FilterStruct *fs = (const FilterStruct *)usrData; - const float4 *input = (const float4 *)rsGetElementAt(fs->ain, 0, y); - - float3 blurredPixel = 0; - const float *gPtr = fs->gaussian; - if ((x > fs->radius) && (x < (fs->width - fs->radius))) { - const float4 *i = input + (x - fs->radius); - for (int r = -fs->radius; r <= fs->radius; r ++) { - blurredPixel += i->xyz * gPtr[0]; - gPtr++; - i++; - } - } else { - for (int r = -fs->radius; r <= fs->radius; r ++) { - // Stepping left and right away from the pixel - int validW = rsClamp(x + r, (uint)0, (uint)(fs->width - 1)); - blurredPixel += input[validW].xyz * gPtr[0]; - gPtr++; - } - } - - output->xyz = blurredPixel; -} - diff --git a/libs/rs/java/ImageProcessing/src/com/android/rs/image/ip.rsh b/libs/rs/java/ImageProcessing/src/com/android/rs/image/ip.rsh deleted file mode 100644 index 1d7a719..0000000 --- a/libs/rs/java/ImageProcessing/src/com/android/rs/image/ip.rsh +++ /dev/null @@ -1,15 +0,0 @@ -#pragma rs java_package_name(com.android.rs.image) - -#define MAX_RADIUS 25 - -typedef struct FilterStruct_s { - rs_allocation ain; - - float *gaussian; //[MAX_RADIUS * 2 + 1]; - int height; - int width; - int radius; - -} FilterStruct; - - diff --git a/libs/rs/java/ImageProcessing/src/com/android/rs/image/threshold.rs b/libs/rs/java/ImageProcessing/src/com/android/rs/image/threshold.rs deleted file mode 100644 index f2f9a36..0000000 --- a/libs/rs/java/ImageProcessing/src/com/android/rs/image/threshold.rs +++ /dev/null @@ -1,93 +0,0 @@ -#pragma version(1) - -#include "ip.rsh" - -int height; -int width; -int radius; - -uchar4 * InPixel; -uchar4 * OutPixel; -float4 * ScratchPixel1; -float4 * ScratchPixel2; - -rs_script vBlurScript; -rs_script hBlurScript; - -const int CMD_FINISHED = 1; - -// Store our coefficients here -static float gaussian[MAX_RADIUS * 2 + 1]; - - -static void computeGaussianWeights() { - // 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; - int r; - for (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 (r = -radius; r <= radius; r ++) { - floatR = (float)r; - gaussian[r + radius] *= normalizeFactor; - } -} - - -static void copyInput() { - rs_allocation ain; - rsSetObject(&ain,rsGetAllocation(InPixel)); - uint32_t dimx = rsAllocationGetDimX(ain); - uint32_t dimy = rsAllocationGetDimY(ain); - for (uint32_t y = 0; y < dimy; y++) { - for (uint32_t x = 0; x < dimx; x++) { - ScratchPixel1[x + y * dimx] = convert_float4(InPixel[x + y * dimx]); - } - } -} - -void filter() { - copyInput(); - computeGaussianWeights(); - - FilterStruct fs; - fs.gaussian = gaussian; - fs.width = width; - fs.height = height; - fs.radius = radius; - - fs.ain = rsGetAllocation(ScratchPixel1); - rsForEach(hBlurScript, fs.ain, rsGetAllocation(ScratchPixel2), &fs); - - fs.ain = rsGetAllocation(ScratchPixel2); - rsForEach(vBlurScript, fs.ain, rsGetAllocation(OutPixel), &fs); - rsSendToClientBlocking(CMD_FINISHED); -} - diff --git a/libs/rs/java/ImageProcessing/src/com/android/rs/image/vertical_blur.rs b/libs/rs/java/ImageProcessing/src/com/android/rs/image/vertical_blur.rs deleted file mode 100644 index bd4ae4e..0000000 --- a/libs/rs/java/ImageProcessing/src/com/android/rs/image/vertical_blur.rs +++ /dev/null @@ -1,93 +0,0 @@ -#pragma version(1) - -#include "ip.rsh" - -static float inBlack; -static float outBlack; -static float inWhite; -static float outWhite; -static float3 gamma; -static float saturation; - -static float inWMinInB; -static float outWMinOutB; -static float overInWMinInB; -static rs_matrix3x3 colorMat; - -void setLevels(float iBlk, float oBlk, float iWht, float oWht) { - inBlack = iBlk; - outBlack = oBlk; - inWhite = iWht; - outWhite = oWht; - - inWMinInB = inWhite - inBlack; - outWMinOutB = outWhite - outBlack; - overInWMinInB = 1.f / inWMinInB; -} - -void setSaturation(float sat) { - saturation = sat; - - // Saturation - // Linear weights - //float rWeight = 0.3086f; - //float gWeight = 0.6094f; - //float bWeight = 0.0820f; - - // Gamma 2.2 weights (we haven't converted our image to linear space yet for perf reasons) - float rWeight = 0.299f; - float gWeight = 0.587f; - float bWeight = 0.114f; - - float oneMinusS = 1.0f - saturation; - rsMatrixSet(&colorMat, 0, 0, oneMinusS * rWeight + saturation); - rsMatrixSet(&colorMat, 0, 1, oneMinusS * rWeight); - rsMatrixSet(&colorMat, 0, 2, oneMinusS * rWeight); - rsMatrixSet(&colorMat, 1, 0, oneMinusS * gWeight); - rsMatrixSet(&colorMat, 1, 1, oneMinusS * gWeight + saturation); - rsMatrixSet(&colorMat, 1, 2, oneMinusS * gWeight); - rsMatrixSet(&colorMat, 2, 0, oneMinusS * bWeight); - rsMatrixSet(&colorMat, 2, 1, oneMinusS * bWeight); - rsMatrixSet(&colorMat, 2, 2, oneMinusS * bWeight + saturation); -} - -void setGamma(float g) { - gamma = (float3)g; -} - -//sliao -extern uchar3 __attribute__((overloadable)) convert2uchar3(float3 xyz); - -void root(const void *v_in, void *v_out, const void *usrData, uint32_t x, uint32_t y) { - uchar4 *output = (uchar4 *)v_out; - const FilterStruct *fs = (const FilterStruct *)usrData; - const float4 *input = (const float4 *)rsGetElementAt(fs->ain, x, 0); - - float3 blurredPixel = 0; - const float *gPtr = fs->gaussian; - if ((y > fs->radius) && (y < (fs->height - fs->radius))) { - const float4 *i = input + ((y - fs->radius) * fs->width); - for (int r = -fs->radius; r <= fs->radius; r ++) { - blurredPixel += i->xyz * gPtr[0]; - gPtr++; - i += fs->width; - } - } else { - for (int r = -fs->radius; r <= fs->radius; r ++) { - int validH = rsClamp(y + r, (uint)0, (uint)(fs->height - 1)); - const float4 *i = input + validH * fs->width; - blurredPixel += i->xyz * gPtr[0]; - gPtr++; - } - } - - float3 temp = rsMatrixMultiply(&colorMat, blurredPixel); - temp = (clamp(temp, 0.f, 255.f) - inBlack) * overInWMinInB; - if (gamma.x != 1.0f) - temp = pow(temp, (float3)gamma); - temp = clamp(temp * outWMinOutB + outBlack, 0.f, 255.f); - - output->xyz = convert_uchar3(temp); - //output->w = input->w; -} - diff --git a/libs/rs/java/ModelViewer/Android.mk b/libs/rs/java/ModelViewer/Android.mk deleted file mode 100644 index efe77d7..0000000 --- a/libs/rs/java/ModelViewer/Android.mk +++ /dev/null @@ -1,31 +0,0 @@ -# -# 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. -# - -ifneq ($(TARGET_SIMULATOR),true) - -LOCAL_PATH := $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_MODULE_TAGS := optional - -LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src) -#LOCAL_STATIC_JAVA_LIBRARIES := android.renderscript - -LOCAL_PACKAGE_NAME := ModelViewer - -include $(BUILD_PACKAGE) - -endif diff --git a/libs/rs/java/ModelViewer/AndroidManifest.xml b/libs/rs/java/ModelViewer/AndroidManifest.xml deleted file mode 100644 index e5e449b..0000000 --- a/libs/rs/java/ModelViewer/AndroidManifest.xml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.android.modelviewer"> - <application android:label="ModelViewer"> - <activity android:name="SimpleModel" - android:label="SimpleModel"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - <activity android:name="A3DSelector" - android:label="A3DSelector" - android:hardwareAccelerated="true"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - </intent-filter> - </activity> - <activity android:name="SceneGraph" - android:label="SceneGraph" - android:theme="@android:style/Theme.Black.NoTitleBar"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - </application> -</manifest> diff --git a/libs/rs/java/ModelViewer/res/drawable/robot.png b/libs/rs/java/ModelViewer/res/drawable/robot.png Binary files differdeleted file mode 100644 index f7353fd..0000000 --- a/libs/rs/java/ModelViewer/res/drawable/robot.png +++ /dev/null diff --git a/libs/rs/java/ModelViewer/res/menu/loader_menu.xml b/libs/rs/java/ModelViewer/res/menu/loader_menu.xml deleted file mode 100644 index 3c34023..0000000 --- a/libs/rs/java/ModelViewer/res/menu/loader_menu.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -* 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. -*/ ---> - -<menu xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:id="@+id/load_model" - android:title="@string/load_model" /> - <item android:id="@+id/display_options" - android:title="@string/display_options" /> -</menu> diff --git a/libs/rs/java/ModelViewer/res/raw/robot.a3d b/libs/rs/java/ModelViewer/res/raw/robot.a3d Binary files differdeleted file mode 100644 index f48895c..0000000 --- a/libs/rs/java/ModelViewer/res/raw/robot.a3d +++ /dev/null diff --git a/libs/rs/java/ModelViewer/res/values/strings.xml b/libs/rs/java/ModelViewer/res/values/strings.xml deleted file mode 100644 index 8e1673f..0000000 --- a/libs/rs/java/ModelViewer/res/values/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -* 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. -*/ ---> - -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <skip /> - <string name="load_model">Load Model</string> - <string name="display_options">Display Options</string> -</resources> diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/A3DSelector.java b/libs/rs/java/ModelViewer/src/com/android/modelviewer/A3DSelector.java deleted file mode 100644 index 0e2004f..0000000 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/A3DSelector.java +++ /dev/null @@ -1,110 +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.modelviewer; - -import java.io.File; -import java.io.FileFilter; -import java.util.ArrayList; -import java.util.List; - -import android.app.ListActivity; -import android.content.Intent; -import android.net.Uri; -import android.os.Bundle; -import android.view.View; -import android.widget.ArrayAdapter; -import android.widget.ListView; - -/** - * A list view where the last item the user clicked is placed in - * the "activated" state, causing its background to highlight. - */ -public class A3DSelector extends ListActivity { - - File[] mCurrentSubList; - File mCurrentFile; - - class A3DFilter implements FileFilter { - public boolean accept(File file) { - if (file.isDirectory()) { - return true; - } - return file.getName().endsWith(".a3d"); - } - } - - private void populateList(File file) { - - mCurrentFile = file; - setTitle(mCurrentFile.getAbsolutePath() + "/*.a3d"); - List<String> names = new ArrayList<String>(); - names.add(".."); - - mCurrentSubList = mCurrentFile.listFiles(new A3DFilter()); - - if (mCurrentSubList != null) { - for (int i = 0; i < mCurrentSubList.length; i ++) { - String fileName = mCurrentSubList[i].getName(); - if (mCurrentSubList[i].isDirectory()) { - fileName = "/" + fileName; - } - names.add(fileName); - } - } - - // Use the built-in layout for showing a list item with a single - // line of text whose background is changes when activated. - setListAdapter(new ArrayAdapter<String>(this, - android.R.layout.simple_list_item_activated_1, names)); - getListView().setTextFilterEnabled(true); - - // Tell the list view to show one checked/activated item at a time. - getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - populateList(new File("/sdcard/")); - } - - @Override - protected void onListItemClick(ListView l, View v, int position, long id) { - if (position == 0) { - File parent = mCurrentFile.getParentFile(); - if (parent == null) { - return; - } - populateList(parent); - return; - } - - // the first thing in list is parent directory - File selectedFile = mCurrentSubList[position - 1]; - if (selectedFile.isDirectory()) { - populateList(selectedFile); - return; - } - - Intent resultIntent = new Intent(); - resultIntent.setData(Uri.fromFile(selectedFile)); - setResult(RESULT_OK, resultIntent); - finish(); - } - -} diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SceneGraph.java b/libs/rs/java/ModelViewer/src/com/android/modelviewer/SceneGraph.java deleted file mode 100644 index b8717a7..0000000 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SceneGraph.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * 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. - */ - -package com.android.modelviewer; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScript; - -import android.app.Activity; -import android.content.res.Configuration; -import android.os.Bundle; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import android.provider.Settings.System; -import android.util.Config; -import android.util.Log; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.Window; -import android.widget.Button; -import android.widget.ListView; - -import java.lang.Runtime; - -public class SceneGraph extends Activity { - - private SceneGraphView mView; - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - - // Create our Preview view and set it as the content of our - // Activity - mView = new SceneGraphView(this); - setContentView(mView); - } - - @Override - protected void onResume() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity looses focus - super.onResume(); - mView.resume(); - } - - @Override - protected void onPause() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity looses focus - super.onPause(); - mView.pause(); - } - -} - diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SceneGraphRS.java b/libs/rs/java/ModelViewer/src/com/android/modelviewer/SceneGraphRS.java deleted file mode 100644 index f91f31e..0000000 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SceneGraphRS.java +++ /dev/null @@ -1,217 +0,0 @@ -/* - * 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. - */ - -package com.android.modelviewer; - -import java.io.Writer; -import java.util.Map; -import java.util.Vector; - -import android.content.res.Resources; -import android.renderscript.*; -import android.renderscript.Element.Builder; -import android.renderscript.Font.Style; -import android.renderscript.ProgramStore.DepthFunc; -import android.util.Log; - - -public class SceneGraphRS { - - private final int STATE_LAST_FOCUS = 1; - - int mWidth; - int mHeight; - int mRotation; - - public SceneGraphRS() { - } - - public void init(RenderScriptGL rs, Resources res, int width, int height) { - mRS = rs; - mRes = res; - mWidth = width; - mHeight = height; - mRotation = 0; - initRS(); - } - - private Resources mRes; - private RenderScriptGL mRS; - private Sampler mSampler; - private ProgramStore mPSBackground; - private ProgramFragment mPFBackground; - private ProgramVertex mPVBackground; - private ProgramVertexFixedFunction.Constants mPVA; - - private Allocation mGridImage; - private Allocation mAllocPV; - - private Mesh mMesh; - - private Font mItalic; - private Allocation mTextAlloc; - - private ScriptC_scenegraph mScript; - private ScriptC_transform mTransformScript; - - int mLastX; - int mLastY; - - public void touchEvent(int x, int y) { - int dx = mLastX - x; - if (Math.abs(dx) > 50 || Math.abs(dx) < 3) { - dx = 0; - } - - mRotation -= dx; - if (mRotation > 360) { - mRotation -= 360; - } - if (mRotation < 0) { - mRotation += 360; - } - - mScript.set_gRotate(-(float)mRotation); - - mLastX = x; - mLastY = y; - } - - private void initPFS() { - ProgramStore.Builder b = new ProgramStore.Builder(mRS); - - b.setDepthFunc(ProgramStore.DepthFunc.LESS); - b.setDitherEnabled(false); - b.setDepthMaskEnabled(true); - mPSBackground = b.create(); - - mScript.set_gPFSBackground(mPSBackground); - } - - private void initPF() { - Sampler.Builder bs = new Sampler.Builder(mRS); - bs.setMinification(Sampler.Value.LINEAR); - bs.setMagnification(Sampler.Value.LINEAR); - bs.setWrapS(Sampler.Value.CLAMP); - bs.setWrapT(Sampler.Value.CLAMP); - mSampler = bs.create(); - - ProgramFragmentFixedFunction.Builder b = new ProgramFragmentFixedFunction.Builder(mRS); - b.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE, - ProgramFragmentFixedFunction.Builder.Format.RGBA, 0); - mPFBackground = b.create(); - mPFBackground.bindSampler(mSampler, 0); - - mScript.set_gPFBackground(mPFBackground); - } - - private void initPV() { - ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS); - mPVBackground = pvb.create(); - - mPVA = new ProgramVertexFixedFunction.Constants(mRS); - ((ProgramVertexFixedFunction)mPVBackground).bindConstants(mPVA); - - mScript.set_gPVBackground(mPVBackground); - } - - private void loadImage() { - mGridImage = Allocation.createFromBitmapResource(mRS, mRes, R.drawable.robot, - Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE, - Allocation.USAGE_GRAPHICS_TEXTURE); - mScript.set_gTGrid(mGridImage); - } - - private void initTextAllocation() { - String allocString = "Displaying file: R.raw.robot"; - mTextAlloc = Allocation.createFromString(mRS, allocString, Allocation.USAGE_SCRIPT); - mScript.set_gTextAlloc(mTextAlloc); - } - - SgTransform mRootTransform; - SgTransform mGroup1; - - SgTransform mRobot1; - SgTransform mRobot2; - - void initTransformHierarchy() { - mRootTransform = new SgTransform(mRS); - - mGroup1 = new SgTransform(mRS); - mRootTransform.addChild(mGroup1); - - mRobot1 = new SgTransform(mRS); - mRobot2 = new SgTransform(mRS); - - mGroup1.addChild(mRobot1); - mGroup1.addChild(mRobot2); - - mGroup1.setTransform(0, new Float4(0.0f, 0.0f, -15.0f, 0.0f), TransformType.TRANSLATE); - mGroup1.setTransform(1, new Float4(0.0f, 1.0f, 0.0f, 15.0f), TransformType.ROTATE); - - mRobot1.setTransform(0, new Float4(-3.0f, -0.5f, 0.0f, 0.0f), TransformType.TRANSLATE); - mRobot1.setTransform(1, new Float4(0.0f, 1.0f, 0.0f, 20.0f), TransformType.ROTATE); - mRobot1.setTransform(2, new Float4(0.2f, 0.2f, 0.2f, 0.0f), TransformType.SCALE); - - mRobot2.setTransform(0, new Float4(3.0f, 0.0f, 0.0f, 0.0f), TransformType.TRANSLATE); - mRobot2.setTransform(1, new Float4(0.0f, 1.0f, 0.0f, -20.0f), TransformType.ROTATE); - mRobot2.setTransform(2, new Float4(0.3f, 0.3f, 0.3f, 0.0f), TransformType.SCALE); - } - - private void initRS() { - - mScript = new ScriptC_scenegraph(mRS, mRes, R.raw.scenegraph); - mTransformScript = new ScriptC_transform(mRS, mRes, R.raw.transform); - mTransformScript.set_transformScript(mTransformScript); - - mScript.set_gTransformRS(mTransformScript); - - initPFS(); - initPF(); - initPV(); - - loadImage(); - - FileA3D model = FileA3D.createFromResource(mRS, mRes, R.raw.robot); - FileA3D.IndexEntry entry = model.getIndexEntry(0); - if (entry == null || entry.getEntryType() != FileA3D.EntryType.MESH) { - Log.e("rs", "could not load model"); - } else { - mMesh = (Mesh)entry.getObject(); - mScript.set_gTestMesh(mMesh); - } - - mItalic = Font.create(mRS, mRes, "serif", Font.Style.ITALIC, 8); - mScript.set_gItalic(mItalic); - - initTextAllocation(); - - initTransformHierarchy(); - - mScript.bind_gRootNode(mRootTransform.getField()); - - mScript.bind_gGroup(mGroup1.mParent.mChildField); - mScript.bind_gRobot1(mRobot1.mParent.mChildField); - mScript.set_gRobot1Index(mRobot1.mIndexInParentGroup); - mScript.bind_gRobot2(mRobot2.mParent.mChildField); - mScript.set_gRobot2Index(mRobot2.mIndexInParentGroup); - - mRS.bindRootScript(mScript); - } -} - - - diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SceneGraphView.java b/libs/rs/java/ModelViewer/src/com/android/modelviewer/SceneGraphView.java deleted file mode 100644 index 0b6a3b8..0000000 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SceneGraphView.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * 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. - */ - -package com.android.modelviewer; - -import java.io.Writer; -import java.util.ArrayList; -import java.util.concurrent.Semaphore; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScript; -import android.renderscript.RenderScriptGL; - -import android.content.Context; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; -import android.os.Handler; -import android.os.Message; -import android.util.AttributeSet; -import android.util.Log; -import android.view.Surface; -import android.view.SurfaceHolder; -import android.view.SurfaceView; -import android.view.KeyEvent; -import android.view.MotionEvent; - -public class SceneGraphView extends RSSurfaceView { - - public SceneGraphView(Context context) { - super(context); - //setFocusable(true); - } - - private RenderScriptGL mRS; - private SceneGraphRS mRender; - - - public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { - super.surfaceChanged(holder, format, w, h); - if (mRS == null) { - RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig(); - sc.setDepth(16, 24); - mRS = createRenderScriptGL(sc); - mRS.setSurface(holder, w, h); - mRender = new SceneGraphRS(); - mRender.init(mRS, getResources(), w, h); - } - } - - @Override - protected void onDetachedFromWindow() { - if (mRS != null) { - mRS = null; - destroyRenderScriptGL(); - } - } - - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) - { - // break point at here - // this method doesn't work when 'extends View' include 'extends ScrollView'. - return super.onKeyDown(keyCode, event); - } - - - @Override - public boolean onTouchEvent(MotionEvent ev) - { - boolean ret = true; - int act = ev.getAction(); - if (act == ev.ACTION_UP) { - ret = false; - } - - mRender.touchEvent((int)ev.getX(), (int)ev.getY()); - return ret; - } -} - - diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SgTransform.java b/libs/rs/java/ModelViewer/src/com/android/modelviewer/SgTransform.java deleted file mode 100644 index f5484e2..0000000 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SgTransform.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * 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. - */ - -package com.android.modelviewer; - -import java.io.Writer; -import java.util.Map; -import java.util.Vector; - -import android.content.res.Resources; -import android.renderscript.*; -import android.renderscript.Element.Builder; -import android.renderscript.ProgramStore.DepthFunc; -import android.util.Log; - -enum TransformType { - - NONE(0), - TRANSLATE(1), - ROTATE(2), - SCALE(3); - - int mID; - TransformType(int id) { - mID = id; - } -} - -public class SgTransform { - - - ScriptField_SgTransform mTransformField; - ScriptField_SgTransform mChildField; - public ScriptField_SgTransform.Item mTransformData; - - RenderScript mRS; - - Vector mChildren; - SgTransform mParent; - int mIndexInParentGroup; - - public void setParent(SgTransform parent, int parentIndex) { - mParent = parent; - mIndexInParentGroup = parentIndex; - } - - public void addChild(SgTransform child) { - mChildren.add(child); - child.setParent(this, mChildren.size() - 1); - } - - public void setTransform(int index, Float4 value, TransformType type) { - mTransformData.transforms[index] = value; - mTransformData.transformTypes[index] = type.mID; - } - - void initData() { - int numElements = mTransformData.transforms.length; - mTransformData.transformTypes = new int[numElements]; - for (int i = 0; i < numElements; i ++) { - mTransformData.transforms[i] = new Float4(0, 0, 0, 0); - mTransformData.transformTypes[i] = TransformType.NONE.mID; - } - - mTransformData.isDirty = 1; - mTransformData.children = null; - } - - public SgTransform(RenderScript rs) { - mRS = rs; - mTransformData = new ScriptField_SgTransform.Item(); - mChildren = new Vector(); - initData(); - } - - public ScriptField_SgTransform.Item getData() { - if (mChildren.size() != 0) { - mChildField = new ScriptField_SgTransform(mRS, mChildren.size()); - mTransformData.children = mChildField.getAllocation(); - - for (int i = 0; i < mChildren.size(); i ++) { - SgTransform child = (SgTransform)mChildren.get(i); - mChildField.set(child.getData(), i, false); - } - mChildField.copyAll(); - } - - return mTransformData; - } - - public ScriptField_SgTransform getField() { - mTransformField = new ScriptField_SgTransform(mRS, 1); - mTransformField.set(getData(), 0, true); - return mTransformField; - } -} - - - diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SimpleModel.java b/libs/rs/java/ModelViewer/src/com/android/modelviewer/SimpleModel.java deleted file mode 100644 index 01cb709..0000000 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SimpleModel.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * 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. - */ - -package com.android.modelviewer; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScript; - -import android.app.Activity; -import android.content.res.Configuration; -import android.content.Intent; -import android.os.Bundle; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import android.provider.Settings.System; -import android.util.Config; -import android.util.Log; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.MenuInflater; -import android.view.Window; -import android.widget.Button; -import android.widget.ListView; -import android.net.Uri; - -import java.lang.Runtime; - -public class SimpleModel extends Activity { - - private SimpleModelView mView; - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - - // Create our Preview view and set it as the content of our - // Activity - mView = new SimpleModelView(this); - setContentView(mView); - } - - @Override - protected void onResume() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity looses focus - super.onResume(); - mView.resume(); - } - - @Override - protected void onPause() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity looses focus - super.onPause(); - mView.pause(); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - MenuInflater inflater = getMenuInflater(); - inflater.inflate(R.menu.loader_menu, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - // Handle item selection - switch (item.getItemId()) { - case R.id.load_model: - loadModel(); - return true; - case R.id.display_options: - return true; - default: - return super.onOptionsItemSelected(item); - } - } - - private static final int FIND_A3D_MODEL = 10; - public void onActivityResult(int requestCode, int resultCode, Intent data) { - if (resultCode == RESULT_OK) { - if (requestCode == FIND_A3D_MODEL) { - Uri selectedImageUri = data.getData(); - Log.e("Selected Path: ", selectedImageUri.getPath()); - mView.loadA3DFile(selectedImageUri.getPath()); - } - } - } - - public void loadModel() { - Intent intent = new Intent(); - intent.setAction(Intent.ACTION_PICK); - intent.setClassName("com.android.modelviewer", - "com.android.modelviewer.A3DSelector"); - startActivityForResult(intent, FIND_A3D_MODEL); - } - -} - diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SimpleModelRS.java b/libs/rs/java/ModelViewer/src/com/android/modelviewer/SimpleModelRS.java deleted file mode 100644 index 63ef466..0000000 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SimpleModelRS.java +++ /dev/null @@ -1,183 +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.modelviewer; - -import java.io.Writer; - -import android.content.res.Resources; -import android.renderscript.*; -import android.renderscript.ProgramStore.DepthFunc; -import android.util.Log; - - -public class SimpleModelRS { - - public SimpleModelRS() { - } - - public void init(RenderScriptGL rs, Resources res) { - mRS = rs; - mRes = res; - initRS(); - } - - public void surfaceChanged() { - mRS.getWidth(); - mRS.getHeight(); - } - - private Resources mRes; - private RenderScriptGL mRS; - private Sampler mSampler; - private ProgramStore mPSBackground; - private ProgramFragment mPFBackground; - private ProgramVertex mPVBackground; - private ProgramVertexFixedFunction.Constants mPVA; - - private Allocation mGridImage; - private Allocation mAllocPV; - - private Font mItalic; - private Allocation mTextAlloc; - - private ScriptField_MeshInfo mMeshes; - private ScriptC_simplemodel mScript; - - - public void onActionDown(float x, float y) { - mScript.invoke_onActionDown(x, y); - } - - public void onActionScale(float scale) { - mScript.invoke_onActionScale(scale); - } - - public void onActionMove(float x, float y) { - mScript.invoke_onActionMove(x, y); - } - - private void initPFS() { - ProgramStore.Builder b = new ProgramStore.Builder(mRS); - - b.setDepthFunc(ProgramStore.DepthFunc.LESS); - b.setDitherEnabled(false); - b.setDepthMaskEnabled(true); - mPSBackground = b.create(); - - mScript.set_gPFSBackground(mPSBackground); - } - - private void initPF() { - Sampler.Builder bs = new Sampler.Builder(mRS); - bs.setMinification(Sampler.Value.LINEAR); - bs.setMagnification(Sampler.Value.LINEAR); - bs.setWrapS(Sampler.Value.CLAMP); - bs.setWrapT(Sampler.Value.CLAMP); - mSampler = bs.create(); - - ProgramFragmentFixedFunction.Builder b = new ProgramFragmentFixedFunction.Builder(mRS); - b.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE, - ProgramFragmentFixedFunction.Builder.Format.RGBA, 0); - mPFBackground = b.create(); - mPFBackground.bindSampler(mSampler, 0); - - mScript.set_gPFBackground(mPFBackground); - } - - private void initPV() { - ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS); - mPVBackground = pvb.create(); - - mPVA = new ProgramVertexFixedFunction.Constants(mRS); - ((ProgramVertexFixedFunction)mPVBackground).bindConstants(mPVA); - - mScript.set_gPVBackground(mPVBackground); - } - - private void loadImage() { - mGridImage = Allocation.createFromBitmapResource(mRS, mRes, R.drawable.robot, - Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE, - Allocation.USAGE_GRAPHICS_TEXTURE); - mScript.set_gTGrid(mGridImage); - } - - private void initTextAllocation(String fileName) { - String allocString = "Displaying file: " + fileName; - mTextAlloc = Allocation.createFromString(mRS, allocString, Allocation.USAGE_SCRIPT); - mScript.set_gTextAlloc(mTextAlloc); - } - - private void initMeshes(FileA3D model) { - int numEntries = model.getIndexEntryCount(); - int numMeshes = 0; - for (int i = 0; i < numEntries; i ++) { - FileA3D.IndexEntry entry = model.getIndexEntry(i); - if (entry != null && entry.getEntryType() == FileA3D.EntryType.MESH) { - numMeshes ++; - } - } - - if (numMeshes > 0) { - mMeshes = new ScriptField_MeshInfo(mRS, numMeshes); - - for (int i = 0; i < numEntries; i ++) { - FileA3D.IndexEntry entry = model.getIndexEntry(i); - if (entry != null && entry.getEntryType() == FileA3D.EntryType.MESH) { - Mesh mesh = entry.getMesh(); - mMeshes.set_mMesh(i, mesh, false); - mMeshes.set_mNumIndexSets(i, mesh.getPrimitiveCount(), false); - } - } - mMeshes.copyAll(); - } else { - throw new RSRuntimeException("No valid meshes in file"); - } - - mScript.bind_gMeshes(mMeshes); - mScript.invoke_updateMeshInfo(); - } - - public void loadA3DFile(String path) { - FileA3D model = FileA3D.createFromFile(mRS, path); - initMeshes(model); - initTextAllocation(path); - } - - private void initRS() { - - mScript = new ScriptC_simplemodel(mRS, mRes, R.raw.simplemodel); - - initPFS(); - initPF(); - initPV(); - - loadImage(); - - FileA3D model = FileA3D.createFromResource(mRS, mRes, R.raw.robot); - initMeshes(model); - - mItalic = Font.create(mRS, mRes, "serif", Font.Style.ITALIC, 8); - mScript.set_gItalic(mItalic); - - initTextAllocation("R.raw.robot"); - - mRS.bindRootScript(mScript); - } -} - - - diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SimpleModelView.java b/libs/rs/java/ModelViewer/src/com/android/modelviewer/SimpleModelView.java deleted file mode 100644 index 9ab0f22..0000000 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SimpleModelView.java +++ /dev/null @@ -1,144 +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.modelviewer; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScriptGL; - -import android.content.Context; -import android.view.MotionEvent; -import android.view.SurfaceHolder; -import android.view.ScaleGestureDetector; -import android.util.Log; - -public class SimpleModelView extends RSSurfaceView { - - private RenderScriptGL mRS; - private SimpleModelRS mRender; - - private ScaleGestureDetector mScaleDetector; - - private static final int INVALID_POINTER_ID = -1; - private int mActivePointerId = INVALID_POINTER_ID; - - public SimpleModelView(Context context) { - super(context); - ensureRenderScript(); - mScaleDetector = new ScaleGestureDetector(context, new ScaleListener()); - } - - private void ensureRenderScript() { - if (mRS == null) { - RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig(); - sc.setDepth(16, 24); - mRS = createRenderScriptGL(sc); - mRender = new SimpleModelRS(); - mRender.init(mRS, getResources()); - } - } - - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - ensureRenderScript(); - } - - @Override - public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { - super.surfaceChanged(holder, format, w, h); - mRender.surfaceChanged(); - } - - @Override - protected void onDetachedFromWindow() { - mRender = null; - if (mRS != null) { - mRS = null; - destroyRenderScriptGL(); - } - } - - public void loadA3DFile(String path) { - mRender.loadA3DFile(path); - } - - @Override - public boolean onTouchEvent(MotionEvent ev) { - mScaleDetector.onTouchEvent(ev); - - boolean ret = false; - float x = ev.getX(); - float y = ev.getY(); - - final int action = ev.getAction(); - - switch (action & MotionEvent.ACTION_MASK) { - case MotionEvent.ACTION_DOWN: { - mRender.onActionDown(x, y); - mActivePointerId = ev.getPointerId(0); - ret = true; - break; - } - case MotionEvent.ACTION_MOVE: { - if (!mScaleDetector.isInProgress()) { - mRender.onActionMove(x, y); - } - mRender.onActionDown(x, y); - ret = true; - break; - } - - case MotionEvent.ACTION_UP: { - mActivePointerId = INVALID_POINTER_ID; - break; - } - - case MotionEvent.ACTION_CANCEL: { - mActivePointerId = INVALID_POINTER_ID; - break; - } - - case MotionEvent.ACTION_POINTER_UP: { - final int pointerIndex = (ev.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK) - >> MotionEvent.ACTION_POINTER_INDEX_SHIFT; - final int pointerId = ev.getPointerId(pointerIndex); - if (pointerId == mActivePointerId) { - // This was our active pointer going up. Choose a new - // active pointer and adjust accordingly. - final int newPointerIndex = pointerIndex == 0 ? 1 : 0; - x = ev.getX(newPointerIndex); - y = ev.getY(newPointerIndex); - mRender.onActionDown(x, y); - mActivePointerId = ev.getPointerId(newPointerIndex); - } - break; - } - } - - return ret; - } - - private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener { - @Override - public boolean onScale(ScaleGestureDetector detector) { - mRender.onActionScale(detector.getScaleFactor()); - return true; - } - } -} - - diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/scenegraph.rs b/libs/rs/java/ModelViewer/src/com/android/modelviewer/scenegraph.rs deleted file mode 100644 index 3679068..0000000 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/scenegraph.rs +++ /dev/null @@ -1,91 +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. - -#pragma version(1) - -#pragma rs java_package_name(com.android.modelviewer) - -#include "rs_graphics.rsh" -#include "transform_def.rsh" - -rs_program_vertex gPVBackground; -rs_program_fragment gPFBackground; - -rs_allocation gTGrid; -rs_mesh gTestMesh; - -rs_program_store gPFSBackground; - -float gRotate; - -rs_font gItalic; -rs_allocation gTextAlloc; - -rs_script gTransformRS; - -SgTransform *gGroup; -SgTransform *gRobot1; -int gRobot1Index; -SgTransform *gRobot2; -int gRobot2Index; - -SgTransform *gRootNode; - -void init() { - gRotate = 0.0f; -} - -int root(int launchID) { - - gGroup->transforms[1].w += 0.5f; - gGroup->isDirty = 1; - - SgTransform *robot1Ptr = gRobot1 + gRobot1Index; - - robot1Ptr->transforms[1].w -= 1.5f; - robot1Ptr->isDirty = 1; - - SgTransform *robot2Ptr = gRobot2 + gRobot2Index; - robot2Ptr->transforms[1].w += 2.5f; - robot2Ptr->isDirty = 1; - - rsForEach(gTransformRS, gRootNode->children, gRootNode->children, 0); - - rsgClearColor(1.0f, 1.0f, 1.0f, 1.0f); - rsgClearDepth(1.0f); - - rsgBindProgramVertex(gPVBackground); - rs_matrix4x4 proj; - float aspect = (float)rsgGetWidth() / (float)rsgGetHeight(); - rsMatrixLoadPerspective(&proj, 30.0f, aspect, 0.1f, 100.0f); - rsgProgramVertexLoadProjectionMatrix(&proj); - - rsgBindProgramFragment(gPFBackground); - rsgBindProgramStore(gPFSBackground); - rsgBindTexture(gPFBackground, 0, gTGrid); - - rsgProgramVertexLoadModelMatrix(&robot1Ptr->globalMat); - rsgDrawMesh(gTestMesh); - - rsgProgramVertexLoadModelMatrix(&robot2Ptr->globalMat); - rsgDrawMesh(gTestMesh); - - //color(0.3f, 0.3f, 0.3f, 1.0f); - rsgDrawText("Renderscript transform test", 30, 695); - - rsgBindFont(gItalic); - rsgDrawText(gTextAlloc, 30, 730); - - return 10; -} diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/simplemodel.rs b/libs/rs/java/ModelViewer/src/com/android/modelviewer/simplemodel.rs deleted file mode 100644 index 1034b85..0000000 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/simplemodel.rs +++ /dev/null @@ -1,161 +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.modelviewer) - -#include "rs_graphics.rsh" - -rs_program_vertex gPVBackground; -rs_program_fragment gPFBackground; - -rs_allocation gTGrid; - -rs_program_store gPFSBackground; - -rs_font gItalic; -rs_allocation gTextAlloc; - -typedef struct MeshInfo { - rs_mesh mMesh; - int mNumIndexSets; - float3 bBoxMin; - float3 bBoxMax; -} MeshInfo_t; - -MeshInfo_t *gMeshes; - -static float3 gLookAt; - -static float gRotateX; -static float gRotateY; -static float gZoom; - -static float gLastX; -static float gLastY; - -void onActionDown(float x, float y) { - gLastX = x; - gLastY = y; -} - -void onActionScale(float scale) { - - gZoom *= 1.0f / scale; - gZoom = max(0.1f, min(gZoom, 500.0f)); -} - -void onActionMove(float x, float y) { - float dx = gLastX - x; - float dy = gLastY - y; - - if (fabs(dy) <= 2.0f) { - dy = 0.0f; - } - if (fabs(dx) <= 2.0f) { - dx = 0.0f; - } - - gRotateY -= dx; - if (gRotateY > 360) { - gRotateY -= 360; - } - if (gRotateY < 0) { - gRotateY += 360; - } - - gRotateX -= dy; - gRotateX = min(gRotateX, 80.0f); - gRotateX = max(gRotateX, -80.0f); - - gLastX = x; - gLastY = y; -} - -void init() { - gRotateX = 0.0f; - gRotateY = 0.0f; - gZoom = 50.0f; - gLookAt = 0.0f; -} - -void updateMeshInfo() { - rs_allocation allMeshes = rsGetAllocation(gMeshes); - int size = rsAllocationGetDimX(allMeshes); - gLookAt = 0.0f; - float minX, minY, minZ, maxX, maxY, maxZ; - for (int i = 0; i < size; i++) { - MeshInfo_t *info = (MeshInfo_t*)rsGetElementAt(allMeshes, i); - rsgMeshComputeBoundingBox(info->mMesh, - &minX, &minY, &minZ, - &maxX, &maxY, &maxZ); - info->bBoxMin = (minX, minY, minZ); - info->bBoxMax = (maxX, maxY, maxZ); - gLookAt += (info->bBoxMin + info->bBoxMax)*0.5f; - } - gLookAt = gLookAt / (float)size; -} - -static void renderAllMeshes() { - rs_allocation allMeshes = rsGetAllocation(gMeshes); - int size = rsAllocationGetDimX(allMeshes); - gLookAt = 0.0f; - float minX, minY, minZ, maxX, maxY, maxZ; - for (int i = 0; i < size; i++) { - MeshInfo_t *info = (MeshInfo_t*)rsGetElementAt(allMeshes, i); - rsgDrawMesh(info->mMesh); - } -} - -void drawDescription() { - uint width = rsgGetWidth(); - uint height = rsgGetHeight(); - int left = 0, right = 0, top = 0, bottom = 0; - - rsgBindFont(gItalic); - - rsgMeasureText(gTextAlloc, &left, &right, &top, &bottom); - rsgDrawText(gTextAlloc, 2 -left, height - 2 + bottom); -} - -int root(int launchID) { - - rsgClearColor(1.0f, 1.0f, 1.0f, 1.0f); - rsgClearDepth(1.0f); - - rsgBindProgramVertex(gPVBackground); - rs_matrix4x4 proj; - float aspect = (float)rsgGetWidth() / (float)rsgGetHeight(); - rsMatrixLoadPerspective(&proj, 30.0f, aspect, 1.0f, 100.0f); - rsgProgramVertexLoadProjectionMatrix(&proj); - - rsgBindProgramFragment(gPFBackground); - rsgBindProgramStore(gPFSBackground); - rsgBindTexture(gPFBackground, 0, gTGrid); - - rs_matrix4x4 matrix; - rsMatrixLoadIdentity(&matrix); - // Position our models on the screen - rsMatrixTranslate(&matrix, gLookAt.x, gLookAt.y, gLookAt.z - gZoom); - rsMatrixRotate(&matrix, gRotateX, 1.0f, 0.0f, 0.0f); - rsMatrixRotate(&matrix, gRotateY, 0.0f, 1.0f, 0.0f); - rsgProgramVertexLoadModelMatrix(&matrix); - - renderAllMeshes(); - - drawDescription(); - - return 10; -} diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/transform.rs b/libs/rs/java/ModelViewer/src/com/android/modelviewer/transform.rs deleted file mode 100644 index f328025..0000000 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/transform.rs +++ /dev/null @@ -1,96 +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. - -#pragma version(1) - -#pragma rs java_package_name(com.android.modelviewer) - -#include "transform_def.rsh" - -rs_script transformScript; - -typedef struct { - int changed; - rs_matrix4x4 *mat; -} ParentData; - -static void appendTransformation(int type, float4 data, rs_matrix4x4 *mat) { - rs_matrix4x4 temp; - - switch (type) { - case TRANSFORM_TRANSLATE: - rsMatrixLoadTranslate(&temp, data.x, data.y, data.z); - break; - case TRANSFORM_ROTATE: - rsMatrixLoadRotate(&temp, data.w, data.x, data.y, data.z); - break; - case TRANSFORM_SCALE: - rsMatrixLoadScale(&temp, data.x, data.y, data.z); - break; - } - rsMatrixMultiply(mat, &temp); -} - -void root(const void *v_in, void *v_out, const void *usrData, uint32_t x, uint32_t y) { - - SgTransform *data = (SgTransform *)v_out; - const ParentData *parent = (const ParentData *)usrData; - - //rsDebug("Transform data", (int)data); - //rsDebug("Entering parent", (int)parent); - - rs_matrix4x4 *localMat = &data->localMat; - rs_matrix4x4 *globalMat = &data->globalMat; - - ParentData toChild; - toChild.changed = 0; - toChild.mat = globalMat; - - //rsDebug("Transform is dirty", data->isDirty); - - // Refresh matrices if dirty - if (data->isDirty) { - data->isDirty = 0; - toChild.changed = 1; - - // Reset our local matrix - rsMatrixLoadIdentity(localMat); - - for (int i = 0; i < 16; i ++) { - if (data->transformTypes[i] == TRANSFORM_NONE) { - break; - } - //rsDebug("Transform adding transformation", transformTypes[i]); - appendTransformation(data->transformTypes[i], data->transforms[i], localMat); - } - } - - //rsDebug("Transform checking parent", (int)0); - - if (parent) { - if (parent->changed) { - toChild.changed = 1; - - rsMatrixLoad(globalMat, parent->mat); - rsMatrixMultiply(globalMat, localMat); - } - } else { - rsMatrixLoad(globalMat, localMat); - } - - //rsDebug("Transform calling self with child ", (int)data->children.p); - if (data->children.p) { - rsForEach(transformScript, data->children, data->children, (void*)&toChild); - } -} diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/transform_def.rsh b/libs/rs/java/ModelViewer/src/com/android/modelviewer/transform_def.rsh deleted file mode 100644 index 24a36c1..0000000 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/transform_def.rsh +++ /dev/null @@ -1,35 +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. - -#pragma version(1) - -#pragma rs java_package_name(com.android.modelviewer) - -#define TRANSFORM_NONE 0 -#define TRANSFORM_TRANSLATE 1 -#define TRANSFORM_ROTATE 2 -#define TRANSFORM_SCALE 3 - -typedef struct __attribute__((packed, aligned(4))) SgTransform { - rs_matrix4x4 globalMat; - rs_matrix4x4 localMat; - - float4 transforms[16]; - int transformTypes[16]; - - int isDirty; - - rs_allocation children; - -} SgTransform; diff --git a/libs/rs/java/Samples/AndroidManifest.xml b/libs/rs/java/Samples/AndroidManifest.xml index 8dad161..c08a264 100644 --- a/libs/rs/java/Samples/AndroidManifest.xml +++ b/libs/rs/java/Samples/AndroidManifest.xml @@ -21,14 +21,5 @@ <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> - - <activity android:name="RsBench" - android:label="RsBenchmark" - android:theme="@android:style/Theme.Black.NoTitleBar"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> </application> </manifest> diff --git a/libs/rs/java/Samples/src/com/android/samples/RsBench.java b/libs/rs/java/Samples/src/com/android/samples/RsBench.java deleted file mode 100644 index a29dddc..0000000 --- a/libs/rs/java/Samples/src/com/android/samples/RsBench.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * 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. - */ - -package com.android.samples; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScript; - -import android.app.Activity; -import android.content.res.Configuration; -import android.os.Bundle; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import android.provider.Settings.System; -import android.util.Config; -import android.util.Log; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.Window; -import android.widget.Button; -import android.widget.ListView; - -import java.lang.Runtime; - -public class RsBench extends Activity { - - private RsBenchView mView; - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - - // Create our Preview view and set it as the content of our - // Activity - mView = new RsBenchView(this); - setContentView(mView); - } - - @Override - protected void onResume() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity loses focus - super.onResume(); - mView.resume(); - } - - @Override - protected void onPause() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity loses focus - super.onPause(); - mView.pause(); - } - -} - diff --git a/libs/rs/java/Samples/src/com/android/samples/RsBenchRS.java b/libs/rs/java/Samples/src/com/android/samples/RsBenchRS.java deleted file mode 100644 index 1afcee3..0000000 --- a/libs/rs/java/Samples/src/com/android/samples/RsBenchRS.java +++ /dev/null @@ -1,429 +0,0 @@ -/* - * 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. - */ - -package com.android.samples; - -import java.io.Writer; - -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.renderscript.*; -import android.renderscript.Allocation.MipmapControl; -import android.renderscript.Program.TextureType; -import android.renderscript.ProgramStore.DepthFunc; -import android.renderscript.ProgramStore.BlendSrcFunc; -import android.renderscript.ProgramStore.BlendDstFunc; -import android.renderscript.Sampler.Value; -import android.util.Log; - - -public class RsBenchRS { - - int mWidth; - int mHeight; - - public RsBenchRS() { - } - - public void init(RenderScriptGL rs, Resources res, int width, int height) { - mRS = rs; - mRes = res; - mWidth = width; - mHeight = height; - mOptionsARGB.inScaled = false; - mOptionsARGB.inPreferredConfig = Bitmap.Config.ARGB_8888; - mMode = 0; - mMaxModes = 0; - initRS(); - } - - private Resources mRes; - private RenderScriptGL mRS; - - private Sampler mLinearClamp; - private Sampler mLinearWrap; - private Sampler mMipLinearWrap; - private Sampler mNearestClamp; - private Sampler mMipLinearAniso8; - private Sampler mMipLinearAniso15; - - private ProgramStore mProgStoreBlendNoneDepth; - private ProgramStore mProgStoreBlendNone; - private ProgramStore mProgStoreBlendAlpha; - private ProgramStore mProgStoreBlendAdd; - - private ProgramFragment mProgFragmentTexture; - private ProgramFragment mProgFragmentColor; - - private ProgramVertex mProgVertex; - private ProgramVertexFixedFunction.Constants mPVA; - - // Custom shaders - private ProgramVertex mProgVertexCustom; - private ProgramFragment mProgFragmentCustom; - private ProgramFragment mProgFragmentMultitex; - private ProgramVertex mProgVertexPixelLight; - private ProgramVertex mProgVertexPixelLightMove; - private ProgramFragment mProgFragmentPixelLight; - private ScriptField_VertexShaderConstants_s mVSConst; - private ScriptField_FragentShaderConstants_s mFSConst; - private ScriptField_VertexShaderConstants3_s mVSConstPixel; - private ScriptField_FragentShaderConstants3_s mFSConstPixel; - - private ProgramVertex mProgVertexCube; - private ProgramFragment mProgFragmentCube; - - private ProgramRaster mCullBack; - private ProgramRaster mCullFront; - private ProgramRaster mCullNone; - - private Allocation mTexTorus; - private Allocation mTexOpaque; - private Allocation mTexTransparent; - private Allocation mTexChecker; - private Allocation mTexCube; - - private Mesh m10by10Mesh; - private Mesh m100by100Mesh; - private Mesh mWbyHMesh; - private Mesh mTorus; - - Font mFontSans; - Font mFontSerif; - Font mFontSerifBold; - Font mFontSerifItalic; - Font mFontSerifBoldItalic; - Font mFontMono; - private Allocation mTextAlloc; - - private ScriptC_rsbench mScript; - - private final BitmapFactory.Options mOptionsARGB = new BitmapFactory.Options(); - - int mMode; - int mMaxModes; - - public void onActionDown(int x, int y) { - mMode ++; - mMode = mMode % mMaxModes; - mScript.set_gDisplayMode(mMode); - } - - ProgramStore BLEND_ADD_DEPTH_NONE(RenderScript rs) { - ProgramStore.Builder builder = new ProgramStore.Builder(rs); - builder.setDepthFunc(ProgramStore.DepthFunc.ALWAYS); - builder.setBlendFunc(BlendSrcFunc.ONE, BlendDstFunc.ONE); - builder.setDitherEnabled(false); - builder.setDepthMaskEnabled(false); - return builder.create(); - } - - private Mesh getMbyNMesh(float width, float height, int wResolution, int hResolution) { - - Mesh.TriangleMeshBuilder tmb = new Mesh.TriangleMeshBuilder(mRS, - 2, Mesh.TriangleMeshBuilder.TEXTURE_0); - - for (int y = 0; y <= hResolution; y++) { - final float normalizedY = (float)y / hResolution; - final float yOffset = (normalizedY - 0.5f) * height; - for (int x = 0; x <= wResolution; x++) { - float normalizedX = (float)x / wResolution; - float xOffset = (normalizedX - 0.5f) * width; - tmb.setTexture((float)x % 2, (float)y % 2); - tmb.addVertex(xOffset, yOffset); - } - } - - for (int y = 0; y < hResolution; y++) { - final int curY = y * (wResolution + 1); - final int belowY = (y + 1) * (wResolution + 1); - for (int x = 0; x < wResolution; x++) { - int curV = curY + x; - int belowV = belowY + x; - tmb.addTriangle(curV, belowV, curV + 1); - tmb.addTriangle(belowV, belowV + 1, curV + 1); - } - } - - return tmb.create(true); - } - - private void initProgramStore() { - // Use stock the stock program store object - mProgStoreBlendNoneDepth = ProgramStore.BLEND_NONE_DEPTH_TEST(mRS); - mProgStoreBlendNone = ProgramStore.BLEND_NONE_DEPTH_NONE(mRS); - - // Create a custom program store - ProgramStore.Builder builder = new ProgramStore.Builder(mRS); - builder.setDepthFunc(ProgramStore.DepthFunc.ALWAYS); - builder.setBlendFunc(ProgramStore.BlendSrcFunc.SRC_ALPHA, - ProgramStore.BlendDstFunc.ONE_MINUS_SRC_ALPHA); - builder.setDitherEnabled(false); - builder.setDepthMaskEnabled(false); - mProgStoreBlendAlpha = builder.create(); - - mProgStoreBlendAdd = BLEND_ADD_DEPTH_NONE(mRS); - - mScript.set_gProgStoreBlendNoneDepth(mProgStoreBlendNoneDepth); - mScript.set_gProgStoreBlendNone(mProgStoreBlendNone); - mScript.set_gProgStoreBlendAlpha(mProgStoreBlendAlpha); - mScript.set_gProgStoreBlendAdd(mProgStoreBlendAdd); - } - - private void initProgramFragment() { - - ProgramFragmentFixedFunction.Builder texBuilder = new ProgramFragmentFixedFunction.Builder(mRS); - texBuilder.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE, - ProgramFragmentFixedFunction.Builder.Format.RGBA, 0); - mProgFragmentTexture = texBuilder.create(); - mProgFragmentTexture.bindSampler(mLinearClamp, 0); - - ProgramFragmentFixedFunction.Builder colBuilder = new ProgramFragmentFixedFunction.Builder(mRS); - colBuilder.setVaryingColor(false); - mProgFragmentColor = colBuilder.create(); - - mScript.set_gProgFragmentColor(mProgFragmentColor); - mScript.set_gProgFragmentTexture(mProgFragmentTexture); - } - - private void initProgramVertex() { - ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS); - mProgVertex = pvb.create(); - - mPVA = new ProgramVertexFixedFunction.Constants(mRS); - ((ProgramVertexFixedFunction)mProgVertex).bindConstants(mPVA); - Matrix4f proj = new Matrix4f(); - proj.loadOrthoWindow(mWidth, mHeight); - mPVA.setProjection(proj); - - mScript.set_gProgVertex(mProgVertex); - } - - private void initCustomShaders() { - mVSConst = new ScriptField_VertexShaderConstants_s(mRS, 1); - mFSConst = new ScriptField_FragentShaderConstants_s(mRS, 1); - mScript.bind_gVSConstants(mVSConst); - mScript.bind_gFSConstants(mFSConst); - - mVSConstPixel = new ScriptField_VertexShaderConstants3_s(mRS, 1); - mFSConstPixel = new ScriptField_FragentShaderConstants3_s(mRS, 1); - mScript.bind_gVSConstPixel(mVSConstPixel); - mScript.bind_gFSConstPixel(mFSConstPixel); - - // Initialize the shader builder - ProgramVertex.Builder pvbCustom = new ProgramVertex.Builder(mRS); - // Specify the resource that contains the shader string - pvbCustom.setShader(mRes, R.raw.shaderv); - // Use a script field to specify the input layout - pvbCustom.addInput(ScriptField_VertexShaderInputs_s.createElement(mRS)); - // Define the constant input layout - pvbCustom.addConstant(mVSConst.getAllocation().getType()); - mProgVertexCustom = pvbCustom.create(); - // Bind the source of constant data - mProgVertexCustom.bindConstants(mVSConst.getAllocation(), 0); - - ProgramFragment.Builder pfbCustom = new ProgramFragment.Builder(mRS); - // Specify the resource that contains the shader string - pfbCustom.setShader(mRes, R.raw.shaderf); - // Tell the builder how many textures we have - pfbCustom.addTexture(Program.TextureType.TEXTURE_2D); - // Define the constant input layout - pfbCustom.addConstant(mFSConst.getAllocation().getType()); - mProgFragmentCustom = pfbCustom.create(); - // Bind the source of constant data - mProgFragmentCustom.bindConstants(mFSConst.getAllocation(), 0); - - // Cubemap test shaders - pvbCustom = new ProgramVertex.Builder(mRS); - pvbCustom.setShader(mRes, R.raw.shadercubev); - pvbCustom.addInput(ScriptField_VertexShaderInputs_s.createElement(mRS)); - pvbCustom.addConstant(mVSConst.getAllocation().getType()); - mProgVertexCube = pvbCustom.create(); - mProgVertexCube.bindConstants(mVSConst.getAllocation(), 0); - - pfbCustom = new ProgramFragment.Builder(mRS); - pfbCustom.setShader(mRes, R.raw.shadercubef); - pfbCustom.addTexture(Program.TextureType.TEXTURE_CUBE); - mProgFragmentCube = pfbCustom.create(); - - pvbCustom = new ProgramVertex.Builder(mRS); - pvbCustom.setShader(mRes, R.raw.shader2v); - pvbCustom.addInput(ScriptField_VertexShaderInputs_s.createElement(mRS)); - pvbCustom.addConstant(mVSConstPixel.getAllocation().getType()); - mProgVertexPixelLight = pvbCustom.create(); - mProgVertexPixelLight.bindConstants(mVSConstPixel.getAllocation(), 0); - - pvbCustom = new ProgramVertex.Builder(mRS); - pvbCustom.setShader(mRes, R.raw.shader2movev); - pvbCustom.addInput(ScriptField_VertexShaderInputs_s.createElement(mRS)); - pvbCustom.addConstant(mVSConstPixel.getAllocation().getType()); - mProgVertexPixelLightMove = pvbCustom.create(); - mProgVertexPixelLightMove.bindConstants(mVSConstPixel.getAllocation(), 0); - - pfbCustom = new ProgramFragment.Builder(mRS); - pfbCustom.setShader(mRes, R.raw.shader2f); - pfbCustom.addTexture(Program.TextureType.TEXTURE_2D); - pfbCustom.addConstant(mFSConstPixel.getAllocation().getType()); - mProgFragmentPixelLight = pfbCustom.create(); - mProgFragmentPixelLight.bindConstants(mFSConstPixel.getAllocation(), 0); - - pfbCustom = new ProgramFragment.Builder(mRS); - pfbCustom.setShader(mRes, R.raw.multitexf); - for (int texCount = 0; texCount < 3; texCount ++) { - pfbCustom.addTexture(Program.TextureType.TEXTURE_2D); - } - mProgFragmentMultitex = pfbCustom.create(); - - mScript.set_gProgVertexCustom(mProgVertexCustom); - mScript.set_gProgFragmentCustom(mProgFragmentCustom); - mScript.set_gProgVertexCube(mProgVertexCube); - mScript.set_gProgFragmentCube(mProgFragmentCube); - mScript.set_gProgVertexPixelLight(mProgVertexPixelLight); - mScript.set_gProgVertexPixelLightMove(mProgVertexPixelLightMove); - mScript.set_gProgFragmentPixelLight(mProgFragmentPixelLight); - mScript.set_gProgFragmentMultitex(mProgFragmentMultitex); - } - - private Allocation loadTextureRGB(int id) { - return Allocation.createFromBitmapResource(mRS, mRes, id, - Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE, - Allocation.USAGE_GRAPHICS_TEXTURE); - } - - private Allocation loadTextureARGB(int id) { - Bitmap b = BitmapFactory.decodeResource(mRes, id, mOptionsARGB); - return Allocation.createFromBitmap(mRS, b, - Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE, - Allocation.USAGE_GRAPHICS_TEXTURE); - } - - private void loadImages() { - mTexTorus = loadTextureRGB(R.drawable.torusmap); - mTexOpaque = loadTextureRGB(R.drawable.data); - mTexTransparent = loadTextureARGB(R.drawable.leaf); - mTexChecker = loadTextureRGB(R.drawable.checker); - Bitmap b = BitmapFactory.decodeResource(mRes, R.drawable.cubemap_test); - mTexCube = Allocation.createCubemapFromBitmap(mRS, b); - - mScript.set_gTexTorus(mTexTorus); - mScript.set_gTexOpaque(mTexOpaque); - mScript.set_gTexTransparent(mTexTransparent); - mScript.set_gTexChecker(mTexChecker); - mScript.set_gTexCube(mTexCube); - } - - private void initFonts() { - // Sans font by family name - mFontSans = Font.create(mRS, mRes, "sans-serif", Font.Style.NORMAL, 8); - mFontSerif = Font.create(mRS, mRes, "serif", Font.Style.NORMAL, 8); - // Create fonts by family and style - mFontSerifBold = Font.create(mRS, mRes, "serif", Font.Style.BOLD, 8); - mFontSerifItalic = Font.create(mRS, mRes, "serif", Font.Style.ITALIC, 8); - mFontSerifBoldItalic = Font.create(mRS, mRes, "serif", Font.Style.BOLD_ITALIC, 8); - mFontMono = Font.create(mRS, mRes, "mono", Font.Style.NORMAL, 8); - - mTextAlloc = Allocation.createFromString(mRS, "String from allocation", Allocation.USAGE_SCRIPT); - - mScript.set_gFontSans(mFontSans); - mScript.set_gFontSerif(mFontSerif); - mScript.set_gFontSerifBold(mFontSerifBold); - mScript.set_gFontSerifItalic(mFontSerifItalic); - mScript.set_gFontSerifBoldItalic(mFontSerifBoldItalic); - mScript.set_gFontMono(mFontMono); - mScript.set_gTextAlloc(mTextAlloc); - } - - private void initMesh() { - m10by10Mesh = getMbyNMesh(mWidth, mHeight, 10, 10); - mScript.set_g10by10Mesh(m10by10Mesh); - m100by100Mesh = getMbyNMesh(mWidth, mHeight, 100, 100); - mScript.set_g100by100Mesh(m100by100Mesh); - mWbyHMesh= getMbyNMesh(mWidth, mHeight, mWidth/4, mHeight/4); - mScript.set_gWbyHMesh(mWbyHMesh); - - FileA3D model = FileA3D.createFromResource(mRS, mRes, R.raw.torus); - FileA3D.IndexEntry entry = model.getIndexEntry(0); - if (entry == null || entry.getEntryType() != FileA3D.EntryType.MESH) { - Log.e("rs", "could not load model"); - } else { - mTorus = (Mesh)entry.getObject(); - mScript.set_gTorusMesh(mTorus); - } - } - - private void initSamplers() { - Sampler.Builder bs = new Sampler.Builder(mRS); - bs.setMinification(Sampler.Value.LINEAR); - bs.setMagnification(Sampler.Value.LINEAR); - bs.setWrapS(Sampler.Value.WRAP); - bs.setWrapT(Sampler.Value.WRAP); - mLinearWrap = bs.create(); - - mLinearClamp = Sampler.CLAMP_LINEAR(mRS); - mNearestClamp = Sampler.CLAMP_NEAREST(mRS); - mMipLinearWrap = Sampler.WRAP_LINEAR_MIP_LINEAR(mRS); - - bs = new Sampler.Builder(mRS); - bs.setMinification(Sampler.Value.LINEAR_MIP_LINEAR); - bs.setMagnification(Sampler.Value.LINEAR); - bs.setWrapS(Sampler.Value.WRAP); - bs.setWrapT(Sampler.Value.WRAP); - bs.setAnisotropy(8.0f); - mMipLinearAniso8 = bs.create(); - bs.setAnisotropy(15.0f); - mMipLinearAniso15 = bs.create(); - - mScript.set_gLinearClamp(mLinearClamp); - mScript.set_gLinearWrap(mLinearWrap); - mScript.set_gMipLinearWrap(mMipLinearWrap); - mScript.set_gMipLinearAniso8(mMipLinearAniso8); - mScript.set_gMipLinearAniso15(mMipLinearAniso15); - mScript.set_gNearestClamp(mNearestClamp); - } - - private void initProgramRaster() { - mCullBack = ProgramRaster.CULL_BACK(mRS); - mCullFront = ProgramRaster.CULL_FRONT(mRS); - mCullNone = ProgramRaster.CULL_NONE(mRS); - - mScript.set_gCullBack(mCullBack); - mScript.set_gCullFront(mCullFront); - mScript.set_gCullNone(mCullNone); - } - - private void initRS() { - - mScript = new ScriptC_rsbench(mRS, mRes, R.raw.rsbench); - - mMaxModes = mScript.get_gMaxModes(); - - initSamplers(); - initProgramStore(); - initProgramFragment(); - initProgramVertex(); - initFonts(); - loadImages(); - initMesh(); - initProgramRaster(); - initCustomShaders(); - - mRS.bindRootScript(mScript); - } -} - - - diff --git a/libs/rs/java/Samples/src/com/android/samples/RsBenchView.java b/libs/rs/java/Samples/src/com/android/samples/RsBenchView.java deleted file mode 100644 index 0a56668..0000000 --- a/libs/rs/java/Samples/src/com/android/samples/RsBenchView.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * 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. - */ - -package com.android.samples; - -import java.io.Writer; -import java.util.ArrayList; -import java.util.concurrent.Semaphore; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScript; -import android.renderscript.RenderScriptGL; - -import android.content.Context; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; -import android.os.Handler; -import android.os.Message; -import android.util.AttributeSet; -import android.util.Log; -import android.view.Surface; -import android.view.SurfaceHolder; -import android.view.SurfaceView; -import android.view.KeyEvent; -import android.view.MotionEvent; - -public class RsBenchView extends RSSurfaceView { - - public RsBenchView(Context context) { - super(context); - } - - private RenderScriptGL mRS; - private RsBenchRS mRender; - - - public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { - super.surfaceChanged(holder, format, w, h); - if (mRS == null) { - RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig(); - sc.setDepth(16, 24); - mRS = createRenderScriptGL(sc); - mRS.setSurface(holder, w, h); - mRender = new RsBenchRS(); - mRender.init(mRS, getResources(), w, h); - } - } - - @Override - protected void onDetachedFromWindow() { - if (mRS != null) { - mRS = null; - destroyRenderScriptGL(); - } - } - - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - return super.onKeyDown(keyCode, event); - } - - - @Override - public boolean onTouchEvent(MotionEvent ev) { - boolean ret = false; - int act = ev.getAction(); - if (act == ev.ACTION_DOWN) { - mRender.onActionDown((int)ev.getX(), (int)ev.getY()); - ret = true; - } - - return ret; - } -} - - diff --git a/libs/rs/java/Samples/src/com/android/samples/rsbench.rs b/libs/rs/java/Samples/src/com/android/samples/rsbench.rs deleted file mode 100644 index a1368e6..0000000 --- a/libs/rs/java/Samples/src/com/android/samples/rsbench.rs +++ /dev/null @@ -1,789 +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. - -#pragma version(1) - -#pragma rs java_package_name(com.android.samples) - -#include "rs_graphics.rsh" -#include "shader_def.rsh" - -const int gMaxModes = 26; - -rs_program_vertex gProgVertex; -rs_program_fragment gProgFragmentColor; -rs_program_fragment gProgFragmentTexture; - -rs_program_store gProgStoreBlendNoneDepth; -rs_program_store gProgStoreBlendNone; -rs_program_store gProgStoreBlendAlpha; -rs_program_store gProgStoreBlendAdd; - -rs_allocation gTexOpaque; -rs_allocation gTexTorus; -rs_allocation gTexTransparent; -rs_allocation gTexChecker; -rs_allocation gTexCube; - -rs_mesh g10by10Mesh; -rs_mesh g100by100Mesh; -rs_mesh gWbyHMesh; -rs_mesh gTorusMesh; - -rs_font gFontSans; -rs_font gFontSerif; -rs_font gFontSerifBold; -rs_font gFontSerifItalic; -rs_font gFontSerifBoldItalic; -rs_font gFontMono; -rs_allocation gTextAlloc; - -int gDisplayMode; - -rs_sampler gLinearClamp; -rs_sampler gLinearWrap; -rs_sampler gMipLinearWrap; -rs_sampler gMipLinearAniso8; -rs_sampler gMipLinearAniso15; -rs_sampler gNearestClamp; - -rs_program_raster gCullBack; -rs_program_raster gCullFront; -rs_program_raster gCullNone; - -// Custom vertex shader compunents -VertexShaderConstants *gVSConstants; -FragentShaderConstants *gFSConstants; -VertexShaderConstants3 *gVSConstPixel; -FragentShaderConstants3 *gFSConstPixel; -// Export these out to easily set the inputs to shader -VertexShaderInputs *gVSInputs; -// Custom shaders we use for lighting -rs_program_vertex gProgVertexCustom; -rs_program_fragment gProgFragmentCustom; -rs_program_vertex gProgVertexPixelLight; -rs_program_vertex gProgVertexPixelLightMove; -rs_program_fragment gProgFragmentPixelLight; -rs_program_vertex gProgVertexCube; -rs_program_fragment gProgFragmentCube; -rs_program_fragment gProgFragmentMultitex; - -float gDt = 0; - -void init() { -} - -static const char *sampleText = "This is a sample of small text for performace"; -// Offsets for multiple layer of text -static int textOffsets[] = { 0, 0, -5, -5, 5, 5, -8, -8, 8, 8}; -static float textColors[] = {1.0f, 1.0f, 1.0f, 1.0f, - 0.5f, 0.7f, 0.5f, 1.0f, - 0.7f, 0.5f, 0.5f, 1.0f, - 0.5f, 0.5f, 0.7f, 1.0f, - 0.5f, 0.6f, 0.7f, 1.0f, -}; - -static void displayFontSamples(int fillNum) { - - rs_font fonts[5]; - rsSetObject(&fonts[0], gFontSans); - rsSetObject(&fonts[1], gFontSerif); - rsSetObject(&fonts[2], gFontSerifBold); - rsSetObject(&fonts[3], gFontSerifBoldItalic); - rsSetObject(&fonts[4], gFontSans); - - uint width = rsgGetWidth(); - uint height = rsgGetHeight(); - int left = 0, right = 0, top = 0, bottom = 0; - rsgMeasureText(sampleText, &left, &right, &top, &bottom); - - int textHeight = top - bottom; - int textWidth = right - left; - int numVerticalLines = height / textHeight; - int yPos = top; - - int xOffset = 0, yOffset = 0; - for(int fillI = 0; fillI < fillNum; fillI ++) { - rsgBindFont(fonts[fillI]); - xOffset = textOffsets[fillI * 2]; - yOffset = textOffsets[fillI * 2 + 1]; - float *colPtr = textColors + fillI * 4; - rsgFontColor(colPtr[0], colPtr[1], colPtr[2], colPtr[3]); - for (int h = 0; h < 4; h ++) { - yPos = top + yOffset; - for (int v = 0; v < numVerticalLines; v ++) { - rsgDrawText(sampleText, xOffset + textWidth * h, yPos); - yPos += textHeight; - } - } - } - - for (int i = 0; i < 5; i ++) { - rsClearObject(&fonts[i]); - } -} - -static void bindProgramVertexOrtho() { - // Default vertex sahder - rsgBindProgramVertex(gProgVertex); - // Setup the projection matrix - rs_matrix4x4 proj; - rsMatrixLoadOrtho(&proj, 0, rsgGetWidth(), rsgGetHeight(), 0, -500, 500); - rsgProgramVertexLoadProjectionMatrix(&proj); -} - -static void displaySingletexFill(bool blend, int quadCount) { - bindProgramVertexOrtho(); - rs_matrix4x4 matrix; - rsMatrixLoadIdentity(&matrix); - rsgProgramVertexLoadModelMatrix(&matrix); - - // Fragment shader with texture - if (!blend) { - rsgBindProgramStore(gProgStoreBlendNone); - } else { - rsgBindProgramStore(gProgStoreBlendAlpha); - } - rsgBindProgramFragment(gProgFragmentTexture); - rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp); - rsgBindTexture(gProgFragmentTexture, 0, gTexOpaque); - - for (int i = 0; i < quadCount; i ++) { - float startX = 10 * i, startY = 10 * i; - float width = rsgGetWidth() - startX, height = rsgGetHeight() - startY; - rsgDrawQuadTexCoords(startX, startY, 0, 0, 0, - startX, startY + height, 0, 0, 1, - startX + width, startY + height, 0, 1, 1, - startX + width, startY, 0, 1, 0); - } -} - -static void displayBlendingSamples() { - int i; - - bindProgramVertexOrtho(); - rs_matrix4x4 matrix; - rsMatrixLoadIdentity(&matrix); - rsgProgramVertexLoadModelMatrix(&matrix); - - rsgBindProgramFragment(gProgFragmentColor); - - rsgBindProgramStore(gProgStoreBlendNone); - for (i = 0; i < 3; i ++) { - float iPlusOne = (float)(i + 1); - rsgProgramFragmentConstantColor(gProgFragmentColor, - 0.1f*iPlusOne, 0.2f*iPlusOne, 0.3f*iPlusOne, 1); - float yPos = 150 * (float)i; - rsgDrawRect(0, yPos, 200, yPos + 200, 0); - } - - rsgBindProgramStore(gProgStoreBlendAlpha); - for (i = 0; i < 3; i ++) { - float iPlusOne = (float)(i + 1); - rsgProgramFragmentConstantColor(gProgFragmentColor, - 0.2f*iPlusOne, 0.3f*iPlusOne, 0.1f*iPlusOne, 0.5); - float yPos = 150 * (float)i; - rsgDrawRect(150, yPos, 350, yPos + 200, 0); - } - - rsgBindProgramStore(gProgStoreBlendAdd); - for (i = 0; i < 3; i ++) { - float iPlusOne = (float)(i + 1); - rsgProgramFragmentConstantColor(gProgFragmentColor, - 0.3f*iPlusOne, 0.1f*iPlusOne, 0.2f*iPlusOne, 0.5); - float yPos = 150 * (float)i; - rsgDrawRect(300, yPos, 500, yPos + 200, 0); - } - - - rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f); - rsgBindFont(gFontMono); - rsgDrawText("No Blending", 10, 50); - rsgDrawText("Alpha Blending", 160, 150); - rsgDrawText("Additive Blending", 320, 250); - -} - -static void displayMeshSamples(int meshNum) { - - bindProgramVertexOrtho(); - rs_matrix4x4 matrix; - rsMatrixLoadTranslate(&matrix, rsgGetWidth()/2, rsgGetHeight()/2, 0); - rsgProgramVertexLoadModelMatrix(&matrix); - - // Fragment shader with texture - rsgBindProgramStore(gProgStoreBlendNone); - rsgBindProgramFragment(gProgFragmentTexture); - rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp); - rsgBindTexture(gProgFragmentTexture, 0, gTexOpaque); - - if (meshNum == 0) { - rsgDrawMesh(g10by10Mesh); - } else if (meshNum == 1) { - rsgDrawMesh(g100by100Mesh); - } else if (meshNum == 2) { - rsgDrawMesh(gWbyHMesh); - } -} - -static void displayTextureSamplers() { - - bindProgramVertexOrtho(); - rs_matrix4x4 matrix; - rsMatrixLoadIdentity(&matrix); - rsgProgramVertexLoadModelMatrix(&matrix); - - // Fragment shader with texture - rsgBindProgramStore(gProgStoreBlendNone); - rsgBindProgramFragment(gProgFragmentTexture); - rsgBindTexture(gProgFragmentTexture, 0, gTexOpaque); - - // Linear clamp - rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp); - float startX = 0, startY = 0; - float width = 300, height = 300; - rsgDrawQuadTexCoords(startX, startY, 0, 0, 0, - startX, startY + height, 0, 0, 1.1, - startX + width, startY + height, 0, 1.1, 1.1, - startX + width, startY, 0, 1.1, 0); - - // Linear Wrap - rsgBindSampler(gProgFragmentTexture, 0, gLinearWrap); - startX = 0; startY = 300; - width = 300; height = 300; - rsgDrawQuadTexCoords(startX, startY, 0, 0, 0, - startX, startY + height, 0, 0, 1.1, - startX + width, startY + height, 0, 1.1, 1.1, - startX + width, startY, 0, 1.1, 0); - - // Nearest - rsgBindSampler(gProgFragmentTexture, 0, gNearestClamp); - startX = 300; startY = 0; - width = 300; height = 300; - rsgDrawQuadTexCoords(startX, startY, 0, 0, 0, - startX, startY + height, 0, 0, 1.1, - startX + width, startY + height, 0, 1.1, 1.1, - startX + width, startY, 0, 1.1, 0); - - rsgBindSampler(gProgFragmentTexture, 0, gMipLinearWrap); - startX = 300; startY = 300; - width = 300; height = 300; - rsgDrawQuadTexCoords(startX, startY, 0, 0, 0, - startX, startY + height, 0, 0, 1.5, - startX + width, startY + height, 0, 1.5, 1.5, - startX + width, startY, 0, 1.5, 0); - - rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f); - rsgBindFont(gFontMono); - rsgDrawText("Filtering: linear clamp", 10, 290); - rsgDrawText("Filtering: linear wrap", 10, 590); - rsgDrawText("Filtering: nearest clamp", 310, 290); - rsgDrawText("Filtering: miplinear wrap", 310, 590); -} - -static float gTorusRotation = 0; -static void updateModelMatrix(rs_matrix4x4 *matrix, void *buffer) { - if (buffer == 0) { - rsgProgramVertexLoadModelMatrix(matrix); - } else { - rsgAllocationSyncAll(rsGetAllocation(buffer)); - } -} - -static void drawToruses(int numMeshes, rs_matrix4x4 *matrix, void *buffer) { - - if (numMeshes == 1) { - rsMatrixLoadTranslate(matrix, 0.0f, 0.0f, -7.5f); - rsMatrixRotate(matrix, gTorusRotation, 1.0f, 0.0f, 0.0f); - updateModelMatrix(matrix, buffer); - rsgDrawMesh(gTorusMesh); - return; - } - - if (numMeshes == 2) { - rsMatrixLoadTranslate(matrix, -1.6f, 0.0f, -7.5f); - rsMatrixRotate(matrix, gTorusRotation, 1.0f, 0.0f, 0.0f); - updateModelMatrix(matrix, buffer); - rsgDrawMesh(gTorusMesh); - - rsMatrixLoadTranslate(matrix, 1.6f, 0.0f, -7.5f); - rsMatrixRotate(matrix, gTorusRotation, 1.0f, 0.0f, 0.0f); - updateModelMatrix(matrix, buffer); - rsgDrawMesh(gTorusMesh); - return; - } - - float startX = -5.0f; - float startY = -1.5f; - float startZ = -15.0f; - float dist = 3.2f; - - for (int h = 0; h < 4; h ++) { - for (int v = 0; v < 2; v ++) { - // Position our model on the screen - rsMatrixLoadTranslate(matrix, startX + dist * h, startY + dist * v, startZ); - rsMatrixRotate(matrix, gTorusRotation, 1.0f, 0.0f, 0.0f); - updateModelMatrix(matrix, buffer); - rsgDrawMesh(gTorusMesh); - } - } -} - - -// Quick hack to get some geometry numbers -static void displaySimpleGeoSamples(bool useTexture, int numMeshes) { - rsgBindProgramVertex(gProgVertex); - rsgBindProgramRaster(gCullBack); - // Setup the projection matrix with 30 degree field of view - rs_matrix4x4 proj; - float aspect = (float)rsgGetWidth() / (float)rsgGetHeight(); - rsMatrixLoadPerspective(&proj, 30.0f, aspect, 0.1f, 100.0f); - rsgProgramVertexLoadProjectionMatrix(&proj); - - // Fragment shader with texture - rsgBindProgramStore(gProgStoreBlendNoneDepth); - if (useTexture) { - rsgBindProgramFragment(gProgFragmentTexture); - } else { - rsgBindProgramFragment(gProgFragmentColor); - rsgProgramFragmentConstantColor(gProgFragmentColor, 0.1, 0.7, 0.1, 1); - } - rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp); - rsgBindTexture(gProgFragmentTexture, 0, gTexTorus); - - // Apply a rotation to our mesh - gTorusRotation += 50.0f * gDt; - if (gTorusRotation > 360.0f) { - gTorusRotation -= 360.0f; - } - - rs_matrix4x4 matrix; - drawToruses(numMeshes, &matrix, 0); -} - -float gLight0Rotation = 0; -float gLight1Rotation = 0; - -static void setupCustomShaderLights() { - float4 light0Pos = {-5.0f, 5.0f, -10.0f, 1.0f}; - float4 light1Pos = {2.0f, 5.0f, 15.0f, 1.0f}; - float4 light0DiffCol = {0.9f, 0.7f, 0.7f, 1.0f}; - float4 light0SpecCol = {0.9f, 0.6f, 0.6f, 1.0f}; - float4 light1DiffCol = {0.5f, 0.5f, 0.9f, 1.0f}; - float4 light1SpecCol = {0.5f, 0.5f, 0.9f, 1.0f}; - - gLight0Rotation += 50.0f * gDt; - if (gLight0Rotation > 360.0f) { - gLight0Rotation -= 360.0f; - } - gLight1Rotation -= 50.0f * gDt; - if (gLight1Rotation > 360.0f) { - gLight1Rotation -= 360.0f; - } - - rs_matrix4x4 l0Mat; - rsMatrixLoadRotate(&l0Mat, gLight0Rotation, 1.0f, 0.0f, 0.0f); - light0Pos = rsMatrixMultiply(&l0Mat, light0Pos); - rs_matrix4x4 l1Mat; - rsMatrixLoadRotate(&l1Mat, gLight1Rotation, 0.0f, 0.0f, 1.0f); - light1Pos = rsMatrixMultiply(&l1Mat, light1Pos); - - // Set light 0 properties - gVSConstants->light0_Posision = light0Pos; - gVSConstants->light0_Diffuse = 1.0f; - gVSConstants->light0_Specular = 0.5f; - gVSConstants->light0_CosinePower = 10.0f; - // Set light 1 properties - gVSConstants->light1_Posision = light1Pos; - gVSConstants->light1_Diffuse = 1.0f; - gVSConstants->light1_Specular = 0.7f; - gVSConstants->light1_CosinePower = 25.0f; - rsgAllocationSyncAll(rsGetAllocation(gVSConstants)); - - // Update fragment shader constants - // Set light 0 colors - gFSConstants->light0_DiffuseColor = light0DiffCol; - gFSConstants->light0_SpecularColor = light0SpecCol; - // Set light 1 colors - gFSConstants->light1_DiffuseColor = light1DiffCol; - gFSConstants->light1_SpecularColor = light1SpecCol; - rsgAllocationSyncAll(rsGetAllocation(gFSConstants)); - - // Set light 0 properties for per pixel lighting - gFSConstPixel->light0_Posision = light0Pos; - gFSConstPixel->light0_Diffuse = 1.0f; - gFSConstPixel->light0_Specular = 0.5f; - gFSConstPixel->light0_CosinePower = 10.0f; - gFSConstPixel->light0_DiffuseColor = light0DiffCol; - gFSConstPixel->light0_SpecularColor = light0SpecCol; - // Set light 1 properties - gFSConstPixel->light1_Posision = light1Pos; - gFSConstPixel->light1_Diffuse = 1.0f; - gFSConstPixel->light1_Specular = 0.7f; - gFSConstPixel->light1_CosinePower = 25.0f; - gFSConstPixel->light1_DiffuseColor = light1DiffCol; - gFSConstPixel->light1_SpecularColor = light1SpecCol; - rsgAllocationSyncAll(rsGetAllocation(gFSConstPixel)); -} - -static void displayCustomShaderSamples(int numMeshes) { - - // Update vertex shader constants - // Load model matrix - // Apply a rotation to our mesh - gTorusRotation += 50.0f * gDt; - if (gTorusRotation > 360.0f) { - gTorusRotation -= 360.0f; - } - - // Setup the projection matrix - float aspect = (float)rsgGetWidth() / (float)rsgGetHeight(); - rsMatrixLoadPerspective(&gVSConstants->proj, 30.0f, aspect, 0.1f, 100.0f); - setupCustomShaderLights(); - - rsgBindProgramVertex(gProgVertexCustom); - - // Fragment shader with texture - rsgBindProgramStore(gProgStoreBlendNoneDepth); - rsgBindProgramFragment(gProgFragmentCustom); - rsgBindSampler(gProgFragmentCustom, 0, gLinearClamp); - rsgBindTexture(gProgFragmentCustom, 0, gTexTorus); - - // Use back face culling - rsgBindProgramRaster(gCullBack); - - drawToruses(numMeshes, &gVSConstants->model, gVSConstants); -} - -static void displayPixelLightSamples(int numMeshes, bool heavyVertex) { - - // Update vertex shader constants - // Load model matrix - // Apply a rotation to our mesh - gTorusRotation += 30.0f * gDt; - if (gTorusRotation > 360.0f) { - gTorusRotation -= 360.0f; - } - - gVSConstPixel->time = rsUptimeMillis()*0.005; - - // Setup the projection matrix - float aspect = (float)rsgGetWidth() / (float)rsgGetHeight(); - rsMatrixLoadPerspective(&gVSConstPixel->proj, 30.0f, aspect, 0.1f, 100.0f); - setupCustomShaderLights(); - - if (heavyVertex) { - rsgBindProgramVertex(gProgVertexPixelLightMove); - } else { - rsgBindProgramVertex(gProgVertexPixelLight); - } - - // Fragment shader with texture - rsgBindProgramStore(gProgStoreBlendNoneDepth); - rsgBindProgramFragment(gProgFragmentPixelLight); - rsgBindSampler(gProgFragmentPixelLight, 0, gLinearClamp); - rsgBindTexture(gProgFragmentPixelLight, 0, gTexTorus); - - // Use back face culling - rsgBindProgramRaster(gCullBack); - - drawToruses(numMeshes, &gVSConstPixel->model, gVSConstPixel); -} - -static void displayMultitextureSample(bool blend, int quadCount) { - bindProgramVertexOrtho(); - rs_matrix4x4 matrix; - rsMatrixLoadIdentity(&matrix); - rsgProgramVertexLoadModelMatrix(&matrix); - - // Fragment shader with texture - if (!blend) { - rsgBindProgramStore(gProgStoreBlendNone); - } else { - rsgBindProgramStore(gProgStoreBlendAlpha); - } - rsgBindProgramFragment(gProgFragmentMultitex); - rsgBindSampler(gProgFragmentMultitex, 0, gLinearClamp); - rsgBindSampler(gProgFragmentMultitex, 1, gLinearWrap); - rsgBindSampler(gProgFragmentMultitex, 2, gLinearClamp); - rsgBindTexture(gProgFragmentMultitex, 0, gTexChecker); - rsgBindTexture(gProgFragmentMultitex, 1, gTexTorus); - rsgBindTexture(gProgFragmentMultitex, 2, gTexTransparent); - - for (int i = 0; i < quadCount; i ++) { - float startX = 10 * i, startY = 10 * i; - float width = rsgGetWidth() - startX, height = rsgGetHeight() - startY; - rsgDrawQuadTexCoords(startX, startY, 0, 0, 0, - startX, startY + height, 0, 0, 1, - startX + width, startY + height, 0, 1, 1, - startX + width, startY, 0, 1, 0); - } -} - -static float gAnisoTime = 0.0f; -static uint anisoMode = 0; -static void displayAnisoSample() { - - gAnisoTime += gDt; - - rsgBindProgramVertex(gProgVertex); - float aspect = (float)rsgGetWidth() / (float)rsgGetHeight(); - rs_matrix4x4 proj; - rsMatrixLoadPerspective(&proj, 30.0f, aspect, 0.1f, 100.0f); - rsgProgramVertexLoadProjectionMatrix(&proj); - - rs_matrix4x4 matrix; - // Fragment shader with texture - rsgBindProgramStore(gProgStoreBlendNone); - rsgBindProgramFragment(gProgFragmentTexture); - rsMatrixLoadTranslate(&matrix, 0.0f, 0.0f, -10.0f); - rsMatrixRotate(&matrix, -80, 1.0f, 0.0f, 0.0f); - rsgProgramVertexLoadModelMatrix(&matrix); - - rsgBindProgramRaster(gCullNone); - - rsgBindTexture(gProgFragmentTexture, 0, gTexChecker); - - if (gAnisoTime >= 5.0f) { - gAnisoTime = 0.0f; - anisoMode ++; - anisoMode = anisoMode % 3; - } - - if (anisoMode == 0) { - rsgBindSampler(gProgFragmentTexture, 0, gMipLinearAniso8); - } else if (anisoMode == 1) { - rsgBindSampler(gProgFragmentTexture, 0, gMipLinearAniso15); - } else { - rsgBindSampler(gProgFragmentTexture, 0, gMipLinearWrap); - } - - float startX = -15; - float startY = -15; - float width = 30; - float height = 30; - rsgDrawQuadTexCoords(startX, startY, 0, 0, 0, - startX, startY + height, 0, 0, 10, - startX + width, startY + height, 0, 10, 10, - startX + width, startY, 0, 10, 0); - - rsgBindProgramRaster(gCullBack); - - rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f); - rsgBindFont(gFontMono); - if (anisoMode == 0) { - rsgDrawText("Anisotropic filtering 8", 10, 40); - } else if (anisoMode == 1) { - rsgDrawText("Anisotropic filtering 15", 10, 40); - } else { - rsgDrawText("Miplinear filtering", 10, 40); - } -} - -static bool checkInit() { - - static int countdown = 5; - - if (countdown == 0) { - gDt = 0; - countdown --; - } - // Perform all the uploads so we only measure rendered time - if(countdown > 1) { - displayFontSamples(5); - displaySingletexFill(true, 3); - displayBlendingSamples(); - displayMeshSamples(0); - displayMeshSamples(1); - displayMeshSamples(2); - displayTextureSamplers(); - displayMultitextureSample(true, 5); - displayAnisoSample(); - displayPixelLightSamples(1, false); - displayPixelLightSamples(1, true); - countdown --; - rsgClearColor(0.2f, 0.2f, 0.2f, 0.0f); - - // Now use text metrics to center the text - uint width = rsgGetWidth(); - uint height = rsgGetHeight(); - int left = 0, right = 0, top = 0, bottom = 0; - - rsgFontColor(0.9f, 0.9f, 0.95f, 1.0f); - rsgBindFont(gFontSerifBoldItalic); - - const char* text = "Initializing"; - rsgMeasureText(text, &left, &right, &top, &bottom); - int centeredPosX = width / 2 - (right - left) / 2; - int centeredPosY = height / 2 - (top - bottom) / 2; - rsgDrawText(text, centeredPosX, centeredPosY); - - return false; - } - - return true; -} - -static int frameCount = 0; -static int totalFramesRendered = 0; -static int benchMode = 0; - -#define testTime 5.0f -static float curTestTime = testTime; - -static const char *testNames[] = { - "Finished text fill 1", - "Finished text fill 2", - "Finished text fill 3", - "Finished text fill 4", - "Finished text fill 5", - "Finished 25.6k geo flat color", - "Finished 51.2k geo flat color", - "Finished 204.8k geo raster load flat color", - "Finished 25.6k geo texture", - "Finished 51.2k geo texture", - "Finished 204.8k geo raster load texture", - "Finished full screen mesh 10 by 10", - "Finished full screen mesh 100 by 100", - "Finished full screen mesh W / 4 by H / 4", - "Finished 25.6k geo heavy vertex", - "Finished 51.2k geo heavy vertex", - "Finished 204.8k geo raster load heavy vertex", - "Finished singletexture 5x fill", - "Finished 3tex multitexture 5x fill", - "Finished blend singletexture 5x fill", - "Finished blend 3tex multitexture 5x fill", - "Finished 25.6k geo heavy fragment", - "Finished 51.2k geo heavy fragment", - "Finished 204.8k geo raster load heavy fragment", - "Finished 25.6k geo heavy fragment, heavy vertex", - "Finished 51.2k geo heavy fragment, heavy vertex", - "Finished 204.8k geo raster load heavy fragment, heavy vertex", -}; - -int root(int launchID) { - - gDt = rsGetDt(); - - rsgClearColor(0.2f, 0.2f, 0.2f, 0.0f); - rsgClearDepth(1.0f); - - if(!checkInit()) { - return 1; - } - - curTestTime -= gDt; - if(curTestTime < 0.0f) { - float fps = (float)(frameCount) / (testTime - curTestTime); - rsDebug(testNames[benchMode], fps); - benchMode ++; - curTestTime = testTime; - totalFramesRendered += frameCount; - frameCount = 0; - gTorusRotation = 0; - - if (benchMode > gMaxModes) { - benchMode = 0; - } - } - - switch (benchMode) { - case 0: - displayFontSamples(1); - break; - case 1: - displayFontSamples(2); - break; - case 2: - displayFontSamples(3); - break; - case 3: - displayFontSamples(4); - break; - case 4: - displayFontSamples(5); - break; - case 5: - displaySimpleGeoSamples(false, 1); - break; - case 6: - displaySimpleGeoSamples(false, 2); - break; - case 7: - displaySimpleGeoSamples(false, 8); - break; - case 8: - displaySimpleGeoSamples(true, 1); - break; - case 9: - displaySimpleGeoSamples(true, 2); - break; - case 10: - displaySimpleGeoSamples(true, 8); - break; - case 11: - displayMeshSamples(0); - break; - case 12: - displayMeshSamples(1); - break; - case 13: - displayMeshSamples(2); - break; - case 14: - displayCustomShaderSamples(1); - break; - case 15: - displayCustomShaderSamples(2); - break; - case 16: - displayCustomShaderSamples(8); - break; - case 17: - displaySingletexFill(false, 5); - break; - case 18: - displayMultitextureSample(false, 5); - break; - case 19: - displaySingletexFill(true, 5); - break; - case 20: - displayMultitextureSample(true, 5); - break; - case 21: - displayPixelLightSamples(1, false); - break; - case 22: - displayPixelLightSamples(2, false); - break; - case 23: - displayPixelLightSamples(8, false); - break; - case 24: - displayPixelLightSamples(1, true); - break; - case 25: - displayPixelLightSamples(2, true); - break; - case 26: - displayPixelLightSamples(8, true); - break; - - } - - frameCount ++; - - return 1; -} diff --git a/libs/rs/java/tests/Android.mk b/libs/rs/java/tests/Android.mk deleted file mode 100644 index 6c992d5..0000000 --- a/libs/rs/java/tests/Android.mk +++ /dev/null @@ -1,30 +0,0 @@ -# -# 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. -# - -ifneq ($(TARGET_SIMULATOR),true) - -LOCAL_PATH := $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_MODULE_TAGS := optional - -LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src) - -LOCAL_PACKAGE_NAME := RSTest - -include $(BUILD_PACKAGE) - -endif diff --git a/libs/rs/java/tests/AndroidManifest.xml b/libs/rs/java/tests/AndroidManifest.xml deleted file mode 100644 index b660398..0000000 --- a/libs/rs/java/tests/AndroidManifest.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.android.rs.test"> - <application - android:label="_RS_Test" - android:icon="@drawable/test_pattern"> - <activity android:name="RSTest" - android:screenOrientation="portrait"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - </application> -</manifest> diff --git a/libs/rs/java/tests/res/drawable/test_pattern.png b/libs/rs/java/tests/res/drawable/test_pattern.png Binary files differdeleted file mode 100644 index e7d1455..0000000 --- a/libs/rs/java/tests/res/drawable/test_pattern.png +++ /dev/null diff --git a/libs/rs/java/tests/src/com/android/rs/test/RSTest.java b/libs/rs/java/tests/src/com/android/rs/test/RSTest.java deleted file mode 100644 index 6b8fa6b..0000000 --- a/libs/rs/java/tests/src/com/android/rs/test/RSTest.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * 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. - */ - -package com.android.rs.test; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScript; - -import android.app.Activity; -import android.content.res.Configuration; -import android.os.Bundle; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import android.provider.Settings.System; -import android.util.Config; -import android.util.Log; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.Window; -import android.widget.Button; -import android.widget.ListView; - -import java.lang.Runtime; - -public class RSTest extends Activity { - //EventListener mListener = new EventListener(); - - private static final String LOG_TAG = "libRS_jni"; - private static final boolean DEBUG = false; - private static final boolean LOG_ENABLED = DEBUG ? Config.LOGD : Config.LOGV; - - private RSTestView mView; - - // get the current looper (from your Activity UI thread for instance - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - - // Create our Preview view and set it as the content of our - // Activity - mView = new RSTestView(this); - setContentView(mView); - } - - @Override - protected void onResume() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity loses focus - super.onResume(); - mView.resume(); - } - - @Override - protected void onPause() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity loses focus - super.onPause(); - mView.pause(); - } - - static void log(String message) { - if (LOG_ENABLED) { - Log.v(LOG_TAG, message); - } - } - - -} diff --git a/libs/rs/java/tests/src/com/android/rs/test/RSTestCore.java b/libs/rs/java/tests/src/com/android/rs/test/RSTestCore.java deleted file mode 100644 index 541bf22..0000000 --- a/libs/rs/java/tests/src/com/android/rs/test/RSTestCore.java +++ /dev/null @@ -1,206 +0,0 @@ -/* - * 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. - */ - -package com.android.rs.test; - -import android.content.Context; -import android.content.res.Resources; -import android.renderscript.*; -import android.util.Log; -import java.util.ArrayList; -import java.util.ListIterator; -import java.util.Timer; -import java.util.TimerTask; - - -public class RSTestCore { - int mWidth; - int mHeight; - Context mCtx; - - public RSTestCore(Context ctx) { - mCtx = ctx; - } - - private Resources mRes; - private RenderScriptGL mRS; - - private Font mFont; - ScriptField_ListAllocs_s mListAllocs; - int mLastX; - int mLastY; - private ScriptC_rslist mScript; - - private ArrayList<UnitTest> unitTests; - private ListIterator<UnitTest> test_iter; - private UnitTest activeTest; - private boolean stopTesting; - - /* Periodic timer for ensuring future tests get scheduled */ - private Timer mTimer; - public static final int RS_TIMER_PERIOD = 100; - - public void init(RenderScriptGL rs, Resources res, int width, int height) { - mRS = rs; - mRes = res; - mWidth = width; - mHeight = height; - stopTesting = false; - - mScript = new ScriptC_rslist(mRS, mRes, R.raw.rslist); - - unitTests = new ArrayList<UnitTest>(); - - unitTests.add(new UT_primitives(this, mRes, mCtx)); - unitTests.add(new UT_rsdebug(this, mRes, mCtx)); - unitTests.add(new UT_rstime(this, mRes, mCtx)); - unitTests.add(new UT_rstypes(this, mRes, mCtx)); - unitTests.add(new UT_math(this, mRes, mCtx)); - unitTests.add(new UT_fp_mad(this, mRes, mCtx)); - /* - unitTests.add(new UnitTest(null, "<Pass>", 1)); - unitTests.add(new UnitTest()); - unitTests.add(new UnitTest(null, "<Fail>", -1)); - - for (int i = 0; i < 20; i++) { - unitTests.add(new UnitTest(null, "<Pass>", 1)); - } - */ - - UnitTest [] uta = new UnitTest[unitTests.size()]; - uta = unitTests.toArray(uta); - - mListAllocs = new ScriptField_ListAllocs_s(mRS, uta.length); - for (int i = 0; i < uta.length; i++) { - ScriptField_ListAllocs_s.Item listElem = new ScriptField_ListAllocs_s.Item(); - listElem.text = Allocation.createFromString(mRS, uta[i].name, Allocation.USAGE_SCRIPT); - listElem.result = uta[i].result; - mListAllocs.set(listElem, i, false); - uta[i].setItem(listElem); - } - - mListAllocs.copyAll(); - - mScript.bind_gList(mListAllocs); - - mFont = Font.create(mRS, mRes, "serif", Font.Style.BOLD, 8); - mScript.set_gFont(mFont); - - mRS.bindRootScript(mScript); - - test_iter = unitTests.listIterator(); - refreshTestResults(); /* Kick off the first test */ - - TimerTask pTask = new TimerTask() { - public void run() { - refreshTestResults(); - } - }; - - mTimer = new Timer(); - mTimer.schedule(pTask, RS_TIMER_PERIOD, RS_TIMER_PERIOD); - } - - public void checkAndRunNextTest() { - if (activeTest != null) { - if (!activeTest.isAlive()) { - /* Properly clean up on our last test */ - try { - activeTest.join(); - } - catch (InterruptedException e) { - } - activeTest = null; - } - } - - if (!stopTesting && activeTest == null) { - if (test_iter.hasNext()) { - activeTest = test_iter.next(); - activeTest.start(); - /* This routine will only get called once when a new test - * should start running. The message handler in UnitTest.java - * ensures this. */ - } - else { - if (mTimer != null) { - mTimer.cancel(); - mTimer.purge(); - mTimer = null; - } - } - } - } - - public void refreshTestResults() { - checkAndRunNextTest(); - - if (mListAllocs != null && mScript != null && mRS != null) { - mListAllocs.copyAll(); - - mScript.bind_gList(mListAllocs); - mRS.bindRootScript(mScript); - } - } - - public void cleanup() { - stopTesting = true; - UnitTest t = activeTest; - - /* Stop periodic refresh of testing */ - if (mTimer != null) { - mTimer.cancel(); - mTimer.purge(); - mTimer = null; - } - - /* Wait to exit until we finish the current test */ - if (t != null) { - try { - t.join(); - } - catch (InterruptedException e) { - } - t = null; - } - - } - - public void newTouchPosition(float x, float y, float pressure, int id) { - } - - public void onActionDown(int x, int y) { - mScript.set_gDY(0.0f); - mLastX = x; - mLastY = y; - refreshTestResults(); - } - - public void onActionMove(int x, int y) { - int dx = mLastX - x; - int dy = mLastY - y; - - if (Math.abs(dy) <= 2) { - dy = 0; - } - - mScript.set_gDY(dy); - - mLastX = x; - mLastY = y; - refreshTestResults(); - } -} diff --git a/libs/rs/java/tests/src/com/android/rs/test/RSTestView.java b/libs/rs/java/tests/src/com/android/rs/test/RSTestView.java deleted file mode 100644 index 368f286..0000000 --- a/libs/rs/java/tests/src/com/android/rs/test/RSTestView.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * 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. - */ - -package com.android.rs.test; - -import java.io.Writer; -import java.util.ArrayList; -import java.util.concurrent.Semaphore; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScript; -import android.renderscript.RenderScriptGL; - -import android.content.Context; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; -import android.os.Handler; -import android.os.Message; -import android.util.AttributeSet; -import android.util.Log; -import android.view.Surface; -import android.view.SurfaceHolder; -import android.view.SurfaceView; -import android.view.KeyEvent; -import android.view.MotionEvent; - -public class RSTestView extends RSSurfaceView { - - private Context mCtx; - - public RSTestView(Context context) { - super(context); - mCtx = context; - //setFocusable(true); - } - - private RenderScriptGL mRS; - private RSTestCore mRender; - - public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { - super.surfaceChanged(holder, format, w, h); - if (mRS == null) { - RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig(); - mRS = createRenderScriptGL(sc); - mRS.setSurface(holder, w, h); - mRender = new RSTestCore(mCtx); - mRender.init(mRS, getResources(), w, h); - } - } - - @Override - protected void onDetachedFromWindow() { - if(mRS != null) { - mRender.cleanup(); - mRS = null; - destroyRenderScriptGL(); - } - } - - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) - { - return super.onKeyDown(keyCode, event); - } - - @Override - public boolean onTouchEvent(MotionEvent ev) - { - boolean ret = false; - int act = ev.getAction(); - if (act == ev.ACTION_DOWN) { - mRender.onActionDown((int)ev.getX(), (int)ev.getY()); - ret = true; - } - else if (act == ev.ACTION_MOVE) { - mRender.onActionMove((int)ev.getX(), (int)ev.getY()); - ret = true; - } - - return ret; - } -} diff --git a/libs/rs/java/tests/src/com/android/rs/test/UT_fp_mad.java b/libs/rs/java/tests/src/com/android/rs/test/UT_fp_mad.java deleted file mode 100644 index f2c91af..0000000 --- a/libs/rs/java/tests/src/com/android/rs/test/UT_fp_mad.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2010 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.test; - -import android.content.Context; -import android.content.res.Resources; -import android.renderscript.*; - -public class UT_fp_mad extends UnitTest { - private Resources mRes; - - protected UT_fp_mad(RSTestCore rstc, Resources res, Context ctx) { - super(rstc, "Fp_Mad", ctx); - mRes = res; - } - - public void run() { - RenderScript pRS = RenderScript.create(mCtx); - ScriptC_fp_mad s = new ScriptC_fp_mad(pRS, mRes, R.raw.fp_mad); - pRS.setMessageHandler(mRsMessage); - s.invoke_fp_mad_test(0, 0); - pRS.finish(); - waitForMessage(); - pRS.destroy(); - } -} diff --git a/libs/rs/java/tests/src/com/android/rs/test/UT_math.java b/libs/rs/java/tests/src/com/android/rs/test/UT_math.java deleted file mode 100644 index bf133be..0000000 --- a/libs/rs/java/tests/src/com/android/rs/test/UT_math.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2010 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.test; - -import android.content.Context; -import android.content.res.Resources; -import android.renderscript.*; - -public class UT_math extends UnitTest { - private Resources mRes; - - protected UT_math(RSTestCore rstc, Resources res, Context ctx) { - super(rstc, "Math", ctx); - mRes = res; - } - - public void run() { - RenderScript pRS = RenderScript.create(mCtx); - ScriptC_math s = new ScriptC_math(pRS, mRes, R.raw.math); - pRS.setMessageHandler(mRsMessage); - s.invoke_math_test(0, 0); - pRS.finish(); - waitForMessage(); - pRS.destroy(); - } -} diff --git a/libs/rs/java/tests/src/com/android/rs/test/UT_primitives.java b/libs/rs/java/tests/src/com/android/rs/test/UT_primitives.java deleted file mode 100644 index b7a65a5..0000000 --- a/libs/rs/java/tests/src/com/android/rs/test/UT_primitives.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright (C) 2010 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.test; - -import android.content.Context; -import android.content.res.Resources; -import android.renderscript.*; - -public class UT_primitives extends UnitTest { - private Resources mRes; - - protected UT_primitives(RSTestCore rstc, Resources res, Context ctx) { - super(rstc, "Primitives", ctx); - mRes = res; - } - - private boolean initializeGlobals(ScriptC_primitives s) { - float pF = s.get_floatTest(); - if (pF != 1.99f) { - return false; - } - s.set_floatTest(2.99f); - - double pD = s.get_doubleTest(); - if (pD != 2.05) { - return false; - } - s.set_doubleTest(3.05); - - byte pC = s.get_charTest(); - if (pC != -8) { - return false; - } - s.set_charTest((byte)-16); - - short pS = s.get_shortTest(); - if (pS != -16) { - return false; - } - s.set_shortTest((short)-32); - - int pI = s.get_intTest(); - if (pI != -32) { - return false; - } - s.set_intTest(-64); - - long pL = s.get_longTest(); - if (pL != 17179869184l) { - return false; - } - s.set_longTest(17179869185l); - - long puL = s.get_ulongTest(); - if (puL != 4611686018427387904L) { - return false; - } - s.set_ulongTest(4611686018427387903L); - - - long pLL = s.get_longlongTest(); - if (pLL != 68719476736L) { - return false; - } - s.set_longlongTest(68719476735L); - - long pu64 = s.get_uint64_tTest(); - if (pu64 != 117179869184l) { - return false; - } - s.set_uint64_tTest(117179869185l); - - return true; - } - - public void run() { - RenderScript pRS = RenderScript.create(mCtx); - ScriptC_primitives s = new ScriptC_primitives(pRS, mRes, R.raw.primitives); - pRS.setMessageHandler(mRsMessage); - if (!initializeGlobals(s)) { - // initializeGlobals failed - result = -1; - } else { - s.invoke_primitives_test(0, 0); - pRS.finish(); - waitForMessage(); - } - pRS.destroy(); - } -} diff --git a/libs/rs/java/tests/src/com/android/rs/test/UT_rsdebug.java b/libs/rs/java/tests/src/com/android/rs/test/UT_rsdebug.java deleted file mode 100644 index 0614b1a..0000000 --- a/libs/rs/java/tests/src/com/android/rs/test/UT_rsdebug.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2010 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.test; - -import android.content.Context; -import android.content.res.Resources; -import android.renderscript.*; - -public class UT_rsdebug extends UnitTest { - private Resources mRes; - - protected UT_rsdebug(RSTestCore rstc, Resources res, Context ctx) { - super(rstc, "rsDebug", ctx); - mRes = res; - } - - public void run() { - RenderScript pRS = RenderScript.create(mCtx); - ScriptC_rsdebug s = new ScriptC_rsdebug(pRS, mRes, R.raw.rsdebug); - pRS.setMessageHandler(mRsMessage); - s.invoke_test_rsdebug(0, 0); - pRS.finish(); - waitForMessage(); - pRS.destroy(); - } -} diff --git a/libs/rs/java/tests/src/com/android/rs/test/UT_rstime.java b/libs/rs/java/tests/src/com/android/rs/test/UT_rstime.java deleted file mode 100644 index f302e1a..0000000 --- a/libs/rs/java/tests/src/com/android/rs/test/UT_rstime.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2010 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.test; - -import android.content.Context; -import android.content.res.Resources; -import android.renderscript.*; - -public class UT_rstime extends UnitTest { - private Resources mRes; - - protected UT_rstime(RSTestCore rstc, Resources res, Context ctx) { - super(rstc, "rsTime", ctx); - mRes = res; - } - - public void run() { - RenderScript pRS = RenderScript.create(mCtx); - ScriptC_rstime s = new ScriptC_rstime(pRS, mRes, R.raw.rstime); - pRS.setMessageHandler(mRsMessage); - s.invoke_test_rstime(0, 0); - pRS.finish(); - waitForMessage(); - pRS.destroy(); - } -} diff --git a/libs/rs/java/tests/src/com/android/rs/test/UT_rstypes.java b/libs/rs/java/tests/src/com/android/rs/test/UT_rstypes.java deleted file mode 100644 index 74211c8..0000000 --- a/libs/rs/java/tests/src/com/android/rs/test/UT_rstypes.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2010 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.test; - -import android.content.Context; -import android.content.res.Resources; -import android.renderscript.*; - -public class UT_rstypes extends UnitTest { - private Resources mRes; - - protected UT_rstypes(RSTestCore rstc, Resources res, Context ctx) { - super(rstc, "rsTypes", ctx); - mRes = res; - } - - public void run() { - RenderScript pRS = RenderScript.create(mCtx); - ScriptC_rstypes s = new ScriptC_rstypes(pRS, mRes, R.raw.rstypes); - pRS.setMessageHandler(mRsMessage); - s.invoke_test_rstypes(0, 0); - pRS.finish(); - waitForMessage(); - pRS.destroy(); - } -} diff --git a/libs/rs/java/tests/src/com/android/rs/test/UnitTest.java b/libs/rs/java/tests/src/com/android/rs/test/UnitTest.java deleted file mode 100644 index a7722c7..0000000 --- a/libs/rs/java/tests/src/com/android/rs/test/UnitTest.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (C) 2010 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.test; -import android.content.Context; -import android.renderscript.RenderScript.RSMessageHandler; -import android.util.Log; - -public class UnitTest extends Thread { - public String name; - public int result; - private ScriptField_ListAllocs_s.Item mItem; - private RSTestCore mRSTC; - private boolean msgHandled; - protected Context mCtx; - - /* These constants must match those in shared.rsh */ - public static final int RS_MSG_TEST_PASSED = 100; - public static final int RS_MSG_TEST_FAILED = 101; - - private static int numTests = 0; - public int testID; - - protected UnitTest(RSTestCore rstc, String n, int initResult, Context ctx) { - super(); - mRSTC = rstc; - name = n; - msgHandled = false; - mCtx = ctx; - result = initResult; - testID = numTests++; - } - - protected UnitTest(RSTestCore rstc, String n, Context ctx) { - this(rstc, n, 0, ctx); - } - - protected UnitTest(RSTestCore rstc, Context ctx) { - this (rstc, "<Unknown>", ctx); - } - - protected UnitTest(Context ctx) { - this (null, ctx); - } - - protected RSMessageHandler mRsMessage = new RSMessageHandler() { - public void run() { - if (result == 0) { - switch (mID) { - case RS_MSG_TEST_PASSED: - result = 1; - break; - case RS_MSG_TEST_FAILED: - result = -1; - break; - default: - android.util.Log.v("RenderScript", "Unit test got unexpected message"); - return; - } - } - - if (mItem != null) { - mItem.result = result; - msgHandled = true; - try { - mRSTC.refreshTestResults(); - } - catch (IllegalStateException e) { - /* Ignore the case where our message receiver has been - disconnected. This happens when we leave the application - before it finishes running all of the unit tests. */ - } - } - } - }; - - public void waitForMessage() { - while (!msgHandled) { - yield(); - } - } - - public void setItem(ScriptField_ListAllocs_s.Item item) { - mItem = item; - } - - public void run() { - /* This method needs to be implemented for each subclass */ - if (mRSTC != null) { - mRSTC.refreshTestResults(); - } - } -} diff --git a/libs/rs/java/tests/src/com/android/rs/test/fp_mad.rs b/libs/rs/java/tests/src/com/android/rs/test/fp_mad.rs deleted file mode 100644 index b6f2b2a..0000000 --- a/libs/rs/java/tests/src/com/android/rs/test/fp_mad.rs +++ /dev/null @@ -1,174 +0,0 @@ -#include "shared.rsh" - -const int TEST_COUNT = 1; - -static float data_f1[1025]; -static float4 data_f4[1025]; - -static void test_mad4(uint32_t index) { - start(); - - float total = 0; - // Do ~1 billion ops - for (int ct=0; ct < 1000 * (1000 / 80); ct++) { - for (int i=0; i < (1000); i++) { - data_f4[i] = (data_f4[i] * 0.02f + - data_f4[i+1] * 0.04f + - data_f4[i+2] * 0.05f + - data_f4[i+3] * 0.1f + - data_f4[i+4] * 0.2f + - data_f4[i+5] * 0.2f + - data_f4[i+6] * 0.1f + - data_f4[i+7] * 0.05f + - data_f4[i+8] * 0.04f + - data_f4[i+9] * 0.02f + 1.f); - } - } - - float time = end(index); - rsDebug("fp_mad4 M ops", 1000.f / time); -} - -static void test_mad(uint32_t index) { - start(); - - float total = 0; - // Do ~1 billion ops - for (int ct=0; ct < 1000 * (1000 / 20); ct++) { - for (int i=0; i < (1000); i++) { - data_f1[i] = (data_f1[i] * 0.02f + - data_f1[i+1] * 0.04f + - data_f1[i+2] * 0.05f + - data_f1[i+3] * 0.1f + - data_f1[i+4] * 0.2f + - data_f1[i+5] * 0.2f + - data_f1[i+6] * 0.1f + - data_f1[i+7] * 0.05f + - data_f1[i+8] * 0.04f + - data_f1[i+9] * 0.02f + 1.f); - } - } - - float time = end(index); - rsDebug("fp_mad M ops", 1000.f / time); -} - -static void test_norm(uint32_t index) { - start(); - - float total = 0; - // Do ~10 M ops - for (int ct=0; ct < 1000 * 10; ct++) { - for (int i=0; i < (1000); i++) { - data_f4[i] = normalize(data_f4[i]); - } - } - - float time = end(index); - rsDebug("fp_norm M ops", 10.f / time); -} - -static void test_sincos4(uint32_t index) { - start(); - - float total = 0; - // Do ~10 M ops - for (int ct=0; ct < 1000 * 10 / 4; ct++) { - for (int i=0; i < (1000); i++) { - data_f4[i] = sin(data_f4[i]) * cos(data_f4[i]); - } - } - - float time = end(index); - rsDebug("fp_sincos4 M ops", 10.f / time); -} - -static void test_sincos(uint32_t index) { - start(); - - float total = 0; - // Do ~10 M ops - for (int ct=0; ct < 1000 * 10; ct++) { - for (int i=0; i < (1000); i++) { - data_f1[i] = sin(data_f1[i]) * cos(data_f1[i]); - } - } - - float time = end(index); - rsDebug("fp_sincos M ops", 10.f / time); -} - -static void test_clamp(uint32_t index) { - start(); - - // Do ~100 M ops - for (int ct=0; ct < 1000 * 100; ct++) { - for (int i=0; i < (1000); i++) { - data_f1[i] = clamp(data_f1[i], -1.f, 1.f); - } - } - - float time = end(index); - rsDebug("fp_clamp M ops", 100.f / time); - - start(); - // Do ~100 M ops - for (int ct=0; ct < 1000 * 100; ct++) { - for (int i=0; i < (1000); i++) { - if (data_f1[i] < -1.f) data_f1[i] = -1.f; - if (data_f1[i] > -1.f) data_f1[i] = 1.f; - } - } - - time = end(index); - rsDebug("fp_clamp ref M ops", 100.f / time); -} - -static void test_clamp4(uint32_t index) { - start(); - - float total = 0; - // Do ~100 M ops - for (int ct=0; ct < 1000 * 100 /4; ct++) { - for (int i=0; i < (1000); i++) { - data_f4[i] = clamp(data_f4[i], -1.f, 1.f); - } - } - - float time = end(index); - rsDebug("fp_clamp4 M ops", 100.f / time); -} - -void fp_mad_test(uint32_t index, int test_num) { - int x; - for (x=0; x < 1025; x++) { - data_f1[x] = (x & 0xf) * 0.1f; - data_f4[x].x = (x & 0xf) * 0.1f; - data_f4[x].y = (x & 0xf0) * 0.1f; - data_f4[x].z = (x & 0x33) * 0.1f; - data_f4[x].w = (x & 0x77) * 0.1f; - } - - test_mad4(index); - test_mad(index); - - for (x=0; x < 1025; x++) { - data_f1[x] = (x & 0xf) * 0.1f + 1.f; - data_f4[x].x = (x & 0xf) * 0.1f + 1.f; - data_f4[x].y = (x & 0xf0) * 0.1f + 1.f; - data_f4[x].z = (x & 0x33) * 0.1f + 1.f; - data_f4[x].w = (x & 0x77) * 0.1f + 1.f; - } - - test_norm(index); - test_sincos4(index); - test_sincos(index); - test_clamp4(index); - test_clamp(index); - - // TODO Actually verify test result accuracy - rsDebug("fp_mad_test PASSED", 0); - rsSendToClientBlocking(RS_MSG_TEST_PASSED); -} - - diff --git a/libs/rs/java/tests/src/com/android/rs/test/math.rs b/libs/rs/java/tests/src/com/android/rs/test/math.rs deleted file mode 100644 index 8cad82b..0000000 --- a/libs/rs/java/tests/src/com/android/rs/test/math.rs +++ /dev/null @@ -1,322 +0,0 @@ -#include "shared.rsh" - -// Testing math library - -volatile float f1; -volatile float2 f2; -volatile float3 f3; -volatile float4 f4; - -volatile int i1; -volatile int2 i2; -volatile int3 i3; -volatile int4 i4; - -volatile uint ui1; -volatile uint2 ui2; -volatile uint3 ui3; -volatile uint4 ui4; - -volatile short s1; -volatile short2 s2; -volatile short3 s3; -volatile short4 s4; - -volatile ushort us1; -volatile ushort2 us2; -volatile ushort3 us3; -volatile ushort4 us4; - -volatile char c1; -volatile char2 c2; -volatile char3 c3; -volatile char4 c4; - -volatile uchar uc1; -volatile uchar2 uc2; -volatile uchar3 uc3; -volatile uchar4 uc4; - -#define TEST_FN_FUNC_FN(fnc) \ - rsDebug("Testing " #fnc, 0); \ - f1 = fnc(f1); \ - f2 = fnc(f2); \ - f3 = fnc(f3); \ - f4 = fnc(f4); - -#define TEST_FN_FUNC_FN_PFN(fnc) \ - rsDebug("Testing " #fnc, 0); \ - f1 = fnc(f1, (float*) &f1); \ - f2 = fnc(f2, (float2*) &f2); \ - f3 = fnc(f3, (float3*) &f3); \ - f4 = fnc(f4, (float4*) &f4); - -#define TEST_FN_FUNC_FN_FN(fnc) \ - rsDebug("Testing " #fnc, 0); \ - f1 = fnc(f1, f1); \ - f2 = fnc(f2, f2); \ - f3 = fnc(f3, f3); \ - f4 = fnc(f4, f4); - -#define TEST_FN_FUNC_FN_F(fnc) \ - rsDebug("Testing " #fnc, 0); \ - f1 = fnc(f1, f1); \ - f2 = fnc(f2, f1); \ - f3 = fnc(f3, f1); \ - f4 = fnc(f4, f1); - -#define TEST_FN_FUNC_FN_IN(fnc) \ - rsDebug("Testing " #fnc, 0); \ - f1 = fnc(f1, i1); \ - f2 = fnc(f2, i2); \ - f3 = fnc(f3, i3); \ - f4 = fnc(f4, i4); - -#define TEST_FN_FUNC_FN_I(fnc) \ - rsDebug("Testing " #fnc, 0); \ - f1 = fnc(f1, i1); \ - f2 = fnc(f2, i1); \ - f3 = fnc(f3, i1); \ - f4 = fnc(f4, i1); - -#define TEST_FN_FUNC_FN_FN_FN(fnc) \ - rsDebug("Testing " #fnc, 0); \ - f1 = fnc(f1, f1, f1); \ - f2 = fnc(f2, f2, f2); \ - f3 = fnc(f3, f3, f3); \ - f4 = fnc(f4, f4, f4); - -#define TEST_FN_FUNC_FN_PIN(fnc) \ - rsDebug("Testing " #fnc, 0); \ - f1 = fnc(f1, (int*) &i1); \ - f2 = fnc(f2, (int2*) &i2); \ - f3 = fnc(f3, (int3*) &i3); \ - f4 = fnc(f4, (int4*) &i4); - -#define TEST_FN_FUNC_FN_FN_PIN(fnc) \ - rsDebug("Testing " #fnc, 0); \ - f1 = fnc(f1, f1, (int*) &i1); \ - f2 = fnc(f2, f2, (int2*) &i2); \ - f3 = fnc(f3, f3, (int3*) &i3); \ - f4 = fnc(f4, f4, (int4*) &i4); - -#define TEST_IN_FUNC_FN(fnc) \ - rsDebug("Testing " #fnc, 0); \ - i1 = fnc(f1); \ - i2 = fnc(f2); \ - i3 = fnc(f3); \ - i4 = fnc(f4); - - -static bool test_fp_math(uint32_t index) { - bool failed = false; - start(); - - TEST_FN_FUNC_FN(acos); - TEST_FN_FUNC_FN(acosh); - TEST_FN_FUNC_FN(acospi); - TEST_FN_FUNC_FN(asin); - TEST_FN_FUNC_FN(asinh); - TEST_FN_FUNC_FN(asinpi); - TEST_FN_FUNC_FN(atan); - TEST_FN_FUNC_FN_FN(atan2); - TEST_FN_FUNC_FN(atanh); - TEST_FN_FUNC_FN(atanpi); - TEST_FN_FUNC_FN_FN(atan2pi); - TEST_FN_FUNC_FN(cbrt); - TEST_FN_FUNC_FN(ceil); - TEST_FN_FUNC_FN_FN(copysign); - TEST_FN_FUNC_FN(cos); - TEST_FN_FUNC_FN(cosh); - TEST_FN_FUNC_FN(cospi); - TEST_FN_FUNC_FN(erfc); - TEST_FN_FUNC_FN(erf); - TEST_FN_FUNC_FN(exp); - TEST_FN_FUNC_FN(exp2); - TEST_FN_FUNC_FN(exp10); - TEST_FN_FUNC_FN(expm1); - TEST_FN_FUNC_FN(fabs); - TEST_FN_FUNC_FN_FN(fdim); - TEST_FN_FUNC_FN(floor); - TEST_FN_FUNC_FN_FN_FN(fma); - TEST_FN_FUNC_FN_FN(fmax); - TEST_FN_FUNC_FN_F(fmax); - TEST_FN_FUNC_FN_FN(fmin); - TEST_FN_FUNC_FN_F(fmin); - TEST_FN_FUNC_FN_FN(fmod); - TEST_FN_FUNC_FN_PFN(fract); - TEST_FN_FUNC_FN_PIN(frexp); - TEST_FN_FUNC_FN_FN(hypot); - TEST_IN_FUNC_FN(ilogb); - TEST_FN_FUNC_FN_IN(ldexp); - TEST_FN_FUNC_FN_I(ldexp); - TEST_FN_FUNC_FN(lgamma); - TEST_FN_FUNC_FN_PIN(lgamma); - TEST_FN_FUNC_FN(log); - TEST_FN_FUNC_FN(log2); - TEST_FN_FUNC_FN(log10); - TEST_FN_FUNC_FN(log1p); - TEST_FN_FUNC_FN(logb); - TEST_FN_FUNC_FN_FN_FN(mad); - TEST_FN_FUNC_FN_PFN(modf); - // nan - TEST_FN_FUNC_FN_FN(nextafter); - TEST_FN_FUNC_FN_FN(pow); - TEST_FN_FUNC_FN_IN(pown); - TEST_FN_FUNC_FN_FN(powr); - TEST_FN_FUNC_FN_FN(remainder); - TEST_FN_FUNC_FN_FN_PIN(remquo); - TEST_FN_FUNC_FN(rint); - TEST_FN_FUNC_FN_IN(rootn); - TEST_FN_FUNC_FN(round); - TEST_FN_FUNC_FN(rsqrt); - TEST_FN_FUNC_FN(sin); - TEST_FN_FUNC_FN_PFN(sincos); - TEST_FN_FUNC_FN(sinh); - TEST_FN_FUNC_FN(sinpi); - TEST_FN_FUNC_FN(sqrt); - TEST_FN_FUNC_FN(tan); - TEST_FN_FUNC_FN(tanh); - TEST_FN_FUNC_FN(tanpi); - TEST_FN_FUNC_FN(tgamma); - TEST_FN_FUNC_FN(trunc); - - float time = end(index); - - if (failed) { - rsDebug("test_fp_math FAILED", time); - } - else { - rsDebug("test_fp_math PASSED", time); - } - - return failed; -} - -#define DECL_INT(prefix) \ -volatile char prefix##_c_1 = 1; \ -volatile char2 prefix##_c_2 = 1; \ -volatile char3 prefix##_c_3 = 1; \ -volatile char4 prefix##_c_4 = 1; \ -volatile uchar prefix##_uc_1 = 1; \ -volatile uchar2 prefix##_uc_2 = 1; \ -volatile uchar3 prefix##_uc_3 = 1; \ -volatile uchar4 prefix##_uc_4 = 1; \ -volatile short prefix##_s_1 = 1; \ -volatile short2 prefix##_s_2 = 1; \ -volatile short3 prefix##_s_3 = 1; \ -volatile short4 prefix##_s_4 = 1; \ -volatile ushort prefix##_us_1 = 1; \ -volatile ushort2 prefix##_us_2 = 1; \ -volatile ushort3 prefix##_us_3 = 1; \ -volatile ushort4 prefix##_us_4 = 1; \ -volatile int prefix##_i_1 = 1; \ -volatile int2 prefix##_i_2 = 1; \ -volatile int3 prefix##_i_3 = 1; \ -volatile int4 prefix##_i_4 = 1; \ -volatile uint prefix##_ui_1 = 1; \ -volatile uint2 prefix##_ui_2 = 1; \ -volatile uint3 prefix##_ui_3 = 1; \ -volatile uint4 prefix##_ui_4 = 1; \ -volatile long prefix##_l_1 = 1; \ -volatile ulong prefix##_ul_1 = 1; - -#define TEST_INT_OP_TYPE(op, type) \ -rsDebug("Testing " #op " for " #type "1", i++); \ -res_##type##_1 = src1_##type##_1 op src2_##type##_1; \ -rsDebug("Testing " #op " for " #type "2", i++); \ -res_##type##_2 = src1_##type##_2 op src2_##type##_2; \ -rsDebug("Testing " #op " for " #type "3", i++); \ -res_##type##_3 = src1_##type##_3 op src2_##type##_3; \ -rsDebug("Testing " #op " for " #type "4", i++); \ -res_##type##_4 = src1_##type##_4 op src2_##type##_4; - -#define TEST_INT_OP(op) \ -TEST_INT_OP_TYPE(op, c) \ -TEST_INT_OP_TYPE(op, uc) \ -TEST_INT_OP_TYPE(op, s) \ -TEST_INT_OP_TYPE(op, us) \ -TEST_INT_OP_TYPE(op, i) \ -TEST_INT_OP_TYPE(op, ui) \ -rsDebug("Testing " #op " for l1", i++); \ -res_l_1 = src1_l_1 op src2_l_1; \ -rsDebug("Testing " #op " for ul1", i++); \ -res_ul_1 = src1_ul_1 op src2_ul_1; - -DECL_INT(res) -DECL_INT(src1) -DECL_INT(src2) - -static bool test_basic_operators() { - bool failed = false; - int i = 0; - - TEST_INT_OP(+); - TEST_INT_OP(-); - TEST_INT_OP(*); - TEST_INT_OP(/); - TEST_INT_OP(%); - TEST_INT_OP(<<); - TEST_INT_OP(>>); - - if (failed) { - rsDebug("test_basic_operators FAILED", 0); - } - else { - rsDebug("test_basic_operators PASSED", 0); - } - - return failed; -} - -#define TEST_CVT(to, from, type) \ -rsDebug("Testing convert from " #from " to " #to, 0); \ -to##1 = from##1; \ -to##2 = convert_##type##2(from##2); \ -to##3 = convert_##type##3(from##3); \ -to##4 = convert_##type##4(from##4); - -#define TEST_CVT_MATRIX(to, type) \ -TEST_CVT(to, c, type); \ -TEST_CVT(to, uc, type); \ -TEST_CVT(to, s, type); \ -TEST_CVT(to, us, type); \ -TEST_CVT(to, i, type); \ -TEST_CVT(to, ui, type); \ -TEST_CVT(to, f, type); \ - -static bool test_convert() { - bool failed = false; - - TEST_CVT_MATRIX(c, char); - TEST_CVT_MATRIX(uc, uchar); - TEST_CVT_MATRIX(s, short); - TEST_CVT_MATRIX(us, ushort); - TEST_CVT_MATRIX(i, int); - TEST_CVT_MATRIX(ui, uint); - TEST_CVT_MATRIX(f, float); - - if (failed) { - rsDebug("test_convert FAILED", 0); - } - else { - rsDebug("test_convert PASSED", 0); - } - - return failed; -} - -void math_test(uint32_t index, int test_num) { - bool failed = false; - failed |= test_convert(); - failed |= test_fp_math(index); - failed |= test_basic_operators(); - - if (failed) { - rsSendToClientBlocking(RS_MSG_TEST_FAILED); - } - else { - rsSendToClientBlocking(RS_MSG_TEST_PASSED); - } -} - diff --git a/libs/rs/java/tests/src/com/android/rs/test/primitives.rs b/libs/rs/java/tests/src/com/android/rs/test/primitives.rs deleted file mode 100644 index ce451da..0000000 --- a/libs/rs/java/tests/src/com/android/rs/test/primitives.rs +++ /dev/null @@ -1,61 +0,0 @@ -#include "shared.rsh" - -// Testing primitive types -float floatTest = 1.99f; -double doubleTest = 2.05; -char charTest = -8; -short shortTest = -16; -int intTest = -32; -long longTest = 17179869184l; // 1 << 34 -long long longlongTest = 68719476736l; // 1 << 36 - -uchar ucharTest = 8; -ushort ushortTest = 16; -uint uintTest = 32; -ulong ulongTest = 4611686018427387904L; -int64_t int64_tTest = -17179869184l; // - 1 << 34 -uint64_t uint64_tTest = 117179869184l; - -static bool test_primitive_types(uint32_t index) { - bool failed = false; - start(); - - _RS_ASSERT(floatTest == 2.99f); - _RS_ASSERT(doubleTest == 3.05); - _RS_ASSERT(charTest == -16); - _RS_ASSERT(shortTest == -32); - _RS_ASSERT(intTest == -64); - _RS_ASSERT(longTest == 17179869185l); - _RS_ASSERT(longlongTest == 68719476735l); - - _RS_ASSERT(ucharTest == 8); - _RS_ASSERT(ushortTest == 16); - _RS_ASSERT(uintTest == 32); - _RS_ASSERT(ulongTest == 4611686018427387903L); - _RS_ASSERT(int64_tTest == -17179869184l); - _RS_ASSERT(uint64_tTest == 117179869185l); - - float time = end(index); - - if (failed) { - rsDebug("test_primitives FAILED", time); - } - else { - rsDebug("test_primitives PASSED", time); - } - - return failed; -} - -void primitives_test(uint32_t index, int test_num) { - bool failed = false; - failed |= test_primitive_types(index); - - if (failed) { - rsSendToClientBlocking(RS_MSG_TEST_FAILED); - } - else { - rsSendToClientBlocking(RS_MSG_TEST_PASSED); - } -} - diff --git a/libs/rs/java/tests/src/com/android/rs/test/rsdebug.rs b/libs/rs/java/tests/src/com/android/rs/test/rsdebug.rs deleted file mode 100644 index f7942a5..0000000 --- a/libs/rs/java/tests/src/com/android/rs/test/rsdebug.rs +++ /dev/null @@ -1,56 +0,0 @@ -#include "shared.rsh" - -// Testing primitive types -float floatTest = 1.99f; -double doubleTest = 2.05; -char charTest = -8; -short shortTest = -16; -int intTest = -32; -long longTest = 17179869184l; // 1 << 34 -long long longlongTest = 68719476736l; // 1 << 36 - -uchar ucharTest = 8; -ushort ushortTest = 16; -uint uintTest = 32; -ulong ulongTest = 4611686018427387904L; -int64_t int64_tTest = -17179869184l; // - 1 << 34 -uint64_t uint64_tTest = 117179869184l; - -static bool basic_test(uint32_t index) { - bool failed = false; - - // This test focuses primarily on compilation-time, not run-time. - // For this reason, none of the outputs are actually checked. - - rsDebug("floatTest", floatTest); - rsDebug("doubleTest", doubleTest); - rsDebug("charTest", charTest); - rsDebug("shortTest", shortTest); - rsDebug("intTest", intTest); - rsDebug("longTest", longTest); - rsDebug("longlongTest", longlongTest); - - rsDebug("ucharTest", ucharTest); - rsDebug("ushortTest", ushortTest); - rsDebug("uintTest", uintTest); - rsDebug("ulongTest", ulongTest); - rsDebug("int64_tTest", int64_tTest); - rsDebug("uint64_tTest", uint64_tTest); - - return failed; -} - -void test_rsdebug(uint32_t index, int test_num) { - bool failed = false; - failed |= basic_test(index); - - if (failed) { - rsSendToClientBlocking(RS_MSG_TEST_FAILED); - rsDebug("rsdebug_test FAILED", -1); - } - else { - rsSendToClientBlocking(RS_MSG_TEST_PASSED); - rsDebug("rsdebug_test PASSED", 0); - } -} - diff --git a/libs/rs/java/tests/src/com/android/rs/test/rslist.rs b/libs/rs/java/tests/src/com/android/rs/test/rslist.rs deleted file mode 100644 index 67c2b86..0000000 --- a/libs/rs/java/tests/src/com/android/rs/test/rslist.rs +++ /dev/null @@ -1,107 +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. - -#pragma version(1) - -#pragma rs java_package_name(com.android.rs.test) - -#include "rs_graphics.rsh" - -float gDY; - -rs_font gFont; - -typedef struct ListAllocs_s { - rs_allocation text; - int result; -} ListAllocs; - -ListAllocs *gList; - -void init() { - gDY = 0.0f; -} - -int textPos = 0; - -int root(int launchID) { - - rsgClearColor(0.0f, 0.0f, 0.0f, 0.0f); - rsgClearDepth(1.0f); - - textPos -= (int)gDY*2; - gDY *= 0.95; - - rsgFontColor(0.9f, 0.9f, 0.9f, 1.0f); - rsgBindFont(gFont); - - rs_allocation listAlloc; - rsSetObject(&listAlloc, rsGetAllocation(gList)); - int allocSize = rsAllocationGetDimX(listAlloc); - - int width = rsgGetWidth(); - int height = rsgGetHeight(); - - int itemHeight = 80; - int totalItemHeight = itemHeight * allocSize; - - /* Prevent scrolling above the top of the list */ - int firstItem = height - totalItemHeight; - if (firstItem < 0) { - firstItem = 0; - } - - /* Prevent scrolling past the last line of the list */ - int lastItem = -1 * (totalItemHeight - height); - if (lastItem > 0) { - lastItem = 0; - } - - if (textPos > firstItem) { - textPos = firstItem; - } - else if (textPos < lastItem) { - textPos = lastItem; - } - - int currentYPos = itemHeight + textPos; - - for(int i = 0; i < allocSize; i ++) { - if(currentYPos - itemHeight > height) { - break; - } - - if(currentYPos > 0) { - switch(gList[i].result) { - case 1: /* Passed */ - rsgFontColor(0.5f, 0.9f, 0.5f, 1.0f); - break; - case -1: /* Failed */ - rsgFontColor(0.9f, 0.5f, 0.5f, 1.0f); - break; - case 0: /* Still Testing */ - rsgFontColor(0.9f, 0.9f, 0.5f, 1.0f); - break; - default: /* Unknown */ - rsgFontColor(0.9f, 0.9f, 0.9f, 1.0f); - break; - } - rsgDrawRect(0, currentYPos - 1, width, currentYPos, 0); - rsgDrawText(gList[i].text, 30, currentYPos - 32); - } - currentYPos += itemHeight; - } - - return 10; -} diff --git a/libs/rs/java/tests/src/com/android/rs/test/rstime.rs b/libs/rs/java/tests/src/com/android/rs/test/rstime.rs deleted file mode 100644 index 5e3e078..0000000 --- a/libs/rs/java/tests/src/com/android/rs/test/rstime.rs +++ /dev/null @@ -1,52 +0,0 @@ -#include "shared.rsh" - -static bool basic_test(uint32_t index) { - bool failed = false; - - rs_time_t curTime = rsTime(0); - rs_tm tm; - rsDebug("curTime", curTime); - - rsLocaltime(&tm, &curTime); - - rsDebug("tm.tm_sec", tm.tm_sec); - rsDebug("tm.tm_min", tm.tm_min); - rsDebug("tm.tm_hour", tm.tm_hour); - rsDebug("tm.tm_mday", tm.tm_mday); - rsDebug("tm.tm_mon", tm.tm_mon); - rsDebug("tm.tm_year", tm.tm_year); - rsDebug("tm.tm_wday", tm.tm_wday); - rsDebug("tm.tm_yday", tm.tm_yday); - rsDebug("tm.tm_isdst", tm.tm_isdst); - - // Test a specific time (only valid for PST localtime) - curTime = 1294438893; - rsLocaltime(&tm, &curTime); - - _RS_ASSERT(tm.tm_sec == 33); - _RS_ASSERT(tm.tm_min == 21); - _RS_ASSERT(tm.tm_hour == 14); - _RS_ASSERT(tm.tm_mday == 7); - _RS_ASSERT(tm.tm_mon == 0); - _RS_ASSERT(tm.tm_year == 111); - _RS_ASSERT(tm.tm_wday == 5); - _RS_ASSERT(tm.tm_yday == 6); - _RS_ASSERT(tm.tm_isdst == 0); - - return failed; -} - -void test_rstime(uint32_t index, int test_num) { - bool failed = false; - failed |= basic_test(index); - - if (failed) { - rsSendToClientBlocking(RS_MSG_TEST_FAILED); - rsDebug("rstime_test FAILED", -1); - } - else { - rsSendToClientBlocking(RS_MSG_TEST_PASSED); - rsDebug("rstime_test PASSED", 0); - } -} - diff --git a/libs/rs/java/tests/src/com/android/rs/test/rstypes.rs b/libs/rs/java/tests/src/com/android/rs/test/rstypes.rs deleted file mode 100644 index f3bf244..0000000 --- a/libs/rs/java/tests/src/com/android/rs/test/rstypes.rs +++ /dev/null @@ -1,79 +0,0 @@ -#include "shared.rsh" -#include "rs_graphics.rsh" - -rs_element elementTest; -rs_type typeTest; -rs_allocation allocationTest; -rs_sampler samplerTest; -rs_script scriptTest; -rs_mesh meshTest; -rs_program_fragment program_fragmentTest; -rs_program_vertex program_vertexTest; -rs_program_raster program_rasterTest; -rs_program_store program_storeTest; -rs_font fontTest; - -rs_matrix4x4 matrix4x4Test; -rs_matrix3x3 matrix3x3Test; -rs_matrix2x2 matrix2x2Test; - -struct my_struct { - int i; - rs_font fontTestStruct; -}; - -static bool basic_test(uint32_t index) { - bool failed = false; - - rs_matrix4x4 matrix4x4TestLocal; - rs_matrix3x3 matrix3x3TestLocal; - rs_matrix2x2 matrix2x2TestLocal; - - // This test focuses primarily on compilation-time, not run-time. - rs_element elementTestLocal; - rs_type typeTestLocal; - rs_allocation allocationTestLocal; - rs_sampler samplerTestLocal; - rs_script scriptTestLocal; - rs_mesh meshTestLocal; - rs_program_fragment program_fragmentTestLocal; - rs_program_vertex program_vertexTestLocal; - rs_program_raster program_rasterTestLocal; - rs_program_store program_storeTestLocal; - rs_font fontTestLocal; - - rs_font fontTestLocalArray[4]; - - rs_font fontTestLocalPreInit = fontTest; - - struct my_struct structTest; - - rsSetObject(&fontTestLocal, fontTest); - //allocationTestLocal = allocationTest; - - rsSetObject(&fontTest, fontTestLocal); - //allocationTest = allocationTestLocal; - - /*for (int i = 0; i < 4; i++) { - rsSetObject(&fontTestLocalArray[i], fontTestLocal); - }*/ - - /*rsSetObject(&fontTest, fontTestLocalArray[3]);*/ - - return failed; -} - -void test_rstypes(uint32_t index, int test_num) { - bool failed = false; - failed |= basic_test(index); - - if (failed) { - rsSendToClientBlocking(RS_MSG_TEST_FAILED); - rsDebug("rstypes_test FAILED", -1); - } - else { - rsSendToClientBlocking(RS_MSG_TEST_PASSED); - rsDebug("rstypes_test PASSED", 0); - } -} - diff --git a/libs/rs/java/tests/src/com/android/rs/test/shared.rsh b/libs/rs/java/tests/src/com/android/rs/test/shared.rsh deleted file mode 100644 index 21be9af..0000000 --- a/libs/rs/java/tests/src/com/android/rs/test/shared.rsh +++ /dev/null @@ -1,38 +0,0 @@ -#pragma version(1) - -#pragma rs java_package_name(com.android.rs.test) - -typedef struct TestResult_s { - rs_allocation name; - bool pass; - float score; - int64_t time; -} TestResult; -//TestResult *g_results; - -static int64_t g_time; - -static void start(void) { - g_time = rsUptimeMillis(); -} - -static float end(uint32_t idx) { - int64_t t = rsUptimeMillis() - g_time; - //g_results[idx].time = t; - //rsDebug("test time", (int)t); - return ((float)t) / 1000.f; -} - -#define _RS_ASSERT(b) \ -do { \ - if (!(b)) { \ - failed = true; \ - rsDebug(#b " FAILED", 0); \ - } \ -\ -} while (0) - -/* These constants must match those in UnitTest.java */ -static const int RS_MSG_TEST_PASSED = 100; -static const int RS_MSG_TEST_FAILED = 101; - diff --git a/libs/rs/java/tests/src/com/android/rs/test/test_root.rs b/libs/rs/java/tests/src/com/android/rs/test/test_root.rs deleted file mode 100644 index 6dc83ba..0000000 --- a/libs/rs/java/tests/src/com/android/rs/test/test_root.rs +++ /dev/null @@ -1,23 +0,0 @@ -// Fountain test script -#pragma version(1) - -#pragma rs java_package_name(com.android.rs.test) - -#pragma stateFragment(parent) - -#include "rs_graphics.rsh" - - -typedef struct TestResult { - rs_allocation name; - bool pass; - float score; -} TestResult_t; -TestResult_t *results; - -int root() { - - return 0; -} - - |