1/*
2* Copyright (C) 2016 The Android Open Source Project
3*
4* Licensed under the Apache License, Version 2.0 (the "License");
5* you may not use this file except in compliance with the License.
6* You may obtain a copy of the License at
7*
8*      http://www.apache.org/licenses/LICENSE-2.0
9*
10* Unless required by applicable law or agreed to in writing, software
11* distributed under the License is distributed on an "AS IS" BASIS,
12* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13* See the License for the specific language governing permissions and
14* limitations under the License.
15*/
16
17package com.android.rs.branchingfuncalls;
18
19import android.app.Activity;
20import android.os.Bundle;
21import android.renderscript.*;
22
23public class MainActivity extends Activity {
24    private RenderScript mRS;
25    private Allocation mInAllocation;
26    private Allocation mOutAllocation;
27    private ScriptC_scalars mScript;
28    private int mAllocSize = 256;
29
30    @Override
31    protected void onCreate(Bundle savedInstanceState) {
32        super.onCreate(savedInstanceState);
33
34        setContentView(R.layout.main_layout);
35        createScript();
36        runScript();
37    }
38
39    private void createScript() {
40        mRS = RenderScript.create(this,
41            RenderScript.ContextType.NORMAL,
42            RenderScript.CREATE_FLAG_LOW_LATENCY |
43            RenderScript.CREATE_FLAG_WAIT_FOR_ATTACH);
44
45        Element e = Element.I32(mRS);
46        mInAllocation = Allocation.createSized(mRS, e, mAllocSize);
47        mOutAllocation = Allocation.createSized(mRS, e, mAllocSize);
48
49        mScript = new ScriptC_scalars(mRS);
50    }
51
52    private void runScript() {
53        mScript.invoke_addToGlobal(234);
54
55        int[] init = new int[mAllocSize];
56        for(int i = 0; i < mAllocSize; ++i) {
57            init[i] = i - (mAllocSize / 2);
58        }
59        mInAllocation.copy1DRangeFrom(0, mAllocSize, init);
60        mScript.forEach_simple_kernel(mInAllocation, mOutAllocation);
61    }
62}
63
64