Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 46bd32ec authored by Alex Sakhartchouk's avatar Alex Sakhartchouk
Browse files

Adding some debug modes to the rs benchmark app.

Change-Id: I6b957d93e0233ed268403dcdb14f4cf4cff29804
parent a7265fe0
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -9,8 +9,7 @@
      android:icon="@drawable/test_pattern">
        <uses-library android:name="android.test.runner" />
        <activity android:name="RsBench"
                  android:label="RsBenchmark"
                  android:theme="@android:style/Theme.Black.NoTitleBar">
                  android:label="RsBenchmark">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
+25 −0
Original line number Diff line number Diff line
<?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/benchmark_mode"
          android:title="@string/benchmark_mode" />
    <item android:id="@+id/debug_mode"
          android:title="@string/debug_mode" />
</menu>
+24 −0
Original line number Diff line number Diff line
<?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="benchmark_mode">Benchmark Mode</string>
    <string name="debug_mode">Debug Mode</string>
</resources>
+37 −0
Original line number Diff line number Diff line
@@ -31,10 +31,14 @@ import android.provider.Settings.System;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MenuInflater;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.ListView;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.widget.Toast;

import java.lang.Runtime;

@@ -77,4 +81,37 @@ public class RsBench extends Activity {
        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.benchmark_mode:
                mView.setBenchmarkMode();
                return true;
            case R.id.debug_mode:
                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(),
                                       "Switching to: " + mView.getTestNames()[item],
                                       Toast.LENGTH_SHORT).show();
                        mView.setDebugMode(item);
                    }
                });
                builder.show();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
}
+64 −46
Original line number Diff line number Diff line
@@ -84,12 +84,6 @@ public class RsBenchRS {
    private Resources mRes;
    private RenderScriptGL mRS;

    private Sampler mLinearClamp;
    private Sampler mLinearWrap;
    private Sampler mMipLinearWrap;
    private Sampler mNearestClamp;
    private Sampler mNearesWrap;

    private ProgramStore mProgStoreBlendNoneDepth;
    private ProgramStore mProgStoreBlendNone;
    private ProgramStore mProgStoreBlendAlpha;
@@ -115,10 +109,6 @@ public class RsBenchRS {
    private ScriptField_FragentShaderConstants3_s mFSConstPixel;


    private ProgramRaster mCullBack;
    private ProgramRaster mCullFront;
    private ProgramRaster mCullNone;

    private Allocation mTexTorus;
    private Allocation mTexOpaque;
    private Allocation mTexTransparent;
@@ -143,6 +133,8 @@ public class RsBenchRS {


    private ScriptC_rsbench mScript;
    private ScriptC_text_test mTextScript;
    private ScriptC_torus_test mTorusScript;

    private final BitmapFactory.Options mOptionsARGB = new BitmapFactory.Options();

@@ -310,6 +302,7 @@ public class RsBenchRS {
        mProgStoreBlendAdd = BLEND_ADD_DEPTH_NONE(mRS);

        mScript.set_gProgStoreBlendNoneDepth(mProgStoreBlendNoneDepth);

        mScript.set_gProgStoreBlendNone(mProgStoreBlendNone);
        mScript.set_gProgStoreBlendAlpha(mProgStoreBlendAlpha);
        mScript.set_gProgStoreBlendAdd(mProgStoreBlendAdd);
@@ -330,22 +323,24 @@ public class RsBenchRS {
        texBuilder.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE,
                              ProgramFragmentFixedFunction.Builder.Format.RGBA, 0);
        mProgFragmentTexture = texBuilder.create();
        mProgFragmentTexture.bindSampler(mLinearClamp, 0);
        mProgFragmentTexture.bindSampler(Sampler.CLAMP_LINEAR(mRS), 0);

        ProgramFragmentFixedFunction.Builder colBuilder = new ProgramFragmentFixedFunction.Builder(mRS);
        colBuilder.setVaryingColor(false);
        mProgFragmentColor = colBuilder.create();

        mScript.set_gProgFragmentColor(mProgFragmentColor);

        mScript.set_gProgFragmentTexture(mProgFragmentTexture);



        // For Galaxy live wallpaper drawing
        ProgramFragmentFixedFunction.Builder builder = new ProgramFragmentFixedFunction.Builder(mRS);
        builder.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE,
                           ProgramFragmentFixedFunction.Builder.Format.RGB, 0);
        ProgramFragment pfb = builder.create();
        pfb.bindSampler(mNearesWrap, 0);
        pfb.bindSampler(Sampler.WRAP_NEAREST(mRS), 0);
        mScript.set_gPFBackground(pfb);

        builder = new ProgramFragmentFixedFunction.Builder(mRS);
@@ -354,7 +349,7 @@ public class RsBenchRS {
                           ProgramFragmentFixedFunction.Builder.Format.RGBA, 0);
        builder.setVaryingColor(true);
        ProgramFragment pfs = builder.create();
        pfs.bindSampler(mMipLinearWrap, 0);
        pfs.bindSampler(Sampler.WRAP_LINEAR_MIP_LINEAR(mRS), 0);
        mScript.set_gPFStars(pfs);

    }
@@ -404,6 +399,7 @@ public class RsBenchRS {

        mScript.set_gProgVertex(mProgVertex);


        // For galaxy live wallpaper
        mPvStarAlloc = new ScriptField_VpConsts(mRS, 1);
        mScript.bind_vpConstants(mPvStarAlloc);
@@ -447,13 +443,11 @@ public class RsBenchRS {
    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);
@@ -506,11 +500,7 @@ public class RsBenchRS {
        }
        mProgFragmentMultitex = pfbCustom.create();

        mScript.set_gProgVertexCustom(mProgVertexCustom);
        mScript.set_gProgFragmentCustom(mProgFragmentCustom);
        mScript.set_gProgVertexPixelLight(mProgVertexPixelLight);
        mScript.set_gProgVertexPixelLightMove(mProgVertexPixelLightMove);
        mScript.set_gProgFragmentPixelLight(mProgFragmentPixelLight);

        mScript.set_gProgFragmentMultitex(mProgFragmentMultitex);
    }

@@ -587,39 +577,22 @@ public class RsBenchRS {
            Log.e("rs", "could not load model");
        } else {
            mTorus = (Mesh)entry.getObject();
            mScript.set_gTorusMesh(mTorus);
        }

        createParticlesMesh();
    }

    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);
        mNearesWrap = Sampler.WRAP_NEAREST(mRS);

        mScript.set_gLinearClamp(mLinearClamp);
        mScript.set_gLinearWrap(mLinearWrap);
        mScript.set_gMipLinearWrap(mMipLinearWrap);
        mScript.set_gNearestClamp(mNearestClamp);
        mScript.set_gLinearClamp(Sampler.CLAMP_LINEAR(mRS));
        mScript.set_gLinearWrap(Sampler.WRAP_LINEAR(mRS));
        mScript.set_gMipLinearWrap(Sampler.WRAP_LINEAR_MIP_LINEAR(mRS));
        mScript.set_gNearestClamp(Sampler.CLAMP_NEAREST(mRS));
    }

    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);
        mScript.set_gCullBack(ProgramRaster.CULL_BACK(mRS));
        mScript.set_gCullFront(ProgramRaster.CULL_FRONT(mRS));
        mScript.set_gCullNone(ProgramRaster.CULL_NONE(mRS));
    }

    private int strlen(byte[] array) {
@@ -645,9 +618,47 @@ public class RsBenchRS {
        }
    }

    public void setDebugMode(int num) {
        mScript.invoke_setDebugMode(num);
    }

    public void setBenchmarkMode() {
        mScript.invoke_setBenchmarkMode();
    }

    void initTextScript() {
        mTextScript = new ScriptC_text_test(mRS, mRes, R.raw.text_test);
        mTextScript.set_gFontSans(mFontSans);
        mTextScript.set_gFontSerif(mFontSerif);
    }

    void initTorusScript() {
        mTorusScript = new ScriptC_torus_test(mRS, mRes, R.raw.torus_test);
        mTorusScript.set_gCullFront(ProgramRaster.CULL_FRONT(mRS));
        mTorusScript.set_gCullBack(ProgramRaster.CULL_BACK(mRS));
        mTorusScript.set_gLinearClamp(Sampler.CLAMP_LINEAR(mRS));
        mTorusScript.set_gTorusMesh(mTorus);
        mTorusScript.set_gTexTorus(mTexTorus);
        mTorusScript.set_gProgVertexCustom(mProgVertexCustom);
        mTorusScript.set_gProgFragmentCustom(mProgFragmentCustom);
        mTorusScript.set_gProgVertexPixelLight(mProgVertexPixelLight);
        mTorusScript.set_gProgVertexPixelLightMove(mProgVertexPixelLightMove);
        mTorusScript.set_gProgFragmentPixelLight(mProgFragmentPixelLight);
        mTorusScript.bind_gVSConstPixel(mVSConstPixel);
        mTorusScript.bind_gFSConstPixel(mFSConstPixel);
        mTorusScript.bind_gVSConstants(mVSConst);
        mTorusScript.bind_gFSConstants(mFSConst);
        mTorusScript.set_gProgVertex(mProgVertex);
        mTorusScript.set_gProgFragmentTexture(mProgFragmentTexture);
        mTorusScript.set_gProgFragmentColor(mProgFragmentColor);
        mTorusScript.set_gProgStoreBlendNoneDepth(mProgStoreBlendNoneDepth);
    }

    private void initRS() {

        mScript = new ScriptC_rsbench(mRS, mRes, R.raw.rsbench);


        mRS.setMessageHandler(mRsMessage);

        mMaxModes = mScript.get_gMaxModes();
@@ -709,6 +720,13 @@ public class RsBenchRS {
        mSampleListViewAllocs.copyAll();
        mScript.bind_gListViewText(mSampleListViewAllocs);

        initTextScript();
        initTorusScript();

        mScript.set_gFontScript(mTextScript);
        mScript.set_gTorusScript(mTorusScript);
        mScript.set_gDummyAlloc(Allocation.createSized(mRS, Element.I32(mRS), 1));

        mRS.bindRootScript(mScript);
    }
}
Loading