112398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni/*
212398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni * Copyright (C) 2015 The Android Open Source Project
312398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni *
412398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni * Licensed under the Apache License, Version 2.0 (the "License");
512398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni * you may not use this file except in compliance with the License.
612398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni * You may obtain a copy of the License at
712398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni *
812398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni *      http://www.apache.org/licenses/LICENSE-2.0
912398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni *
1012398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni * Unless required by applicable law or agreed to in writing, software
1112398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni * distributed under the License is distributed on an "AS IS" BASIS,
1212398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1312398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni * See the License for the specific language governing permissions and
1412398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni * limitations under the License.
1512398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni */
1612398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni
1712398d81f32e5e0479d02b8608a83c75cd991bb3Yang Nipackage com.android.rs.test;
1812398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni
1912398d81f32e5e0479d02b8608a83c75cd991bb3Yang Niimport android.content.Context;
20c619e32616d4f6f02fb4bc74a6e6907270fc7c4eMiao Wangimport android.renderscript.Allocation;
21c619e32616d4f6f02fb4bc74a6e6907270fc7c4eMiao Wangimport android.renderscript.Element;
22c619e32616d4f6f02fb4bc74a6e6907270fc7c4eMiao Wangimport android.renderscript.RenderScript;
23c619e32616d4f6f02fb4bc74a6e6907270fc7c4eMiao Wangimport android.renderscript.Type;
2412398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni
2512398d81f32e5e0479d02b8608a83c75cd991bb3Yang Nipublic class UT_single_source_script extends UnitTest {
2612398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni    private Allocation testAllocation1, testAllocation2;
2712398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni
2833709e1da5e801ca331642c25a61847ced8539e8Miao Wang    protected UT_single_source_script(RSTestCore rstc, Context ctx) {
2912398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni        super(rstc, "SingleSourceScript", ctx);
3012398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni    }
3112398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni
3212398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni    private void initializeGlobals(RenderScript RS, ScriptC_single_source_script s) {
3312398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni        Type.Builder i32TypeBuilder = new Type.Builder(RS, Element.I32(RS));
3412398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni        int X = 1024;
3512398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni        int Y = 768;
3612398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni        s.set_dimX(X);
3712398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni        s.set_dimY(Y);
3812398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni        i32TypeBuilder.setX(X).setY(Y);
3912398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni        testAllocation1 = Allocation.createTyped(RS, i32TypeBuilder.create());
4012398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni        testAllocation2 = Allocation.createTyped(RS, i32TypeBuilder.create());
4112398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni    }
4212398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni
4312398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni    public void run() {
4412398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni        RenderScript pRS = RenderScript.create(mCtx);
4512398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni        ScriptC_single_source_script s = new ScriptC_single_source_script(pRS);
4612398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni        pRS.setMessageHandler(mRsMessage);
4712398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni        initializeGlobals(pRS, s);
4812398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni
4912398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni        s.invoke_entrypoint(testAllocation1, testAllocation2);
503228dc83f2f3ca03b975e9e78885a7cad4d6ec6cYang Ni        s.forEach_oldFoo(testAllocation2, testAllocation2);
513228dc83f2f3ca03b975e9e78885a7cad4d6ec6cYang Ni        s.forEach_oldGoo(testAllocation2, testAllocation2);
523228dc83f2f3ca03b975e9e78885a7cad4d6ec6cYang Ni        s.invoke_validate(testAllocation2);
5312398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni
5412398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni        pRS.finish();
5512398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni        waitForMessage();
561c3a11a3287d971458a021d16a54e16b37f391f9Yang Ni        s.destroy();
5712398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni        pRS.destroy();
5812398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni    }
5912398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni}
60