1b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni/*
2b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni * Copyright (C) 2015 The Android Open Source Project
3b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni *
4b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni * Licensed under the Apache License, Version 2.0 (the "License");
5b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni * you may not use this file except in compliance with the License.
6b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni * You may obtain a copy of the License at
7b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni *
8b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni *      http://www.apache.org/licenses/LICENSE-2.0
9b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni *
10b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni * Unless required by applicable law or agreed to in writing, software
11b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni * distributed under the License is distributed on an "AS IS" BASIS,
12b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni * See the License for the specific language governing permissions and
14b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni * limitations under the License.
15b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni */
16b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni
17b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Nipackage com.android.rs.test_compat;
18b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni
19b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Niimport android.content.Context;
20b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Niimport android.content.res.Resources;
21b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Niimport android.support.v8.renderscript.*;
22b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni
23b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Nipublic class UT_single_source_script extends UnitTest {
24b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni    private Resources mRes;
25b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni    private Allocation testAllocation1, testAllocation2;
26b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni
27b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni    protected UT_single_source_script(RSTestCore rstc, Resources res, Context ctx) {
28b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni        super(rstc, "SingleSourceScript", ctx);
29b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni        mRes = res;
30b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni    }
31b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni
32b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni    private void initializeGlobals(RenderScript RS, ScriptC_single_source_script s) {
33b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni        Type.Builder i32TypeBuilder = new Type.Builder(RS, Element.I32(RS));
34b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni        int X = 1024;
35b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni        int Y = 768;
36b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni        s.set_dimX(X);
37b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni        s.set_dimY(Y);
38b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni        i32TypeBuilder.setX(X).setY(Y);
39b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni        testAllocation1 = Allocation.createTyped(RS, i32TypeBuilder.create());
40b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni        testAllocation2 = Allocation.createTyped(RS, i32TypeBuilder.create());
41b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni    }
42b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni
43b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni    public void run() {
44b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni        RenderScript pRS = RenderScript.create(mCtx);
45b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni        ScriptC_single_source_script s = new ScriptC_single_source_script(pRS);
46b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni        pRS.setMessageHandler(mRsMessage);
47b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni        initializeGlobals(pRS, s);
48b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni
49b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni        s.invoke_entrypoint(testAllocation1, testAllocation2);
50b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni        s.forEach_oldFoo(testAllocation2, testAllocation2);
51b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni        s.forEach_oldGoo(testAllocation2, testAllocation2);
52b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni        s.invoke_validate(testAllocation2);
53b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni
54b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni        pRS.finish();
55b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni        waitForMessage();
561c3a11a3287d971458a021d16a54e16b37f391f9Yang Ni        s.destroy();
571c3a11a3287d971458a021d16a54e16b37f391f9Yang Ni        testAllocation1.getType().destroy();
581c3a11a3287d971458a021d16a54e16b37f391f9Yang Ni        testAllocation1.destroy();
591c3a11a3287d971458a021d16a54e16b37f391f9Yang Ni        testAllocation2.getType().destroy();
601c3a11a3287d971458a021d16a54e16b37f391f9Yang Ni        testAllocation2.destroy();
61b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni        pRS.destroy();
62b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni    }
63b9b6366fd0188be38161a54d4e8ead0161dbb008Yang Ni}
64