Intrinsics test

Change-Id: I1847ad0c9190100eb84f7e052dd9f3bff81dc447
This commit is contained in:
Jason Sams
2012-08-10 12:09:43 -07:00
parent 578531082b
commit 6ab97682fd
7 changed files with 245 additions and 1 deletions

View File

@@ -561,6 +561,12 @@ public class RenderScript {
return rsnScriptCCreate(mContext, resName, cacheDir, script, length);
}
native int rsnScriptIntrinsicCreate(int con, int id, int eid);
synchronized int nScriptIntrinsicCreate(int id, int eid) {
validate();
return rsnScriptIntrinsicCreate(mContext, id, eid);
}
native int rsnSamplerCreate(int con, int magFilter, int minFilter,
int wrapS, int wrapT, int wrapR, float aniso);
synchronized int nSamplerCreate(int magFilter, int minFilter,

View File

@@ -0,0 +1,35 @@
/*
* 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 android.renderscript;
import android.content.Context;
import android.content.res.Resources;
import android.util.Log;
/**
* @hide
**/
public class ScriptIntrinsic extends Script {
ScriptIntrinsic(int id, RenderScript rs) {
super(id, rs);
}
public void forEach(Allocation ain, Allocation aout) {
forEach(0, ain, aout, null);
}
}

View File

@@ -0,0 +1,65 @@
/*
* Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.renderscript;
import android.content.Context;
import android.content.res.Resources;
import android.util.Log;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map.Entry;
import java.util.HashMap;
/**
* @hide
**/
public class ScriptIntrinsicConvolve3x3 extends ScriptIntrinsic {
private float[] mValues = new float[9];
ScriptIntrinsicConvolve3x3(int id, RenderScript rs) {
super(id, rs);
}
/**
* Supported elements types are float, float4, uchar, uchar4
*
*
* @param rs
* @param e
*
* @return ScriptIntrinsicConvolve3x3
*/
public static ScriptIntrinsicConvolve3x3 create(RenderScript rs, Element e) {
int id = rs.nScriptIntrinsicCreate(1, e.getID(rs));
return new ScriptIntrinsicConvolve3x3(id, rs);
}
public void setValues(float v[]) {
FieldPacker fp = new FieldPacker(9*4);
for (int ct=0; ct < mValues.length; ct++) {
mValues[ct] = v[ct];
fp.addF32(mValues[ct]);
}
setVar(0, fp);
}
}

View File

@@ -0,0 +1,64 @@
/*
* 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 android.renderscript;
import android.content.Context;
import android.content.res.Resources;
import android.util.Log;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map.Entry;
import java.util.HashMap;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
/**
* @hide
**/
public class ScriptIntrinsicYuvToRGB extends ScriptIntrinsic {
ScriptIntrinsicYuvToRGB(int id, RenderScript rs) {
super(id, rs);
}
public static class Builder {
RenderScript mRS;
public Builder(RenderScript rs) {
mRS = rs;
}
public void setInputFormat(int inputFormat) {
}
public void setOutputFormat(Element e) {
}
public ScriptIntrinsicYuvToRGB create() {
return null;
}
}
}

View File

@@ -1071,6 +1071,13 @@ exit:
return ret;
}
static jint
nScriptIntrinsicCreate(JNIEnv *_env, jobject _this, RsContext con, jint id, jint eid)
{
LOG_API("nScriptIntrinsicCreate, con(%p) id(%i) element(%p)", con, id, (void *)eid);
return (jint)rsScriptIntrinsicCreate(con, id, (RsElement)eid);
}
// ---------------------------------------------------------------------------
static jint
@@ -1412,6 +1419,7 @@ static JNINativeMethod methods[] = {
{"rsnScriptSetVarObj", "(IIII)V", (void*)nScriptSetVarObj },
{"rsnScriptCCreate", "(ILjava/lang/String;Ljava/lang/String;[BI)I", (void*)nScriptCCreate },
{"rsnScriptIntrinsicCreate", "(III)I", (void*)nScriptIntrinsicCreate },
{"rsnProgramStoreCreate", "(IZZZZZZIII)I", (void*)nProgramStoreCreate },

View File

@@ -167,6 +167,9 @@ public class ImageProcessingActivity extends Activity
case 14:
mTest = new GroupTest(false);
break;
case 15:
mTest = new Intrinsics(0);
break;
}
mTest.createBaseTest(this, mBitmapIn);
@@ -179,7 +182,7 @@ public class ImageProcessingActivity extends Activity
}
void setupTests() {
mTestNames = new String[15];
mTestNames = new String[16];
mTestNames[0] = "Levels Vec3 Relaxed";
mTestNames[1] = "Levels Vec4 Relaxed";
mTestNames[2] = "Levels Vec3 Full";
@@ -195,6 +198,7 @@ public class ImageProcessingActivity extends Activity
mTestNames[12] = "Vignette Approximate Relaxed";
mTestNames[13] = "Group Test (emulated)";
mTestNames[14] = "Group Test (native)";
mTestNames[15] = "Intrinsics Convolve 3x3";
mTestSpinner.setAdapter(new ArrayAdapter<String>(
this, R.layout.spinner_layout, mTestNames));
}

View File

@@ -0,0 +1,62 @@
/*
* Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.rs.image;
import java.lang.Math;
import android.renderscript.Allocation;
import android.renderscript.Element;
import android.renderscript.RenderScript;
import android.renderscript.Script;
import android.renderscript.ScriptIntrinsicConvolve3x3;
import android.renderscript.Type;
import android.util.Log;
import android.widget.SeekBar;
import android.widget.TextView;
public class Intrinsics extends TestBase {
private ScriptIntrinsicConvolve3x3 mScript;
Intrinsics(int id) {
}
public boolean onBar1Setup(SeekBar b, TextView t) {
t.setText("Strength");
b.setProgress(50);
return true;
}
public void onBar1Changed(int progress) {
float s = progress / 100.0f;
float v[] = new float[9];
v[0] = 0.f; v[1] = -s; v[2] = 0.f;
v[3] = -s; v[4] = s*4+1; v[5] = -s;
v[6] = 0.f; v[7] = -s; v[8] = 0.f;
mScript.setValues(v);
}
public void createTest(android.content.res.Resources res) {
mScript = ScriptIntrinsicConvolve3x3.create(mRS, Element.RGBA_8888(mRS));
}
public void runTest() {
mScript.forEach(mInPixelsAllocation, mOutPixelsAllocation);
}
}