Merge "adding benchmark single test"

This commit is contained in:
Alex Sakhartchouk
2011-11-17 14:52:23 -08:00
committed by Android (Google) Code Review
7 changed files with 58 additions and 18 deletions

View File

@@ -18,8 +18,11 @@
-->
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/benchmark_mode"
android:title="@string/benchmark_mode" />
<item android:id="@+id/benchmark_all"
android:title="@string/benchmark_all" />
<item android:id="@+id/benchmark_one"
android:title="@string/benchmark_one" />
<item android:id="@+id/debug_mode"
android:title="@string/debug_mode" />
</menu>

View File

@@ -19,6 +19,8 @@
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<skip />
<string name="benchmark_mode">Benchmark Mode</string>
<string name="benchmark_all">Benchmark All</string>
<string name="benchmark_one">Benchmark One</string>
<string name="debug_mode">Debug Mode</string>
</resources>

View File

@@ -93,14 +93,28 @@ public class RsBench extends Activity {
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.benchmark_mode:
mView.setBenchmarkMode();
case R.id.benchmark_all:
mView.setBenchmarkMode(-1);
return true;
case R.id.debug_mode:
case R.id.benchmark_one:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Pick a Test");
builder.setItems(mView.getTestNames(),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getApplicationContext(),
"Starting to benchmark: " + mView.getTestNames()[item],
Toast.LENGTH_SHORT).show();
mView.setBenchmarkMode(item);
}
});
builder.show();
return true;
case R.id.debug_mode:
AlertDialog.Builder debugBuilder = new AlertDialog.Builder(this);
debugBuilder.setTitle("Pick a Test");
debugBuilder.setItems(mView.getTestNames(),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getApplicationContext(),
"Switching to: " + mView.getTestNames()[item],
@@ -108,7 +122,7 @@ public class RsBench extends Activity {
mView.setDebugMode(item);
}
});
builder.show();
debugBuilder.show();
return true;
default:
return super.onOptionsItemSelected(item);

View File

@@ -248,8 +248,8 @@ public class RsBenchRS {
mScript.invoke_setDebugMode(num);
}
public void setBenchmarkMode() {
mScript.invoke_setBenchmarkMode();
public void setBenchmarkMode(int benchNum) {
mScript.invoke_setBenchmarkMode(benchNum);
}
private void initRS() {

View File

@@ -88,8 +88,8 @@ public class RsBenchView extends RSSurfaceView {
return mRender.testIsFinished();
}
void setBenchmarkMode() {
mRender.setBenchmarkMode();
void setBenchmarkMode(int benchNum) {
mRender.setBenchmarkMode(benchNum);
}
void setDebugMode(int num) {

View File

@@ -19,6 +19,7 @@ package com.android.perftest;
import android.os.Environment;
import android.content.res.Resources;
import android.renderscript.*;
import android.util.DisplayMetrics;
import android.util.Log;
@@ -78,8 +79,12 @@ public class TextTest implements RsBenchBaseTest{
}
void initTextScript() {
DisplayMetrics metrics = mRes.getDisplayMetrics();
mTextScript = new ScriptC_text_test(mRS, mRes, R.raw.text_test);
mTextScript.set_gFontSans(Font.create(mRS, mRes, "sans-serif", Font.Style.NORMAL, 8));
mTextScript.set_gFontSerif(Font.create(mRS, mRes, "serif", Font.Style.NORMAL, 8));
mTextScript.set_gFontSans(Font.create(mRS, mRes, "sans-serif",
Font.Style.NORMAL, 8.0f / metrics.density));
mTextScript.set_gFontSerif(Font.create(mRS, mRes, "serif",
Font.Style.NORMAL, 8.0f / metrics.density));
}
}

View File

@@ -122,6 +122,7 @@ static bool checkInit() {
}
static int benchMode = 0;
static bool benchmarkSingleTest = false;
static int benchSubMode = 0;
static int runningLoops = 0;
static bool sendMsgFlag = false;
@@ -133,9 +134,16 @@ void setDebugMode(int testNumber) {
rsgClearAllRenderTargets();
}
void setBenchmarkMode() {
void setBenchmarkMode(int testNumber) {
gIsDebugMode = false;
benchMode = 0;
if (testNumber == -1) {
benchmarkSingleTest = false;
benchMode = 0;
} else {
benchmarkSingleTest = true;
benchMode = testNumber;
}
runningLoops = 0;
}
@@ -190,9 +198,13 @@ static void benchmark() {
rsDebug("Finishes test ", fps);
gResultBuffer[benchMode] = fps;
drawOffscreenResult(0, 0,
gRenderSurfaceW / 2,
gRenderSurfaceH / 2);
int bufferW = rsAllocationGetDimX(gRenderBufferColor);
int bufferH = rsAllocationGetDimY(gRenderBufferColor);
int quadW = gRenderSurfaceW / 2;
int quadH = (quadW * bufferH) / bufferW;
drawOffscreenResult(0, 0, quadW, quadH);
int left = 0, right = 0, top = 0, bottom = 0;
uint width = rsgGetWidth();
uint height = rsgGetHeight();
@@ -202,6 +214,10 @@ static void benchmark() {
rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
rsgDrawText(gTestScripts[benchMode].testName, 2 -left, height - 2 + bottom);
if (benchmarkSingleTest) {
return;
}
benchMode ++;
int testCount = rsAllocationGetDimX(rsGetAllocation(gTestScripts));
if (benchMode == testCount) {